@timber-js/app 0.2.0-alpha.12 → 0.2.0-alpha.120

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 (758) hide show
  1. package/dist/_chunks/actions-Cw-7NfJJ.js +1101 -0
  2. package/dist/_chunks/actions-Cw-7NfJJ.js.map +1 -0
  3. package/dist/_chunks/build-output-helper-DhxiT18k.js +61 -0
  4. package/dist/_chunks/build-output-helper-DhxiT18k.js.map +1 -0
  5. package/dist/_chunks/cli-schema-sync-XV0I47Gj.js +2 -0
  6. package/dist/_chunks/cli-schema-sync-q2wB0DyJ.js +358 -0
  7. package/dist/_chunks/cli-schema-sync-q2wB0DyJ.js.map +1 -0
  8. package/dist/_chunks/codec-registry-V7ARyeLN.js +21 -0
  9. package/dist/_chunks/codec-registry-V7ARyeLN.js.map +1 -0
  10. package/dist/_chunks/define-8zQ8Vm7x.js +195 -0
  11. package/dist/_chunks/define-8zQ8Vm7x.js.map +1 -0
  12. package/dist/_chunks/define-zQX6e1tN.js +124 -0
  13. package/dist/_chunks/define-zQX6e1tN.js.map +1 -0
  14. package/dist/_chunks/format-CR6v1pWE.js +14 -0
  15. package/dist/_chunks/format-CR6v1pWE.js.map +1 -0
  16. package/dist/_chunks/handler-store-iqnt2ghN.js +54 -0
  17. package/dist/_chunks/handler-store-iqnt2ghN.js.map +1 -0
  18. package/dist/_chunks/logger-DDmK5skc.js +291 -0
  19. package/dist/_chunks/logger-DDmK5skc.js.map +1 -0
  20. package/dist/_chunks/merge-search-params-CwxJzBLS.js +41 -0
  21. package/dist/_chunks/merge-search-params-CwxJzBLS.js.map +1 -0
  22. package/dist/_chunks/navigation-root-DKsJ5Di7.js +96 -0
  23. package/dist/_chunks/navigation-root-DKsJ5Di7.js.map +1 -0
  24. package/dist/_chunks/registry-Dp_hJL4s.js +20 -0
  25. package/dist/_chunks/registry-Dp_hJL4s.js.map +1 -0
  26. package/dist/_chunks/resolve-schema-23Mc8aLi.js +65 -0
  27. package/dist/_chunks/resolve-schema-23Mc8aLi.js.map +1 -0
  28. package/dist/_chunks/router-ref-sektkr-t.js +28 -0
  29. package/dist/_chunks/router-ref-sektkr-t.js.map +1 -0
  30. package/dist/_chunks/scanner-DmfoB7iK.js +336 -0
  31. package/dist/_chunks/scanner-DmfoB7iK.js.map +1 -0
  32. package/dist/_chunks/schema-bridge-eL5vQDSA.js +86 -0
  33. package/dist/_chunks/schema-bridge-eL5vQDSA.js.map +1 -0
  34. package/dist/_chunks/segment-classify-CnfLLvir.js +137 -0
  35. package/dist/_chunks/segment-classify-CnfLLvir.js.map +1 -0
  36. package/dist/_chunks/segment-context-Bg0pFbLT.js +34 -0
  37. package/dist/_chunks/segment-context-Bg0pFbLT.js.map +1 -0
  38. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-BO5OvEvg.js} +1 -1
  39. package/dist/_chunks/ssr-data-BO5OvEvg.js.map +1 -0
  40. package/dist/_chunks/stale-reload-BCPRG0Cv.js +64 -0
  41. package/dist/_chunks/stale-reload-BCPRG0Cv.js.map +1 -0
  42. package/dist/_chunks/tracing-DvKLzCFa.js +329 -0
  43. package/dist/_chunks/tracing-DvKLzCFa.js.map +1 -0
  44. package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-D9SBlAfp.js} +7 -20
  45. package/dist/_chunks/use-query-states-D9SBlAfp.js.map +1 -0
  46. package/dist/_chunks/use-segment-params-CskiK-59.js +185 -0
  47. package/dist/_chunks/use-segment-params-CskiK-59.js.map +1 -0
  48. package/dist/_chunks/validation-Bm3Je-09.js +84 -0
  49. package/dist/_chunks/validation-Bm3Je-09.js.map +1 -0
  50. package/dist/_chunks/walkers-DgOXkTts.js +609 -0
  51. package/dist/_chunks/walkers-DgOXkTts.js.map +1 -0
  52. package/dist/_chunks/{format-DviM89f0.js → warnings-B30wpfaS.js} +6 -45
  53. package/dist/_chunks/warnings-B30wpfaS.js.map +1 -0
  54. package/dist/adapters/build-output-helper.d.ts +28 -0
  55. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  56. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  57. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  58. package/dist/adapters/cloudflare-dev.js +73 -0
  59. package/dist/adapters/cloudflare-dev.js.map +1 -0
  60. package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
  61. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  62. package/dist/adapters/cloudflare-kv-cache.js +95 -0
  63. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  64. package/dist/adapters/cloudflare.d.ts +148 -12
  65. package/dist/adapters/cloudflare.d.ts.map +1 -1
  66. package/dist/adapters/cloudflare.js +142 -38
  67. package/dist/adapters/cloudflare.js.map +1 -1
  68. package/dist/adapters/compress-module.d.ts.map +1 -1
  69. package/dist/adapters/nitro.d.ts +17 -1
  70. package/dist/adapters/nitro.d.ts.map +1 -1
  71. package/dist/adapters/nitro.js +143 -45
  72. package/dist/adapters/nitro.js.map +1 -1
  73. package/dist/adapters/shared.d.ts +16 -0
  74. package/dist/adapters/shared.d.ts.map +1 -0
  75. package/dist/cache/cache-api.d.ts +24 -0
  76. package/dist/cache/cache-api.d.ts.map +1 -0
  77. package/dist/cache/handler-store.d.ts +31 -0
  78. package/dist/cache/handler-store.d.ts.map +1 -0
  79. package/dist/cache/index.d.ts +23 -7
  80. package/dist/cache/index.d.ts.map +1 -1
  81. package/dist/cache/index.js +151 -81
  82. package/dist/cache/index.js.map +1 -1
  83. package/dist/cache/singleflight.d.ts +18 -1
  84. package/dist/cache/singleflight.d.ts.map +1 -1
  85. package/dist/cache/sizeof.d.ts +22 -0
  86. package/dist/cache/sizeof.d.ts.map +1 -0
  87. package/dist/cache/timber-cache.d.ts +1 -1
  88. package/dist/cache/timber-cache.d.ts.map +1 -1
  89. package/dist/cli-schema-sync.d.ts +37 -0
  90. package/dist/cli-schema-sync.d.ts.map +1 -0
  91. package/dist/cli.d.ts +14 -2
  92. package/dist/cli.d.ts.map +1 -1
  93. package/dist/cli.js +42 -6
  94. package/dist/cli.js.map +1 -1
  95. package/dist/client/browser-dev.d.ts +34 -1
  96. package/dist/client/browser-dev.d.ts.map +1 -1
  97. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  98. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  99. package/dist/client/browser-entry/hmr.d.ts +21 -0
  100. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  101. package/dist/client/browser-entry/hydrate.d.ts +46 -0
  102. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  103. package/dist/client/browser-entry/index.d.ts +30 -0
  104. package/dist/client/browser-entry/index.d.ts.map +1 -0
  105. package/dist/client/browser-entry/post-hydration.d.ts +26 -0
  106. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  107. package/dist/client/browser-entry/router-init.d.ts +23 -0
  108. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  109. package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
  110. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  111. package/dist/client/browser-entry/scroll.d.ts +19 -0
  112. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  113. package/dist/client/error-boundary.d.ts +12 -5
  114. package/dist/client/error-boundary.d.ts.map +1 -1
  115. package/dist/client/error-boundary.js +29 -6
  116. package/dist/client/error-boundary.js.map +1 -1
  117. package/dist/client/error-reconstituter.d.ts +54 -0
  118. package/dist/client/error-reconstituter.d.ts.map +1 -0
  119. package/dist/client/form.d.ts +16 -27
  120. package/dist/client/form.d.ts.map +1 -1
  121. package/dist/client/history.d.ts +19 -4
  122. package/dist/client/history.d.ts.map +1 -1
  123. package/dist/client/index.d.ts +9 -24
  124. package/dist/client/index.d.ts.map +1 -1
  125. package/dist/client/index.js +172 -1100
  126. package/dist/client/index.js.map +1 -1
  127. package/dist/client/internal.d.ts +19 -0
  128. package/dist/client/internal.d.ts.map +1 -0
  129. package/dist/client/internal.js +964 -0
  130. package/dist/client/internal.js.map +1 -0
  131. package/dist/client/link-pending-store.d.ts +63 -0
  132. package/dist/client/link-pending-store.d.ts.map +1 -0
  133. package/dist/client/link.d.ts +62 -55
  134. package/dist/client/link.d.ts.map +1 -1
  135. package/dist/client/nav-link-store.d.ts +36 -0
  136. package/dist/client/nav-link-store.d.ts.map +1 -0
  137. package/dist/client/navigation-api-types.d.ts +90 -0
  138. package/dist/client/navigation-api-types.d.ts.map +1 -0
  139. package/dist/client/navigation-api.d.ts +115 -0
  140. package/dist/client/navigation-api.d.ts.map +1 -0
  141. package/dist/client/navigation-context.d.ts +13 -2
  142. package/dist/client/navigation-context.d.ts.map +1 -1
  143. package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
  144. package/dist/client/navigation-root.d.ts.map +1 -0
  145. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  146. package/dist/client/router-ref.d.ts +1 -1
  147. package/dist/client/router.d.ts +70 -4
  148. package/dist/client/router.d.ts.map +1 -1
  149. package/dist/client/rsc-fetch.d.ts +38 -3
  150. package/dist/client/rsc-fetch.d.ts.map +1 -1
  151. package/dist/client/segment-cache.d.ts +1 -1
  152. package/dist/client/segment-cache.d.ts.map +1 -1
  153. package/dist/client/segment-outlet.d.ts +63 -0
  154. package/dist/client/segment-outlet.d.ts.map +1 -0
  155. package/dist/client/ssr-data.d.ts +13 -4
  156. package/dist/client/ssr-data.d.ts.map +1 -1
  157. package/dist/client/stale-reload.d.ts +15 -0
  158. package/dist/client/stale-reload.d.ts.map +1 -1
  159. package/dist/client/state.d.ts +1 -1
  160. package/dist/client/top-loader.d.ts +5 -5
  161. package/dist/client/top-loader.d.ts.map +1 -1
  162. package/dist/client/use-cookie.d.ts +12 -0
  163. package/dist/client/use-cookie.d.ts.map +1 -1
  164. package/dist/client/use-link-status.d.ts +5 -5
  165. package/dist/client/use-link-status.d.ts.map +1 -1
  166. package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
  167. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  168. package/dist/client/use-query-states.d.ts +1 -1
  169. package/dist/client/use-query-states.d.ts.map +1 -1
  170. package/dist/client/use-router.d.ts +1 -1
  171. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +8 -6
  172. package/dist/client/use-segment-params.d.ts.map +1 -0
  173. package/dist/codec.d.ts +51 -0
  174. package/dist/codec.d.ts.map +1 -0
  175. package/dist/codec.js +46 -0
  176. package/dist/codec.js.map +1 -0
  177. package/dist/config-types.d.ts +294 -0
  178. package/dist/config-types.d.ts.map +1 -0
  179. package/dist/config-validation.d.ts +51 -0
  180. package/dist/config-validation.d.ts.map +1 -0
  181. package/dist/content/index.d.ts +1 -10
  182. package/dist/content/index.d.ts.map +1 -1
  183. package/dist/content/index.js +0 -2
  184. package/dist/cookies/define-cookie.d.ts +58 -25
  185. package/dist/cookies/define-cookie.d.ts.map +1 -1
  186. package/dist/cookies/index.d.ts +2 -1
  187. package/dist/cookies/index.d.ts.map +1 -1
  188. package/dist/cookies/index.js +251 -36
  189. package/dist/cookies/index.js.map +1 -1
  190. package/dist/cookies/json-cookie.d.ts +64 -0
  191. package/dist/cookies/json-cookie.d.ts.map +1 -0
  192. package/dist/cookies/validation.d.ts +46 -0
  193. package/dist/cookies/validation.d.ts.map +1 -0
  194. package/dist/dev-tools/404-page.d.ts +46 -0
  195. package/dist/dev-tools/404-page.d.ts.map +1 -0
  196. package/dist/dev-tools/browser-logs.d.ts +84 -0
  197. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  198. package/dist/dev-tools/error-page.d.ts +58 -0
  199. package/dist/dev-tools/error-page.d.ts.map +1 -0
  200. package/dist/dev-tools/holding-server.d.ts +54 -0
  201. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  202. package/dist/dev-tools/index.d.ts +31 -0
  203. package/dist/dev-tools/index.d.ts.map +1 -0
  204. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  205. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  206. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  207. package/dist/dev-tools/logger.d.ts.map +1 -0
  208. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
  209. package/dist/dev-tools/logs.d.ts.map +1 -0
  210. package/dist/dev-tools/overlay.d.ts +91 -0
  211. package/dist/dev-tools/overlay.d.ts.map +1 -0
  212. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  213. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  214. package/dist/dev-tools/terminal.d.ts +28 -0
  215. package/dist/dev-tools/terminal.d.ts.map +1 -0
  216. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
  217. package/dist/dev-tools/warnings.d.ts.map +1 -0
  218. package/dist/fonts/ast.d.ts +98 -6
  219. package/dist/fonts/ast.d.ts.map +1 -1
  220. package/dist/fonts/bundle.d.ts +48 -0
  221. package/dist/fonts/bundle.d.ts.map +1 -0
  222. package/dist/fonts/dev-middleware.d.ts +22 -0
  223. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  224. package/dist/fonts/local.d.ts +1 -1
  225. package/dist/fonts/pipeline.d.ts +167 -0
  226. package/dist/fonts/pipeline.d.ts.map +1 -0
  227. package/dist/fonts/transform.d.ts +78 -0
  228. package/dist/fonts/transform.d.ts.map +1 -0
  229. package/dist/fonts/types.d.ts +45 -1
  230. package/dist/fonts/types.d.ts.map +1 -1
  231. package/dist/fonts/virtual-modules.d.ts +94 -0
  232. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  233. package/dist/index.d.ts +46 -190
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +4799 -12730
  236. package/dist/index.js.map +1 -1
  237. package/dist/params/codec-registry.d.ts +26 -0
  238. package/dist/params/codec-registry.d.ts.map +1 -0
  239. package/dist/params/define-schema.d.ts +53 -0
  240. package/dist/params/define-schema.d.ts.map +1 -0
  241. package/dist/params/index.d.ts +5 -0
  242. package/dist/params/index.d.ts.map +1 -0
  243. package/dist/params/index.js +34 -0
  244. package/dist/params/index.js.map +1 -0
  245. package/dist/params/resolve-schema.d.ts +34 -0
  246. package/dist/params/resolve-schema.d.ts.map +1 -0
  247. package/dist/plugin-context.d.ts +107 -0
  248. package/dist/plugin-context.d.ts.map +1 -0
  249. package/dist/plugins/adapter-build.d.ts +1 -1
  250. package/dist/plugins/adapter-build.d.ts.map +1 -1
  251. package/dist/plugins/build-manifest.d.ts +2 -2
  252. package/dist/plugins/build-manifest.d.ts.map +1 -1
  253. package/dist/plugins/build-report.d.ts +9 -7
  254. package/dist/plugins/build-report.d.ts.map +1 -1
  255. package/dist/plugins/client-chunks.d.ts +32 -0
  256. package/dist/plugins/client-chunks.d.ts.map +1 -0
  257. package/dist/plugins/content.d.ts +1 -1
  258. package/dist/plugins/content.d.ts.map +1 -1
  259. package/dist/plugins/dev-server.d.ts +1 -1
  260. package/dist/plugins/dev-server.d.ts.map +1 -1
  261. package/dist/plugins/entries.d.ts +1 -1
  262. package/dist/plugins/entries.d.ts.map +1 -1
  263. package/dist/plugins/fonts.d.ts +17 -73
  264. package/dist/plugins/fonts.d.ts.map +1 -1
  265. package/dist/plugins/mdx.d.ts +1 -1
  266. package/dist/plugins/mdx.d.ts.map +1 -1
  267. package/dist/plugins/routing.d.ts +1 -1
  268. package/dist/plugins/routing.d.ts.map +1 -1
  269. package/dist/plugins/server-bundle.d.ts.map +1 -1
  270. package/dist/plugins/shims.d.ts +6 -5
  271. package/dist/plugins/shims.d.ts.map +1 -1
  272. package/dist/plugins/static-build.d.ts +5 -26
  273. package/dist/plugins/static-build.d.ts.map +1 -1
  274. package/dist/routing/codegen-shared.d.ts +63 -0
  275. package/dist/routing/codegen-shared.d.ts.map +1 -0
  276. package/dist/routing/codegen-types.d.ts +60 -0
  277. package/dist/routing/codegen-types.d.ts.map +1 -0
  278. package/dist/routing/codegen.d.ts +7 -2
  279. package/dist/routing/codegen.d.ts.map +1 -1
  280. package/dist/routing/convention-lint.d.ts +41 -0
  281. package/dist/routing/convention-lint.d.ts.map +1 -0
  282. package/dist/routing/index.d.ts +5 -1
  283. package/dist/routing/index.d.ts.map +1 -1
  284. package/dist/routing/index.js +4 -2
  285. package/dist/routing/link-codegen.d.ts +90 -0
  286. package/dist/routing/link-codegen.d.ts.map +1 -0
  287. package/dist/routing/scanner.d.ts +1 -10
  288. package/dist/routing/scanner.d.ts.map +1 -1
  289. package/dist/routing/segment-classify.d.ts +75 -0
  290. package/dist/routing/segment-classify.d.ts.map +1 -0
  291. package/dist/routing/segment-codegen.d.ts +38 -0
  292. package/dist/routing/segment-codegen.d.ts.map +1 -0
  293. package/dist/routing/types.d.ts +77 -25
  294. package/dist/routing/types.d.ts.map +1 -1
  295. package/dist/routing/walkers.d.ts +51 -0
  296. package/dist/routing/walkers.d.ts.map +1 -0
  297. package/dist/rsc-runtime/rsc.d.ts +1 -1
  298. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  299. package/dist/rsc-runtime/ssr.d.ts +12 -0
  300. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  301. package/dist/schema-bridge.d.ts +76 -0
  302. package/dist/schema-bridge.d.ts.map +1 -0
  303. package/dist/search-params/define.d.ts +157 -0
  304. package/dist/search-params/define.d.ts.map +1 -0
  305. package/dist/search-params/index.d.ts +4 -7
  306. package/dist/search-params/index.d.ts.map +1 -1
  307. package/dist/search-params/index.js +34 -441
  308. package/dist/search-params/index.js.map +1 -1
  309. package/dist/search-params/registry.d.ts +2 -2
  310. package/dist/search-params/registry.d.ts.map +1 -1
  311. package/dist/search-params/wrappers.d.ts +53 -0
  312. package/dist/search-params/wrappers.d.ts.map +1 -0
  313. package/dist/segment-params/define.d.ts +95 -0
  314. package/dist/segment-params/define.d.ts.map +1 -0
  315. package/dist/segment-params/index.d.ts +3 -0
  316. package/dist/segment-params/index.d.ts.map +1 -0
  317. package/dist/segment-params/index.js +2 -0
  318. package/dist/server/access-gate.d.ts +8 -3
  319. package/dist/server/access-gate.d.ts.map +1 -1
  320. package/dist/server/action-client.d.ts +41 -6
  321. package/dist/server/action-client.d.ts.map +1 -1
  322. package/dist/server/action-encryption.d.ts +76 -0
  323. package/dist/server/action-encryption.d.ts.map +1 -0
  324. package/dist/server/action-handler.d.ts +35 -1
  325. package/dist/server/action-handler.d.ts.map +1 -1
  326. package/dist/server/actions.d.ts +3 -6
  327. package/dist/server/actions.d.ts.map +1 -1
  328. package/dist/server/als-registry.d.ts +53 -5
  329. package/dist/server/als-registry.d.ts.map +1 -1
  330. package/dist/server/asset-headers.d.ts +1 -15
  331. package/dist/server/asset-headers.d.ts.map +1 -1
  332. package/dist/server/build-manifest.d.ts +2 -2
  333. package/dist/server/build-manifest.d.ts.map +1 -1
  334. package/dist/server/coalesce-tick.d.ts +40 -0
  335. package/dist/server/coalesce-tick.d.ts.map +1 -0
  336. package/dist/server/cookie-context.d.ts +170 -0
  337. package/dist/server/cookie-context.d.ts.map +1 -0
  338. package/dist/server/cookie-parsing.d.ts +51 -0
  339. package/dist/server/cookie-parsing.d.ts.map +1 -0
  340. package/dist/server/debug.d.ts +1 -1
  341. package/dist/server/default-logger.d.ts +22 -0
  342. package/dist/server/default-logger.d.ts.map +1 -0
  343. package/dist/server/deny-boundary.d.ts +90 -0
  344. package/dist/server/deny-boundary.d.ts.map +1 -0
  345. package/dist/server/deny-renderer.d.ts.map +1 -1
  346. package/dist/server/dev-source-map.d.ts +22 -0
  347. package/dist/server/dev-source-map.d.ts.map +1 -0
  348. package/dist/server/early-hints-sender.d.ts.map +1 -1
  349. package/dist/server/early-hints.d.ts +13 -5
  350. package/dist/server/early-hints.d.ts.map +1 -1
  351. package/dist/server/error-boundary-wrapper.d.ts +7 -1
  352. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  353. package/dist/server/fallback-error.d.ts +12 -7
  354. package/dist/server/fallback-error.d.ts.map +1 -1
  355. package/dist/server/flight-injection-state.d.ts +66 -0
  356. package/dist/server/flight-injection-state.d.ts.map +1 -0
  357. package/dist/server/flight-scripts.d.ts +42 -0
  358. package/dist/server/flight-scripts.d.ts.map +1 -0
  359. package/dist/server/flush.d.ts.map +1 -1
  360. package/dist/server/form-data.d.ts +29 -0
  361. package/dist/server/form-data.d.ts.map +1 -1
  362. package/dist/server/html-injector-core.d.ts +213 -0
  363. package/dist/server/html-injector-core.d.ts.map +1 -0
  364. package/dist/server/html-injectors.d.ts +81 -41
  365. package/dist/server/html-injectors.d.ts.map +1 -1
  366. package/dist/server/index.d.ts +10 -46
  367. package/dist/server/index.d.ts.map +1 -1
  368. package/dist/server/index.js +155 -2905
  369. package/dist/server/index.js.map +1 -1
  370. package/dist/server/internal.d.ts +48 -0
  371. package/dist/server/internal.d.ts.map +1 -0
  372. package/dist/server/internal.js +2947 -0
  373. package/dist/server/internal.js.map +1 -0
  374. package/dist/server/logger.d.ts +39 -7
  375. package/dist/server/logger.d.ts.map +1 -1
  376. package/dist/server/middleware-runner.d.ts +36 -4
  377. package/dist/server/middleware-runner.d.ts.map +1 -1
  378. package/dist/server/node-stream-transforms.d.ts +112 -0
  379. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  380. package/dist/server/param-coercion.d.ts +54 -0
  381. package/dist/server/param-coercion.d.ts.map +1 -0
  382. package/dist/server/pipeline-helpers.d.ts +95 -0
  383. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  384. package/dist/server/pipeline-interception.d.ts +1 -1
  385. package/dist/server/pipeline-interception.d.ts.map +1 -1
  386. package/dist/server/pipeline-metadata.d.ts +6 -0
  387. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  388. package/dist/server/pipeline-outcome.d.ts +49 -0
  389. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  390. package/dist/server/pipeline-phases.d.ts +52 -0
  391. package/dist/server/pipeline-phases.d.ts.map +1 -0
  392. package/dist/server/pipeline.d.ts +118 -23
  393. package/dist/server/pipeline.d.ts.map +1 -1
  394. package/dist/server/port-resolution.d.ts +117 -0
  395. package/dist/server/port-resolution.d.ts.map +1 -0
  396. package/dist/server/primitives.d.ts +69 -18
  397. package/dist/server/primitives.d.ts.map +1 -1
  398. package/dist/server/render-timeout.d.ts +51 -0
  399. package/dist/server/render-timeout.d.ts.map +1 -0
  400. package/dist/server/request-context.d.ts +62 -107
  401. package/dist/server/request-context.d.ts.map +1 -1
  402. package/dist/server/route-element-builder.d.ts +27 -1
  403. package/dist/server/route-element-builder.d.ts.map +1 -1
  404. package/dist/server/route-handler.d.ts.map +1 -1
  405. package/dist/server/route-matcher.d.ts +21 -34
  406. package/dist/server/route-matcher.d.ts.map +1 -1
  407. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  408. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  409. package/dist/server/rsc-entry/api-handler.d.ts +2 -2
  410. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  411. package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
  412. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  413. package/dist/server/rsc-entry/helpers.d.ts +49 -6
  414. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  415. package/dist/server/rsc-entry/index.d.ts +19 -8
  416. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  417. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  418. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  419. package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
  420. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  421. package/dist/server/rsc-entry/rsc-stream.d.ts +17 -1
  422. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  423. package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
  424. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  425. package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
  426. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  427. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
  428. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  429. package/dist/server/safe-load.d.ts +46 -0
  430. package/dist/server/safe-load.d.ts.map +1 -0
  431. package/dist/server/sensitive-fields.d.ts +74 -0
  432. package/dist/server/sensitive-fields.d.ts.map +1 -0
  433. package/dist/server/sitemap-generator.d.ts +129 -0
  434. package/dist/server/sitemap-generator.d.ts.map +1 -0
  435. package/dist/server/sitemap-handler.d.ts +22 -0
  436. package/dist/server/sitemap-handler.d.ts.map +1 -0
  437. package/dist/server/slot-resolver.d.ts +1 -1
  438. package/dist/server/slot-resolver.d.ts.map +1 -1
  439. package/dist/server/ssr-entry.d.ts +30 -0
  440. package/dist/server/ssr-entry.d.ts.map +1 -1
  441. package/dist/server/ssr-render.d.ts +39 -21
  442. package/dist/server/ssr-render.d.ts.map +1 -1
  443. package/dist/server/ssr-wrappers.d.ts +50 -0
  444. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  445. package/dist/server/state-tree-diff.d.ts.map +1 -1
  446. package/dist/server/status-code-resolver.d.ts +16 -11
  447. package/dist/server/status-code-resolver.d.ts.map +1 -1
  448. package/dist/server/stream-utils.d.ts +36 -0
  449. package/dist/server/stream-utils.d.ts.map +1 -0
  450. package/dist/server/tracing.d.ts +5 -5
  451. package/dist/server/tracing.d.ts.map +1 -1
  452. package/dist/server/tree-builder.d.ts +62 -30
  453. package/dist/server/tree-builder.d.ts.map +1 -1
  454. package/dist/server/tree-match.d.ts +41 -0
  455. package/dist/server/tree-match.d.ts.map +1 -0
  456. package/dist/server/types.d.ts +49 -4
  457. package/dist/server/types.d.ts.map +1 -1
  458. package/dist/server/utils/escape-html.d.ts +14 -0
  459. package/dist/server/utils/escape-html.d.ts.map +1 -0
  460. package/dist/server/version-skew.d.ts +61 -0
  461. package/dist/server/version-skew.d.ts.map +1 -0
  462. package/dist/shared/merge-search-params.d.ts +22 -0
  463. package/dist/shared/merge-search-params.d.ts.map +1 -0
  464. package/dist/shims/font-google.d.ts +1 -1
  465. package/dist/shims/font-google.d.ts.map +1 -1
  466. package/dist/shims/font-google.js +42 -0
  467. package/dist/shims/font-google.js.map +1 -0
  468. package/dist/shims/font-local.d.ts +26 -0
  469. package/dist/shims/font-local.d.ts.map +1 -0
  470. package/dist/shims/font-local.js +20 -0
  471. package/dist/shims/font-local.js.map +1 -0
  472. package/dist/shims/headers.d.ts +2 -1
  473. package/dist/shims/headers.d.ts.map +1 -1
  474. package/dist/shims/navigation-client.d.ts +3 -1
  475. package/dist/shims/navigation-client.d.ts.map +1 -1
  476. package/dist/shims/navigation.d.ts +11 -5
  477. package/dist/shims/navigation.d.ts.map +1 -1
  478. package/dist/utils/state-machine.d.ts +80 -0
  479. package/dist/utils/state-machine.d.ts.map +1 -0
  480. package/package.json +56 -16
  481. package/src/adapters/build-output-helper.ts +77 -0
  482. package/src/adapters/cloudflare-dev.ts +177 -0
  483. package/src/adapters/cloudflare-kv-cache.ts +142 -0
  484. package/src/adapters/cloudflare.ts +350 -76
  485. package/src/adapters/compress-module.ts +24 -4
  486. package/src/adapters/nitro.ts +142 -59
  487. package/src/adapters/shared.ts +40 -0
  488. package/src/adapters/wrangler.d.ts +7 -0
  489. package/src/cache/cache-api.ts +38 -0
  490. package/src/cache/handler-store.ts +68 -0
  491. package/src/cache/index.ts +81 -18
  492. package/src/cache/singleflight.ts +62 -4
  493. package/src/cache/sizeof.ts +33 -0
  494. package/src/cache/timber-cache.ts +25 -20
  495. package/src/cli-schema-sync.ts +207 -0
  496. package/src/cli.ts +65 -8
  497. package/src/client/browser-dev.ts +153 -1
  498. package/src/client/browser-entry/action-dispatch.ts +126 -0
  499. package/src/client/browser-entry/hmr.ts +81 -0
  500. package/src/client/browser-entry/hydrate.ts +145 -0
  501. package/src/client/browser-entry/index.ts +149 -0
  502. package/src/client/browser-entry/post-hydration.ts +119 -0
  503. package/src/client/browser-entry/router-init.ts +193 -0
  504. package/src/client/browser-entry/rsc-stream.ts +157 -0
  505. package/src/client/browser-entry/scroll.ts +27 -0
  506. package/src/client/error-boundary.tsx +99 -22
  507. package/src/client/error-reconstituter.tsx +65 -0
  508. package/src/client/form.tsx +31 -32
  509. package/src/client/history.ts +26 -4
  510. package/src/client/index.ts +69 -44
  511. package/src/client/internal.ts +58 -0
  512. package/src/client/link-pending-store.ts +111 -0
  513. package/src/client/link.tsx +366 -113
  514. package/src/client/nav-link-store.ts +47 -0
  515. package/src/client/navigation-api-types.ts +112 -0
  516. package/src/client/navigation-api.ts +332 -0
  517. package/src/client/navigation-context.ts +31 -6
  518. package/src/client/navigation-root.tsx +342 -0
  519. package/src/client/nuqs-adapter.tsx +16 -3
  520. package/src/client/router-ref.ts +1 -1
  521. package/src/client/router.ts +300 -73
  522. package/src/client/rsc-fetch.ts +112 -8
  523. package/src/client/segment-cache.ts +1 -1
  524. package/src/client/segment-outlet.tsx +86 -0
  525. package/src/client/ssr-data.ts +13 -5
  526. package/src/client/stale-reload.ts +72 -3
  527. package/src/client/state.ts +2 -2
  528. package/src/client/top-loader.tsx +18 -6
  529. package/src/client/use-cookie.ts +31 -2
  530. package/src/client/use-link-status.ts +7 -7
  531. package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
  532. package/src/client/use-query-states.ts +9 -3
  533. package/src/client/use-router.ts +1 -1
  534. package/src/client/{use-params.ts → use-segment-params.ts} +8 -6
  535. package/src/codec.ts +97 -0
  536. package/src/config-types.ts +292 -0
  537. package/src/config-validation.ts +303 -0
  538. package/src/content/index.ts +5 -13
  539. package/src/cookies/define-cookie.ts +233 -53
  540. package/src/cookies/index.ts +12 -1
  541. package/src/cookies/json-cookie.ts +105 -0
  542. package/src/cookies/validation.ts +134 -0
  543. package/src/dev-tools/404-page.ts +387 -0
  544. package/src/dev-tools/browser-logs.ts +291 -0
  545. package/src/dev-tools/error-page.ts +506 -0
  546. package/src/dev-tools/holding-server.ts +187 -0
  547. package/src/dev-tools/index.ts +90 -0
  548. package/src/dev-tools/instrumentation.ts +176 -0
  549. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +9 -5
  550. package/src/dev-tools/overlay.ts +469 -0
  551. package/src/dev-tools/stack-classifier.ts +75 -0
  552. package/src/dev-tools/terminal.ts +183 -0
  553. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
  554. package/src/fonts/ast.ts +525 -16
  555. package/src/fonts/bundle.ts +142 -0
  556. package/src/fonts/dev-middleware.ts +74 -0
  557. package/src/fonts/local.ts +1 -1
  558. package/src/fonts/pipeline.ts +314 -0
  559. package/src/fonts/transform.ts +317 -0
  560. package/src/fonts/types.ts +50 -1
  561. package/src/fonts/virtual-modules.ts +233 -0
  562. package/src/index.ts +409 -357
  563. package/src/params/codec-registry.ts +34 -0
  564. package/src/params/define-schema.ts +73 -0
  565. package/src/params/index.ts +11 -0
  566. package/src/params/resolve-schema.ts +88 -0
  567. package/src/plugin-context.ts +240 -0
  568. package/src/plugins/adapter-build.ts +12 -4
  569. package/src/plugins/build-manifest.ts +13 -2
  570. package/src/plugins/build-report.ts +16 -25
  571. package/src/plugins/client-chunks.ts +65 -0
  572. package/src/plugins/content.ts +1 -1
  573. package/src/plugins/dev-server.ts +175 -35
  574. package/src/plugins/entries.ts +111 -9
  575. package/src/plugins/fonts.ts +157 -654
  576. package/src/plugins/mdx.ts +47 -10
  577. package/src/plugins/routing.ts +374 -45
  578. package/src/plugins/server-bundle.ts +32 -1
  579. package/src/plugins/shims.ts +136 -35
  580. package/src/plugins/static-build.ts +15 -89
  581. package/src/routing/codegen-shared.ts +109 -0
  582. package/src/routing/codegen-types.ts +61 -0
  583. package/src/routing/codegen.ts +269 -179
  584. package/src/routing/convention-lint.ts +357 -0
  585. package/src/routing/index.ts +5 -1
  586. package/src/routing/interception.ts +1 -1
  587. package/src/routing/link-codegen.ts +308 -0
  588. package/src/routing/scanner.ts +107 -110
  589. package/src/routing/segment-classify.ts +188 -0
  590. package/src/routing/segment-codegen.ts +98 -0
  591. package/src/routing/types.ts +78 -25
  592. package/src/routing/walkers.ts +90 -0
  593. package/src/rsc-runtime/rsc.ts +2 -0
  594. package/src/rsc-runtime/ssr.ts +50 -0
  595. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  596. package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
  597. package/src/search-params/define.ts +538 -0
  598. package/src/search-params/index.ts +14 -20
  599. package/src/search-params/registry.ts +2 -2
  600. package/src/search-params/wrappers.ts +92 -0
  601. package/src/segment-params/define.ts +336 -0
  602. package/src/segment-params/index.ts +9 -0
  603. package/src/server/access-gate.tsx +76 -34
  604. package/src/server/action-client.ts +88 -15
  605. package/src/server/action-encryption.ts +144 -0
  606. package/src/server/action-handler.ts +112 -14
  607. package/src/server/actions.ts +10 -9
  608. package/src/server/als-registry.ts +55 -7
  609. package/src/server/asset-headers.ts +8 -34
  610. package/src/server/build-manifest.ts +10 -4
  611. package/src/server/coalesce-tick.ts +75 -0
  612. package/src/server/compress.ts +25 -7
  613. package/src/server/cookie-context.ts +468 -0
  614. package/src/server/cookie-parsing.ts +135 -0
  615. package/src/server/debug.ts +1 -1
  616. package/src/server/default-logger.ts +99 -0
  617. package/src/server/deny-boundary.ts +218 -0
  618. package/src/server/deny-renderer.ts +31 -50
  619. package/src/server/dev-source-map.ts +31 -0
  620. package/src/server/early-hints-sender.ts +3 -2
  621. package/src/server/early-hints.ts +36 -15
  622. package/src/server/error-boundary-wrapper.ts +74 -22
  623. package/src/server/fallback-error.ts +74 -102
  624. package/src/server/flight-injection-state.ts +113 -0
  625. package/src/server/flight-scripts.ts +62 -0
  626. package/src/server/flush.ts +2 -1
  627. package/src/server/form-data.ts +76 -0
  628. package/src/server/html-injector-core.ts +417 -0
  629. package/src/server/html-injectors.ts +235 -223
  630. package/src/server/index.ts +29 -183
  631. package/src/server/internal.ts +176 -0
  632. package/src/server/logger.ts +67 -36
  633. package/src/server/middleware-runner.ts +75 -4
  634. package/src/server/node-stream-transforms.ts +361 -0
  635. package/src/server/param-coercion.ts +206 -0
  636. package/src/server/pipeline-helpers.ts +204 -0
  637. package/src/server/pipeline-interception.ts +17 -16
  638. package/src/server/pipeline-metadata.ts +13 -0
  639. package/src/server/pipeline-outcome.ts +176 -0
  640. package/src/server/pipeline-phases.ts +460 -0
  641. package/src/server/pipeline.ts +154 -394
  642. package/src/server/port-resolution.ts +215 -0
  643. package/src/server/primitives.ts +111 -28
  644. package/src/server/render-timeout.ts +108 -0
  645. package/src/server/request-context.ts +168 -333
  646. package/src/server/route-element-builder.ts +309 -195
  647. package/src/server/route-handler.ts +24 -4
  648. package/src/server/route-matcher.ts +50 -231
  649. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  650. package/src/server/rsc-entry/api-handler.ts +16 -17
  651. package/src/server/rsc-entry/error-renderer.ts +305 -89
  652. package/src/server/rsc-entry/helpers.ts +137 -12
  653. package/src/server/rsc-entry/index.ts +316 -352
  654. package/src/server/rsc-entry/render-route.ts +307 -0
  655. package/src/server/rsc-entry/rsc-payload.ts +65 -18
  656. package/src/server/rsc-entry/rsc-stream.ts +85 -13
  657. package/src/server/rsc-entry/ssr-bridge.ts +14 -5
  658. package/src/server/rsc-entry/ssr-renderer.ts +187 -38
  659. package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
  660. package/src/server/safe-load.ts +60 -0
  661. package/src/server/sensitive-fields.ts +230 -0
  662. package/src/server/sitemap-generator.ts +338 -0
  663. package/src/server/sitemap-handler.ts +126 -0
  664. package/src/server/slot-resolver.ts +228 -246
  665. package/src/server/ssr-entry.ts +229 -32
  666. package/src/server/ssr-render.ts +289 -67
  667. package/src/server/ssr-wrappers.tsx +139 -0
  668. package/src/server/state-tree-diff.ts +4 -1
  669. package/src/server/status-code-resolver.ts +112 -128
  670. package/src/server/stream-utils.ts +213 -0
  671. package/src/server/tracing.ts +21 -10
  672. package/src/server/tree-builder.ts +202 -90
  673. package/src/server/tree-match.ts +198 -0
  674. package/src/server/types.ts +55 -6
  675. package/src/server/utils/escape-html.ts +20 -0
  676. package/src/server/version-skew.ts +104 -0
  677. package/src/shared/merge-search-params.ts +55 -0
  678. package/src/shims/font-google.ts +1 -1
  679. package/src/shims/font-local.ts +34 -0
  680. package/src/shims/headers.ts +5 -1
  681. package/src/shims/navigation-client.ts +4 -3
  682. package/src/shims/navigation.ts +14 -7
  683. package/src/utils/state-machine.ts +111 -0
  684. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  685. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  686. package/dist/_chunks/debug-gwlJkDuf.js +0 -108
  687. package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
  688. package/dist/_chunks/format-DviM89f0.js.map +0 -1
  689. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  690. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  691. package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
  692. package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
  693. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  694. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  695. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  696. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  697. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  698. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  699. package/dist/cache/register-cached-function.d.ts +0 -17
  700. package/dist/cache/register-cached-function.d.ts.map +0 -1
  701. package/dist/client/browser-entry.d.ts +0 -21
  702. package/dist/client/browser-entry.d.ts.map +0 -1
  703. package/dist/client/link-status-provider.d.ts +0 -11
  704. package/dist/client/link-status-provider.d.ts.map +0 -1
  705. package/dist/client/transition-root.d.ts.map +0 -1
  706. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  707. package/dist/client/use-params.d.ts.map +0 -1
  708. package/dist/plugins/cache-transform.d.ts +0 -36
  709. package/dist/plugins/cache-transform.d.ts.map +0 -1
  710. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  711. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  712. package/dist/plugins/dev-logs.d.ts.map +0 -1
  713. package/dist/plugins/dynamic-transform.d.ts +0 -72
  714. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  715. package/dist/plugins/server-action-exports.d.ts +0 -26
  716. package/dist/plugins/server-action-exports.d.ts.map +0 -1
  717. package/dist/routing/status-file-lint.d.ts +0 -33
  718. package/dist/routing/status-file-lint.d.ts.map +0 -1
  719. package/dist/search-params/analyze.d.ts +0 -54
  720. package/dist/search-params/analyze.d.ts.map +0 -1
  721. package/dist/search-params/builtin-codecs.d.ts +0 -105
  722. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  723. package/dist/search-params/codecs.d.ts +0 -53
  724. package/dist/search-params/codecs.d.ts.map +0 -1
  725. package/dist/search-params/create.d.ts +0 -106
  726. package/dist/search-params/create.d.ts.map +0 -1
  727. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  728. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  729. package/dist/server/dev-logger.d.ts.map +0 -1
  730. package/dist/server/dev-span-processor.d.ts.map +0 -1
  731. package/dist/server/dev-warnings.d.ts.map +0 -1
  732. package/dist/server/manifest-status-resolver.d.ts +0 -58
  733. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  734. package/dist/server/prerender.d.ts +0 -77
  735. package/dist/server/prerender.d.ts.map +0 -1
  736. package/dist/server/response-cache.d.ts +0 -54
  737. package/dist/server/response-cache.d.ts.map +0 -1
  738. package/dist/utils/directive-parser.d.ts +0 -70
  739. package/dist/utils/directive-parser.d.ts.map +0 -1
  740. package/src/cache/register-cached-function.ts +0 -103
  741. package/src/client/browser-entry.ts +0 -678
  742. package/src/client/link-status-provider.tsx +0 -30
  743. package/src/client/transition-root.tsx +0 -166
  744. package/src/plugins/cache-transform.ts +0 -199
  745. package/src/plugins/dev-error-overlay.ts +0 -230
  746. package/src/plugins/dynamic-transform.ts +0 -161
  747. package/src/plugins/server-action-exports.ts +0 -220
  748. package/src/routing/status-file-lint.ts +0 -112
  749. package/src/search-params/analyze.ts +0 -192
  750. package/src/search-params/builtin-codecs.ts +0 -228
  751. package/src/search-params/create.ts +0 -321
  752. package/src/server/dev-fetch-instrumentation.ts +0 -96
  753. package/src/server/dev-span-processor.ts +0 -78
  754. package/src/server/manifest-status-resolver.ts +0 -215
  755. package/src/server/prerender.ts +0 -139
  756. package/src/server/response-cache.ts +0 -410
  757. package/src/utils/directive-parser.ts +0 -529
  758. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -0,0 +1,609 @@
