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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (722) hide show
  1. package/LICENSE +8 -0
  2. package/dist/_chunks/actions-CQ8Z8VGL.js +1061 -0
  3. package/dist/_chunks/actions-CQ8Z8VGL.js.map +1 -0
  4. package/dist/_chunks/build-output-helper-DXnW0qjz.js +61 -0
  5. package/dist/_chunks/build-output-helper-DXnW0qjz.js.map +1 -0
  6. package/dist/_chunks/chunk-BYIpzuS7.js +39 -0
  7. package/dist/_chunks/define-B-Q_UMOD.js +195 -0
  8. package/dist/_chunks/define-B-Q_UMOD.js.map +1 -0
  9. package/dist/_chunks/define-CfBPoJb0.js +123 -0
  10. package/dist/_chunks/define-CfBPoJb0.js.map +1 -0
  11. package/dist/_chunks/define-cookie-BjpIt4UC.js +194 -0
  12. package/dist/_chunks/define-cookie-BjpIt4UC.js.map +1 -0
  13. package/dist/_chunks/format-Bcn-Iv1x.js +14 -0
  14. package/dist/_chunks/format-Bcn-Iv1x.js.map +1 -0
  15. package/dist/_chunks/handler-store-B-lqaGyh.js +54 -0
  16. package/dist/_chunks/handler-store-B-lqaGyh.js.map +1 -0
  17. package/dist/_chunks/logger-0m8MsKdc.js +291 -0
  18. package/dist/_chunks/logger-0m8MsKdc.js.map +1 -0
  19. package/dist/_chunks/merge-search-params-BphMdht_.js +122 -0
  20. package/dist/_chunks/merge-search-params-BphMdht_.js.map +1 -0
  21. package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js → metadata-routes-BU684ls2.js} +1 -1
  22. package/dist/_chunks/{metadata-routes-Cjmvi3rQ.js.map → metadata-routes-BU684ls2.js.map} +1 -1
  23. package/dist/_chunks/navigation-root-BCYczjml.js +96 -0
  24. package/dist/_chunks/navigation-root-BCYczjml.js.map +1 -0
  25. package/dist/_chunks/registry-I2ss-lvy.js +20 -0
  26. package/dist/_chunks/registry-I2ss-lvy.js.map +1 -0
  27. package/dist/_chunks/router-ref-h3-UaCQv.js +28 -0
  28. package/dist/_chunks/router-ref-h3-UaCQv.js.map +1 -0
  29. package/dist/_chunks/schema-bridge-Cxu4l-7p.js +86 -0
  30. package/dist/_chunks/schema-bridge-Cxu4l-7p.js.map +1 -0
  31. package/dist/_chunks/segment-classify-BjfuctV2.js +137 -0
  32. package/dist/_chunks/segment-classify-BjfuctV2.js.map +1 -0
  33. package/dist/_chunks/segment-context-Dx_OizxD.js +34 -0
  34. package/dist/_chunks/segment-context-Dx_OizxD.js.map +1 -0
  35. package/dist/_chunks/{ssr-data-MjmprTmO.js → ssr-data-B4CdH7rE.js} +1 -1
  36. package/dist/_chunks/ssr-data-B4CdH7rE.js.map +1 -0
  37. package/dist/_chunks/stale-reload-Bab885FO.js +64 -0
  38. package/dist/_chunks/stale-reload-Bab885FO.js.map +1 -0
  39. package/dist/_chunks/tracing-C8V-YGsP.js +329 -0
  40. package/dist/_chunks/tracing-C8V-YGsP.js.map +1 -0
  41. package/dist/_chunks/{use-query-states-D5KaffOK.js → use-query-states-B2XTqxDR.js} +7 -20
  42. package/dist/_chunks/use-query-states-B2XTqxDR.js.map +1 -0
  43. package/dist/_chunks/use-segment-params-BkpKAQ7D.js +185 -0
  44. package/dist/_chunks/use-segment-params-BkpKAQ7D.js.map +1 -0
  45. package/dist/_chunks/walkers-Tg0Alwcg.js +850 -0
  46. package/dist/_chunks/walkers-Tg0Alwcg.js.map +1 -0
  47. package/dist/_chunks/{format-DviM89f0.js → warnings-Cg47l5sk.js} +6 -45
  48. package/dist/_chunks/warnings-Cg47l5sk.js.map +1 -0
  49. package/dist/adapters/build-output-helper.d.ts +28 -0
  50. package/dist/adapters/build-output-helper.d.ts.map +1 -0
  51. package/dist/adapters/cloudflare-dev.d.ts +109 -0
  52. package/dist/adapters/cloudflare-dev.d.ts.map +1 -0
  53. package/dist/adapters/cloudflare-dev.js +73 -0
  54. package/dist/adapters/cloudflare-dev.js.map +1 -0
  55. package/dist/adapters/cloudflare-kv-cache.d.ts +64 -0
  56. package/dist/adapters/cloudflare-kv-cache.d.ts.map +1 -0
  57. package/dist/adapters/cloudflare-kv-cache.js +95 -0
  58. package/dist/adapters/cloudflare-kv-cache.js.map +1 -0
  59. package/dist/adapters/cloudflare.d.ts +148 -12
  60. package/dist/adapters/cloudflare.d.ts.map +1 -1
  61. package/dist/adapters/cloudflare.js +142 -38
  62. package/dist/adapters/cloudflare.js.map +1 -1
  63. package/dist/adapters/compress-module.d.ts.map +1 -1
  64. package/dist/adapters/nitro.d.ts +17 -1
  65. package/dist/adapters/nitro.d.ts.map +1 -1
  66. package/dist/adapters/nitro.js +143 -45
  67. package/dist/adapters/nitro.js.map +1 -1
  68. package/dist/adapters/shared.d.ts +16 -0
  69. package/dist/adapters/shared.d.ts.map +1 -0
  70. package/dist/cache/cache-api.d.ts +24 -0
  71. package/dist/cache/cache-api.d.ts.map +1 -0
  72. package/dist/cache/handler-store.d.ts +31 -0
  73. package/dist/cache/handler-store.d.ts.map +1 -0
  74. package/dist/cache/index.d.ts +23 -7
  75. package/dist/cache/index.d.ts.map +1 -1
  76. package/dist/cache/index.js +150 -81
  77. package/dist/cache/index.js.map +1 -1
  78. package/dist/cache/singleflight.d.ts +18 -1
  79. package/dist/cache/singleflight.d.ts.map +1 -1
  80. package/dist/cache/sizeof.d.ts +22 -0
  81. package/dist/cache/sizeof.d.ts.map +1 -0
  82. package/dist/cache/timber-cache.d.ts +1 -1
  83. package/dist/cache/timber-cache.d.ts.map +1 -1
  84. package/dist/cli.d.ts +6 -1
  85. package/dist/cli.d.ts.map +1 -1
  86. package/dist/cli.js +8 -3
  87. package/dist/cli.js.map +1 -1
  88. package/dist/client/browser-dev.d.ts +34 -1
  89. package/dist/client/browser-dev.d.ts.map +1 -1
  90. package/dist/client/browser-entry/action-dispatch.d.ts +17 -0
  91. package/dist/client/browser-entry/action-dispatch.d.ts.map +1 -0
  92. package/dist/client/browser-entry/hmr.d.ts +21 -0
  93. package/dist/client/browser-entry/hmr.d.ts.map +1 -0
  94. package/dist/client/browser-entry/hydrate.d.ts +46 -0
  95. package/dist/client/browser-entry/hydrate.d.ts.map +1 -0
  96. package/dist/client/browser-entry/index.d.ts +30 -0
  97. package/dist/client/browser-entry/index.d.ts.map +1 -0
  98. package/dist/client/browser-entry/post-hydration.d.ts +26 -0
  99. package/dist/client/browser-entry/post-hydration.d.ts.map +1 -0
  100. package/dist/client/browser-entry/router-init.d.ts +23 -0
  101. package/dist/client/browser-entry/router-init.d.ts.map +1 -0
  102. package/dist/client/browser-entry/rsc-stream.d.ts +24 -0
  103. package/dist/client/browser-entry/rsc-stream.d.ts.map +1 -0
  104. package/dist/client/browser-entry/scroll.d.ts +19 -0
  105. package/dist/client/browser-entry/scroll.d.ts.map +1 -0
  106. package/dist/client/error-boundary.d.ts +12 -5
  107. package/dist/client/error-boundary.d.ts.map +1 -1
  108. package/dist/client/error-boundary.js +26 -5
  109. package/dist/client/error-boundary.js.map +1 -1
  110. package/dist/client/error-reconstituter.d.ts +54 -0
  111. package/dist/client/error-reconstituter.d.ts.map +1 -0
  112. package/dist/client/form.d.ts +16 -27
  113. package/dist/client/form.d.ts.map +1 -1
  114. package/dist/client/history.d.ts +19 -4
  115. package/dist/client/history.d.ts.map +1 -1
  116. package/dist/client/index.d.ts +9 -24
  117. package/dist/client/index.d.ts.map +1 -1
  118. package/dist/client/index.js +261 -1100
  119. package/dist/client/index.js.map +1 -1
  120. package/dist/client/internal.d.ts +19 -0
  121. package/dist/client/internal.d.ts.map +1 -0
  122. package/dist/client/internal.js +964 -0
  123. package/dist/client/internal.js.map +1 -0
  124. package/dist/client/link-pending-store.d.ts +63 -0
  125. package/dist/client/link-pending-store.d.ts.map +1 -0
  126. package/dist/client/link.d.ts +62 -55
  127. package/dist/client/link.d.ts.map +1 -1
  128. package/dist/client/nav-link-store.d.ts +36 -0
  129. package/dist/client/nav-link-store.d.ts.map +1 -0
  130. package/dist/client/navigation-api-types.d.ts +90 -0
  131. package/dist/client/navigation-api-types.d.ts.map +1 -0
  132. package/dist/client/navigation-api.d.ts +115 -0
  133. package/dist/client/navigation-api.d.ts.map +1 -0
  134. package/dist/client/navigation-context.d.ts +13 -2
  135. package/dist/client/navigation-context.d.ts.map +1 -1
  136. package/dist/client/{transition-root.d.ts → navigation-root.d.ts} +42 -8
  137. package/dist/client/navigation-root.d.ts.map +1 -0
  138. package/dist/client/nuqs-adapter.d.ts.map +1 -1
  139. package/dist/client/router-ref.d.ts +1 -1
  140. package/dist/client/router.d.ts +70 -4
  141. package/dist/client/router.d.ts.map +1 -1
  142. package/dist/client/rsc-fetch.d.ts +38 -3
  143. package/dist/client/rsc-fetch.d.ts.map +1 -1
  144. package/dist/client/segment-cache.d.ts +1 -1
  145. package/dist/client/segment-cache.d.ts.map +1 -1
  146. package/dist/client/segment-outlet.d.ts +63 -0
  147. package/dist/client/segment-outlet.d.ts.map +1 -0
  148. package/dist/client/ssr-data.d.ts +13 -4
  149. package/dist/client/ssr-data.d.ts.map +1 -1
  150. package/dist/client/stale-reload.d.ts +15 -0
  151. package/dist/client/stale-reload.d.ts.map +1 -1
  152. package/dist/client/state.d.ts +1 -1
  153. package/dist/client/top-loader.d.ts +5 -5
  154. package/dist/client/top-loader.d.ts.map +1 -1
  155. package/dist/client/use-cookie.d.ts +8 -0
  156. package/dist/client/use-cookie.d.ts.map +1 -1
  157. package/dist/client/use-link-status.d.ts +5 -5
  158. package/dist/client/use-link-status.d.ts.map +1 -1
  159. package/dist/client/{use-navigation-pending.d.ts → use-pending-navigation.d.ts} +4 -4
  160. package/dist/client/use-pending-navigation.d.ts.map +1 -0
  161. package/dist/client/use-query-states.d.ts +1 -1
  162. package/dist/client/use-query-states.d.ts.map +1 -1
  163. package/dist/client/use-router.d.ts +1 -1
  164. package/dist/client/{use-params.d.ts → use-segment-params.d.ts} +7 -5
  165. package/dist/client/use-segment-params.d.ts.map +1 -0
  166. package/dist/codec.d.ts +33 -0
  167. package/dist/codec.d.ts.map +1 -0
  168. package/dist/codec.js +2 -0
  169. package/dist/config-types.d.ts +294 -0
  170. package/dist/config-types.d.ts.map +1 -0
  171. package/dist/config-validation.d.ts +51 -0
  172. package/dist/config-validation.d.ts.map +1 -0
  173. package/dist/content/index.d.ts +1 -10
  174. package/dist/content/index.d.ts.map +1 -1
  175. package/dist/content/index.js +0 -2
  176. package/dist/cookies/define-cookie.d.ts +98 -25
  177. package/dist/cookies/define-cookie.d.ts.map +1 -1
  178. package/dist/cookies/index.d.ts +2 -1
  179. package/dist/cookies/index.d.ts.map +1 -1
  180. package/dist/cookies/index.js +36 -72
  181. package/dist/cookies/index.js.map +1 -1
  182. package/dist/cookies/json-cookie.d.ts +64 -0
  183. package/dist/cookies/json-cookie.d.ts.map +1 -0
  184. package/dist/cookies/validation.d.ts +46 -0
  185. package/dist/cookies/validation.d.ts.map +1 -0
  186. package/dist/dev-tools/404-page.d.ts +46 -0
  187. package/dist/dev-tools/404-page.d.ts.map +1 -0
  188. package/dist/dev-tools/browser-logs.d.ts +84 -0
  189. package/dist/dev-tools/browser-logs.d.ts.map +1 -0
  190. package/dist/dev-tools/error-page.d.ts +58 -0
  191. package/dist/dev-tools/error-page.d.ts.map +1 -0
  192. package/dist/dev-tools/holding-server.d.ts +54 -0
  193. package/dist/dev-tools/holding-server.d.ts.map +1 -0
  194. package/dist/dev-tools/index.d.ts +31 -0
  195. package/dist/dev-tools/index.d.ts.map +1 -0
  196. package/dist/{server/dev-span-processor.d.ts → dev-tools/instrumentation.d.ts} +26 -6
  197. package/dist/dev-tools/instrumentation.d.ts.map +1 -0
  198. package/dist/{server/dev-logger.d.ts → dev-tools/logger.d.ts} +1 -1
  199. package/dist/dev-tools/logger.d.ts.map +1 -0
  200. package/dist/{plugins/dev-logs.d.ts → dev-tools/logs.d.ts} +2 -2
  201. package/dist/dev-tools/logs.d.ts.map +1 -0
  202. package/dist/dev-tools/overlay.d.ts +91 -0
  203. package/dist/dev-tools/overlay.d.ts.map +1 -0
  204. package/dist/dev-tools/stack-classifier.d.ts +34 -0
  205. package/dist/dev-tools/stack-classifier.d.ts.map +1 -0
  206. package/dist/dev-tools/terminal.d.ts +28 -0
  207. package/dist/dev-tools/terminal.d.ts.map +1 -0
  208. package/dist/{server/dev-warnings.d.ts → dev-tools/warnings.d.ts} +2 -22
  209. package/dist/dev-tools/warnings.d.ts.map +1 -0
  210. package/dist/fonts/bundle.d.ts +48 -0
  211. package/dist/fonts/bundle.d.ts.map +1 -0
  212. package/dist/fonts/css.d.ts +1 -0
  213. package/dist/fonts/css.d.ts.map +1 -1
  214. package/dist/fonts/dev-middleware.d.ts +22 -0
  215. package/dist/fonts/dev-middleware.d.ts.map +1 -0
  216. package/dist/fonts/pipeline.d.ts +167 -0
  217. package/dist/fonts/pipeline.d.ts.map +1 -0
  218. package/dist/fonts/transform.d.ts +64 -0
  219. package/dist/fonts/transform.d.ts.map +1 -0
  220. package/dist/fonts/types.d.ts +45 -1
  221. package/dist/fonts/types.d.ts.map +1 -1
  222. package/dist/fonts/virtual-modules.d.ts +103 -0
  223. package/dist/fonts/virtual-modules.d.ts.map +1 -0
  224. package/dist/index.d.ts +46 -190
  225. package/dist/index.d.ts.map +1 -1
  226. package/dist/index.js +14569 -12451
  227. package/dist/index.js.map +1 -1
  228. package/dist/plugin-context.d.ts +107 -0
  229. package/dist/plugin-context.d.ts.map +1 -0
  230. package/dist/plugins/adapter-build.d.ts +1 -1
  231. package/dist/plugins/adapter-build.d.ts.map +1 -1
  232. package/dist/plugins/build-manifest.d.ts +2 -2
  233. package/dist/plugins/build-manifest.d.ts.map +1 -1
  234. package/dist/plugins/build-report.d.ts +9 -7
  235. package/dist/plugins/build-report.d.ts.map +1 -1
  236. package/dist/plugins/client-chunks.d.ts +32 -0
  237. package/dist/plugins/client-chunks.d.ts.map +1 -0
  238. package/dist/plugins/content.d.ts +1 -1
  239. package/dist/plugins/content.d.ts.map +1 -1
  240. package/dist/plugins/dev-server.d.ts +1 -1
  241. package/dist/plugins/dev-server.d.ts.map +1 -1
  242. package/dist/plugins/entries.d.ts +1 -1
  243. package/dist/plugins/entries.d.ts.map +1 -1
  244. package/dist/plugins/fonts.d.ts +17 -73
  245. package/dist/plugins/fonts.d.ts.map +1 -1
  246. package/dist/plugins/mdx.d.ts +1 -1
  247. package/dist/plugins/mdx.d.ts.map +1 -1
  248. package/dist/plugins/routing.d.ts +1 -1
  249. package/dist/plugins/routing.d.ts.map +1 -1
  250. package/dist/plugins/server-bundle.d.ts.map +1 -1
  251. package/dist/plugins/shims.d.ts +6 -5
  252. package/dist/plugins/shims.d.ts.map +1 -1
  253. package/dist/plugins/static-build.d.ts +4 -4
  254. package/dist/plugins/static-build.d.ts.map +1 -1
  255. package/dist/routing/codegen-shared.d.ts +55 -0
  256. package/dist/routing/codegen-shared.d.ts.map +1 -0
  257. package/dist/routing/codegen-types.d.ts +52 -0
  258. package/dist/routing/codegen-types.d.ts.map +1 -0
  259. package/dist/routing/codegen.d.ts +2 -2
  260. package/dist/routing/codegen.d.ts.map +1 -1
  261. package/dist/routing/convention-lint.d.ts +41 -0
  262. package/dist/routing/convention-lint.d.ts.map +1 -0
  263. package/dist/routing/index.d.ts +5 -1
  264. package/dist/routing/index.d.ts.map +1 -1
  265. package/dist/routing/index.js +3 -2
  266. package/dist/routing/link-codegen.d.ts +90 -0
  267. package/dist/routing/link-codegen.d.ts.map +1 -0
  268. package/dist/routing/scanner.d.ts +1 -10
  269. package/dist/routing/scanner.d.ts.map +1 -1
  270. package/dist/routing/segment-classify.d.ts +75 -0
  271. package/dist/routing/segment-classify.d.ts.map +1 -0
  272. package/dist/routing/status-file-lint.d.ts +2 -1
  273. package/dist/routing/status-file-lint.d.ts.map +1 -1
  274. package/dist/routing/types.d.ts +77 -25
  275. package/dist/routing/types.d.ts.map +1 -1
  276. package/dist/routing/walkers.d.ts +51 -0
  277. package/dist/routing/walkers.d.ts.map +1 -0
  278. package/dist/rsc-runtime/rsc.d.ts +1 -1
  279. package/dist/rsc-runtime/rsc.d.ts.map +1 -1
  280. package/dist/rsc-runtime/ssr.d.ts +12 -0
  281. package/dist/rsc-runtime/ssr.d.ts.map +1 -1
  282. package/dist/schema-bridge.d.ts +76 -0
  283. package/dist/schema-bridge.d.ts.map +1 -0
  284. package/dist/search-params/define.d.ts +157 -0
  285. package/dist/search-params/define.d.ts.map +1 -0
  286. package/dist/search-params/index.d.ts +4 -7
  287. package/dist/search-params/index.d.ts.map +1 -1
  288. package/dist/search-params/index.js +34 -441
  289. package/dist/search-params/index.js.map +1 -1
  290. package/dist/search-params/registry.d.ts +2 -2
  291. package/dist/search-params/registry.d.ts.map +1 -1
  292. package/dist/search-params/wrappers.d.ts +53 -0
  293. package/dist/search-params/wrappers.d.ts.map +1 -0
  294. package/dist/segment-params/define.d.ts +95 -0
  295. package/dist/segment-params/define.d.ts.map +1 -0
  296. package/dist/segment-params/index.d.ts +3 -0
  297. package/dist/segment-params/index.d.ts.map +1 -0
  298. package/dist/segment-params/index.js +2 -0
  299. package/dist/server/access-gate.d.ts +8 -3
  300. package/dist/server/access-gate.d.ts.map +1 -1
  301. package/dist/server/action-client.d.ts +41 -6
  302. package/dist/server/action-client.d.ts.map +1 -1
  303. package/dist/server/action-encryption.d.ts +76 -0
  304. package/dist/server/action-encryption.d.ts.map +1 -0
  305. package/dist/server/action-handler.d.ts +35 -1
  306. package/dist/server/action-handler.d.ts.map +1 -1
  307. package/dist/server/actions.d.ts +3 -6
  308. package/dist/server/actions.d.ts.map +1 -1
  309. package/dist/server/als-registry.d.ts +33 -5
  310. package/dist/server/als-registry.d.ts.map +1 -1
  311. package/dist/server/asset-headers.d.ts +1 -15
  312. package/dist/server/asset-headers.d.ts.map +1 -1
  313. package/dist/server/build-manifest.d.ts +2 -2
  314. package/dist/server/build-manifest.d.ts.map +1 -1
  315. package/dist/server/cookie-context.d.ts +170 -0
  316. package/dist/server/cookie-context.d.ts.map +1 -0
  317. package/dist/server/cookie-parsing.d.ts +51 -0
  318. package/dist/server/cookie-parsing.d.ts.map +1 -0
  319. package/dist/server/debug.d.ts +1 -1
  320. package/dist/server/default-logger.d.ts +22 -0
  321. package/dist/server/default-logger.d.ts.map +1 -0
  322. package/dist/server/deny-boundary.d.ts +90 -0
  323. package/dist/server/deny-boundary.d.ts.map +1 -0
  324. package/dist/server/deny-renderer.d.ts.map +1 -1
  325. package/dist/server/dev-source-map.d.ts +22 -0
  326. package/dist/server/dev-source-map.d.ts.map +1 -0
  327. package/dist/server/early-hints-sender.d.ts.map +1 -1
  328. package/dist/server/early-hints.d.ts +13 -5
  329. package/dist/server/early-hints.d.ts.map +1 -1
  330. package/dist/server/error-boundary-wrapper.d.ts +7 -1
  331. package/dist/server/error-boundary-wrapper.d.ts.map +1 -1
  332. package/dist/server/fallback-error.d.ts +12 -7
  333. package/dist/server/fallback-error.d.ts.map +1 -1
  334. package/dist/server/flight-injection-state.d.ts +66 -0
  335. package/dist/server/flight-injection-state.d.ts.map +1 -0
  336. package/dist/server/flight-scripts.d.ts +42 -0
  337. package/dist/server/flight-scripts.d.ts.map +1 -0
  338. package/dist/server/flush.d.ts.map +1 -1
  339. package/dist/server/form-data.d.ts +29 -0
  340. package/dist/server/form-data.d.ts.map +1 -1
  341. package/dist/server/html-injector-core.d.ts +212 -0
  342. package/dist/server/html-injector-core.d.ts.map +1 -0
  343. package/dist/server/html-injectors.d.ts +81 -41
  344. package/dist/server/html-injectors.d.ts.map +1 -1
  345. package/dist/server/index.d.ts +9 -46
  346. package/dist/server/index.d.ts.map +1 -1
  347. package/dist/server/index.js +155 -2905
  348. package/dist/server/index.js.map +1 -1
  349. package/dist/server/internal.d.ts +48 -0
  350. package/dist/server/internal.d.ts.map +1 -0
  351. package/dist/server/internal.js +2900 -0
  352. package/dist/server/internal.js.map +1 -0
  353. package/dist/server/logger.d.ts +39 -7
  354. package/dist/server/logger.d.ts.map +1 -1
  355. package/dist/server/middleware-runner.d.ts +36 -4
  356. package/dist/server/middleware-runner.d.ts.map +1 -1
  357. package/dist/server/node-stream-transforms.d.ts +110 -0
  358. package/dist/server/node-stream-transforms.d.ts.map +1 -0
  359. package/dist/server/param-coercion.d.ts +26 -0
  360. package/dist/server/param-coercion.d.ts.map +1 -0
  361. package/dist/server/pipeline-helpers.d.ts +95 -0
  362. package/dist/server/pipeline-helpers.d.ts.map +1 -0
  363. package/dist/server/pipeline-interception.d.ts +1 -1
  364. package/dist/server/pipeline-interception.d.ts.map +1 -1
  365. package/dist/server/pipeline-metadata.d.ts +6 -0
  366. package/dist/server/pipeline-metadata.d.ts.map +1 -1
  367. package/dist/server/pipeline-outcome.d.ts +49 -0
  368. package/dist/server/pipeline-outcome.d.ts.map +1 -0
  369. package/dist/server/pipeline-phases.d.ts +52 -0
  370. package/dist/server/pipeline-phases.d.ts.map +1 -0
  371. package/dist/server/pipeline.d.ts +93 -23
  372. package/dist/server/pipeline.d.ts.map +1 -1
  373. package/dist/server/port-resolution.d.ts +117 -0
  374. package/dist/server/port-resolution.d.ts.map +1 -0
  375. package/dist/server/primitives.d.ts +69 -18
  376. package/dist/server/primitives.d.ts.map +1 -1
  377. package/dist/server/render-timeout.d.ts +51 -0
  378. package/dist/server/render-timeout.d.ts.map +1 -0
  379. package/dist/server/request-context.d.ts +41 -109
  380. package/dist/server/request-context.d.ts.map +1 -1
  381. package/dist/server/route-element-builder.d.ts +27 -1
  382. package/dist/server/route-element-builder.d.ts.map +1 -1
  383. package/dist/server/route-handler.d.ts.map +1 -1
  384. package/dist/server/route-matcher.d.ts +21 -34
  385. package/dist/server/route-matcher.d.ts.map +1 -1
  386. package/dist/server/rsc-entry/action-middleware-runner.d.ts +66 -0
  387. package/dist/server/rsc-entry/action-middleware-runner.d.ts.map +1 -0
  388. package/dist/server/rsc-entry/api-handler.d.ts +2 -2
  389. package/dist/server/rsc-entry/api-handler.d.ts.map +1 -1
  390. package/dist/server/rsc-entry/error-renderer.d.ts +26 -13
  391. package/dist/server/rsc-entry/error-renderer.d.ts.map +1 -1
  392. package/dist/server/rsc-entry/helpers.d.ts +49 -6
  393. package/dist/server/rsc-entry/helpers.d.ts.map +1 -1
  394. package/dist/server/rsc-entry/index.d.ts +20 -3
  395. package/dist/server/rsc-entry/index.d.ts.map +1 -1
  396. package/dist/server/rsc-entry/render-route.d.ts +50 -0
  397. package/dist/server/rsc-entry/render-route.d.ts.map +1 -0
  398. package/dist/server/rsc-entry/rsc-payload.d.ts +3 -3
  399. package/dist/server/rsc-entry/rsc-payload.d.ts.map +1 -1
  400. package/dist/server/rsc-entry/rsc-stream.d.ts +14 -1
  401. package/dist/server/rsc-entry/rsc-stream.d.ts.map +1 -1
  402. package/dist/server/rsc-entry/ssr-bridge.d.ts +1 -1
  403. package/dist/server/rsc-entry/ssr-bridge.d.ts.map +1 -1
  404. package/dist/server/rsc-entry/ssr-renderer.d.ts +19 -4
  405. package/dist/server/rsc-entry/ssr-renderer.d.ts.map +1 -1
  406. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts +119 -0
  407. package/dist/server/rsc-entry/wrap-action-dispatch.d.ts.map +1 -0
  408. package/dist/server/safe-load.d.ts +46 -0
  409. package/dist/server/safe-load.d.ts.map +1 -0
  410. package/dist/server/sensitive-fields.d.ts +74 -0
  411. package/dist/server/sensitive-fields.d.ts.map +1 -0
  412. package/dist/server/sitemap-generator.d.ts +129 -0
  413. package/dist/server/sitemap-generator.d.ts.map +1 -0
  414. package/dist/server/sitemap-handler.d.ts +22 -0
  415. package/dist/server/sitemap-handler.d.ts.map +1 -0
  416. package/dist/server/slot-resolver.d.ts +1 -1
  417. package/dist/server/slot-resolver.d.ts.map +1 -1
  418. package/dist/server/ssr-entry.d.ts +23 -0
  419. package/dist/server/ssr-entry.d.ts.map +1 -1
  420. package/dist/server/ssr-render.d.ts +39 -21
  421. package/dist/server/ssr-render.d.ts.map +1 -1
  422. package/dist/server/ssr-wrappers.d.ts +50 -0
  423. package/dist/server/ssr-wrappers.d.ts.map +1 -0
  424. package/dist/server/state-tree-diff.d.ts.map +1 -1
  425. package/dist/server/status-code-resolver.d.ts +16 -11
  426. package/dist/server/status-code-resolver.d.ts.map +1 -1
  427. package/dist/server/stream-utils.d.ts +36 -0
  428. package/dist/server/stream-utils.d.ts.map +1 -0
  429. package/dist/server/tracing.d.ts +5 -5
  430. package/dist/server/tracing.d.ts.map +1 -1
  431. package/dist/server/tree-builder.d.ts +62 -30
  432. package/dist/server/tree-builder.d.ts.map +1 -1
  433. package/dist/server/types.d.ts +49 -4
  434. package/dist/server/types.d.ts.map +1 -1
  435. package/dist/server/utils/escape-html.d.ts +14 -0
  436. package/dist/server/utils/escape-html.d.ts.map +1 -0
  437. package/dist/server/version-skew.d.ts +61 -0
  438. package/dist/server/version-skew.d.ts.map +1 -0
  439. package/dist/shared/merge-search-params.d.ts +22 -0
  440. package/dist/shared/merge-search-params.d.ts.map +1 -0
  441. package/dist/shims/font-google.d.ts +1 -1
  442. package/dist/shims/font-google.d.ts.map +1 -1
  443. package/dist/shims/font-google.js +42 -0
  444. package/dist/shims/font-google.js.map +1 -0
  445. package/dist/shims/font-local.d.ts +26 -0
  446. package/dist/shims/font-local.d.ts.map +1 -0
  447. package/dist/shims/font-local.js +20 -0
  448. package/dist/shims/font-local.js.map +1 -0
  449. package/dist/shims/headers.d.ts +2 -1
  450. package/dist/shims/headers.d.ts.map +1 -1
  451. package/dist/shims/navigation-client.d.ts +3 -1
  452. package/dist/shims/navigation-client.d.ts.map +1 -1
  453. package/dist/shims/navigation.d.ts +11 -5
  454. package/dist/shims/navigation.d.ts.map +1 -1
  455. package/dist/utils/directive-parser.d.ts +1 -43
  456. package/dist/utils/directive-parser.d.ts.map +1 -1
  457. package/dist/utils/state-machine.d.ts +80 -0
  458. package/dist/utils/state-machine.d.ts.map +1 -0
  459. package/package.json +56 -22
  460. package/src/adapters/build-output-helper.ts +77 -0
  461. package/src/adapters/cloudflare-dev.ts +177 -0
  462. package/src/adapters/cloudflare-kv-cache.ts +142 -0
  463. package/src/adapters/cloudflare.ts +350 -76
  464. package/src/adapters/compress-module.ts +24 -4
  465. package/src/adapters/nitro.ts +142 -59
  466. package/src/adapters/shared.ts +40 -0
  467. package/src/adapters/wrangler.d.ts +7 -0
  468. package/src/cache/cache-api.ts +38 -0
  469. package/src/cache/handler-store.ts +68 -0
  470. package/src/cache/index.ts +81 -18
  471. package/src/cache/singleflight.ts +62 -4
  472. package/src/cache/sizeof.ts +31 -0
  473. package/src/cache/timber-cache.ts +25 -20
  474. package/src/cli.ts +16 -6
  475. package/src/client/browser-dev.ts +153 -1
  476. package/src/client/browser-entry/action-dispatch.ts +116 -0
  477. package/src/client/browser-entry/hmr.ts +81 -0
  478. package/src/client/browser-entry/hydrate.ts +145 -0
  479. package/src/client/browser-entry/index.ts +143 -0
  480. package/src/client/browser-entry/post-hydration.ts +119 -0
  481. package/src/client/browser-entry/router-init.ts +193 -0
  482. package/src/client/browser-entry/rsc-stream.ts +157 -0
  483. package/src/client/browser-entry/scroll.ts +27 -0
  484. package/src/client/error-boundary.tsx +97 -20
  485. package/src/client/error-reconstituter.tsx +65 -0
  486. package/src/client/form.tsx +31 -32
  487. package/src/client/history.ts +26 -4
  488. package/src/client/index.ts +77 -43
  489. package/src/client/internal.ts +58 -0
  490. package/src/client/link-pending-store.ts +111 -0
  491. package/src/client/link.tsx +342 -113
  492. package/src/client/nav-link-store.ts +47 -0
  493. package/src/client/navigation-api-types.ts +112 -0
  494. package/src/client/navigation-api.ts +332 -0
  495. package/src/client/navigation-context.ts +31 -6
  496. package/src/client/navigation-root.tsx +342 -0
  497. package/src/client/nuqs-adapter.tsx +16 -3
  498. package/src/client/router-ref.ts +1 -1
  499. package/src/client/router.ts +300 -73
  500. package/src/client/rsc-fetch.ts +112 -8
  501. package/src/client/segment-cache.ts +1 -1
  502. package/src/client/segment-outlet.tsx +86 -0
  503. package/src/client/ssr-data.ts +13 -5
  504. package/src/client/stale-reload.ts +72 -3
  505. package/src/client/state.ts +2 -2
  506. package/src/client/top-loader.tsx +18 -6
  507. package/src/client/use-cookie.ts +29 -0
  508. package/src/client/use-link-status.ts +7 -7
  509. package/src/client/{use-navigation-pending.ts → use-pending-navigation.ts} +6 -6
  510. package/src/client/use-query-states.ts +9 -3
  511. package/src/client/use-router.ts +1 -1
  512. package/src/client/{use-params.ts → use-segment-params.ts} +7 -5
  513. package/src/codec.ts +45 -0
  514. package/src/config-types.ts +292 -0
  515. package/src/config-validation.ts +303 -0
  516. package/src/content/index.ts +5 -13
  517. package/src/cookies/define-cookie.ts +301 -55
  518. package/src/cookies/index.ts +12 -1
  519. package/src/cookies/json-cookie.ts +105 -0
  520. package/src/cookies/validation.ts +134 -0
  521. package/src/dev-tools/404-page.ts +387 -0
  522. package/src/dev-tools/browser-logs.ts +288 -0
  523. package/src/dev-tools/error-page.ts +509 -0
  524. package/src/dev-tools/holding-server.ts +187 -0
  525. package/src/dev-tools/index.ts +90 -0
  526. package/src/dev-tools/instrumentation.ts +176 -0
  527. package/src/{plugins/dev-logs.ts → dev-tools/logs.ts} +3 -3
  528. package/src/dev-tools/overlay.ts +456 -0
  529. package/src/dev-tools/stack-classifier.ts +75 -0
  530. package/src/dev-tools/terminal.ts +183 -0
  531. package/src/{server/dev-warnings.ts → dev-tools/warnings.ts} +5 -50
  532. package/src/fonts/bundle.ts +142 -0
  533. package/src/fonts/css.ts +2 -1
  534. package/src/fonts/dev-middleware.ts +74 -0
  535. package/src/fonts/pipeline.ts +314 -0
  536. package/src/fonts/transform.ts +406 -0
  537. package/src/fonts/types.ts +50 -1
  538. package/src/fonts/virtual-modules.ts +227 -0
  539. package/src/index.ts +376 -356
  540. package/src/plugin-context.ts +240 -0
  541. package/src/plugins/adapter-build.ts +12 -4
  542. package/src/plugins/build-manifest.ts +13 -2
  543. package/src/plugins/build-report.ts +16 -25
  544. package/src/plugins/client-chunks.ts +65 -0
  545. package/src/plugins/content.ts +1 -1
  546. package/src/plugins/dev-server.ts +154 -21
  547. package/src/plugins/entries.ts +111 -10
  548. package/src/plugins/fonts.ts +155 -654
  549. package/src/plugins/mdx.ts +43 -10
  550. package/src/plugins/routing.ts +225 -41
  551. package/src/plugins/server-action-exports.ts +1 -1
  552. package/src/plugins/server-bundle.ts +32 -1
  553. package/src/plugins/shims.ts +136 -35
  554. package/src/plugins/static-build.ts +17 -11
  555. package/src/routing/codegen-shared.ts +98 -0
  556. package/src/routing/codegen-types.ts +53 -0
  557. package/src/routing/codegen.ts +143 -176
  558. package/src/routing/convention-lint.ts +357 -0
  559. package/src/routing/index.ts +5 -1
  560. package/src/routing/interception.ts +1 -1
  561. package/src/routing/link-codegen.ts +294 -0
  562. package/src/routing/scanner.ts +107 -110
  563. package/src/routing/segment-classify.ts +188 -0
  564. package/src/routing/status-file-lint.ts +10 -7
  565. package/src/routing/types.ts +78 -25
  566. package/src/routing/walkers.ts +90 -0
  567. package/src/rsc-runtime/rsc.ts +2 -0
  568. package/src/rsc-runtime/ssr.ts +50 -0
  569. package/src/rsc-runtime/vendor-types.d.ts +7 -0
  570. package/src/{search-params/codecs.ts → schema-bridge.ts} +57 -20
  571. package/src/search-params/define.ts +538 -0
  572. package/src/search-params/index.ts +14 -20
  573. package/src/search-params/registry.ts +2 -2
  574. package/src/search-params/wrappers.ts +92 -0
  575. package/src/segment-params/define.ts +332 -0
  576. package/src/segment-params/index.ts +9 -0
  577. package/src/server/access-gate.tsx +76 -34
  578. package/src/server/action-client.ts +88 -15
  579. package/src/server/action-encryption.ts +144 -0
  580. package/src/server/action-handler.ts +112 -14
  581. package/src/server/actions.ts +10 -9
  582. package/src/server/als-registry.ts +35 -7
  583. package/src/server/asset-headers.ts +8 -34
  584. package/src/server/build-manifest.ts +10 -4
  585. package/src/server/compress.ts +25 -7
  586. package/src/server/cookie-context.ts +468 -0
  587. package/src/server/cookie-parsing.ts +135 -0
  588. package/src/server/debug.ts +1 -1
  589. package/src/server/default-logger.ts +99 -0
  590. package/src/server/deny-boundary.ts +218 -0
  591. package/src/server/deny-renderer.ts +31 -50
  592. package/src/server/dev-source-map.ts +31 -0
  593. package/src/server/early-hints-sender.ts +3 -2
  594. package/src/server/early-hints.ts +36 -15
  595. package/src/server/error-boundary-wrapper.ts +74 -22
  596. package/src/server/fallback-error.ts +74 -102
  597. package/src/server/flight-injection-state.ts +113 -0
  598. package/src/server/flight-scripts.ts +62 -0
  599. package/src/server/flush.ts +2 -1
  600. package/src/server/form-data.ts +76 -0
  601. package/src/server/html-injector-core.ts +403 -0
  602. package/src/server/html-injectors.ts +244 -223
  603. package/src/server/index.ts +31 -184
  604. package/src/server/internal.ts +176 -0
  605. package/src/server/logger.ts +67 -36
  606. package/src/server/middleware-runner.ts +75 -4
  607. package/src/server/node-stream-transforms.ts +369 -0
  608. package/src/server/param-coercion.ts +76 -0
  609. package/src/server/pipeline-helpers.ts +204 -0
  610. package/src/server/pipeline-interception.ts +17 -16
  611. package/src/server/pipeline-metadata.ts +13 -0
  612. package/src/server/pipeline-outcome.ts +167 -0
  613. package/src/server/pipeline-phases.ts +409 -0
  614. package/src/server/pipeline.ts +128 -394
  615. package/src/server/port-resolution.ts +215 -0
  616. package/src/server/primitives.ts +111 -28
  617. package/src/server/render-timeout.ts +108 -0
  618. package/src/server/request-context.ts +94 -338
  619. package/src/server/route-element-builder.ts +288 -192
  620. package/src/server/route-handler.ts +24 -4
  621. package/src/server/route-matcher.ts +44 -65
  622. package/src/server/rsc-entry/action-middleware-runner.ts +167 -0
  623. package/src/server/rsc-entry/api-handler.ts +16 -17
  624. package/src/server/rsc-entry/error-renderer.ts +305 -89
  625. package/src/server/rsc-entry/helpers.ts +136 -12
  626. package/src/server/rsc-entry/index.ts +312 -341
  627. package/src/server/rsc-entry/render-route.ts +304 -0
  628. package/src/server/rsc-entry/rsc-payload.ts +65 -18
  629. package/src/server/rsc-entry/rsc-stream.ts +81 -13
  630. package/src/server/rsc-entry/ssr-bridge.ts +14 -5
  631. package/src/server/rsc-entry/ssr-renderer.ts +171 -38
  632. package/src/server/rsc-entry/wrap-action-dispatch.ts +449 -0
  633. package/src/server/safe-load.ts +60 -0
  634. package/src/server/sensitive-fields.ts +230 -0
  635. package/src/server/sitemap-generator.ts +338 -0
  636. package/src/server/sitemap-handler.ts +126 -0
  637. package/src/server/slot-resolver.ts +245 -230
  638. package/src/server/ssr-entry.ts +215 -32
  639. package/src/server/ssr-render.ts +289 -67
  640. package/src/server/ssr-wrappers.tsx +139 -0
  641. package/src/server/state-tree-diff.ts +4 -1
  642. package/src/server/status-code-resolver.ts +112 -128
  643. package/src/server/stream-utils.ts +213 -0
  644. package/src/server/tracing.ts +21 -10
  645. package/src/server/tree-builder.ts +202 -90
  646. package/src/server/types.ts +55 -6
  647. package/src/server/utils/escape-html.ts +20 -0
  648. package/src/server/version-skew.ts +104 -0
  649. package/src/shared/merge-search-params.ts +55 -0
  650. package/src/shims/font-google.ts +1 -1
  651. package/src/shims/font-local.ts +34 -0
  652. package/src/shims/headers.ts +5 -1
  653. package/src/shims/navigation-client.ts +4 -3
  654. package/src/shims/navigation.ts +14 -7
  655. package/src/utils/directive-parser.ts +1 -390
  656. package/src/utils/state-machine.ts +111 -0
  657. package/dist/_chunks/als-registry-B7DbZ2hS.js +0 -41
  658. package/dist/_chunks/als-registry-B7DbZ2hS.js.map +0 -1
  659. package/dist/_chunks/debug-gwlJkDuf.js +0 -108
  660. package/dist/_chunks/debug-gwlJkDuf.js.map +0 -1
  661. package/dist/_chunks/format-DviM89f0.js.map +0 -1
  662. package/dist/_chunks/interception-BOoWmLUA.js +0 -676
  663. package/dist/_chunks/interception-BOoWmLUA.js.map +0 -1
  664. package/dist/_chunks/request-context-DIkVh_jG.js +0 -330
  665. package/dist/_chunks/request-context-DIkVh_jG.js.map +0 -1
  666. package/dist/_chunks/ssr-data-MjmprTmO.js.map +0 -1
  667. package/dist/_chunks/tracing-CemImE6h.js +0 -187
  668. package/dist/_chunks/tracing-CemImE6h.js.map +0 -1
  669. package/dist/_chunks/use-cookie-DX-l1_5E.js +0 -91
  670. package/dist/_chunks/use-cookie-DX-l1_5E.js.map +0 -1
  671. package/dist/_chunks/use-query-states-D5KaffOK.js.map +0 -1
  672. package/dist/cache/register-cached-function.d.ts +0 -17
  673. package/dist/cache/register-cached-function.d.ts.map +0 -1
  674. package/dist/client/browser-entry.d.ts +0 -21
  675. package/dist/client/browser-entry.d.ts.map +0 -1
  676. package/dist/client/link-status-provider.d.ts +0 -11
  677. package/dist/client/link-status-provider.d.ts.map +0 -1
  678. package/dist/client/transition-root.d.ts.map +0 -1
  679. package/dist/client/use-navigation-pending.d.ts.map +0 -1
  680. package/dist/client/use-params.d.ts.map +0 -1
  681. package/dist/plugins/cache-transform.d.ts +0 -36
  682. package/dist/plugins/cache-transform.d.ts.map +0 -1
  683. package/dist/plugins/dev-error-overlay.d.ts +0 -60
  684. package/dist/plugins/dev-error-overlay.d.ts.map +0 -1
  685. package/dist/plugins/dev-logs.d.ts.map +0 -1
  686. package/dist/plugins/dynamic-transform.d.ts +0 -72
  687. package/dist/plugins/dynamic-transform.d.ts.map +0 -1
  688. package/dist/search-params/analyze.d.ts +0 -54
  689. package/dist/search-params/analyze.d.ts.map +0 -1
  690. package/dist/search-params/builtin-codecs.d.ts +0 -105
  691. package/dist/search-params/builtin-codecs.d.ts.map +0 -1
  692. package/dist/search-params/codecs.d.ts +0 -53
  693. package/dist/search-params/codecs.d.ts.map +0 -1
  694. package/dist/search-params/create.d.ts +0 -106
  695. package/dist/search-params/create.d.ts.map +0 -1
  696. package/dist/server/dev-fetch-instrumentation.d.ts +0 -22
  697. package/dist/server/dev-fetch-instrumentation.d.ts.map +0 -1
  698. package/dist/server/dev-logger.d.ts.map +0 -1
  699. package/dist/server/dev-span-processor.d.ts.map +0 -1
  700. package/dist/server/dev-warnings.d.ts.map +0 -1
  701. package/dist/server/manifest-status-resolver.d.ts +0 -58
  702. package/dist/server/manifest-status-resolver.d.ts.map +0 -1
  703. package/dist/server/prerender.d.ts +0 -77
  704. package/dist/server/prerender.d.ts.map +0 -1
  705. package/dist/server/response-cache.d.ts +0 -54
  706. package/dist/server/response-cache.d.ts.map +0 -1
  707. package/src/cache/register-cached-function.ts +0 -103
  708. package/src/client/browser-entry.ts +0 -678
  709. package/src/client/link-status-provider.tsx +0 -30
  710. package/src/client/transition-root.tsx +0 -166
  711. package/src/plugins/cache-transform.ts +0 -199
  712. package/src/plugins/dev-error-overlay.ts +0 -230
  713. package/src/plugins/dynamic-transform.ts +0 -161
  714. package/src/search-params/analyze.ts +0 -192
  715. package/src/search-params/builtin-codecs.ts +0 -228
  716. package/src/search-params/create.ts +0 -321
  717. package/src/server/dev-fetch-instrumentation.ts +0 -96
  718. package/src/server/dev-span-processor.ts +0 -78
  719. package/src/server/manifest-status-resolver.ts +0 -215
  720. package/src/server/prerender.ts +0 -139
  721. package/src/server/response-cache.ts +0 -410
  722. /package/src/{server/dev-logger.ts → dev-tools/logger.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/routing/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAqBzD,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,CAWtF"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/routing/codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AASzD,wCAAwC;AACxC,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,CAWtF"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Convention linter — validates common misconfigurations in the route tree.
3
+ *
4
+ * Runs at scan time (build and dev startup). Each check produces a warning
5
+ * with the file path, what's wrong, and what to do about it.
6
+ *
7
+ * These are warnings, not errors — they don't block the build. The goal is
8
+ * to catch issues that would otherwise produce cryptic runtime behavior
9
+ * (silent 404s, empty pages, confusing React errors).
10
+ *
11
+ * Design doc: 07-routing.md, 10-error-handling.md
12
+ */
13
+ import type { RouteTree } from './types.js';
14
+ export interface ConventionWarning {
15
+ /** Warning ID for deduplication and filtering. */
16
+ id: string;
17
+ /** Human-readable single-line summary. */
18
+ summary: string;
19
+ /** Multi-line details with file path and fix suggestion. */
20
+ details: string;
21
+ /** Severity: 'warn' for potential issues, 'error' for definite misconfigurations. */
22
+ level: 'warn' | 'error';
23
+ }
24
+ /**
25
+ * Run all convention lint checks on a route tree.
26
+ *
27
+ * Returns an array of warnings. Empty array means everything looks good.
28
+ */
29
+ export declare function lintConventions(tree: RouteTree, appDir: string): ConventionWarning[];
30
+ /**
31
+ * Check if the app/ directory exists. Called before scanning.
32
+ * Returns a warning if missing, or null if the directory exists.
33
+ */
34
+ export declare function checkAppDirExists(appDir: string): ConventionWarning | null;
35
+ /**
36
+ * Format warnings for terminal output.
37
+ *
38
+ * Groups by severity, uses colors, and includes fix suggestions.
39
+ */
40
+ export declare function formatConventionWarnings(warnings: ConventionWarning[]): string;
41
+ //# sourceMappingURL=convention-lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convention-lint.d.ts","sourceRoot":"","sources":["../../src/routing/convention-lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAKzD,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAqBpF;AAwOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAe1E;AAUD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAgC9E"}
@@ -1,8 +1,12 @@
1
- export { scanRoutes, classifySegment } from './scanner.js';
1
+ export { scanRoutes } from './scanner.js';
2
2
  export { generateRouteMap } from './codegen.js';
3
3
  export type { CodegenOptions } from './codegen.js';
4
4
  export type { RouteTree, SegmentNode, SegmentType, RouteFile, ScannerConfig, InterceptionMarker, } from './types.js';
5
5
  export { DEFAULT_PAGE_EXTENSIONS, INTERCEPTION_MARKERS } from './types.js';
6
6
  export { collectInterceptionRewrites } from './interception.js';
7
7
  export type { InterceptionRewrite } from './interception.js';
8
+ export { classifyUrlSegment, classifySegment } from './segment-classify.js';
9
+ export type { UrlSegment, SegmentClassification } from './segment-classify.js';
10
+ export { collectLeafRoutes } from './walkers.js';
11
+ export type { LeafRoute, CollectLeafRoutesOptions } from './walkers.js';
8
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,aAAa,EACb,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5E,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,2 +1,3 @@
1
- import { a as DEFAULT_PAGE_EXTENSIONS, i as scanRoutes, n as generateRouteMap, o as INTERCEPTION_MARKERS, r as classifySegment, t as collectInterceptionRewrites } from "../_chunks/interception-BOoWmLUA.js";
2
- export { DEFAULT_PAGE_EXTENSIONS, INTERCEPTION_MARKERS, classifySegment, collectInterceptionRewrites, generateRouteMap, scanRoutes };
1
+ import { i as INTERCEPTION_MARKERS, n as classifyUrlSegment, r as DEFAULT_PAGE_EXTENSIONS, t as classifySegment } from "../_chunks/segment-classify-BjfuctV2.js";
2
+ import { i as scanRoutes, n as collectInterceptionRewrites, r as generateRouteMap, t as collectLeafRoutes } from "../_chunks/walkers-Tg0Alwcg.js";
3
+ export { DEFAULT_PAGE_EXTENSIONS, INTERCEPTION_MARKERS, classifySegment, classifyUrlSegment, collectInterceptionRewrites, collectLeafRoutes, generateRouteMap, scanRoutes };
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Typed `<Link>` codegen — interface augmentation generation.
3
+ *
4
+ * Extracted from `codegen.ts` to keep that file under the project's
5
+ * 500-line cap. This module owns everything that emits the
6
+ * `interface LinkFunction { ... }` augmentation blocks in the generated
7
+ * `.timber/timber-routes.d.ts`.
8
+ *
9
+ * Two augmentation blocks are emitted:
10
+ *
11
+ * 1. **Per-route discriminated union** (`formatTypedLinkOverloads`) —
12
+ * one call signature whose props is a union keyed on `href`. TS
13
+ * narrows by literal href and reports prop errors against the
14
+ * matched variant. See TIM-835 and `design/09-typescript.md`.
15
+ *
16
+ * 2. **Catch-all overloads** (`formatLinkCatchAllOverloads`) — external
17
+ * href literals (`http://`, `mailto:`, etc.) and a computed-string
18
+ * `<H extends string>` signature for runtime-computed paths.
19
+ *
20
+ * Block ordering is critical for error UX: per-route is emitted FIRST
21
+ * so that, after TS's "later overload set ordered first" merge rule,
22
+ * the discriminated union ends up LAST in resolution order — the
23
+ * overload TS reports against on failure.
24
+ */
25
+ import type { ParamEntry, RouteEntry } from './codegen-types.js';
26
+ /** Shared Link base-props type literal used in every emitted call signature. */
27
+ export declare const 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 }";
28
+ /**
29
+ * Build a TypeScript template literal pattern for a dynamic route.
30
+ * e.g. '/products/[id]' → '/products/${string}'
31
+ * '/blog/[...slug]' → '/blog/${string}'
32
+ * '/docs/[[...path]]' → '/docs/${string}' (also matches /docs)
33
+ * '/[org]/[repo]' → '/${string}/${string}'
34
+ */
35
+ export declare function buildResolvedPattern(route: RouteEntry): string | null;
36
+ /**
37
+ * Format the segmentParams type for Link overloads.
38
+ *
39
+ * Link params accept `string | number` for single dynamic segments
40
+ * (convenience — values are stringified at runtime). Catch-all and
41
+ * optional catch-all remain `string[]` / `string[] | undefined`.
42
+ *
43
+ * When the segment's params chain (TIM-834) declares a typed codec, the
44
+ * inferred type from the codec wins via a nested conditional.
45
+ */
46
+ export declare function formatLinkParamsType(params: ParamEntry[], importBase?: string): string;
47
+ /**
48
+ * Catch-all call signatures for `<Link>` — external hrefs and computed
49
+ * `string` variables. Emitted from codegen in a SEPARATE
50
+ * `declare module` block (declared AFTER the per-route block) so the TS
51
+ * "later overload set ordered first" rule places these catch-all
52
+ * signatures ahead of per-route in resolution order, leaving per-route
53
+ * as the final overload whose error message is reported on failure.
54
+ *
55
+ * The conditional `string extends H ? ... : never` protection preserves
56
+ * TIM-624's guarantee that unknown internal path literals don't match
57
+ * the catch-all — typos like `<Link href="/typo" />` still error.
58
+ */
59
+ export declare function formatLinkCatchAllOverloads(): string[];
60
+ /**
61
+ * Generate typed per-route Link call signatures via LinkFunction
62
+ * interface merging.
63
+ *
64
+ * TIM-835: This emits a SINGLE call signature whose props is a
65
+ * discriminated union keyed on `href`. TypeScript narrows the union by
66
+ * the literal `href` at the call site, then checks the rest of the
67
+ * props against the matched variant. When `segmentParams` or
68
+ * `searchParams` is wrong, TS reports the error against the matched
69
+ * variant — naming the user's actual `href` and the offending field.
70
+ *
71
+ * Before TIM-835, this function emitted N separate per-route overloads
72
+ * (one per route, sometimes two for dynamic routes). When ALL overloads
73
+ * failed, TS would pick an arbitrary failed overload (heuristically the
74
+ * "last tried") to render the diagnostic, often pointing at a route
75
+ * completely unrelated to the one the user wrote. The discriminated
76
+ * union sidesteps overload-resolution heuristics entirely.
77
+ *
78
+ * Open property shapes (`Record<string, unknown>` instead of `never`)
79
+ * for `segmentParams` on routes that don't declare them keep generic
80
+ * `LinkProps`-spreading wrappers compiling. (Aligned with TIM-833.)
81
+ *
82
+ * TIM-832: this function still emits the per-route block FIRST and the
83
+ * catch-all block follows, so per-route remains the LAST overload set in
84
+ * resolution order — the one TS reports against on failure. With a
85
+ * discriminated union there is only one call signature in this block,
86
+ * so the resolved-template-vs-pattern ordering reduces to placing the
87
+ * pattern variant before the resolved-template variant inside the union.
88
+ */
89
+ export declare function formatTypedLinkOverloads(routes: RouteEntry[], importBase?: string): string[];
90
+ //# sourceMappingURL=link-codegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-codegen.d.ts","sourceRoot":"","sources":["../../src/routing/link-codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGjE,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,8PAC4N,CAAC;AAE9P;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAkBrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAWtF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAqEtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAmG5F"}
@@ -7,7 +7,7 @@
7
7
  * timber.js file conventions. Does NOT handle request matching — this
