@timber-js/app 0.2.0-alpha.13 → 0.2.0-alpha.131

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 (785) hide show
  1. package/LICENSE +8 -0
  2. package/dist/_chunks/actions-BNhpxrnV.js +1104 -0
  3. package/dist/_chunks/actions-BNhpxrnV.js.map +1 -0
  4. package/dist/_chunks/build-output-helper-K7oUCRqU.js +102 -0
  5. package/dist/_chunks/build-output-helper-K7oUCRqU.js.map +1 -0
  6. package/dist/_chunks/cli-schema-sync-CObqjGWF.js +2 -0
  7. package/dist/_chunks/cli-schema-sync-q-Ce6-iG.js +785 -0
  8. package/dist/_chunks/cli-schema-sync-q-Ce6-iG.js.map +1 -0
  9. package/dist/_chunks/codec-registry-DqkeAydt.js +21 -0
  10. package/dist/_chunks/codec-registry-DqkeAydt.js.map +1 -0
  11. package/dist/_chunks/define-DMq-Yjp7.js +112 -0
  12. package/dist/_chunks/define-DMq-Yjp7.js.map +1 -0
  13. package/dist/_chunks/define-jeHDXZGq.js +195 -0
  14. package/dist/_chunks/define-jeHDXZGq.js.map +1 -0
  15. package/dist/_chunks/format-BjN9HLu9.js +14 -0
  16. package/dist/_chunks/format-BjN9HLu9.js.map +1 -0
  17. package/dist/_chunks/handler-store-bIAstrxQ.js +54 -0
  18. package/dist/_chunks/handler-store-bIAstrxQ.js.map +1 -0
  19. package/dist/_chunks/logger-CMd9P1xQ.js +291 -0
  20. package/dist/_chunks/logger-CMd9P1xQ.js.map +1 -0
  21. package/dist/_chunks/merge-search-params-Cm1j99HC.js +41 -0
  22. package/dist/_chunks/merge-search-params-Cm1j99HC.js.map +1 -0
  23. package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-DESG8uk5.js} +32 -19
  24. package/dist/_chunks/metadata-routes-DESG8uk5.js.map +1 -0
  25. package/dist/_chunks/navigation-root-B5-RmsPi.js +103 -0
  26. package/dist/_chunks/navigation-root-B5-RmsPi.js.map +1 -0
  27. package/dist/_chunks/registry-BI9cgCt7.js +20 -0
  28. package/dist/_chunks/registry-BI9cgCt7.js.map +1 -0
  29. package/dist/_chunks/resolve-schema-DU2nbVOi.js +77 -0
  30. package/dist/_chunks/resolve-schema-DU2nbVOi.js.map +1 -0
  31. package/dist/_chunks/router-ref-B2-2kIIC.js +28 -0
  32. package/dist/_chunks/router-ref-B2-2kIIC.js.map +1 -0
  33. package/dist/_chunks/schema-bridge-o0SwFtXW.js +86 -0
  34. package/dist/_chunks/schema-bridge-o0SwFtXW.js.map +1 -0
  35. package/dist/_chunks/segment-classify-BjfuctV2.js +137 -0
  36. package/dist/_chunks/segment-classify-BjfuctV2.js.map +1 -0
  37. package/dist/_chunks/segment-context-Bg0pFbLT.js +34 -0
  38. package/dist/_chunks/segment-context-Bg0pFbLT.js.map +1 -0
  39. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-DVX8S7vj.js} +1 -1
  40. package/dist/_chunks/ssr-data-DVX8S7vj.js.map +1 -0
  41. package/dist/_chunks/stale-reload-CCqb62Z3.js +84 -0
  42. package/dist/_chunks/stale-reload-CCqb62Z3.js.map +1 -0
  43. package/dist/_chunks/tracing-DP5djRq5.js +358 -0
  44. package/dist/_chunks/tracing-DP5djRq5.js.map +1 -0
  45. package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-C9G6LP0F.js} +7 -20
  46. package/dist/_chunks/use-query-states-C9G6LP0F.js.map +1 -0
  47. package/dist/_chunks/use-segment-params-CIeinIx2.js +151 -0
  48. package/dist/_chunks/use-segment-params-CIeinIx2.js.map +1 -0
  49. package/dist/_chunks/validation-AfEFM5ze.js +84 -0
  50. package/dist/_chunks/validation-AfEFM5ze.js.map +1 -0
  51. package/dist/_chunks/walkers-BbEu2_Pp.js +724 -0
  52. package/dist/_chunks/walkers-BbEu2_Pp.js.map +1 -0
  53. package/dist/_chunks/{format-DviM89f0.js → warnings-CAzunaGo.js} +6 -45
  54. package/dist/_chunks/warnings-CAzunaGo.js.map +1 -0
  55. package/dist/adapters/build-output-helper.d.ts +28 -0
  56. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  57. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  58. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  59. package/dist/adapters/cloudflare-dev.js +73 -0
  60. package/dist/adapters/cloudflare-dev.js.map +1 -0
  61. package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
  62. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  63. package/dist/adapters/cloudflare-kv-cache.js +95 -0
  64. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  65. package/dist/adapters/cloudflare.d.ts +148 -12
  66. package/dist/adapters/cloudflare.d.ts.map +1 -1
  67. package/dist/adapters/cloudflare.js +142 -38
  68. package/dist/adapters/cloudflare.js.map +1 -1
  69. package/dist/adapters/compress-module.d.ts.map +1 -1
  70. package/dist/adapters/nitro.d.ts +17 -1
  71. package/dist/adapters/nitro.d.ts.map +1 -1
  72. package/dist/adapters/nitro.js +143 -45
  73. package/dist/adapters/nitro.js.map +1 -1
  74. package/dist/adapters/shared.d.ts +16 -0
  75. package/dist/adapters/shared.d.ts.map +1 -0
  76. package/dist/cache/cache-api.d.ts +24 -0
  77. package/dist/cache/cache-api.d.ts.map +1 -0
  78. package/dist/cache/handler-store.d.ts +31 -0
  79. package/dist/cache/handler-store.d.ts.map +1 -0
  80. package/dist/cache/index.d.ts +23 -7
  81. package/dist/cache/index.d.ts.map +1 -1
  82. package/dist/cache/index.js +151 -81
  83. package/dist/cache/index.js.map +1 -1
  84. package/dist/cache/singleflight.d.ts +18 -1
  85. package/dist/cache/singleflight.d.ts.map +1 -1
  86. package/dist/cache/sizeof.d.ts +22 -0
  87. package/dist/cache/sizeof.d.ts.map +1 -0
  88. package/dist/cache/timber-cache.d.ts +1 -1
  89. package/dist/cache/timber-cache.d.ts.map +1 -1
  90. package/dist/cli-schema-sync.d.ts +39 -0
  91. package/dist/cli-schema-sync.d.ts.map +1 -0
  92. package/dist/cli.d.ts +14 -2
  93. package/dist/cli.d.ts.map +1 -1
  94. package/dist/cli.js +48 -6
  95. package/dist/cli.js.map +1 -1
  96. package/dist/client/browser-dev.d.ts +34 -1
  97. package/dist/client/browser-dev.d.ts.map +1 -1
  98. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  99. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  100. package/dist/client/browser-entry/hmr.d.ts +21 -0
  101. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  102. package/dist/client/browser-entry/hydrate.d.ts +46 -0
  103. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  104. package/dist/client/browser-entry/index.d.ts +30 -0
  105. package/dist/client/browser-entry/index.d.ts.map +1 -0
  106. package/dist/client/browser-entry/post-hydration.d.ts +26 -0
  107. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  108. package/dist/client/browser-entry/router-init.d.ts +26 -0
  109. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  110. package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
  111. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  112. package/dist/client/browser-entry/scroll.d.ts +19 -0
  113. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  114. package/dist/client/error-boundary.d.ts +12 -5
  115. package/dist/client/error-boundary.d.ts.map +1 -1
  116. package/dist/client/error-boundary.js +29 -6
  117. package/dist/client/error-boundary.js.map +1 -1
  118. package/dist/client/error-reconstituter.d.ts +54 -0
  119. package/dist/client/error-reconstituter.d.ts.map +1 -0
  120. package/dist/client/form.d.ts +16 -27
  121. package/dist/client/form.d.ts.map +1 -1
  122. package/dist/client/history.d.ts +19 -4
  123. package/dist/client/history.d.ts.map +1 -1
  124. package/dist/client/index.d.ts +10 -24
  125. package/dist/client/index.d.ts.map +1 -1
  126. package/dist/client/index.js +180 -1119
  127. package/dist/client/index.js.map +1 -1
  128. package/dist/client/internal.d.ts +19 -0
  129. package/dist/client/internal.d.ts.map +1 -0
  130. package/dist/client/internal.js +845 -0
  131. package/dist/client/internal.js.map +1 -0
  132. package/dist/client/link-pending-store.d.ts +65 -0
  133. package/dist/client/link-pending-store.d.ts.map +1 -0
  134. package/dist/client/link.d.ts +67 -56
  135. package/dist/client/link.d.ts.map +1 -1
  136. package/dist/client/nav-link-store.d.ts +27 -0
  137. package/dist/client/nav-link-store.d.ts.map +1 -0
  138. package/dist/client/navigation-api-types.d.ts +90 -0
  139. package/dist/client/navigation-api-types.d.ts.map +1 -0
  140. package/dist/client/navigation-api.d.ts +115 -0
  141. package/dist/client/navigation-api.d.ts.map +1 -0
  142. package/dist/client/navigation-context.d.ts +14 -2
  143. package/dist/client/navigation-context.d.ts.map +1 -1
  144. package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +46 -9
  145. package/dist/client/navigation-root.d.ts.map +1 -0
  146. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  147. package/dist/client/router-ref.d.ts +1 -1
  148. package/dist/client/router.d.ts +79 -10
  149. package/dist/client/router.d.ts.map +1 -1
  150. package/dist/client/rsc-fetch.d.ts +46 -3
  151. package/dist/client/rsc-fetch.d.ts.map +1 -1
  152. package/dist/client/segment-cache.d.ts +3 -1
  153. package/dist/client/segment-cache.d.ts.map +1 -1
  154. package/dist/client/segment-outlet.d.ts +49 -0
  155. package/dist/client/segment-outlet.d.ts.map +1 -0
  156. package/dist/client/segment-update-context.d.ts +21 -0
  157. package/dist/client/segment-update-context.d.ts.map +1 -0
  158. package/dist/client/shallow-url.d.ts +10 -0
  159. package/dist/client/shallow-url.d.ts.map +1 -0
  160. package/dist/client/ssr-data.d.ts +13 -4
  161. package/dist/client/ssr-data.d.ts.map +1 -1
  162. package/dist/client/stale-reload.d.ts +15 -0
  163. package/dist/client/stale-reload.d.ts.map +1 -1
  164. package/dist/client/state.d.ts +1 -1
  165. package/dist/client/top-loader.d.ts +5 -5
  166. package/dist/client/top-loader.d.ts.map +1 -1
  167. package/dist/client/use-cookie.d.ts +12 -0
  168. package/dist/client/use-cookie.d.ts.map +1 -1
  169. package/dist/client/use-link-status.d.ts +5 -5
  170. package/dist/client/use-link-status.d.ts.map +1 -1
  171. package/dist/client/use-pending-navigation.d.ts +23 -0
  172. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  173. package/dist/client/use-query-states.d.ts +1 -1
  174. package/dist/client/use-query-states.d.ts.map +1 -1
  175. package/dist/client/use-router.d.ts +1 -1
  176. package/dist/client/use-search-params.d.ts +7 -5
  177. package/dist/client/use-search-params.d.ts.map +1 -1
  178. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +8 -6
  179. package/dist/client/use-segment-params.d.ts.map +1 -0
  180. package/dist/codec.d.ts +69 -0
  181. package/dist/codec.d.ts.map +1 -0
  182. package/dist/codec.js +75 -0
  183. package/dist/codec.js.map +1 -0
  184. package/dist/config-types.d.ts +294 -0
  185. package/dist/config-types.d.ts.map +1 -0
  186. package/dist/config-validation.d.ts +51 -0
  187. package/dist/config-validation.d.ts.map +1 -0
  188. package/dist/content/index.d.ts +1 -10
  189. package/dist/content/index.d.ts.map +1 -1
  190. package/dist/content/index.js +0 -2
  191. package/dist/cookies/define-cookie.d.ts +58 -25
  192. package/dist/cookies/define-cookie.d.ts.map +1 -1
  193. package/dist/cookies/index.d.ts +2 -1
  194. package/dist/cookies/index.d.ts.map +1 -1
  195. package/dist/cookies/index.js +251 -36
  196. package/dist/cookies/index.js.map +1 -1
  197. package/dist/cookies/json-cookie.d.ts +64 -0
  198. package/dist/cookies/json-cookie.d.ts.map +1 -0
  199. package/dist/cookies/validation.d.ts +46 -0
  200. package/dist/cookies/validation.d.ts.map +1 -0
  201. package/dist/dev-tools/404-page.d.ts +46 -0
  202. package/dist/dev-tools/404-page.d.ts.map +1 -0
  203. package/dist/dev-tools/browser-logs.d.ts +84 -0
  204. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  205. package/dist/dev-tools/error-page.d.ts +58 -0
  206. package/dist/dev-tools/error-page.d.ts.map +1 -0
  207. package/dist/dev-tools/holding-server.d.ts +54 -0
  208. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  209. package/dist/dev-tools/index.d.ts +31 -0
  210. package/dist/dev-tools/index.d.ts.map +1 -0
  211. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  212. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  213. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  214. package/dist/dev-tools/logger.d.ts.map +1 -0
  215. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
  216. package/dist/dev-tools/logs.d.ts.map +1 -0
  217. package/dist/dev-tools/overlay.d.ts +91 -0
  218. package/dist/dev-tools/overlay.d.ts.map +1 -0
  219. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  220. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  221. package/dist/dev-tools/terminal.d.ts +28 -0
  222. package/dist/dev-tools/terminal.d.ts.map +1 -0
  223. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
  224. package/dist/dev-tools/warnings.d.ts.map +1 -0
  225. package/dist/fonts/ast.d.ts +98 -6
  226. package/dist/fonts/ast.d.ts.map +1 -1
  227. package/dist/fonts/bundle.d.ts +48 -0
  228. package/dist/fonts/bundle.d.ts.map +1 -0
  229. package/dist/fonts/dev-middleware.d.ts +22 -0
  230. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  231. package/dist/fonts/local.d.ts +1 -1
  232. package/dist/fonts/pipeline.d.ts +167 -0
  233. package/dist/fonts/pipeline.d.ts.map +1 -0
  234. package/dist/fonts/transform.d.ts +78 -0
  235. package/dist/fonts/transform.d.ts.map +1 -0
  236. package/dist/fonts/types.d.ts +45 -1
  237. package/dist/fonts/types.d.ts.map +1 -1
  238. package/dist/fonts/virtual-modules.d.ts +94 -0
  239. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  240. package/dist/index.d.ts +46 -164
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +5584 -13386
  243. package/dist/index.js.map +1 -1
  244. package/dist/params/codec-registry.d.ts +26 -0
  245. package/dist/params/codec-registry.d.ts.map +1 -0
  246. package/dist/params/define-schema.d.ts +81 -0
  247. package/dist/params/define-schema.d.ts.map +1 -0
  248. package/dist/params/index.d.ts +5 -0
  249. package/dist/params/index.d.ts.map +1 -0
  250. package/dist/params/index.js +34 -0
  251. package/dist/params/index.js.map +1 -0
  252. package/dist/params/resolve-schema.d.ts +34 -0
  253. package/dist/params/resolve-schema.d.ts.map +1 -0
  254. package/dist/plugin-context.d.ts +107 -0
  255. package/dist/plugin-context.d.ts.map +1 -0
  256. package/dist/plugins/adapter-build.d.ts +1 -1
  257. package/dist/plugins/adapter-build.d.ts.map +1 -1
  258. package/dist/plugins/build-manifest.d.ts +2 -2
  259. package/dist/plugins/build-manifest.d.ts.map +1 -1
  260. package/dist/plugins/build-report.d.ts +9 -7
  261. package/dist/plugins/build-report.d.ts.map +1 -1
  262. package/dist/plugins/client-chunks.d.ts +32 -0
  263. package/dist/plugins/client-chunks.d.ts.map +1 -0
  264. package/dist/plugins/cloudflare-wasm.d.ts +18 -0
  265. package/dist/plugins/cloudflare-wasm.d.ts.map +1 -0
  266. package/dist/plugins/content.d.ts +1 -1
  267. package/dist/plugins/content.d.ts.map +1 -1
  268. package/dist/plugins/dev-server.d.ts +1 -1
  269. package/dist/plugins/dev-server.d.ts.map +1 -1
  270. package/dist/plugins/entries.d.ts +1 -1
  271. package/dist/plugins/entries.d.ts.map +1 -1
  272. package/dist/plugins/fonts.d.ts +17 -73
  273. package/dist/plugins/fonts.d.ts.map +1 -1
  274. package/dist/plugins/mdx.d.ts +1 -1
  275. package/dist/plugins/mdx.d.ts.map +1 -1
  276. package/dist/plugins/routing.d.ts +1 -1
  277. package/dist/plugins/routing.d.ts.map +1 -1
  278. package/dist/plugins/server-bundle.d.ts.map +1 -1
  279. package/dist/plugins/shims.d.ts +6 -5
  280. package/dist/plugins/shims.d.ts.map +1 -1
  281. package/dist/plugins/static-build.d.ts +5 -26
  282. package/dist/plugins/static-build.d.ts.map +1 -1
  283. package/dist/routing/codegen-shared.d.ts +67 -0
  284. package/dist/routing/codegen-shared.d.ts.map +1 -0
  285. package/dist/routing/codegen-types.d.ts +60 -0
  286. package/dist/routing/codegen-types.d.ts.map +1 -0
  287. package/dist/routing/codegen.d.ts +7 -2
  288. package/dist/routing/codegen.d.ts.map +1 -1
  289. package/dist/routing/convention-lint.d.ts +41 -0
  290. package/dist/routing/convention-lint.d.ts.map +1 -0
  291. package/dist/routing/index.d.ts +7 -1
  292. package/dist/routing/index.d.ts.map +1 -1
  293. package/dist/routing/index.js +4 -2
  294. package/dist/routing/link-codegen.d.ts +90 -0
  295. package/dist/routing/link-codegen.d.ts.map +1 -0
  296. package/dist/routing/scanner.d.ts +1 -10
  297. package/dist/routing/scanner.d.ts.map +1 -1
  298. package/dist/routing/schema-validation.d.ts +35 -0
  299. package/dist/routing/schema-validation.d.ts.map +1 -0
  300. package/dist/routing/segment-classify.d.ts +75 -0
  301. package/dist/routing/segment-classify.d.ts.map +1 -0
  302. package/dist/routing/segment-codegen.d.ts +38 -0
  303. package/dist/routing/segment-codegen.d.ts.map +1 -0
  304. package/dist/routing/types.d.ts +77 -25
  305. package/dist/routing/types.d.ts.map +1 -1
  306. package/dist/routing/walkers.d.ts +51 -0
  307. package/dist/routing/walkers.d.ts.map +1 -0
  308. package/dist/rsc-runtime/rsc.d.ts +1 -1
  309. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  310. package/dist/rsc-runtime/ssr.d.ts +12 -0
  311. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  312. package/dist/schema-bridge.d.ts +76 -0
  313. package/dist/schema-bridge.d.ts.map +1 -0
  314. package/dist/search-params/define.d.ts +157 -0
  315. package/dist/search-params/define.d.ts.map +1 -0
  316. package/dist/search-params/index.d.ts +4 -7
  317. package/dist/search-params/index.d.ts.map +1 -1
  318. package/dist/search-params/index.js +34 -441
  319. package/dist/search-params/index.js.map +1 -1
  320. package/dist/search-params/registry.d.ts +2 -2
  321. package/dist/search-params/registry.d.ts.map +1 -1
  322. package/dist/search-params/wrappers.d.ts +53 -0
  323. package/dist/search-params/wrappers.d.ts.map +1 -0
  324. package/dist/segment-params/define.d.ts +89 -0
  325. package/dist/segment-params/define.d.ts.map +1 -0
  326. package/dist/segment-params/index.d.ts +3 -0
  327. package/dist/segment-params/index.d.ts.map +1 -0
  328. package/dist/segment-params/index.js +2 -0
  329. package/dist/server/access-gate.d.ts +8 -3
  330. package/dist/server/access-gate.d.ts.map +1 -1
  331. package/dist/server/action-client.d.ts +41 -6
  332. package/dist/server/action-client.d.ts.map +1 -1
  333. package/dist/server/action-encryption.d.ts +76 -0
  334. package/dist/server/action-encryption.d.ts.map +1 -0
  335. package/dist/server/action-handler.d.ts +35 -1
  336. package/dist/server/action-handler.d.ts.map +1 -1
  337. package/dist/server/actions.d.ts +6 -14
  338. package/dist/server/actions.d.ts.map +1 -1
  339. package/dist/server/als-registry.d.ts +70 -11
  340. package/dist/server/als-registry.d.ts.map +1 -1
  341. package/dist/server/asset-headers.d.ts +1 -15
  342. package/dist/server/asset-headers.d.ts.map +1 -1
  343. package/dist/server/build-manifest.d.ts +8 -2
  344. package/dist/server/build-manifest.d.ts.map +1 -1
  345. package/dist/server/coalesce-tick.d.ts +40 -0
  346. package/dist/server/coalesce-tick.d.ts.map +1 -0
  347. package/dist/server/cookie-context.d.ts +170 -0
  348. package/dist/server/cookie-context.d.ts.map +1 -0
  349. package/dist/server/cookie-parsing.d.ts +51 -0
  350. package/dist/server/cookie-parsing.d.ts.map +1 -0
  351. package/dist/server/debug.d.ts +1 -1
  352. package/dist/server/default-logger.d.ts +22 -0
  353. package/dist/server/default-logger.d.ts.map +1 -0
  354. package/dist/server/deny-boundary.d.ts +90 -0
  355. package/dist/server/deny-boundary.d.ts.map +1 -0
  356. package/dist/server/deny-renderer.d.ts +1 -1
  357. package/dist/server/deny-renderer.d.ts.map +1 -1
  358. package/dist/server/dev-source-map.d.ts +22 -0
  359. package/dist/server/dev-source-map.d.ts.map +1 -0
  360. package/dist/server/early-hints-sender.d.ts.map +1 -1
  361. package/dist/server/early-hints.d.ts +13 -5
  362. package/dist/server/early-hints.d.ts.map +1 -1
  363. package/dist/server/error-boundary-wrapper.d.ts +7 -1
  364. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  365. package/dist/server/fallback-error.d.ts +12 -7
  366. package/dist/server/fallback-error.d.ts.map +1 -1
  367. package/dist/server/flight-injection-state.d.ts +66 -0
  368. package/dist/server/flight-injection-state.d.ts.map +1 -0
  369. package/dist/server/flight-scripts.d.ts +42 -0
  370. package/dist/server/flight-scripts.d.ts.map +1 -0
  371. package/dist/server/flush.d.ts.map +1 -1
  372. package/dist/server/form-data.d.ts +29 -0
  373. package/dist/server/form-data.d.ts.map +1 -1
  374. package/dist/server/html-injector-core.d.ts +213 -0
  375. package/dist/server/html-injector-core.d.ts.map +1 -0
  376. package/dist/server/html-injectors.d.ts +81 -41
  377. package/dist/server/html-injectors.d.ts.map +1 -1
  378. package/dist/server/index.d.ts +10 -46
  379. package/dist/server/index.d.ts.map +1 -1
  380. package/dist/server/index.js +155 -2905
  381. package/dist/server/index.js.map +1 -1
  382. package/dist/server/internal.d.ts +48 -0
  383. package/dist/server/internal.d.ts.map +1 -0
  384. package/dist/server/internal.js +3027 -0
  385. package/dist/server/internal.js.map +1 -0
  386. package/dist/server/logger.d.ts +39 -7
  387. package/dist/server/logger.d.ts.map +1 -1
  388. package/dist/server/metadata-routes.d.ts +23 -7
  389. package/dist/server/metadata-routes.d.ts.map +1 -1
  390. package/dist/server/middleware-runner.d.ts +36 -4
  391. package/dist/server/middleware-runner.d.ts.map +1 -1
  392. package/dist/server/node-stream-transforms.d.ts +112 -0
  393. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  394. package/dist/server/param-coercion.d.ts +54 -0
  395. package/dist/server/param-coercion.d.ts.map +1 -0
  396. package/dist/server/pipeline-helpers.d.ts +95 -0
  397. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  398. package/dist/server/pipeline-interception.d.ts +1 -1
  399. package/dist/server/pipeline-interception.d.ts.map +1 -1
  400. package/dist/server/pipeline-metadata.d.ts +6 -0
  401. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  402. package/dist/server/pipeline-outcome.d.ts +49 -0
  403. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  404. package/dist/server/pipeline-phases.d.ts +52 -0
  405. package/dist/server/pipeline-phases.d.ts.map +1 -0
  406. package/dist/server/pipeline.d.ts +118 -23
  407. package/dist/server/pipeline.d.ts.map +1 -1
  408. package/dist/server/port-resolution.d.ts +117 -0
  409. package/dist/server/port-resolution.d.ts.map +1 -0
  410. package/dist/server/primitives.d.ts +69 -18
  411. package/dist/server/primitives.d.ts.map +1 -1
  412. package/dist/server/render-timeout.d.ts +51 -0
  413. package/dist/server/render-timeout.d.ts.map +1 -0
  414. package/dist/server/request-context.d.ts +62 -107
  415. package/dist/server/request-context.d.ts.map +1 -1
  416. package/dist/server/route-element-builder.d.ts +28 -2
  417. package/dist/server/route-element-builder.d.ts.map +1 -1
  418. package/dist/server/route-handler.d.ts.map +1 -1
  419. package/dist/server/route-matcher.d.ts +25 -36
  420. package/dist/server/route-matcher.d.ts.map +1 -1
  421. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  422. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  423. package/dist/server/rsc-entry/api-handler.d.ts +2 -2
  424. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  425. package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
  426. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  427. package/dist/server/rsc-entry/helpers.d.ts +50 -6
  428. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  429. package/dist/server/rsc-entry/index.d.ts +19 -8
  430. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  431. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  432. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  433. package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
  434. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  435. package/dist/server/rsc-entry/rsc-stream.d.ts +17 -1
  436. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  437. package/dist/server/rsc-entry/ssr-bridge.d.ts +5 -1
  438. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  439. package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
  440. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  441. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
  442. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  443. package/dist/server/safe-load.d.ts +46 -0
  444. package/dist/server/safe-load.d.ts.map +1 -0
  445. package/dist/server/sensitive-fields.d.ts +74 -0
  446. package/dist/server/sensitive-fields.d.ts.map +1 -0
  447. package/dist/server/sitemap-generator.d.ts +129 -0
  448. package/dist/server/sitemap-generator.d.ts.map +1 -0
  449. package/dist/server/sitemap-handler.d.ts +22 -0
  450. package/dist/server/sitemap-handler.d.ts.map +1 -0
  451. package/dist/server/slot-resolver.d.ts +1 -1
  452. package/dist/server/slot-resolver.d.ts.map +1 -1
  453. package/dist/server/ssr-bridge-types.d.ts +121 -0
  454. package/dist/server/ssr-bridge-types.d.ts.map +1 -0
  455. package/dist/server/ssr-entry.d.ts +2 -43
  456. package/dist/server/ssr-entry.d.ts.map +1 -1
  457. package/dist/server/ssr-render.d.ts +64 -21
  458. package/dist/server/ssr-render.d.ts.map +1 -1
  459. package/dist/server/ssr-wrappers.d.ts +50 -0
  460. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  461. package/dist/server/state-tree-diff.d.ts +12 -5
  462. package/dist/server/state-tree-diff.d.ts.map +1 -1
  463. package/dist/server/status-code-resolver.d.ts +16 -11
  464. package/dist/server/status-code-resolver.d.ts.map +1 -1
  465. package/dist/server/stream-utils.d.ts +36 -0
  466. package/dist/server/stream-utils.d.ts.map +1 -0
  467. package/dist/server/tracing.d.ts +5 -5
  468. package/dist/server/tracing.d.ts.map +1 -1
  469. package/dist/server/tree-builder.d.ts +62 -30
  470. package/dist/server/tree-builder.d.ts.map +1 -1
  471. package/dist/server/tree-match.d.ts +49 -0
  472. package/dist/server/tree-match.d.ts.map +1 -0
  473. package/dist/server/types.d.ts +49 -4
  474. package/dist/server/types.d.ts.map +1 -1
  475. package/dist/server/utils/escape-html.d.ts +14 -0
  476. package/dist/server/utils/escape-html.d.ts.map +1 -0
  477. package/dist/server/version-skew.d.ts +61 -0
  478. package/dist/server/version-skew.d.ts.map +1 -0
  479. package/dist/shared/merge-search-params.d.ts +22 -0
  480. package/dist/shared/merge-search-params.d.ts.map +1 -0
  481. package/dist/shims/font-google.d.ts +1 -1
  482. package/dist/shims/font-google.d.ts.map +1 -1
  483. package/dist/shims/font-google.js +42 -0
  484. package/dist/shims/font-google.js.map +1 -0
  485. package/dist/shims/font-local.d.ts +26 -0
  486. package/dist/shims/font-local.d.ts.map +1 -0
  487. package/dist/shims/font-local.js +20 -0
  488. package/dist/shims/font-local.js.map +1 -0
  489. package/dist/shims/headers.d.ts +2 -1
  490. package/dist/shims/headers.d.ts.map +1 -1
  491. package/dist/shims/navigation-client.d.ts +3 -1
  492. package/dist/shims/navigation-client.d.ts.map +1 -1
  493. package/dist/shims/navigation.d.ts +11 -5
  494. package/dist/shims/navigation.d.ts.map +1 -1
  495. package/dist/utils/state-machine.d.ts +80 -0
  496. package/dist/utils/state-machine.d.ts.map +1 -0
  497. package/package.json +61 -22
  498. package/src/adapters/build-output-helper.ts +139 -0
  499. package/src/adapters/cloudflare-dev.ts +177 -0
  500. package/src/adapters/cloudflare-kv-cache.ts +142 -0
  501. package/src/adapters/cloudflare.ts +350 -76
  502. package/src/adapters/compress-module.ts +24 -4
  503. package/src/adapters/nitro.ts +142 -59
  504. package/src/adapters/shared.ts +40 -0
  505. package/src/adapters/wrangler.d.ts +7 -0
  506. package/src/cache/cache-api.ts +38 -0
  507. package/src/cache/handler-store.ts +68 -0
  508. package/src/cache/index.ts +81 -18
  509. package/src/cache/singleflight.ts +62 -4
  510. package/src/cache/sizeof.ts +33 -0
  511. package/src/cache/timber-cache.ts +25 -20
  512. package/src/cli-schema-sync.ts +295 -0
  513. package/src/cli.ts +76 -8
  514. package/src/client/browser-dev.ts +153 -1
  515. package/src/client/browser-entry/action-dispatch.ts +125 -0
  516. package/src/client/browser-entry/hmr.ts +81 -0
  517. package/src/client/browser-entry/hydrate.ts +153 -0
  518. package/src/client/browser-entry/index.ts +151 -0
  519. package/src/client/browser-entry/post-hydration.ts +113 -0
  520. package/src/client/browser-entry/router-init.ts +219 -0
  521. package/src/client/browser-entry/rsc-stream.ts +157 -0
  522. package/src/client/browser-entry/scroll.ts +27 -0
  523. package/src/client/error-boundary.tsx +99 -22
  524. package/src/client/error-reconstituter.tsx +65 -0
  525. package/src/client/form.tsx +31 -32
  526. package/src/client/history.ts +26 -4
  527. package/src/client/index.ts +66 -45
  528. package/src/client/internal.ts +58 -0
  529. package/src/client/link-pending-store.ts +116 -0
  530. package/src/client/link.tsx +336 -119
  531. package/src/client/nav-link-store.ts +37 -0
  532. package/src/client/navigation-api-types.ts +112 -0
  533. package/src/client/navigation-api.ts +332 -0
  534. package/src/client/navigation-context.ts +33 -7
  535. package/src/client/navigation-root.tsx +347 -0
  536. package/src/client/nuqs-adapter.tsx +16 -3
  537. package/src/client/router-ref.ts +1 -1
  538. package/src/client/router.ts +418 -128
  539. package/src/client/rsc-fetch.ts +208 -10
  540. package/src/client/segment-cache.ts +6 -3
  541. package/src/client/segment-outlet.tsx +77 -0
  542. package/src/client/segment-update-context.ts +42 -0
  543. package/src/client/shallow-url.ts +22 -0
  544. package/src/client/ssr-data.ts +13 -5
  545. package/src/client/stale-reload.ts +72 -3
  546. package/src/client/state.ts +2 -2
  547. package/src/client/top-loader.tsx +11 -9
  548. package/src/client/use-cookie.ts +31 -2
  549. package/src/client/use-link-status.ts +7 -7
  550. package/src/client/use-pending-navigation.ts +40 -0
  551. package/src/client/use-query-states.ts +9 -3
  552. package/src/client/use-router.ts +1 -1
  553. package/src/client/use-search-params.ts +25 -44
  554. package/src/client/{use-params.ts → use-segment-params.ts} +8 -6
  555. package/src/codec.ts +147 -0
  556. package/src/config-types.ts +292 -0
  557. package/src/config-validation.ts +303 -0
  558. package/src/content/index.ts +5 -13
  559. package/src/cookies/define-cookie.ts +233 -53
  560. package/src/cookies/index.ts +12 -1
  561. package/src/cookies/json-cookie.ts +105 -0
  562. package/src/cookies/validation.ts +134 -0
  563. package/src/dev-tools/404-page.ts +387 -0
  564. package/src/dev-tools/browser-logs.ts +291 -0
  565. package/src/dev-tools/error-page.ts +506 -0
  566. package/src/dev-tools/holding-server.ts +187 -0
  567. package/src/dev-tools/index.ts +90 -0
  568. package/src/dev-tools/instrumentation.ts +176 -0
  569. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +9 -5
  570. package/src/dev-tools/overlay.ts +469 -0
  571. package/src/dev-tools/stack-classifier.ts +75 -0
  572. package/src/dev-tools/terminal.ts +183 -0
  573. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
  574. package/src/fonts/ast.ts +525 -16
  575. package/src/fonts/bundle.ts +142 -0
  576. package/src/fonts/dev-middleware.ts +74 -0
  577. package/src/fonts/local.ts +1 -1
  578. package/src/fonts/pipeline.ts +314 -0
  579. package/src/fonts/transform.ts +317 -0
  580. package/src/fonts/types.ts +50 -1
  581. package/src/fonts/virtual-modules.ts +233 -0
  582. package/src/index.ts +411 -329
  583. package/src/params/codec-registry.ts +34 -0
  584. package/src/params/define-schema.ts +114 -0
  585. package/src/params/index.ts +17 -0
  586. package/src/params/resolve-schema.ts +116 -0
  587. package/src/plugin-context.ts +240 -0
  588. package/src/plugins/adapter-build.ts +12 -4
  589. package/src/plugins/build-manifest.ts +69 -6
  590. package/src/plugins/build-report.ts +16 -25
  591. package/src/plugins/client-chunks.ts +65 -0
  592. package/src/plugins/cloudflare-wasm.ts +103 -0
  593. package/src/plugins/content.ts +1 -1
  594. package/src/plugins/dev-server.ts +179 -37
  595. package/src/plugins/entries.ts +111 -8
  596. package/src/plugins/fonts.ts +165 -654
  597. package/src/plugins/mdx.ts +47 -10
  598. package/src/plugins/routing.ts +386 -47
  599. package/src/plugins/server-bundle.ts +59 -3
  600. package/src/plugins/shims.ts +136 -35
  601. package/src/plugins/static-build.ts +15 -89
  602. package/src/routing/codegen-shared.ts +115 -0
  603. package/src/routing/codegen-types.ts +61 -0
  604. package/src/routing/codegen.ts +321 -177
  605. package/src/routing/convention-lint.ts +357 -0
  606. package/src/routing/index.ts +10 -1
  607. package/src/routing/interception.ts +1 -1
  608. package/src/routing/link-codegen.ts +308 -0
  609. package/src/routing/scanner.ts +165 -110
  610. package/src/routing/schema-validation.ts +149 -0
  611. package/src/routing/segment-classify.ts +188 -0
  612. package/src/routing/segment-codegen.ts +98 -0
  613. package/src/routing/types.ts +78 -25
  614. package/src/routing/walkers.ts +90 -0
  615. package/src/rsc-runtime/rsc.ts +2 -0
  616. package/src/rsc-runtime/ssr.ts +50 -0
  617. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  618. package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
  619. package/src/search-params/define.ts +538 -0
  620. package/src/search-params/index.ts +14 -20
  621. package/src/search-params/registry.ts +2 -2
  622. package/src/search-params/wrappers.ts +92 -0
  623. package/src/segment-params/define.ts +309 -0
  624. package/src/segment-params/index.ts +9 -0
  625. package/src/server/access-gate.tsx +76 -34
  626. package/src/server/action-client.ts +88 -15
  627. package/src/server/action-encryption.ts +144 -0
  628. package/src/server/action-handler.ts +112 -14
  629. package/src/server/actions.ts +14 -23
  630. package/src/server/als-registry.ts +108 -20
  631. package/src/server/asset-headers.ts +8 -34
  632. package/src/server/build-manifest.ts +17 -4
  633. package/src/server/coalesce-tick.ts +75 -0
  634. package/src/server/compress.ts +25 -7
  635. package/src/server/cookie-context.ts +468 -0
  636. package/src/server/cookie-parsing.ts +135 -0
  637. package/src/server/debug.ts +1 -1
  638. package/src/server/default-logger.ts +99 -0
  639. package/src/server/deny-boundary.ts +218 -0
  640. package/src/server/deny-renderer.ts +32 -51
  641. package/src/server/dev-source-map.ts +31 -0
  642. package/src/server/early-hints-sender.ts +3 -2
  643. package/src/server/early-hints.ts +36 -15
  644. package/src/server/error-boundary-wrapper.ts +74 -22
  645. package/src/server/fallback-error.ts +74 -102
  646. package/src/server/flight-injection-state.ts +113 -0
  647. package/src/server/flight-scripts.ts +62 -0
  648. package/src/server/flush.ts +2 -1
  649. package/src/server/form-data.ts +101 -5
  650. package/src/server/html-injector-core.ts +417 -0
  651. package/src/server/html-injectors.ts +235 -223
  652. package/src/server/index.ts +29 -183
  653. package/src/server/internal.ts +182 -0
  654. package/src/server/logger.ts +67 -36
  655. package/src/server/metadata-routes.ts +44 -19
  656. package/src/server/middleware-runner.ts +75 -4
  657. package/src/server/node-stream-transforms.ts +361 -0
  658. package/src/server/param-coercion.ts +206 -0
  659. package/src/server/pipeline-helpers.ts +204 -0
  660. package/src/server/pipeline-interception.ts +17 -16
  661. package/src/server/pipeline-metadata.ts +13 -0
  662. package/src/server/pipeline-outcome.ts +197 -0
  663. package/src/server/pipeline-phases.ts +468 -0
  664. package/src/server/pipeline.ts +154 -394
  665. package/src/server/port-resolution.ts +215 -0
  666. package/src/server/primitives.ts +111 -28
  667. package/src/server/render-timeout.ts +108 -0
  668. package/src/server/request-context.ts +168 -337
  669. package/src/server/route-element-builder.ts +435 -208
  670. package/src/server/route-handler.ts +24 -4
  671. package/src/server/route-matcher.ts +128 -277
  672. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  673. package/src/server/rsc-entry/api-handler.ts +16 -17
  674. package/src/server/rsc-entry/error-renderer.ts +315 -89
  675. package/src/server/rsc-entry/helpers.ts +155 -26
  676. package/src/server/rsc-entry/index.ts +316 -327
  677. package/src/server/rsc-entry/render-route.ts +313 -0
  678. package/src/server/rsc-entry/rsc-payload.ts +65 -18
  679. package/src/server/rsc-entry/rsc-stream.ts +85 -13
  680. package/src/server/rsc-entry/ssr-bridge.ts +18 -5
  681. package/src/server/rsc-entry/ssr-renderer.ts +193 -40
  682. package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
  683. package/src/server/safe-load.ts +60 -0
  684. package/src/server/sensitive-fields.ts +230 -0
  685. package/src/server/sitemap-generator.ts +338 -0
  686. package/src/server/sitemap-handler.ts +126 -0
  687. package/src/server/slot-resolver.ts +228 -246
  688. package/src/server/ssr-bridge-types.ts +124 -0
  689. package/src/server/ssr-entry.ts +217 -78
  690. package/src/server/ssr-render.ts +344 -71
  691. package/src/server/ssr-wrappers.tsx +139 -0
  692. package/src/server/state-tree-diff.ts +30 -23
  693. package/src/server/status-code-resolver.ts +112 -128
  694. package/src/server/stream-utils.ts +213 -0
  695. package/src/server/tracing.ts +21 -10
  696. package/src/server/tree-builder.ts +202 -90
  697. package/src/server/tree-match.ts +210 -0
  698. package/src/server/types.ts +55 -6
  699. package/src/server/utils/escape-html.ts +20 -0
  700. package/src/server/version-skew.ts +104 -0
  701. package/src/shared/merge-search-params.ts +55 -0
  702. package/src/shims/font-google.ts +1 -1
  703. package/src/shims/font-local.ts +34 -0
  704. package/src/shims/headers.ts +5 -1
  705. package/src/shims/navigation-client.ts +4 -3
  706. package/src/shims/navigation.ts +14 -7
  707. package/src/utils/state-machine.ts +111 -0
  708. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  709. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  710. package/dist/_chunks/debug-gwlJkDuf.js +0 -108
  711. package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
  712. package/dist/_chunks/format-DviM89f0.js.map +0 -1
  713. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  714. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  715. package/dist/_chunks/metadata-routes-Cjmvi3rQ.js.map +0 -1
  716. package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
  717. package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
  718. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  719. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  720. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  721. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  722. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  723. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  724. package/dist/cache/register-cached-function.d.ts +0 -17
  725. package/dist/cache/register-cached-function.d.ts.map +0 -1
  726. package/dist/client/browser-entry.d.ts +0 -21
  727. package/dist/client/browser-entry.d.ts.map +0 -1
  728. package/dist/client/link-status-provider.d.ts +0 -11
  729. package/dist/client/link-status-provider.d.ts.map +0 -1
  730. package/dist/client/segment-merger.d.ts +0 -119
  731. package/dist/client/segment-merger.d.ts.map +0 -1
  732. package/dist/client/transition-root.d.ts.map +0 -1
  733. package/dist/client/use-navigation-pending.d.ts +0 -26
  734. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  735. package/dist/client/use-params.d.ts.map +0 -1
  736. package/dist/plugins/cache-transform.d.ts +0 -36
  737. package/dist/plugins/cache-transform.d.ts.map +0 -1
  738. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  739. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  740. package/dist/plugins/dev-logs.d.ts.map +0 -1
  741. package/dist/plugins/dynamic-transform.d.ts +0 -72
  742. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  743. package/dist/plugins/server-action-exports.d.ts +0 -26
  744. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  745. package/dist/routing/status-file-lint.d.ts +0 -33
  746. package/dist/routing/status-file-lint.d.ts.map +0 -1
  747. package/dist/search-params/analyze.d.ts +0 -54
  748. package/dist/search-params/analyze.d.ts.map +0 -1
  749. package/dist/search-params/builtin-codecs.d.ts +0 -105
  750. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  751. package/dist/search-params/codecs.d.ts +0 -53
  752. package/dist/search-params/codecs.d.ts.map +0 -1
  753. package/dist/search-params/create.d.ts +0 -106
  754. package/dist/search-params/create.d.ts.map +0 -1
  755. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  756. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  757. package/dist/server/dev-logger.d.ts.map +0 -1
  758. package/dist/server/dev-span-processor.d.ts.map +0 -1
  759. package/dist/server/dev-warnings.d.ts.map +0 -1
  760. package/dist/server/manifest-status-resolver.d.ts +0 -58
  761. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  762. package/dist/server/prerender.d.ts +0 -77
  763. package/dist/server/prerender.d.ts.map +0 -1
  764. package/dist/utils/directive-parser.d.ts +0 -70
  765. package/dist/utils/directive-parser.d.ts.map +0 -1
  766. package/src/cache/register-cached-function.ts +0 -103
  767. package/src/client/browser-entry.ts +0 -678
  768. package/src/client/link-status-provider.tsx +0 -30
  769. package/src/client/segment-merger.ts +0 -339
  770. package/src/client/transition-root.tsx +0 -166
  771. package/src/client/use-navigation-pending.ts +0 -38
  772. package/src/plugins/cache-transform.ts +0 -199
  773. package/src/plugins/dev-error-overlay.ts +0 -230
  774. package/src/plugins/dynamic-transform.ts +0 -161
  775. package/src/plugins/server-action-exports.ts +0 -220
  776. package/src/routing/status-file-lint.ts +0 -112
  777. package/src/search-params/analyze.ts +0 -192
  778. package/src/search-params/builtin-codecs.ts +0 -228
  779. package/src/search-params/create.ts +0 -321
  780. package/src/server/dev-fetch-instrumentation.ts +0 -96
  781. package/src/server/dev-span-processor.ts +0 -78
  782. package/src/server/manifest-status-resolver.ts +0 -215
  783. package/src/server/prerender.ts +0 -139
  784. package/src/utils/directive-parser.ts +0 -529
  785. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -0,0 +1,785 @@