1
+ import { join, posix, relative } from "node:path";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ //#region src/routing/codegen-shared.ts
4
+ /**
5
+ * Shared codegen helpers — import-path computation, codec chain type
6
+ * builder, and searchParams type formatter.
7
+ *
8
+ * Extracted from `codegen.ts` so `link-codegen.ts` can use the same
9
+ * helpers without a cyclic import.
10
+ */
11
+ /**
12
+ * Compute a relative import specifier for a codec/page file, stripping
13
+ * the .ts/.tsx extension and resolving against the codegen output dir.
14
+ */
15
+ function codecImportPath(codecFilePath, importBase) {
16
+ const absPath = codecFilePath.replace(/\.(ts|tsx)$/, "");
17
+ if (importBase) return "./" + relative(importBase, absPath).replace(/\\/g, "/");
18
+ return "./" + posix.basename(absPath);
19
+ }
20
+ /** Name of the shared helper type emitted at the top of the .d.ts. */
21
+ var RESOLVE_SEGMENT_FIELD_TYPE_NAME = "_TimberResolveSegmentField";
22
+ /**
23
+ * Helper type emitted once at the top of the generated `.d.ts` and
24
+ * referenced by every codec-chain conditional. Without this shared
25
+ * helper, the inline expansion would duplicate the fallback branch on
26
+ * every step and grow O(2^N) in chain depth (a single deep nested route
27
+ * could blow up the file size and TS performance). With the helper,
28
+ * each step reuses the named type and growth is O(N).
29
+ *
30
+ * The helper is a 2-arg conditional: given a typeof import expression
31
+ * (`Def`), a key (`K`), and a fallback (`F`), it returns `T[K]` if
32
+ * `Def extends ParamsDefinition<T>` and `K extends keyof T`, otherwise
33
+ * `F`. The codec chain composes calls to this helper.
34
+ */
35
+ function emitResolveSegmentFieldHelper() {
36
+ return [
37
+ `type ${RESOLVE_SEGMENT_FIELD_TYPE_NAME}<Def, K extends string, F> =`,
38
+ ` Def extends import('@timber-js/app/segment-params').ParamsDefinition<infer T>`,
39
+ ` ? K extends keyof T ? T[K] : F`,
40
+ ` : F;`
41
+ ].join("\n");
42
+ }
43
+ /**
44
+ * Build a TypeScript type expression that resolves a single param's
45
+ * codec by walking a chain of params.ts files in priority order.
46
+ *
47
+ * Each entry in the chain emits one application of the shared
48
+ * `_TimberResolveSegmentField` helper type. Composing N applications
49
+ * grows linearly with chain depth (O(N) characters), unlike an inline
50
+ * conditional that would duplicate the fallback in each branch and
51
+ * grow O(2^N).
52
+ *
53
+ * The closest match (position 0 in the chain) is checked first; if its
54
+ * `segmentParams` definition declares the key, its inferred type wins.
55
+ * Otherwise we fall through to the next entry, and finally to the
56
+ * provided fallback. See TIM-834.
57
+ */
58
+ function buildCodecChainType(p, importBase, fallback) {
59
+ const files = p.codecFilePaths;
60
+ if (!files || files.length === 0) return fallback;
61
+ const key = JSON.stringify(p.name);
62
+ let inner = fallback;
63
+ for (let i = files.length - 1; i >= 0; i--) inner = `${RESOLVE_SEGMENT_FIELD_TYPE_NAME}<(typeof import('${codecImportPath(files[i], importBase)}'))['segmentParams'], ${key}, ${inner}>`;
64
+ return inner;
65
+ }
66
+ /**
67
+ * Build a TypeScript type expression for a single param using the global
68
+ * schema's InferCodecType. Falls back to `fallback` when schema doesn't
69
+ * declare this param.
70
+ *
71
+ * Generates: `InferCodecType<typeof schema.segmentParams['[paramName]']>`
72
+ */
73
+ function buildSchemaParamType(p) {
74
+ return `InferCodecType<typeof schema.segmentParams[${JSON.stringify(p.bracketName)}]>`;
75
+ }
76
+ /**
77
+ * Format the searchParams type for a route entry.
78
+ *
79
+ * When a page.tsx (or params.ts) exports searchParams, we reference its
80
+ * inferred type via an import type. The import path is relative to
81
+ * `importBase` (the directory where the .d.ts will be written). When
82
+ * importBase is undefined, falls back to a bare relative path.
83
+ */
84
+ function formatSearchParamsType(route, importBase) {
85
+ if (route.hasSearchParams && route.searchParamsPagePath) return `(typeof import('${codecImportPath(route.searchParamsPagePath, importBase)}'))['searchParams'] extends import('@timber-js/app/search-params').SearchParamsDefinition<infer T> ? T : never`;
86
+ return "{}";
87
+ }
88
+ //#endregion
89
+ //#region src/routing/link-codegen.ts
90
+ /** Shared Link base-props type literal used in every emitted call signature. */
91
+ var LINK_BASE_PROPS_TYPE = "Omit<import('react').AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> & { prefetch?: boolean; scroll?: boolean; preserveSearchParams?: true | string[]; onNavigate?: import('./client/link.js').OnNavigateHandler; children?: import('react').ReactNode }";
92
+ /**
93
+ * Build a TypeScript template literal pattern for a dynamic route.
94
+ * e.g. '/products/[id]' → '/products/${string}'
95
+ * '/blog/[...slug]' → '/blog/${string}'
96
+ * '/docs/[[...path]]' → '/docs/${string}' (also matches /docs)
97
+ * '/[org]/[repo]' → '/${string}/${string}'
98
+ */
99
+ function buildResolvedPattern(route) {
100
+ return route.urlPath.split("/").map((part) => {
101
+ if (part.startsWith("[[...") && part.endsWith("]]")) return "${string}";
102
+ if (part.startsWith("[...") && part.endsWith("]")) return "${string}";
103
+ if (part.startsWith("[") && part.endsWith("]")) return "${string}";
104
+ return part;
105
+ }).join("/");
106
+ }
107
+ /**
108
+ * Format the segmentParams type for Link overloads.
109
+ *
110
+ * Link params accept `string | number` for single dynamic segments
111
+ * (convenience — values are stringified at runtime). Catch-all and
112
+ * optional catch-all remain `string[]` / `string[] | undefined`.
113
+ *
114
+ * When the segment's params chain (TIM-834) declares a typed codec, the
115
+ * inferred type from the codec wins via a nested conditional.
116
+ */
117
+ function formatLinkParamsType(params, importBase, hasSchema) {
118
+ if (params.length === 0) return "{}";
119
+ return `{ ${params.map((p) => {
120
+ const fallback = p.type === "string" ? "string | number" : p.type;
121
+ const codecType = hasSchema ? buildSchemaParamType(p) : buildCodecChainType(p, importBase, fallback);
122
+ return `${p.name}: ${codecType}`;
123
+ }).join("; ")} }`;
124
+ }
125
+ /**
126
+ * Catch-all call signatures for `<Link>` — external hrefs and computed
127
+ * `string` variables. Emitted from codegen in a SEPARATE
128
+ * `declare module` block (declared AFTER the per-route block) so the TS
129
+ * "later overload set ordered first" rule places these catch-all
130
+ * signatures ahead of per-route in resolution order, leaving per-route
131
+ * as the final overload whose error message is reported on failure.
132
+ *
133
+ * The conditional `string extends H ? ... : never` protection preserves
134
+ * TIM-624's guarantee that unknown internal path literals don't match
135
+ * the catch-all — typos like `<Link href="/typo" />` still error.
136
+ */
137
+ function formatLinkCatchAllOverloads() {
138
+ const lines = [];
139
+ const baseProps = LINK_BASE_PROPS_TYPE;
140
+ const catchAllSearchParams = "{ definition: SearchParamsDefinition<Record<string, unknown>>; values: Record<string, unknown> } | Record<string, unknown>";
141
+ const externalHref = "`http://${string}` | `https://${string}` | `mailto:${string}` | `tel:${string}` | `ftp://${string}` | `//${string}` | `#${string}` | `?${string}`";
142
+ lines.push(" // Typed Link overloads — catch-all (block 2 / emitted second)");
143
+ lines.push(" interface LinkFunction {");
144
+ lines.push(` (props: ${baseProps} & {`);
145
+ lines.push(` href: ${externalHref}`);
146
+ lines.push(` segmentParams?: Record<string, unknown>`);
147
+ lines.push(` searchParams?: ${catchAllSearchParams}`);
148
+ lines.push(` }): import('react').JSX.Element`);
149
+ lines.push(` <H extends string>(`);
150
+ lines.push(` props: ${baseProps} & {`);
151
+ lines.push(` href: string extends H ? H : never`);
152
+ lines.push(` segmentParams?: Record<string, string | number | string[]>`);
153
+ lines.push(` searchParams?: ${catchAllSearchParams}`);
154
+ lines.push(` }`);
155
+ lines.push(` ): import('react').JSX.Element`);
156
+ lines.push(" }");
157
+ return lines;
158
+ }
159
+ /**
160
+ * Generate typed per-route Link call signatures via LinkFunction
161
+ * interface merging.
162
+ *
163
+ * TIM-835: This emits a SINGLE call signature whose props is a
164
+ * discriminated union keyed on `href`. TypeScript narrows the union by
165
+ * the literal `href` at the call site, then checks the rest of the
166
+ * props against the matched variant. When `segmentParams` or
167
+ * `searchParams` is wrong, TS reports the error against the matched
168
+ * variant — naming the user's actual `href` and the offending field.
169
+ *
170
+ * Before TIM-835, this function emitted N separate per-route overloads
171
+ * (one per route, sometimes two for dynamic routes). When ALL overloads
172
+ * failed, TS would pick an arbitrary failed overload (heuristically the
173
+ * "last tried") to render the diagnostic, often pointing at a route
174
+ * completely unrelated to the one the user wrote. The discriminated
175
+ * union sidesteps overload-resolution heuristics entirely.
176
+ *
177
+ * Open property shapes (`Record<string, unknown>` instead of `never`)
178
+ * for `segmentParams` on routes that don't declare them keep generic
179
+ * `LinkProps`-spreading wrappers compiling. (Aligned with TIM-833.)
180
+ *
181
+ * TIM-832: this function still emits the per-route block FIRST and the
182
+ * catch-all block follows, so per-route remains the LAST overload set in
183
+ * resolution order — the one TS reports against on failure. With a
184
+ * discriminated union there is only one call signature in this block,
185
+ * so the resolved-template-vs-pattern ordering reduces to placing the
186
+ * pattern variant before the resolved-template variant inside the union.
187
+ */
188
+ function formatTypedLinkOverloads(routes, importBase, hasSchema) {
189
+ const lines = [];
190
+ const baseProps = LINK_BASE_PROPS_TYPE;
191
+ const variants = [];
192
+ for (const route of routes) {
193
+ const hasDynamicParams = route.params.length > 0;
194
+ const paramsProp = hasDynamicParams ? `segmentParams: ${formatLinkParamsType(route.params, importBase, hasSchema)}` : "segmentParams?: Record<string, unknown>";
195
+ const searchParamsType = route.hasSearchParams ? formatSearchParamsType(route, importBase) : null;
196
+ const patternSearchParamsProp = searchParamsType ? `searchParams?: Partial<${searchParamsType}>` : "searchParams?: Record<string, unknown>";
197
+ variants.push(`${baseProps} & { href: '${route.urlPath}'; ${paramsProp}; ${patternSearchParamsProp} }`);
198
+ if (hasDynamicParams) {
199
+ const templatePattern = buildResolvedPattern(route);
200
+ if (templatePattern) {
201
+ const resolvedSearchParamsProp = searchParamsType ? `searchParams?: { definition: SearchParamsDefinition<${searchParamsType}>; values: Partial<${searchParamsType}> }` : "searchParams?: Record<string, unknown>";
202
+ variants.push(`${baseProps} & { href: \`${templatePattern}\`; segmentParams?: Record<string, never>; ${resolvedSearchParamsProp} }`);
203
+ }
204
+ }
205
+ }
206
+ lines.push(" interface LinkFunction {");
207
+ if (variants.length === 0) {
208
+ lines.push(" }");
209
+ return lines;
210
+ }
211
+ lines.push(" (");
212
+ lines.push(" props:");
213
+ for (const variant of variants) lines.push(` | (${variant})`);
214
+ lines.push(` ): import('react').JSX.Element`);
215
+ lines.push(" }");
216
+ return lines;
217
+ }
218
+ //#endregion
219
+ //#region src/routing/codegen.ts
220
+ /**
221
+ * Route map codegen.
222
+ *
223
+ * Walks the scanned RouteTree and generates a TypeScript declaration file
224
+ * mapping every route to its params and searchParams shapes.
225
+ *
226
+ * This runs at build time and in dev (regenerated on file changes).
227
+ * No runtime overhead — purely static type generation.
228
+ */
229
+ /**
230
+ * Generate a TypeScript declaration file string from a scanned route tree.
231
+ *
232
+ * The output is a `declare module '@timber-js/app'` block containing the Routes
233
+ * interface that maps every route path to its params and searchParams shape.
234
+ */
235
+ function generateRouteMap(tree, options = {}) {
236
+ const hasSchema = options.hasSchema ?? detectSchema(options.appDir);
237
+ const routes = [];
238
+ collectRoutes(tree.root, [], [], "", routes, hasSchema);
239
+ routes.sort((a, b) => a.urlPath.localeCompare(b.urlPath));
240
+ return formatDeclarationFile(routes, options.outputDir ?? options.appDir, hasSchema, options.appDir);
241
+ }
242
+ /** Schema file extensions to check, in priority order. */
243
+ var SCHEMA_EXTENSIONS = [
244
+ ".ts",
245
+ ".tsx",
246
+ ".js",
247
+ ".jsx"
248
+ ];
249
+ /**
250
+ * Detect whether app/schema.{ts,tsx,js,jsx} exists.
251
+ */
252
+ function detectSchema(appDir) {
253
+ if (!appDir) return false;
254
+ return SCHEMA_EXTENSIONS.some((ext) => existsSync(join(appDir, `schema${ext}`)));
255
+ }
256
+ /**
257
+ * Recursively walk the segment tree and collect route entries.
258
+ *
259
+ * A route entry is created for any segment that has a `page` or `route` file.
260
+ * Params accumulate from ancestor dynamic segments.
261
+ */
262
+ function collectRoutes(node, ancestorParams, ancestorParamsFiles, parentTreePath, routes, hasSchema) {
263
+ const treePath = node.segmentName ? `${parentTreePath}/${node.segmentName}` : parentTreePath;
264
+ const ownParamsFile = node.params && fileHasExport(node.params.filePath, "segmentParams") ? node.params.filePath : void 0;
265
+ const params = [...ancestorParams];
266
+ if (node.paramName) {
267
+ const legacyFallback = ownParamsFile ? void 0 : findLegacyParamsExport(node);
268
+ params.push({
269
+ name: node.paramName,
270
+ bracketName: node.segmentName,
271
+ type: paramTypeForSegment(node.segmentType),
272
+ legacyCodecFilePath: legacyFallback
273
+ });
274
+ }
275
+ const nextAncestorFiles = ownParamsFile ? [...ancestorParamsFiles, ownParamsFile] : ancestorParamsFiles;
276
+ const isPage = !!node.page;
277
+ const isApiRoute = !!node.route;
278
+ if (isPage || isApiRoute) {
279
+ const leafFirstChain = nextAncestorFiles.length > 0 ? [...nextAncestorFiles].reverse() : [];
280
+ const resolvedParams = params.map((p) => {
281
+ const codecFilePaths = leafFirstChain.length > 0 ? leafFirstChain : p.legacyCodecFilePath ? [p.legacyCodecFilePath] : void 0;
282
+ return {
283
+ name: p.name,
284
+ bracketName: p.bracketName,
285
+ type: p.type,
286
+ codecFilePaths
287
+ };
288
+ });
289
+ const entry = {
290
+ urlPath: node.urlPath,
291
+ segmentPath: treePath || "/",
292
+ params: resolvedParams,
293
+ hasSearchParams: false,
294
+ isApiRoute,
295
+ hasSchema
296
+ };
297
+ if (isPage) {
298
+ if (node.params && fileHasExport(node.params.filePath, "searchParams")) {
299
+ entry.hasSearchParams = true;
300
+ entry.searchParamsPagePath = node.params.filePath;
301
+ } else if (node.page && fileHasExport(node.page.filePath, "searchParams")) {
302
+ entry.hasSearchParams = true;
303
+ entry.searchParamsPagePath = node.page.filePath;
304
+ }
305
+ }
306
+ routes.push(entry);
307
+ }
308
+ for (const child of node.children) collectRoutes(child, params, nextAncestorFiles, treePath, routes, hasSchema);
309
+ for (const slot of Object.values(node.slots)) collectRoutes(slot, params, nextAncestorFiles, treePath, routes, hasSchema);
310
+ }
311
+ /**
312
+ * Determine the TypeScript type for a segment's param.
313
+ */
314
+ function paramTypeForSegment(segmentType) {
315
+ switch (segmentType) {
316
+ case "catch-all": return "string[]";
317
+ case "optional-catch-all": return "string[] | undefined";
318
+ default: return "string";
319
+ }
320
+ }
321
+ /**
322
+ * Check if a file exports a specific named export.
323
+ *
324
+ * Uses a lightweight regex check — not full AST parsing. The actual type
325
+ * extraction happens via the TypeScript compiler in the generated .d.ts.
326
+ */
327
+ function fileHasExport(filePath, exportName) {
328
+ if (!existsSync(filePath)) return false;
329
+ try {
330
+ const content = readFileSync(filePath, "utf-8");
331
+ const e = exportName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
332
+ return new RegExp(`export\\s+(const|let|var)\\s+${e}\\b`).test(content) || new RegExp(`export\\s*\\{[^}]*\\b${e}\\b[^}]*\\}`).test(content);
333
+ } catch {
334
+ return false;
335
+ }
336
+ }
337
+ /**
338
+ * Find a legacy `segmentParams` export on layout.tsx or page.tsx.
339
+ *
340
+ * Backward-compat shim: TIM-508 made params.ts the canonical location
341
+ * for `segmentParams`. Layout/page exports are still accepted for the
342
+ * OWN segment only (not inherited by descendants — see TIM-834).
343
+ */
344
+ function findLegacyParamsExport(node) {
345
+ if (node.layout && fileHasExport(node.layout.filePath, "segmentParams")) return node.layout.filePath;
346
+ if (node.page && fileHasExport(node.page.filePath, "segmentParams")) return node.page.filePath;
347
+ }
348
+ /**
349
+ * Emit the schema-based type exports: TimberSegmentParams, TimberRoute,
350
+ * AllSegmentParams, RoutesWithParams.
351
+ *
352
+ * These types use InferCodecType references so they stay in sync with
353
+ * the schema without hardcoding resolved types.
354
+ *
355
+ * Design doc: design/41-global-params.md §Codegen Output
356
+ */
357
+ function formatSchemaTypes(routes) {
358
+ const lines = [];
359
+ lines.push("/** Union of all valid route patterns. */");
360
+ lines.push("export type TimberRoute = keyof TimberSegmentParams;");
361
+ lines.push("");
362
+ lines.push("/** Maps each segment path to its accumulated segment params. */");
363
+ lines.push("export interface TimberSegmentParams {");
364
+ for (const route of routes) if (route.params.length === 0) lines.push(` '${route.segmentPath}': {};`);
365
+ else {
366
+ lines.push(` '${route.segmentPath}': {`);
367
+ for (const p of route.params) lines.push(` ${p.name}: ${buildSchemaParamType(p)};`);
368
+ lines.push(" };");
369
+ }
370
+ lines.push("}");
371
+ lines.push("");
372
+ lines.push("/** All segment params (union of all route params). */");
373
+ lines.push("export type AllSegmentParams = {");
374
+ lines.push(" [K in keyof TimberSegmentParams as TimberSegmentParams[K] extends Record<string, never>");
375
+ lines.push(" ? never");
376
+ lines.push(" : K]: TimberSegmentParams[K];");
377
+ lines.push("} extends infer U");
378
+ lines.push(" ? { [K in keyof U[keyof U]]: U[keyof U][K] }");
379
+ lines.push(" : never;");
380
+ lines.push("");
381
+ lines.push("/** Filters TimberRoute to routes whose accumulated params include all listed keys. */");
382
+ lines.push("export type RoutesWithParams<K extends keyof AllSegmentParams> = {");
383
+ lines.push(" [R in TimberRoute]: K extends keyof TimberSegmentParams[R] ? R : never;");
384
+ lines.push("}[TimberRoute];");
385
+ return lines;
386
+ }
387
+ /**
388
+ * Format the collected routes into a TypeScript declaration file.
389
+ */
390
+ function formatDeclarationFile(routes, importBase, hasSchema, appDir) {
391
+ const lines = [];
392
+ lines.push("// This file is auto-generated by timber.js route map codegen.");
393
+ lines.push("// Do not edit manually. Regenerated on build and in dev mode.");
394
+ lines.push("");
395
+ lines.push("export {};");
396
+ lines.push("");
397
+ if (hasSchema) {
398
+ const schemaImport = appDir && importBase ? "./" + relative(importBase, join(appDir, "schema")).replace(/\\/g, "/") : "../app/schema";
399
+ lines.push(`import type schema from '${schemaImport}';`);
400
+ lines.push("import type { InferCodecType } from '@timber-js/app/params';");
401
+ lines.push("");
402
+ lines.push(...formatSchemaTypes(routes));
403
+ lines.push("");
404
+ }
405
+ if (!hasSchema) {
406
+ lines.push(emitResolveSegmentFieldHelper());
407
+ lines.push("");
408
+ }
409
+ lines.push("declare module '@timber-js/app' {");
410
+ lines.push(" interface Routes {");
411
+ for (const route of routes) {
412
+ const paramsType = formatParamsType(route.params, importBase, hasSchema);
413
+ const searchParamsType = formatSearchParamsType(route, importBase);
414
+ lines.push(` '${route.urlPath}': {`);
415
+ lines.push(` segmentParams: ${paramsType}`);
416
+ lines.push(` searchParams: ${searchParamsType}`);
417
+ lines.push(` }`);
418
+ }
419
+ lines.push(" }");
420
+ lines.push("}");
421
+ lines.push("");
422
+ const pageRoutes = routes.filter((r) => !r.isApiRoute);
423
+ const dynamicRoutes = routes.filter((r) => r.params.length > 0);
424
+ if (dynamicRoutes.length > 0) {
425
+ lines.push("declare module '@timber-js/app/server' {");
426
+ for (const route of dynamicRoutes) {
427
+ const paramsType = formatParamsType(route.params, importBase, hasSchema);
428
+ lines.push(` export function getSegmentParams(segmentPath: '${route.segmentPath}'): ${paramsType}`);
429
+ }
430
+ lines.push(" export function getSegmentParams(): Record<string, string | string[]>");
431
+ lines.push("}");
432
+ lines.push("");
433
+ }
434
+ if (dynamicRoutes.length > 0 || pageRoutes.length > 0) {
435
+ lines.push("declare module '@timber-js/app/client' {");
436
+ lines.push(" import type { SearchParamsDefinition, SetParams, QueryStatesOptions, SearchParamCodec } from '@timber-js/app/search-params'");
437
+ lines.push("");
438
+ if (dynamicRoutes.length > 0) {
439
+ for (const route of dynamicRoutes) {
440
+ const paramsType = formatParamsType(route.params, importBase, hasSchema);
441
+ lines.push(` export function useSegmentParams(segmentPath: '${route.segmentPath}'): ${paramsType}`);
442
+ }
443
+ lines.push(" export function useSegmentParams(): Record<string, string | string[]>");
444
+ lines.push("");
445
+ }
446
+ if (pageRoutes.length > 0) {
447
+ lines.push(...formatUseQueryStatesOverloads(pageRoutes, importBase));
448
+ lines.push("");
449
+ }
450
+ if (pageRoutes.length > 0) {
451
+ lines.push(" // Typed Link overloads — per-route (block 1 / emitted first)");
452
+ lines.push(...formatTypedLinkOverloads(pageRoutes, importBase, hasSchema));
453
+ lines.push("");
454
+ }
455
+ lines.push("}");
456
+ lines.push("");
457
+ }
458
+ lines.push("declare module '@timber-js/app/client' {");
459
+ lines.push(" import type { SearchParamsDefinition } from '@timber-js/app/search-params'");
460
+ lines.push("");
461
+ lines.push(...formatLinkCatchAllOverloads());
462
+ lines.push("}");
463
+ lines.push("");
464
+ return lines.join("\n");
465
+ }
466
+ /**
467
+ * Format the params type for a route entry.
468
+ */
469
+ function formatParamsType(params, importBase, hasSchema) {
470
+ if (params.length === 0) return "{}";
471
+ return `{ ${params.map((p) => {
472
+ const codecType = hasSchema ? buildSchemaParamType(p) : buildCodecChainType(p, importBase, p.type);
473
+ return `${p.name}: ${codecType}`;
474
+ }).join("; ")} }`;
475
+ }
476
+ /**
477
+ * Generate useQueryStates overloads.
478
+ *
479
+ * For each page route:
480
+ * - Routes with search-params.ts get a typed overload returning the inferred T
481
+ * - Routes without search-params.ts get an overload returning [{}, SetParams<{}>]
482
+ *
483
+ * A fallback overload for standalone codecs (existing API) is emitted last.
484
+ */
485
+ function formatUseQueryStatesOverloads(routes, importBase) {
486
+ const lines = [];
487
+ for (const route of routes) {
488
+ const searchParamsType = route.hasSearchParams ? formatSearchParamsType(route, importBase) : "{}";
489
+ lines.push(` export function useQueryStates<R extends '${route.urlPath}'>(route: R, options?: QueryStatesOptions): [${searchParamsType}, SetParams<${searchParamsType}>]`);
490
+ }
491
+ lines.push(" export function useQueryStates<T extends Record<string, unknown>>(codecs: { [K in keyof T]: SearchParamCodec<T[K]> }, options?: QueryStatesOptions): [T, SetParams<T>]");
492
+ return lines;
493
+ }
494
+ //#endregion
495
+ //#region src/routing/interception.ts
496
+ /**
497
+ * Collect all interception rewrite rules from the route tree.
498
+ *
499
+ * Walks the tree recursively. For each intercepting segment, computes the
500
+ * intercepted URL based on the marker and the segment's position.
501
+ */
502
+ function collectInterceptionRewrites(root) {
503
+ const rewrites = [];
504
+ walkForInterceptions(root, [root], rewrites);
505
+ return rewrites;
506
+ }
507
+ /**
508
+ * Recursively walk the segment tree to find intercepting routes.
509
+ */
510
+ function walkForInterceptions(node, ancestors, rewrites) {
511
+ for (const child of node.children) if (child.segmentType === "intercepting" && child.interceptionMarker) collectFromInterceptingNode(child, ancestors, rewrites);
512
+ else walkForInterceptions(child, [...ancestors, child], rewrites);
513
+ for (const slot of Object.values(node.slots)) walkForInterceptions(slot, ancestors, rewrites);
514
+ }
515
+ /**
516
+ * For an intercepting segment, find all leaf pages in its sub-tree and
517
+ * generate rewrite rules for each.
518
+ */
519
+ function collectFromInterceptingNode(interceptingNode, ancestors, rewrites) {
520
+ const marker = interceptingNode.interceptionMarker;
521
+ const segmentName = interceptingNode.interceptedSegmentName;
522
+ const parentUrlPath = ancestors[ancestors.length - 1].urlPath;
523
+ const interceptedBase = computeInterceptedBase(parentUrlPath, marker);
524
+ collectLeavesWithRewrites(interceptingNode, interceptedBase === "/" ? `/${segmentName}` : `${interceptedBase}/${segmentName}`, parentUrlPath, [...ancestors, interceptingNode], rewrites);
525
+ }
526
+ /**
527
+ * Recursively find leaf pages in an intercepting sub-tree and generate
528
+ * rewrite rules for each.
529
+ */
530
+ function collectLeavesWithRewrites(node, interceptedUrlPath, interceptingPrefix, segmentPath, rewrites) {
531
+ if (node.page) rewrites.push({
532
+ interceptedPattern: interceptedUrlPath,
533
+ interceptingPrefix,
534
+ segmentPath: [...segmentPath]
535
+ });
536
+ for (const child of node.children) collectLeavesWithRewrites(child, child.segmentType === "group" ? interceptedUrlPath : `${interceptedUrlPath}/${child.segmentName}`, interceptingPrefix, [...segmentPath, child], rewrites);
537
+ }
538
+ /**
539
+ * Compute the base URL that an intercepting route intercepts, given the
540
+ * parent's URL path and the interception marker.
541
+ *
542
+ * - (.) — same level: parent's URL path
543
+ * - (..) — one level up: parent's parent URL path
544
+ * - (...) — root level: /
545
+ * - (..)(..) — two levels up: parent's grandparent URL path
546
+ *
547
+ * Level counting operates on URL path segments, NOT filesystem directories.
548
+ * Route groups and parallel slots are already excluded from urlPath (they
549
+ * don't add URL depth), so (..) correctly climbs visible segments. This
550
+ * avoids the Vinext bug where path.dirname() on filesystem paths would
551
+ * waste climbs on invisible route groups.
552
+ */
553
+ function computeInterceptedBase(parentUrlPath, marker) {
554
+ switch (marker) {
555
+ case "(.)": return parentUrlPath;
556
+ case "(..)": {
557
+ const parts = parentUrlPath.split("/").filter(Boolean);
558
+ parts.pop();
559
+ return parts.length === 0 ? "/" : `/${parts.join("/")}`;
560
+ }
561
+ case "(...)": return "/";
562
+ case "(..)(..)": {
563
+ const parts = parentUrlPath.split("/").filter(Boolean);
564
+ parts.pop();
565
+ parts.pop();
566
+ return parts.length === 0 ? "/" : `/${parts.join("/")}`;
567
+ }
568
+ }
569
+ }
570
+ //#endregion
571
+ //#region src/routing/walkers.ts
572
+ /**
573
+ * Walk a segment tree and collect every leaf with a `page` or `route`
574
+ * handler. Generic over `TFile` so it works on both the build-time
575
+ * scanner output and the runtime manifest tree.
576
+ *
577
+ * - Pages and route handlers at the same URL produce two distinct
578
+ * entries (the build report deduplicates by URL afterward).
579
+ * - Parallel slots are skipped unless `includeSlots: true` (slots
580
+ * share their parent's URL and are not addressable on their own).
581
+ * - Result is sorted by `urlPath` for deterministic output.
582
+ */
583
+ function collectLeafRoutes(root, options = {}) {
584
+ const { includeSlots = false } = options;
585
+ const result = [];
586
+ walk(root, [], result, includeSlots);
587
+ result.sort((a, b) => a.urlPath.localeCompare(b.urlPath));
588
+ return result;
589
+ }
590
+ function walk(node, chain, result, includeSlots) {
591
+ const currentChain = [...chain, node];
592
+ const path = node.urlPath || "/";
593
+ if (node.page) result.push({
594
+ urlPath: path,
595
+ segments: currentChain,
596
+ page: node.page
597
+ });
598
+ if (node.route) result.push({
599
+ urlPath: path,
600
+ segments: currentChain,
601
+ route: node.route
602
+ });
603
+ for (const child of node.children) walk(child, currentChain, result, includeSlots);
604
+ if (includeSlots) for (const slotNode of Object.values(node.slots)) walk(slotNode, currentChain, result, includeSlots);
605
+ }
606
+ //#endregion
607
+ export { collectInterceptionRewrites as n, generateRouteMap as r, collectLeafRoutes as t };
608
+
609
+ //# sourceMappingURL=walkers-DgOXkTts.js.map