8
8
  * is discovery only.
9
9
  */
10
- import type { RouteTree, SegmentType, ScannerConfig, InterceptionMarker } from './types.js';
10
+ import type { RouteTree, ScannerConfig } from './types.js';
11
11
  /**
12
12
  * Scan the app/ directory and build the route tree.
13
13
  *
@@ -16,13 +16,4 @@ import type { RouteTree, SegmentType, ScannerConfig, InterceptionMarker } from '
16
16
  * @returns The complete route tree
17
17
  */
18
18
  export declare function scanRoutes(appDir: string, config?: ScannerConfig): RouteTree;
19
- /**
20
- * Classify a directory name into its segment type.
21
- */
22
- export declare function classifySegment(dirName: string): {
23
- type: SegmentType;
24
- paramName?: string;
25
- interceptionMarker?: InterceptionMarker;
26
- interceptedSegmentName?: string;
27
- };
28
19
  //# sourceMappingURL=scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/routing/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,SAAS,EAET,WAAW,EAEX,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;AA6CpB;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,SAAS,CAwBhF;AAyBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAChD,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CA8CA"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/routing/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,SAAS,EAIT,aAAa,EAEd,MAAM,YAAY,CAAC;AA+CpB;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,SAAS,CAoChF"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Shared segment classifier — both URL tokens and filesystem directory names.