1
+ import { a as isDynamicMetadataExtension, n as classifyMetadataRoute } from "./metadata-routes-DESG8uk5.js";
2
+ import { r as DEFAULT_PAGE_EXTENSIONS, t as classifySegment } from "./segment-classify-BjfuctV2.js";
3
+ import { h as swallow } from "./logger-CMd9P1xQ.js";
4
+ import { basename, extname, join } from "node:path";
5
+ import { createRequire } from "node:module";
6
+ import { existsSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
7
+ import { performance } from "node:perf_hooks";
8
+ //#region src/routing/scanner.ts
9
+ /**
10
+ * Route discovery scanner.
11
+ *
12
+ * Pure function: (appDir, config) → RouteTree
13
+ *
14
+ * Scans the app/ directory and builds a segment tree recognizing all
15
+ * timber.js file conventions. Does NOT handle request matching — this
16
+ * is discovery only.
17
+ */
18
+ /**
19
+ * Pattern matching encoded path delimiters that must be rejected during route discovery.
20
+ * %2F / %2f (forward slash) and %5C / %5c (backslash) can cause route collisions
21
+ * when decoded. See design/13-security.md §"Encoded separators rejected".
22
+ */
23
+ var ENCODED_SEPARATOR_PATTERN = /%(?:2[fF]|5[cC])/;
24
+ /**
25
+ * Pattern matching encoded null bytes (%00) that must be rejected.
26
+ * See design/13-security.md §"Null bytes rejected".
27
+ */
28
+ var ENCODED_NULL_PATTERN = /%00/;
29
+ /**
30
+ * File convention names that use pageExtensions (can be .tsx, .ts, .jsx, .js, .mdx, etc.)
31
+ */
32
+ var PAGE_EXT_CONVENTIONS = new Set([
33
+ "page",
34
+ "layout",
35
+ "error",
36
+ "default",
37
+ "denied"
38
+ ]);
39
+ /**
40
+ * Legacy compat status-code files.
41
+ * Maps legacy file name → HTTP status code for the fallback chain.
42
+ * See design/10-error-handling.md §"Fallback Chain".
43
+ */
44
+ var LEGACY_STATUS_FILES = {
45
+ "not-found": 404,
46
+ "forbidden": 403,
47
+ "unauthorized": 401
48
+ };
49
+ /**
50
+ * File convention names that are always .ts/.tsx (never .mdx etc.)
51
+ */
52
+ var FIXED_CONVENTIONS = new Set([
53
+ "middleware",
54
+ "access",
55
+ "route",
56
+ "params"
57
+ ]);
58
+ /**
59
+ * Status-code file patterns:
60
+ * - Exact 3-digit codes: 401.tsx, 429.tsx, 503.tsx
61
+ * - Category catch-alls: 4xx.tsx, 5xx.tsx
62
+ */
63
+ var STATUS_CODE_PATTERN = /^(\d{3}|[45]xx)$/;
64
+ /**
65
+ * Scan the app/ directory and build the route tree.
66
+ *
67
+ * @param appDir - Absolute path to the app/ directory
68
+ * @param config - Scanner configuration
69
+ * @returns The complete route tree
70
+ */
71
+ function scanRoutes(appDir, config = {}) {
72
+ const pageExtensions = config.pageExtensions ?? DEFAULT_PAGE_EXTENSIONS;
73
+ const extSet = new Set(pageExtensions);
74
+ const tree = { root: createSegmentNode("", "static", "/") };
75
+ const proxyFile = findFixedFile(appDir, "proxy");
76
+ if (proxyFile) tree.proxy = proxyFile;
77
+ const globalErrorFile = findPageExtFile(appDir, "global-error", extSet);
78
+ if (globalErrorFile) tree.globalError = globalErrorFile;
79
+ scanSegmentFiles(appDir, tree.root, extSet);
80
+ scanChildren(appDir, tree.root, extSet);
81
+ validateRouteGroupCollisions(tree.root);
82
+ validateDuplicateParamNames(tree.root);
83
+ validateUniqueBracketForms(tree.root);
84
+ return tree;
85
+ }
86
+ /**
87
+ * Create an empty segment node.
88
+ */
89
+ function createSegmentNode(segmentName, segmentType, urlPath, paramName, interceptionMarker, interceptedSegmentName) {
90
+ return {
91
+ segmentName,
92
+ segmentType,
93
+ urlPath,
94
+ paramName,
95
+ interceptionMarker,
96
+ interceptedSegmentName,
97
+ children: [],
98
+ slots: {}
99
+ };
100
+ }
101
+ /**
102
+ * Compute the URL path for a child segment given its parent's URL path.
103
+ * Route groups, slots, and intercepting routes do NOT add URL depth.
104
+ */
105
+ function computeUrlPath(parentUrlPath, dirName, segmentType) {
106
+ if (segmentType === "group" || segmentType === "slot" || segmentType === "intercepting") return parentUrlPath;
107
+ return `${parentUrlPath === "/" ? "" : parentUrlPath}/${dirName}`;
108
+ }
109
+ /**
110
+ * Scan a directory for file conventions and populate the segment node.
111
+ */
112
+ function scanSegmentFiles(dirPath, node, extSet) {
113
+ let entries;
114
+ try {
115
+ entries = readdirSync(dirPath);
116
+ } catch (err) {
117
+ swallow(err, `scanSegmentFiles: unreadable directory ${dirPath}`, { level: "warn" });
118
+ return;
119
+ }
120
+ for (const entry of entries) {
121
+ const fullPath = join(dirPath, entry);
122
+ try {
123
+ if (statSync(fullPath).isDirectory()) continue;
124
+ } catch {
125
+ continue;
126
+ }
127
+ const ext = extname(entry).slice(1);
128
+ const name = basename(entry, `.${ext}`);
129
+ if (PAGE_EXT_CONVENTIONS.has(name) && extSet.has(ext)) {
130
+ const file = {
131
+ filePath: fullPath,
132
+ extension: ext
133
+ };
134
+ switch (name) {
135
+ case "page":
136
+ node.page = file;
137
+ break;
138
+ case "layout":
139
+ node.layout = file;
140
+ break;
141
+ case "error":
142
+ node.error = file;
143
+ break;
144
+ case "default":
145
+ node.default = file;
146
+ break;
147
+ case "denied":
148
+ node.denied = file;
149
+ break;
150
+ }
151
+ continue;
152
+ }
153
+ if (FIXED_CONVENTIONS.has(name) && /\.?[jt]sx?$/.test(ext)) {
154
+ const file = {
155
+ filePath: fullPath,
156
+ extension: ext
157
+ };
158
+ switch (name) {
159
+ case "middleware":
160
+ node.middleware = file;
161
+ break;
162
+ case "access":
163
+ node.access = file;
164
+ break;
165
+ case "route":
166
+ node.route = file;
167
+ break;
168
+ case "params":
169
+ node.params = file;
170
+ break;
171
+ }
172
+ continue;
173
+ }
174
+ if (STATUS_CODE_PATTERN.test(name) && ext === "json") {
175
+ if (!node.jsonStatusFiles) node.jsonStatusFiles = {};
176
+ node.jsonStatusFiles[name] = {
177
+ filePath: fullPath,
178
+ extension: ext
179
+ };
180
+ continue;
181
+ }
182
+ if (STATUS_CODE_PATTERN.test(name) && extSet.has(ext)) {
183
+ if (!node.statusFiles) node.statusFiles = {};
184
+ node.statusFiles[name] = {
185
+ filePath: fullPath,
186
+ extension: ext
187
+ };
188
+ continue;
189
+ }
190
+ if (name in LEGACY_STATUS_FILES && extSet.has(ext)) {
191
+ if (!node.legacyStatusFiles) node.legacyStatusFiles = {};
192
+ node.legacyStatusFiles[name] = {
193
+ filePath: fullPath,
194
+ extension: ext
195
+ };
196
+ continue;
197
+ }
198
+ if (classifyMetadataRoute(entry)) {
199
+ if (!node.metadataRoutes) node.metadataRoutes = {};
200
+ const existing = node.metadataRoutes[name];
201
+ if (existing) {
202
+ const existingIsDynamic = isDynamicMetadataExtension(name, existing.extension);
203
+ if (isDynamicMetadataExtension(name, ext) || !existingIsDynamic) node.metadataRoutes[name] = {
204
+ filePath: fullPath,
205
+ extension: ext
206
+ };
207
+ } else node.metadataRoutes[name] = {
208
+ filePath: fullPath,
209
+ extension: ext
210
+ };
211
+ }
212
+ }
213
+ if (node.route && node.page) throw new Error(`Build error: route.ts and page.* cannot coexist in the same segment.\n route.ts: ${node.route.filePath}\n page: ${node.page.filePath}\nA URL is either an API endpoint or a rendered page, not both.`);
214
+ }
215
+ /**
216
+ * Recursively scan child directories and build the segment tree.
217
+ */
218
+ function scanChildren(dirPath, parentNode, extSet) {
219
+ let entries;
220
+ try {
221
+ entries = readdirSync(dirPath);
222
+ } catch (err) {
223
+ swallow(err, `scanChildren: unreadable directory ${dirPath}`, { level: "warn" });
224
+ return;
225
+ }
226
+ for (const entry of entries) {
227
+ const fullPath = join(dirPath, entry);
228
+ try {
229
+ if (!statSync(fullPath).isDirectory()) continue;
230
+ } catch {
231
+ continue;
232
+ }
233
+ if (ENCODED_SEPARATOR_PATTERN.test(entry)) throw new Error(`Build error: directory name contains an encoded path delimiter (%%2F or %%5C).\n Directory: ${fullPath}\nEncoded separators in directory names cause route collisions when decoded. Rename the directory to remove the encoded delimiter.`);
234
+ if (ENCODED_NULL_PATTERN.test(entry)) throw new Error(`Build error: directory name contains an encoded null byte (%%00).\n Directory: ${fullPath}\nEncoded null bytes in directory names are not allowed. Rename the directory to remove the null byte encoding.`);
235
+ const { type, paramName, interceptionMarker, interceptedSegmentName } = classifySegment(entry);
236
+ if (type === "private") continue;
237
+ const childNode = createSegmentNode(entry, type, computeUrlPath(parentNode.urlPath, entry, type), paramName, interceptionMarker, interceptedSegmentName);
238
+ scanSegmentFiles(fullPath, childNode, extSet);
239
+ scanChildren(fullPath, childNode, extSet);
240
+ if (type === "slot") {
241
+ const slotName = entry.slice(1);
242
+ parentNode.slots[slotName] = childNode;
243
+ } else parentNode.children.push(childNode);
244
+ }
245
+ }
246
+ /**
247
+ * Validate that route groups don't produce conflicting pages/routes at the same URL path.
248
+ *
249
+ * Two route groups like (auth)/login/page.tsx and (marketing)/login/page.tsx both claim
250
+ * /login — the scanner must detect and reject this at build time.
251
+ *
252
+ * Parallel slots are excluded from collision detection — they intentionally coexist at
253
+ * the same URL path as their parent (that's the whole point of parallel routes).
254
+ */
255
+ function validateRouteGroupCollisions(root) {
256
+ collectRoutableLeaves(root, /* @__PURE__ */ new Map(), "", false);
257
+ }
258
+ /**
259
+ * Walk the segment tree and collect all routable leaves (page or route files),
260
+ * throwing on collision. Slots are tracked in their own collision space since
261
+ * they are parallel routes that intentionally share URL paths with their parent.
262
+ */
263
+ function collectRoutableLeaves(node, seen, segmentPath, insideSlot) {
264
+ const currentPath = segmentPath ? `${segmentPath}/${node.segmentName}` : node.segmentName || "(root)";
265
+ if (!insideSlot) {
266
+ const routableFile = node.page ?? node.route;
267
+ if (routableFile) {
268
+ const existing = seen.get(node.urlPath);
269
+ if (existing) throw new Error(`Build error: route collision — multiple route groups produce a page/route at the same URL path.\n URL path: ${node.urlPath}\n File 1: ${existing.filePath} (via ${existing.segmentPath})\n File 2: ${routableFile.filePath} (via ${currentPath})\nEach URL path must map to exactly one page or route handler. Rename or move one of the conflicting files.`);
270
+ seen.set(node.urlPath, {
271
+ filePath: routableFile.filePath,
272
+ segmentPath: currentPath
273
+ });
274
+ }
275
+ }
276
+ for (const child of node.children) collectRoutableLeaves(child, seen, currentPath, insideSlot);
277
+ for (const slotNode of Object.values(node.slots)) collectRoutableLeaves(slotNode, seen, currentPath, true);
278
+ }
279
+ /**
280
+ * Validate that no route chain contains duplicate dynamic param names.
281
+ *
282
+ * Example violation:
283
+ * app/[id]/items/[id]/page.tsx — 'id' appears twice in the ancestor chain.
284
+ *
285
+ * Route groups are transparent — params accumulate through them.
286
+ * Slots are independent — duplicate detection does NOT cross slot boundaries.
287
+ *
288
+ * See design/07-routing.md §"Duplicate Param Name Detection"
289
+ */
290
+ function validateDuplicateParamNames(root) {
291
+ walkForDuplicateParams(root, /* @__PURE__ */ new Map());
292
+ }
293
+ /**
294
+ * Recursively walk the segment tree, tracking seen param names → segment paths.
295
+ * Throws on the first duplicate found.
296
+ */
297
+ function walkForDuplicateParams(node, seen) {
298
+ if (node.paramName) {
299
+ const existing = seen.get(node.paramName);
300
+ if (existing) throw new Error(`[timber] Duplicate param name '${node.paramName}' in route chain.\n First defined at: ${existing}\n Duplicate at: ${node.urlPath || "/"}\n Rename one of the segments to avoid ambiguity.`);
301
+ seen = new Map(seen);
302
+ seen.set(node.paramName, node.urlPath || "/");
303
+ }
304
+ for (const child of node.children) walkForDuplicateParams(child, seen);
305
+ for (const slotNode of Object.values(node.slots)) walkForDuplicateParams(slotNode, new Map(seen));
306
+ }
307
+ /**
308
+ * Validate that each param name uses a single bracket form across the entire route tree.
309
+ *
310
+ * Different bracket forms produce different types:
311
+ * [id] → string
312
+ * [...id] → string[]
313
+ * [[...id]] → string[] | undefined
314
+ *
315
+ * If the same param name appears with multiple forms, the no-argument
316
+ * getSegmentParams() / useSegmentParams() return type becomes ambiguous.
317
+ *
318
+ * Same name + same form across different routes is fine and expected.
319
+ */
320
+ function validateUniqueBracketForms(root) {
321
+ collectBracketForms(root, /* @__PURE__ */ new Map());
322
+ }
323
+ function collectBracketForms(node, forms) {
324
+ if (node.paramName && node.segmentType !== "static" && node.segmentType !== "group") {
325
+ const existing = forms.get(node.paramName);
326
+ if (existing && existing.segmentType !== node.segmentType) {
327
+ const bracketExamples = {
328
+ "dynamic": `[${node.paramName}]`,
329
+ "catch-all": `[...${node.paramName}]`,
330
+ "optional-catch-all": `[[...${node.paramName}]]`
331
+ };
332
+ throw new Error(`[timber] Param name '${node.paramName}' uses multiple bracket forms.\n ${bracketExamples[existing.segmentType] ?? existing.segmentType} at: ${existing.urlPath}\n ${bracketExamples[node.segmentType] ?? node.segmentType} at: ${node.urlPath || "/"}\n Each param name must use a single bracket form across all routes.\n Rename one of the segments to fix this (e.g., [${node.paramName}] → [${node.paramName}Id]).`);
333
+ }
334
+ if (!existing) forms.set(node.paramName, {
335
+ segmentType: node.segmentType,
336
+ urlPath: node.urlPath || "/"
337
+ });
338
+ }
339
+ for (const child of node.children) collectBracketForms(child, forms);
340
+ for (const slotNode of Object.values(node.slots)) collectBracketForms(slotNode, forms);
341
+ }
342
+ /**
343
+ * Find a fixed-extension file (proxy.ts) in a directory.
344
+ */
345
+ function findFixedFile(dirPath, name) {
346
+ for (const ext of ["ts", "tsx"]) {
347
+ const fullPath = join(dirPath, `${name}.${ext}`);
348
+ try {
349
+ if (statSync(fullPath).isFile()) return {
350
+ filePath: fullPath,
351
+ extension: ext
352
+ };
353
+ } catch {}
354
+ }
355
+ }
356
+ /**
357
+ * Find a file using the configured page extensions (tsx, ts, jsx, js, mdx, etc.).
358
+ * Used for app-root conventions like global-error that aren't per-segment.
359
+ */
360
+ function findPageExtFile(dirPath, name, extSet) {
361
+ for (const ext of extSet) {
362
+ const fullPath = join(dirPath, `${name}.${ext}`);
363
+ try {
364
+ if (statSync(fullPath).isFile()) return {
365
+ filePath: fullPath,
366
+ extension: ext
367
+ };
368
+ } catch {}
369
+ }
370
+ }
371
+ //#endregion
372
+ //#region src/utils/startup-timer.ts
373
+ /**
374
+ * Startup timer — records named phases with their durations.
375
+ *
376
+ * Used by the plugin system to instrument cold start and report a
377
+ * timing breakdown in dev mode. Zero overhead in production (disabled).
378
+ *
379
+ * See design/18-build-system.md, TIM-155.
380
+ */
381
+ /**
382
+ * Create a startup timer that records phase durations.
383
+ */
384
+ function createStartupTimer() {
385
+ const pending = /* @__PURE__ */ new Map();
386
+ const phases = [];
387
+ return {
388
+ start(phase) {
389
+ pending.set(phase, performance.now());
390
+ },
391
+ end(phase) {
392
+ const startMs = pending.get(phase);
393
+ if (startMs === void 0) return 0;
394
+ pending.delete(phase);
395
+ const durationMs = performance.now() - startMs;
396
+ phases.push({
397
+ name: phase,
398
+ startMs,
399
+ durationMs
400
+ });
401
+ return durationMs;
402
+ },
403
+ getPhases() {
404
+ return [...phases].sort((a, b) => a.startMs - b.startMs);
405
+ },
406
+ totalMs() {
407
+ if (phases.length === 0) return 0;
408
+ const sorted = this.getPhases();
409
+ const first = sorted[0];
410
+ const last = sorted[sorted.length - 1];
411
+ return last.startMs + last.durationMs - first.startMs;
412
+ },
413
+ formatSummary() {
414
+ const sorted = this.getPhases();
415
+ if (sorted.length === 0) return "No phases recorded.";
416
+ const lines = sorted.map((p) => {
417
+ const ms = p.durationMs.toFixed(1);
418
+ return ` ${p.name.padEnd(30)} ${ms.padStart(8)}ms`;
419
+ });
420
+ const total = this.totalMs().toFixed(1);
421
+ lines.push(` ${"total".padEnd(30)} ${total.padStart(8)}ms`);
422
+ return ["[timber] startup timing:", ...lines].join("\n");
423
+ }
424
+ };
425
+ }
426
+ /**
427
+ * No-op timer for production builds — all methods are empty.
428
+ */
429
+ function createNoopTimer() {
430
+ return {
431
+ start() {},
432
+ end() {
433
+ return 0;
434
+ },
435
+ getPhases() {
436
+ return [];
437
+ },
438
+ totalMs() {
439
+ return 0;
440
+ },
441
+ formatSummary() {
442
+ return "";
443
+ }
444
+ };
445
+ }
446
+ //#endregion
447
+ //#region src/plugin-context.ts
448
+ /**
449
+ * Plugin context — internal types and helpers for timber sub-plugins.
450
+ *
451
+ * These are NOT part of the user-facing API. They are consumed by
452
+ * sub-plugins (routing, entries, shims, etc.) via relative imports.
453
+ * The root entry point (index.ts) does not re-export them.
454
+ *
455
+ * Design doc: 18-build-system.md §"Shared Plugin Context"
456
+ */
457
+ /**
458
+ * Resolve `clientJavascript` into a fully resolved config.
459
+ */
460
+ function resolveClientJavascript(config) {
461
+ if (config.clientJavascript !== void 0) {
462
+ if (typeof config.clientJavascript === "boolean") return {
463
+ disabled: !config.clientJavascript,
464
+ enableHMRInDev: !config.clientJavascript
465
+ };
466
+ return {
467
+ disabled: config.clientJavascript.disabled,
468
+ enableHMRInDev: config.clientJavascript.enableHMRInDev ?? config.clientJavascript.disabled
469
+ };
470
+ }
471
+ return {
472
+ disabled: false,
473
+ enableHMRInDev: false
474
+ };
475
+ }
476
+ /**
477
+ * Resolve the app directory. Checks (in order):
478
+ * 1. Explicit `configAppDir` from timber.config.ts
479
+ * 2. `<root>/app`
480
+ * 3. `<root>/src/app`
481
+ *
482
+ * Throws if none exist.
483
+ */
484
+ function resolveAppDir(root, configAppDir) {
485
+ if (configAppDir) {
486
+ const explicit = join(root, configAppDir);
487
+ if (!existsSync(explicit)) throw new Error(`[timber] Configured appDir "${configAppDir}" does not exist at ${explicit}`);
488
+ return explicit;
489
+ }
490
+ const rootApp = join(root, "app");
491
+ if (existsSync(rootApp)) return rootApp;
492
+ const srcApp = join(root, "src", "app");
493
+ if (existsSync(srcApp)) return srcApp;
494
+ throw new Error(`[timber] Could not find app directory. Expected "app/" or "src/app/" in ${root}. You can set appDir in timber.config.ts to specify a custom location.`);
495
+ }
496
+ function createPluginContext(config, root) {
497
+ const projectRoot = root ?? process.cwd();
498
+ const resolvedConfig = { ...config };
499
+ return {
500
+ config: resolvedConfig,
501
+ clientJavascript: resolveClientJavascript(resolvedConfig),
502
+ routeTree: null,
503
+ appDir: join(projectRoot, "app"),
504
+ root: projectRoot,
505
+ dev: false,
506
+ buildManifest: null,
507
+ deploymentId: null,
508
+ timer: createStartupTimer(),
509
+ holdingServer: null,
510
+ buildDir: resolveBuildDir(projectRoot, resolvedConfig.buildDir)
511
+ };
512
+ }
513
+ /** Default build output directory (relative to root). */
514
+ var DEFAULT_BUILD_DIR = join(".timber", "dist");
515
+ /**
516
+ * Resolve the build output directory.
517
+ *
518
+ * Priority:
519
+ * 1. Explicit `timberBuildDir` from timber.config.ts
520
+ * 2. Explicit `viteBuildOutDir` from Vite's build.outDir (if not the default 'dist')
521
+ * 3. Default: `.timber/dist`
522
+ *
523
+ * Returns an absolute path.
524
+ */
525
+ function resolveBuildDir(root, timberBuildDir, viteBuildOutDir) {
526
+ if (timberBuildDir) return join(root, timberBuildDir);
527
+ if (viteBuildOutDir && viteBuildOutDir !== "dist") return join(root, viteBuildOutDir);
528
+ return join(root, DEFAULT_BUILD_DIR);
529
+ }
530
+ /**
531
+ * Load timber.config.ts (or .js, .mjs) from the project root.
532
+ * Returns the config object or null if no config file is found.
533
+ *
534
+ * Uses require() which works for ESM modules on Node 22.12+.
535
+ * This keeps timber() synchronous — no async config loading needed.
536
+ */
537
+ function loadTimberConfigFile(root) {
538
+ const configNames = [
539
+ "timber.config.ts",
540
+ "timber.config.js",
541
+ "timber.config.mjs"
542
+ ];
543
+ const req = createRequire(join(root, "package.json"));
544
+ for (const name of configNames) {
545
+ const configPath = join(root, name);
546
+ if (existsSync(configPath)) {
547
+ const mod = req(configPath);
548
+ return mod.default ?? mod;
549
+ }
550
+ }
551
+ return null;
552
+ }
553
+ /**
554
+ * Detect config keys set in both inline (vite.config.ts) and file (timber.config.ts)
555
+ * and warn the user. The `output` key is excluded because it defaults to 'server'
556
+ * in createPluginContext and would always appear as an inline key.
557
+ *
558
+ * Returns the list of conflicting key names (for testing).
559
+ */
560
+ function warnConfigConflicts(inline, fileConfig) {
561
+ const conflicts = [];
562
+ for (const key of Object.keys(fileConfig)) if (key in inline && inline[key] !== void 0) conflicts.push(key);
563
+ if (conflicts.length > 0) console.warn(`[timber] Config conflict: ${conflicts.map((k) => `"${k}"`).join(", ")} set in both vite.config.ts (inline) and timber.config.ts. Move all config to timber.config.ts to avoid confusion. The inline value from vite.config.ts will be used.`);
564
+ return conflicts;
565
+ }
566
+ /**
567
+ * Merge file-based config into ctx.config. Inline config (already in ctx.config)
568
+ * takes precedence — file config only fills in missing fields.
569
+ */
570
+ function mergeFileConfig(ctx, fileConfig) {
571
+ const inline = ctx.config;
572
+ warnConfigConflicts(inline, fileConfig);
573
+ ctx.config = {
574
+ ...fileConfig,
575
+ ...inline,
576
+ ...fileConfig.limits && inline.limits ? { limits: {
577
+ ...fileConfig.limits,
578
+ ...inline.limits
579
+ } } : {},
580
+ ...fileConfig.dev && inline.dev ? { dev: {
581
+ ...fileConfig.dev,
582
+ ...inline.dev
583
+ } } : {},
584
+ ...fileConfig.mdx && inline.mdx ? { mdx: {
585
+ ...fileConfig.mdx,
586
+ ...inline.mdx
587
+ } } : {}
588
+ };
589
+ }
590
+ //#endregion
591
+ //#region src/cli-schema-sync.ts
592
+ /**
593
+ * `timber schema sync` — scan filesystem for dynamic segments, append
594
+ * missing entries with `codec.string` defaults, and remove stale entries
595
+ * whose segments no longer exist in the filesystem.
596
+ *
597
+ * Design doc: design/41-global-params.md §Auto-Scaffolding
598
+ */
599
+ /**
600
+ * Collect all unique bracket-keyed dynamic segment names from the route tree.
601
+ * Returns entries like '[artistSlug]', '[...slug]', '[[...topic]]'.
602
+ */
603
+ function collectDynamicSegments(appDir) {
604
+ const tree = scanRoutes(appDir);
605
+ const segments = /* @__PURE__ */ new Set();
606
+ walkSegments(tree.root, segments);
607
+ return [...segments].sort();
608
+ }
609
+ function walkSegments(node, segments) {
610
+ if (node.paramName) segments.add(node.segmentName);
611
+ for (const child of node.children) walkSegments(child, segments);
612
+ for (const slot of Object.values(node.slots)) walkSegments(slot, segments);
613
+ }
614
+ /**
615
+ * Parse existing bracket keys from an app/schema.ts file.
616
+ * Uses regex to find keys in segmentParams: { '[key]': ... } blocks.
617
+ */
618
+ function parseExistingSchemaKeys(content) {
619
+ const keys = [];
620
+ const re = /['"](\[{1,2}(?:\.{3})?\w+\]{1,2})['"]\s*:/g;
621
+ let m;
622
+ while ((m = re.exec(content)) !== null) keys.push(m[1]);
623
+ return keys;
624
+ }
625
+ /** Schema file extensions to check. */
626
+ var SCHEMA_EXTENSIONS = [
627
+ ".ts",
628
+ ".tsx",
629
+ ".js",
630
+ ".jsx"
631
+ ];
632
+ /**
633
+ * Find the schema file path if it exists.
634
+ */
635
+ function findSchemaFile(appDir) {
636
+ for (const ext of SCHEMA_EXTENSIONS) {
637
+ const p = join(appDir, `schema${ext}`);
638
+ if (existsSync(p)) return p;
639
+ }
640
+ }
641
+ function defaultCodecForSegment(seg) {
642
+ if (seg.startsWith("[[...")) return "codec.optionalCatchAll(codec.string)";
643
+ if (seg.startsWith("[...")) return "codec.stringArray";
644
+ return "codec.string";
645
+ }
646
+ /**
647
+ * Generate the content for a new app/schema.ts with the given segment keys.
648
+ */
649
+ function generateNewSchema(segments) {
650
+ const lines = [];
651
+ lines.push("import { defineSchema } from '@timber-js/app/params';");
652
+ lines.push("import { codec } from '@timber-js/app/codec';");
653
+ lines.push("");
654
+ lines.push("export default defineSchema({");
655
+ lines.push(" segmentParams: {");
656
+ for (const seg of segments) lines.push(` '${seg}': ${defaultCodecForSegment(seg)},`);
657
+ lines.push(" },");
658
+ lines.push("});");
659
+ lines.push("");
660
+ return lines.join("\n");
661
+ }
662
+ /**
663
+ * Append missing segment entries to an existing schema file.
664
+ * Inserts new entries before the closing `}` of segmentParams.
665
+ */
666
+ var CODEC_IMPORT = "import { codec } from '@timber-js/app/codec';";
667
+ function hasCodecImport(content) {
668
+ return /import\s+\{[^}]*\bcodec\b[^}]*\}\s+from\s+['"]@timber-js\/app\/codec['"]/.test(content);
669
+ }
670
+ function ensureCodecImport(content) {
671
+ if (hasCodecImport(content)) return content;
672
+ const lines = content.split("\n");
673
+ let lastImportIndex = -1;
674
+ for (let i = 0; i < lines.length; i++) if (/^\s*import\s/.test(lines[i])) lastImportIndex = i;
675
+ if (lastImportIndex === -1) return CODEC_IMPORT + "\n" + content;
676
+ lines.splice(lastImportIndex + 1, 0, CODEC_IMPORT);
677
+ return lines.join("\n");
678
+ }
679
+ function appendToSchema(content, newSegments) {
680
+ content = ensureCodecImport(content);
681
+ const spIndex = content.indexOf("segmentParams");
682
+ if (spIndex === -1) throw new Error("[timber] Could not find segmentParams in schema file. Expected a defineSchema({ segmentParams: { ... } }) call.");
683
+ const openBrace = content.indexOf("{", spIndex + 13);
684
+ if (openBrace === -1) throw new Error("[timber] Could not find opening brace for segmentParams.");
685
+ let depth = 1;
686
+ let i = openBrace + 1;
687
+ while (i < content.length && depth > 0) {
688
+ if (content[i] === "{") depth++;
689
+ else if (content[i] === "}") depth--;
690
+ i++;
691
+ }
692
+ const closeBrace = i - 1;
693
+ const existingLine = content.slice(openBrace, closeBrace).match(/^(\s+)['"]\[/m);
694
+ const indent = existingLine ? existingLine[1] : " ";
695
+ const insertion = newSegments.map((seg) => `${indent}'${seg}': ${defaultCodecForSegment(seg)},`).join("\n");
696
+ const before = content.slice(0, closeBrace);
697
+ const after = content.slice(closeBrace);
698
+ return before + (before.trimEnd().endsWith(",") ? "\n" : "\n") + insertion + "\n" + after;
699
+ }
700
+ /**
701
+ * Remove entries from the segmentParams block whose keys match `staleSegments`.
702
+ * Removes the entire line including trailing comma/whitespace.
703
+ */
704
+ function removeFromSchema(content, staleSegments) {
705
+ for (const seg of staleSegments) {
706
+ const escaped = seg.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
707
+ const keyRe = new RegExp(`^[ \t]*['"]${escaped}['"][ \t]*:`, "gm");
708
+ let m;
709
+ while ((m = keyRe.exec(content)) !== null) {
710
+ const start = m.index;
711
+ let i = m.index + m[0].length;
712
+ let depth = 0;
713
+ let inString = null;
714
+ while (i < content.length) {
715
+ const ch = content[i];
716
+ if (inString) {
717
+ if (ch === "\\") i++;
718
+ else if (ch === inString) inString = null;
719
+ } else if (ch === "\"" || ch === "'" || ch === "`") inString = ch;
720
+ else if (ch === "(" || ch === "{" || ch === "[") depth++;
721
+ else if (ch === ")" || ch === "}" || ch === "]") depth--;
722
+ else if (depth === 0 && ch === ",") {
723
+ i++;
724
+ break;
725
+ } else if (depth === 0 && (ch === "\n" || ch === "}")) break;
726
+ i++;
727
+ }
728
+ if (i < content.length && content[i] === "\n") i++;
729
+ content = content.slice(0, start) + content.slice(i);
730
+ keyRe.lastIndex = start;
731
+ }
732
+ }
733
+ return content;
734
+ }
735
+ /**
736
+ * Run the schema sync: scan filesystem, diff against schema, append missing.
737
+ */
738
+ function runSchemaSync(projectRoot) {
739
+ const appDir = resolveAppDir(projectRoot);
740
+ const filesystemSegments = collectDynamicSegments(appDir);
741
+ const schemaPath = findSchemaFile(appDir);
742
+ if (filesystemSegments.length === 0 && !schemaPath) return {
743
+ filesystemSegments: [],
744
+ existingSegments: [],
745
+ addedSegments: [],
746
+ removedSegments: [],
747
+ created: false
748
+ };
749
+ if (!schemaPath) {
750
+ writeFileSync(join(appDir, "schema.ts"), generateNewSchema(filesystemSegments), "utf-8");
751
+ return {
752
+ filesystemSegments,
753
+ existingSegments: [],
754
+ addedSegments: filesystemSegments,
755
+ removedSegments: [],
756
+ created: true
757
+ };
758
+ }
759
+ const content = readFileSync(schemaPath, "utf-8");
760
+ const existingSegments = parseExistingSchemaKeys(content);
761
+ const missing = filesystemSegments.filter((seg) => !existingSegments.includes(seg));
762
+ const stale = existingSegments.filter((seg) => !filesystemSegments.includes(seg));
763
+ if (missing.length === 0 && stale.length === 0) return {
764
+ filesystemSegments,
765
+ existingSegments,
766
+ addedSegments: [],
767
+ removedSegments: [],
768
+ created: false
769
+ };
770
+ let updated = content;
771
+ if (stale.length > 0) updated = removeFromSchema(updated, stale);
772
+ if (missing.length > 0) updated = appendToSchema(updated, missing);
773
+ writeFileSync(schemaPath, updated, "utf-8");
774
+ return {
775
+ filesystemSegments,
776
+ existingSegments,
777
+ addedSegments: missing,
778
+ removedSegments: stale,
779
+ created: false
780
+ };
781
+ }
782
+ //#endregion
783
+ export { runSchemaSync as a, loadTimberConfigFile as c, resolveBuildDir as d, resolveClientJavascript as f, parseExistingSchemaKeys as i, mergeFileConfig as l, scanRoutes as m, defaultCodecForSegment as n, DEFAULT_BUILD_DIR as o, createNoopTimer as p, findSchemaFile as r, createPluginContext as s, collectDynamicSegments as t, resolveAppDir as u };
784
+
785
+ //# sourceMappingURL=cli-schema-sync-q-Ce6-iG.js.map