3
+ *
4
+ * `classifyUrlSegment(token)` is a pure single-pass character parser that
5
+ * classifies a route segment token (e.g. "dashboard", "[id]", "[...slug]",
6
+ * "[[...path]]") into a typed discriminated union. NO regex, NO Node.js-only
7
+ * APIs — safe to import from browser code (used by `Link` interpolation).
8
+ *
9
+ * `classifySegment(dirName)` is the build-time directory-name classifier
10
+ * used by the scanner. It recognizes timber-only conventions (private
11
+ * `_*`, parallel `@*`, route groups `(name)`, intercepting routes
12
+ * `(.)`/`(..)`/`(...)`/`(..)(..)`) and delegates bracket syntax to
13
+ * `classifyUrlSegment`. It is the **single source of truth** for what
14
+ * counts as a routing segment — there is no separate copy in the
15
+ * scanner. (TIM-848.)
16
+ *
17
+ * Malformed input falls through to `{ kind: 'static' }` — the safe default.
18
+ *
19
+ * If you change the bracket syntax, update ONLY this file. Every
20
+ * consumer imports from here.
21
+ *
22
+ * See design/07-routing.md §"Route Segments"
23
+ */
24
+ import type { InterceptionMarker, SegmentType } from './types.js';
25
+ export type UrlSegment = {
26
+ kind: 'static';
27
+ value: string;
28
+ } | {
29
+ kind: 'dynamic';
30
+ name: string;
31
+ } | {
32
+ kind: 'catch-all';
33
+ name: string;
34
+ } | {
35
+ kind: 'optional-catch-all';
36
+ name: string;
37
+ };
38
+ /**
39
+ * Classify a URL path segment token.
40
+ *
41
+ * Walks the string left-to-right in one pass:
42
+ * 1. If it doesn't start with '[', it's static.
43
+ * 2. Count opening brackets (1 or 2) to detect optional.
44
+ * 3. Check for '...' to detect catch-all.
45
+ * 4. Read the param name up to the closing bracket.
46
+ * 5. Validate the expected closing sequence (']' or ']]').
47
+ * 6. Reject if there are leftover characters after the close.
48
+ *
49
+ * Any structural violation → static (safe default).
50
+ */
51
+ export declare function classifyUrlSegment(token: string): UrlSegment;
52
+ /** Result of classifying a filesystem directory name. */
53
+ export interface SegmentClassification {
54
+ type: SegmentType;
55
+ paramName?: string;
56
+ interceptionMarker?: InterceptionMarker;
57
+ interceptedSegmentName?: string;
58
+ }
59
+ /**
60
+ * Classify a directory name into its segment type.
61
+ *
62
+ * Recognizes all timber file-system conventions in priority order:
63
+ * 1. Private folders: `_name` (excluded from routing)
64
+ * 2. Parallel route slots: `@name`
65
+ * 3. Intercepting routes: `(.)name`, `(..)name`, `(...)name`, `(..)(..)name`
66
+ * 4. Route groups: `(name)`
67
+ * 5. Bracket syntax: `[id]`, `[...slug]`, `[[...path]]` (delegated to
68
+ * `classifyUrlSegment`)
69
+ * 6. Static: anything else
70
+ *
71
+ * If you change the bracket syntax, update only `classifyUrlSegment`.
72
+ * If you change the directory-prefix conventions, update this function.
73
+ */
74
+ export declare function classifySegment(dirName: string): SegmentClassification;
75
+ //# sourceMappingURL=segment-classify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-classify.d.ts","sourceRoot":"","sources":["../../src/routing/segment-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGlE,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAkD5D;AAID,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAkCtE"}
@@ -23,7 +23,8 @@ export interface StatusFileLintWarning {
23
23
  * that are missing it.
24
24
  *
25
25
  * MDX and JSON status files are excluded — MDX files are server components
26
- * by design, and JSON files are data, not components.
26
+ * by design (pre-rendered as elements via fallbackElement, see TIM-503),
27
+ * and JSON files are data, not components.
27
28
  */
28
29
  export declare function lintStatusFileDirectives(tree: RouteTree): StatusFileLintWarning[];
29
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"status-file-lint.d.ts","sourceRoot":"","sources":["../../src/routing/status-file-lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAMzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,qBAAqB,EAAE,CAIjF;AAoDD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAiBtF"}
1
+ {"version":3,"file":"status-file-lint.d.ts","sourceRoot":"","sources":["../../src/routing/status-file-lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,YAAY,CAAC;AAOzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,qBAAqB,EAAE,CAIjF;AAqDD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAiBtF"}
@@ -3,6 +3,23 @@
3
3
  *
4
4
  * The route tree is built by scanning the app/ directory and recognizing
5
5
  * file conventions (page.*, layout.*, middleware.ts, access.ts, route.ts, etc.).
6
+ *
7
+ * **Single shape, two specializations** (TIM-848):
8
+ *
9
+ * `SegmentNode<TFile>` is the one canonical in-memory shape for the
10
+ * timber route tree. The same interface is used at build time (with
11
+ * `TFile = RouteFile`) and at request time (with `TFile = ManifestFile`,
12
+ * see `server/route-matcher.ts`). Walkers parameterized over `TFile`
13
+ * work on either, eliminating the previous duplication between
14
+ * `SegmentNode` (Map-based) and `ManifestSegmentNode` (object-based).
15
+ *
16
+ * Keyed groups (`slots`, `statusFiles`, `jsonStatusFiles`,
17
+ * `legacyStatusFiles`, `metadataRoutes`) are plain `Record<string, …>`
18
+ * objects rather than `Map`s so that the build-time tree can be
19
+ * serialized into the virtual route manifest with no shape transform.
20
+ *
21
+ * See design/07-routing.md §"Route Tree Shape" and design/18-build-system.md
22
+ * §"Route Manifest Shape".
6
23
  */
7
24
  /** Segment type classification */
8
25
  export type SegmentType = 'static' | 'dynamic' | 'catch-all' | 'optional-catch-all' | 'group' | 'slot' | 'intercepting' | 'private';
@@ -15,15 +32,31 @@ export type SegmentType = 'static' | 'dynamic' | 'catch-all' | 'optional-catch-a
15
32
  export type InterceptionMarker = '(.)' | '(..)' | '(...)' | '(..)(..)';
16
33
  /** All recognized interception markers, ordered longest-first for parsing. */
17
34
  export declare const INTERCEPTION_MARKERS: InterceptionMarker[];
18
- /** A single file discovered in a route segment */
35
+ /**
36
+ * A single file discovered in a route segment at build time.
37
+ *
38
+ * The runtime equivalent (`ManifestFile`, defined in
39
+ * `server/route-matcher.ts`) replaces `extension` with a lazy `load`
40
+ * function. Walkers that only need `filePath` are parameterized over
41
+ * `TFile` and accept either.
42
+ */
19
43
  export interface RouteFile {
20
44
  /** Absolute path to the file */
21
45
  filePath: string;
22
46
  /** File extension without leading dot (e.g. "tsx", "ts", "mdx") */
23
47
  extension: string;
24
48
  }
25
- /** A node in the segment tree */
26
- export interface SegmentNode {
49
+ /**
50
+ * A node in the segment tree.
51
+ *
52
+ * Generic over `TFile` so the same interface describes both the
53
+ * build-time tree (`SegmentNode<RouteFile>`, the default) and the
54
+ * runtime manifest tree (`SegmentNode<ManifestFile>`, aliased as
55
+ * `ManifestSegmentNode`). All keyed groups use `Record` (not `Map`)
56
+ * so the build-time tree serializes to the virtual route manifest
57
+ * with no shape transform.
58
+ */
59
+ export interface SegmentNode<TFile = RouteFile> {
27
60
  /** The raw directory name (e.g. "dashboard", "[id]", "(auth)", "@sidebar") */
28
61
  segmentName: string;
29
62
  /** Classified segment type */
@@ -39,37 +72,56 @@ export interface SegmentNode {
39
72
  * E.g., for "(.)photo" this is "photo".
40
73
  */
41
74
  interceptedSegmentName?: string;
42
- page?: RouteFile;
43
- layout?: RouteFile;
44
- middleware?: RouteFile;
45
- access?: RouteFile;
46
- route?: RouteFile;
47
- error?: RouteFile;
48
- default?: RouteFile;
75
+ page?: TFile;
76
+ layout?: TFile;
77
+ middleware?: TFile;
78
+ access?: TFile;
79
+ route?: TFile;
80
+ /**
81
+ * params.ts — isomorphic convention file exporting segmentParams and/or searchParams.
82
+ * Discovered by the scanner like middleware.ts and access.ts.
83
+ * See design/07-routing.md §"params.ts Convention File"
84
+ */
85
+ params?: TFile;
86
+ error?: TFile;
87
+ default?: TFile;
49
88
  /** Status-code files: 4xx.tsx, 5xx.tsx, {status}.tsx (component format) */
50
- statusFiles?: Map<string, RouteFile>;
89
+ statusFiles?: Record<string, TFile>;
51
90
  /** JSON status-code files: 4xx.json, 5xx.json, {status}.json */
52
- jsonStatusFiles?: Map<string, RouteFile>;
91
+ jsonStatusFiles?: Record<string, TFile>;
53
92
  /** denied.tsx — slot-only denial rendering */
54
- denied?: RouteFile;
93
+ denied?: TFile;
55
94
  /** Legacy compat: not-found.tsx (maps to 404), forbidden.tsx (403), unauthorized.tsx (401) */
56
- legacyStatusFiles?: Map<string, RouteFile>;
57
- /** prerender.ts — signals build-time pre-rendering for this segment's shell */
58
- prerender?: RouteFile;
59
- /** search-params.ts — typed search params definition for this route */
60
- searchParams?: RouteFile;
95
+ legacyStatusFiles?: Record<string, TFile>;
61
96
  /** Metadata route files (sitemap.ts, robots.ts, icon.tsx, etc.) keyed by base name */
62
- metadataRoutes?: Map<string, RouteFile>;
63
- children: SegmentNode[];
97
+ metadataRoutes?: Record<string, TFile>;
98
+ children: SegmentNode<TFile>[];
64
99
  /** Parallel route slots (keyed by slot name without @) */
65
- slots: Map<string, SegmentNode>;
100
+ slots: Record<string, SegmentNode<TFile>>;
66
101
  }
67
- /** The full route tree output from the scanner */
68
- export interface RouteTree {
102
+ /**
103
+ * The full route tree output from the scanner (or the root of the
104
+ * runtime route manifest, when `TFile = ManifestFile`).
105
+ *
106
+ * Generic so the same wrapper carries app-root metadata for both
107
+ * shapes. The runtime manifest extends this with `viteRoot` (see
108
+ * `ManifestRoot` in `server/route-matcher.ts`).
109
+ */
110
+ export interface RouteTree<TFile = RouteFile> {
69
111
  /** The root segment node (representing app/) */
70
- root: SegmentNode;
112
+ root: SegmentNode<TFile>;
71
113
  /** All discovered proxy.ts files (should be at most one, in app/) */
72
- proxy?: RouteFile;
114
+ proxy?: TFile;
115
+ /**
116
+ * Global error page: app/global-error.{tsx,ts,jsx,js}
117
+ *
118
+ * Rendered as a standalone full-page replacement (no layout wrapping)
119
+ * when no segment-level error file is found. SSR-only render path.
120
+ * Must provide its own <html> and <body>.
121
+ *
122
+ * See design/10-error-handling.md §"Tier 2 — Global Error Page"
123
+ */
124
+ globalError?: TFile;
73
125
  }
74
126
  /** Configuration passed to the scanner */
75
127
  export interface ScannerConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/routing/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kCAAkC;AAClC,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,oBAAoB,GACpB,OAAO,GACP,MAAM,GACN,cAAc,GACd,SAAS,CAAC;AAEd;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAAyC,CAAC;AAE/F,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAGhC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,gEAAgE;IAChE,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC3C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,sFAAsF;IACtF,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAGxC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,0DAA0D;IAC1D,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACjC;AAED,kDAAkD;AAClD,MAAM,WAAW,SAAS;IACxB,gDAAgD;IAChD,IAAI,EAAE,WAAW,CAAC;IAClB,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,UAA6B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/routing/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,kCAAkC;AAClC,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,oBAAoB,GACpB,OAAO,GACP,MAAM,GACN,cAAc,GACd,SAAS,CAAC;AAEd;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAAyC,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,SAAS;IAC5C,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAGhC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpC,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE1C,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAGvC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;CAC3C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS,CAAC,KAAK,GAAG,SAAS;IAC1C,gDAAgD;IAChD,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IACzB,qEAAqE;IACrE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,UAA6B,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Shared route-tree walkers (TIM-848).
3
+ *
4
+ * Tiny helpers that walk a `SegmentNode<TFile>` tree generically. Both the
5
+ * build-time tree (`SegmentNode<RouteFile>`) and the runtime manifest
6
+ * tree (`SegmentNode<ManifestFile>`) flow through these helpers because
7
+ * the walker only reads the structural fields shared by both shapes
8
+ * (`children`, `slots`, `page`, `route`, `urlPath`).
9
+ *
10
+ * Before this module, three near-identical `collectRoutes` functions
11
+ * lived in `plugins/dev-404-page.ts`, `plugins/build-report.ts`, and
12
+ * `routing/codegen.ts`. The codegen one is special-purpose (it
13
+ * accumulates `ParamEntry[]` and resolves codec chains) and stays
14
+ * local; the other two now share `collectLeafRoutes` from this file.
15
+ */
16
+ import type { SegmentNode } from './types.js';
17
+ /** A leaf route discovered while walking the segment tree. */
18
+ export interface LeafRoute<TFile> {
19
+ /** URL path of the leaf (root is "/"). */
20
+ urlPath: string;
21
+ /** Segment chain from root to this leaf, inclusive. */
22
+ segments: SegmentNode<TFile>[];
23
+ /** The page file at this leaf, if any. */
24
+ page?: TFile;
25
+ /** The route handler file at this leaf, if any. */
26
+ route?: TFile;
27
+ }
28
+ /** Options for `collectLeafRoutes`. */
29
+ export interface CollectLeafRoutesOptions {
30
+ /**
31
+ * If true, recurse into parallel slots and emit slot leaves alongside
32
+ * the main route tree. Defaults to `false` because slots render
33
+ * alongside their parent at the same URL and are not separately
34
+ * URL-addressable. The build report excludes slots; route-listing
35
+ * UIs that want to show "all leaves with a page handler" can opt in.
36
+ */
37
+ includeSlots?: boolean;
38
+ }
39
+ /**
40
+ * Walk a segment tree and collect every leaf with a `page` or `route`
41
+ * handler. Generic over `TFile` so it works on both the build-time
42
+ * scanner output and the runtime manifest tree.
43
+ *
44
+ * - Pages and route handlers at the same URL produce two distinct
45
+ * entries (the build report deduplicates by URL afterward).
46
+ * - Parallel slots are skipped unless `includeSlots: true` (slots
47
+ * share their parent's URL and are not addressable on their own).
48
+ * - Result is sorted by `urlPath` for deterministic output.
49
+ */
50
+ export declare function collectLeafRoutes<TFile>(root: SegmentNode<TFile>, options?: CollectLeafRoutesOptions): LeafRoute<TFile>[];
51
+ //# sourceMappingURL=walkers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walkers.d.ts","sourceRoot":"","sources":["../../src/routing/walkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,8DAA8D;AAC9D,MAAM,WAAW,SAAS,CAAC,KAAK;IAC9B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,mDAAmD;IACnD,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,uCAAuC;AACvC,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EACrC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EACxB,OAAO,GAAE,wBAA6B,GACrC,SAAS,CAAC,KAAK,CAAC,EAAE,CAMpB"}
@@ -10,5 +10,5 @@
10
10
  * Keep this as thin pass-through re-exports — the value is the single choke
11
11
  * point, not abstraction.
12
12
  */
13
- export { renderToReadableStream, loadServerAction, decodeReply, decodeAction, } from '@vitejs/plugin-rsc/rsc';
13
+ export { renderToReadableStream, loadServerAction, decodeReply, decodeAction, encryptActionBoundArgs, decryptActionBoundArgs, } from '@vitejs/plugin-rsc/rsc';
14
14
  //# sourceMappingURL=rsc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../src/rsc-runtime/rsc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,YAAY,GACb,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../src/rsc-runtime/rsc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC"}
@@ -10,4 +10,16 @@
10
10
  * point, not abstraction.
11
11
  */
12
12
  export { createFromReadableStream } from '@vitejs/plugin-rsc/ssr';
13
+ /**
14
+ * Decode an RSC Flight stream from a Node.js Readable.
15
+ *
16
+ * Uses the vendored createFromNodeStream which reads via Node.js native
17
+ * streams (C++ libuv) instead of Web ReadableStream (JS Promise per chunk).
18
+ *
19
+ * Returns null if createFromNodeStream isn't available (CF Workers, etc),
20
+ * signaling the caller to use createFromReadableStream instead.
21
+ */
22
+ export declare function createFromNodeStream(stream: import('node:stream').Readable): React.ReactNode | null;
23
+ /** Whether the Node.js stream RSC decode path is available. */
24
+ export declare const hasNodeStreamDecode: boolean;
13
25
  //# sourceMappingURL=ssr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../src/rsc-runtime/ssr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../src/rsc-runtime/ssr.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAiClE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,aAAa,EAAE,QAAQ,GACrC,KAAK,CAAC,SAAS,GAAG,IAAI,CAGxB;AAED,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,SAAiC,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Standard Schema bridge — shared helpers for bridging Standard Schema-compatible
3
+ * validation libraries (Zod, Valibot, ArkType) to the Codec<T> protocol.
4
+ *
5
+ * This module is the single source of truth for:
6
+ * - StandardSchemaV1 interface (subset of the Standard Schema spec)
7
+ * - validateSync() helper
8
+ * - fromSchema() — bridge from Standard Schema to Codec<T>
9
+ * - fromArraySchema() — bridge for array-valued codecs
10
+ *
11
+ * These are re-exported from @timber-js/app/search-params, @timber-js/app/segment-params,
12
+ * and @timber-js/app/cookies for convenience. The canonical import is
13
+ * @timber-js/app/codec.
14
+ *
15
+ * Design doc: design/23a-search-params-triage.md §"Unify Codec<T> type"
16
+ */
17
+ import type { Codec } from './codec.js';
18
+ /** Minimal Standard Schema interface for auto-detection. */
19
+ export interface StandardSchemaV1<Output = unknown> {
20
+ '~standard': {
21
+ validate(value: unknown): StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>;
22
+ };
23
+ }
24
+ export type StandardSchemaResult<Output> = {
25
+ value: Output;
26
+ issues?: undefined;
27
+ } | {
28
+ value?: undefined;
29
+ issues: ReadonlyArray<{
30
+ message: string;
31
+ }>;
32
+ };
33
+ /**
34
+ * Run a Standard Schema's `~standard.validate()` synchronously.
35
+ *
36
+ * Zod v4's signature includes `Promise` in the return union to satisfy the
37
+ * Standard Schema spec, but in practice Zod always validates synchronously
38
+ * for the schema types we use. We assert the result is sync and throw if
39
+ * it isn't — codec parsing must be synchronous.
40
+ */
41
+ export declare function validateSync<Output>(schema: StandardSchemaV1<Output>, value: unknown): StandardSchemaResult<Output>;
42
+ /** Check if a value is a Standard Schema object. */
43
+ export declare function isStandardSchema(value: unknown): value is StandardSchemaV1;
44
+ /** Check if a value is a Codec (has parse + serialize methods). */
45
+ export declare function isCodec(value: unknown): value is Codec<unknown>;
46
+ /**
47
+ * Bridge a Standard Schema-compatible schema (Zod, Valibot, ArkType) to a
48
+ * Codec<T>.
49
+ *
50
+ * Parse: coerces the raw string through the schema. On validation failure,
51
+ * parses `undefined` to get the schema's default value (the schema should have
52
+ * a `.default()` call). If that also fails, returns `undefined`.
53
+ *
54
+ * Serialize: uses `String()` for primitives, `null` for null/undefined.
55
+ *
56
+ * ```ts
57
+ * import { fromSchema } from '@timber-js/app/codec'
58
+ * import { z } from 'zod/v4'
59
+ *
60
+ * const pageCodec = fromSchema(z.coerce.number().int().min(1).default(1))
61
+ * ```
62
+ */
63
+ export declare function fromSchema<T>(schema: StandardSchemaV1<T>): Codec<T>;
64
+ /**
65
+ * Bridge a Standard Schema for array values. Handles both single strings
66
+ * and repeated query keys (`?tag=a&tag=b`).
67
+ *
68
+ * ```ts
69
+ * import { fromArraySchema } from '@timber-js/app/codec'
70
+ * import { z } from 'zod/v4'
71
+ *
72
+ * const tagsCodec = fromArraySchema(z.array(z.string()).default([]))
73
+ * ```
74
+ */
75
+ export declare function fromArraySchema<T>(schema: StandardSchemaV1<T>): Codec<T>;
76
+ //# sourceMappingURL=schema-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-bridge.d.ts","sourceRoot":"","sources":["../src/schema-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAUxC,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB,CAAC,MAAM,GAAG,OAAO;IAChD,WAAW,EAAE;QACX,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;KAChG,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,CAAC,MAAM,IACnC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,GACrC;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AAMtE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EACjC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAChC,KAAK,EAAE,OAAO,GACb,oBAAoB,CAAC,MAAM,CAAC,CAQ9B;AAMD,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAO1E;AAED,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAO/D;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CA6BnE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAmCxE"}