@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
@@ -0,0 +1,157 @@
1
+ /**
2
+ * defineSearchParams — factory for SearchParamsDefinition<T>.
3
+ *
4
+ * Creates a typed, composable definition for a route's search parameters.
5
+ * Accepts both SearchParamCodec values and Standard Schema objects (Zod,
6
+ * Valibot, ArkType) with auto-detection. Supports URL key aliasing via
7
+ * withUrlKey(), default-omission serialization, and composition via
8
+ * .extend() / .pick().
9
+ *
10
+ * Design doc: design/23-search-params.md §"defineSearchParams — The Factory"
11
+ */
12
+ import type { StandardSchemaV1 } from '../schema-bridge.js';
13
+ import type { Codec } from '../codec.js';
14
+ /**
15
+ * Register the getSearchParams function. Called once at module load time
16
+ * from request-context.ts to avoid dynamic import at call time.
17
+ * @internal
18
+ */
19
+ export declare function _setGetSearchParamsFn(fn: () => URLSearchParams): void;
20
+ /**
21
+ * A codec that converts between URL string values and typed values.
22
+ *
23
+ * nuqs parsers implement this interface natively — no adapter needed.
24
+ * Standard Schema objects (Zod, Valibot, ArkType) are auto-detected
25
+ * by defineSearchParams and wrapped via fromSchema.
26
+ */
27
+ export interface SearchParamCodec<T> extends Codec<T> {
28
+ /** Optional URL key alias, set by withUrlKey(). */
29
+ urlKey?: string;
30
+ }
31
+ /** A codec with a URL key alias attached via withUrlKey(). */
32
+ export interface SearchParamCodecWithUrlKey<T> extends SearchParamCodec<T> {
33
+ urlKey: string;
34
+ }
35
+ /** Infer the output type of a codec. */
36
+ export type InferCodec<C> = C extends SearchParamCodec<infer T> ? T : never;
37
+ /** Map of property names to codecs. */
38
+ export type CodecMap<T extends Record<string, unknown>> = {
39
+ [K in keyof T]: SearchParamCodec<T[K]>;
40
+ };
41
+ /** Options for useQueryStates setter. */
42
+ export interface SetParamsOptions {
43
+ /** Update URL without server roundtrip (default: false). */
44
+ shallow?: boolean;
45
+ /** Scroll to top after update (default: true). */
46
+ scroll?: boolean;
47
+ /** 'push' (default) or 'replace' for history state. */
48
+ history?: 'push' | 'replace';
49
+ }
50
+ /** Setter function returned by useQueryStates. */
51
+ export type SetParams<T> = (values: Partial<T>, options?: SetParamsOptions) => void;
52
+ /** Options for useQueryStates hook. */
53
+ export interface QueryStatesOptions {
54
+ /** Update URL without server roundtrip (default: false). */
55
+ shallow?: boolean;
56
+ /** Scroll to top after update (default: true). */
57
+ scroll?: boolean;
58
+ /** 'push' (default) or 'replace' for history state. */
59
+ history?: 'push' | 'replace';
60
+ }
61
+ /**
62
+ * A fully typed, composable search params definition.
63
+ *
64
+ * Returned by defineSearchParams(). Carries a phantom _type property
65
+ * for build-time type extraction.
66
+ */
67
+ export interface SearchParamsDefinition<T extends Record<string, unknown>> {
68
+ /** Parse raw URL search params into typed values. */
69
+ parse(raw: URLSearchParams | Record<string, string | string[] | undefined>): T;
70
+ /** Parse a Promise of URLSearchParams (e.g., from the ALS `searchParams()` API). */
71
+ parse(raw: Promise<URLSearchParams | Record<string, string | string[] | undefined>>): Promise<T>;
72
+ /**
73
+ * Get typed search params from the current request context (ALS-backed).
74
+ *
75
+ * Server-only, sync. Reads getSearchParams() from ALS and parses through codecs.
76
+ * Throws on client.
77
+ *
78
+ * ```tsx
79
+ * // app/products/page.tsx
80
+ * import { searchParams } from './params'
81
+ * export default function Page() {
82
+ * const { page, category } = searchParams.get()
83
+ * }
84
+ * ```
85
+ */
86
+ get(): T;
87
+ /** Client hook — reads current URL params and returns typed values + setter. */
88
+ useQueryStates(options?: QueryStatesOptions): [T, SetParams<T>];
89
+ /** Extend with additional codecs or Standard Schema objects. */
90
+ extend<U extends Record<string, SearchParamCodec<unknown> | StandardSchemaV1<unknown>>>(codecs: U): SearchParamsDefinition<T & {
91
+ [K in keyof U]: InferField<U[K]>;
92
+ }>;
93
+ /** Pick a subset of keys. Preserves codecs and aliases. */
94
+ pick<K extends keyof T & string>(...keys: K[]): SearchParamsDefinition<Pick<T, K>>;
95
+ /** Serialize values to a query string (no leading '?'), omitting defaults. */
96
+ serialize(values: Partial<T>): string;
97
+ /** Build a full path with query string, omitting defaults. */
98
+ href(pathname: string, values: Partial<T>): string;
99
+ /** Build a URLSearchParams instance, omitting defaults. */
100
+ toSearchParams(values: Partial<T>): URLSearchParams;
101
+ /** Read-only codec map for spreading into .extend(). */
102
+ codecs: {
103
+ [K in keyof T]: SearchParamCodec<T[K]>;
104
+ };
105
+ /** Read-only URL key alias map. Maps property names to URL query parameter keys. */
106
+ readonly urlKeys: Readonly<Record<string, string>>;
107
+ /**
108
+ * Phantom property for build-time type extraction.
109
+ * Never set at runtime — exists only in the type system.
110
+ */
111
+ readonly _type?: T;
112
+ }
113
+ export type { StandardSchemaV1 } from '../schema-bridge.js';
114
+ /** Infer the output type from either a SearchParamCodec or a StandardSchemaV1. */
115
+ export type InferField<V> = V extends SearchParamCodec<infer T> ? T : V extends StandardSchemaV1<infer T> ? T : never;
116
+ /** Acceptable field value for defineSearchParams: a codec or a Standard Schema. */
117
+ export type SearchParamField<T = unknown> = SearchParamCodec<T> | StandardSchemaV1<T>;
118
+ /**
119
+ * Create a SearchParamsDefinition from a map of codecs and/or Standard Schema
120
+ * objects. Accepts both SearchParamCodec values and raw Zod/Valibot/ArkType
121
+ * schemas with auto-detection.
122
+ *
123
+ * ```ts
124
+ * import { defineSearchParams, withDefault, withUrlKey } from '@timber-js/app/search-params'
125
+ * import { parseAsString, parseAsStringEnum } from 'nuqs'
126
+ * import { z } from 'zod/v4'
127
+ *
128
+ * export const searchParams = defineSearchParams({
129
+ * page: z.coerce.number().int().min(1).default(1), // Standard Schema — auto-wrapped
130
+ * q: withUrlKey(parseAsString, 'search'), // nuqs codec with URL alias
131
+ * sort: withDefault(parseAsStringEnum(['price', 'name']), 'price'),
132
+ * })
133
+ * ```
134
+ */
135
+ /**
136
+ * Overload: accept a Standard Schema object schema (e.g., z.object({...})).
137
+ *
138
+ * The schema must have a `.shape` property whose values are themselves
139
+ * Standard Schema objects. Each shape property becomes a field codec
140
+ * via fromSchema().
141
+ *
142
+ * ```ts
143
+ * const searchParams = defineSearchParams(
144
+ * z.object({ page: z.coerce.number().default(1), q: z.string().optional() })
145
+ * )
146
+ * ```
147
+ */
148
+ export declare function defineSearchParams<T extends Record<string, unknown>>(schema: StandardSchemaV1<T> & {
149
+ shape: Record<string, StandardSchemaV1<unknown>>;
150
+ }): SearchParamsDefinition<T>;
151
+ /**
152
+ * Overload: accept a map of codecs and/or Standard Schema objects.
153
+ */
154
+ export declare function defineSearchParams<C extends Record<string, SearchParamField>>(codecs: C): SearchParamsDefinition<{
155
+ [K in keyof C]: InferField<C[K]>;
156
+ }>;
157
+ //# sourceMappingURL=define.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/search-params/define.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,5 @@
1
- export type { SearchParamCodec, InferCodec, SearchParamsDefinition, SetParams, SetParamsOptions, QueryStatesOptions, SearchParamsOptions, } from './create.js';
2
- export { createSearchParams } from './create.js';
3
- export { fromSchema, fromArraySchema } from './codecs.js';
4
- export { parseAsString, parseAsInteger, parseAsFloat, parseAsBoolean, parseAsStringEnum, parseAsStringLiteral, withDefault, } from './builtin-codecs.js';
5
- export { registerSearchParams, getSearchParams } from './registry.js';
6
- export type { AnalyzeResult, AnalyzeError } from './analyze.js';
7
- export { analyzeSearchParams, formatAnalyzeError } from './analyze.js';
1
+ export type { SearchParamCodec, SearchParamCodecWithUrlKey, InferCodec, InferField, CodecMap, SearchParamsDefinition, SetParams, SetParamsOptions, QueryStatesOptions, StandardSchemaV1, } from './define.js';
2
+ export { defineSearchParams } from './define.js';
3
+ export { withDefault, withUrlKey } from './wrappers.js';
4
+ export { registerSearchParams, getSearchParamsDefinition } from './registry.js';
8
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search-params/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,sBAAsB,EACtB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGtE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search-params/index.ts"],"names":[],"mappings":"AAMA,YAAY,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,UAAU,EACV,UAAU,EACV,QAAQ,EACR,sBAAsB,EACtB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,359 +1,16 @@
1
- import { i as registerSearchParams, n as useQueryStates, r as getSearchParams } from "../_chunks/use-query-states-D5KaffOK.js";
2
- //#region src/search-params/create.ts
3
- /**
4
- * createSearchParams — factory for SearchParamsDefinition<T>.
5
- *
6
- * Creates a typed, composable definition for a route's search parameters.
7
- * Supports codec protocol, URL key aliasing, default-omission serialization,
8
- * and composition via .extend() / .pick().
9
- *
10
- * Design doc: design/09-typescript.md §"Typed searchParams — search-params.ts"
11
- */
12
- /**
13
- * Convert URLSearchParams or a plain record to a normalized record
14
- * where repeated keys produce arrays.
15
- */
16
- function normalizeRaw(raw) {
17
- if (raw instanceof URLSearchParams) {
18
- const result = {};
19
- for (const key of new Set(raw.keys())) {
20
- const values = raw.getAll(key);
21
- result[key] = values.length === 1 ? values[0] : values;
22
- }
23
- return result;
24
- }
25
- return raw;
26
- }
27
- /**
28
- * Compute the serialized default value for a codec. Used for
29
- * default-omission: when serialize(value) === serialize(parse(undefined)),
30
- * the field is omitted from the URL.
31
- */
32
- function getDefaultSerialized(codec) {
33
- return codec.serialize(codec.parse(void 0));
34
- }
35
- /**
36
- * Create a SearchParamsDefinition from a codec map and optional URL key aliases.
37
- *
38
- * ```ts
39
- * import { createSearchParams, fromSchema } from '@timber-js/app/search-params'
40
- * import { z } from 'zod/v4'
41
- *
42
- * export default createSearchParams({
43
- * page: fromSchema(z.coerce.number().int().min(1).default(1)),
44
- * q: { parse: (v) => v ?? null, serialize: (v) => v },
45
- * }, {
46
- * urlKeys: { q: 'search' },
47
- * })
48
- * ```
49
- */
50
- function createSearchParams(codecs, options) {
51
- const urlKeys = {};
52
- if (options?.urlKeys) {
53
- for (const [k, v] of Object.entries(options.urlKeys)) if (v !== void 0) urlKeys[k] = v;
54
- }
55
- return buildDefinition(codecs, urlKeys);
56
- }
57
- /**
58
- * Internal: build a SearchParamsDefinition from a typed codec map and url keys.
59
- */
60
- function buildDefinition(codecMap, urlKeys) {
61
- const defaultSerialized = {};
62
- for (const key of Object.keys(codecMap)) defaultSerialized[key] = getDefaultSerialized(codecMap[key]);
63
- function getUrlKey(prop) {
64
- return urlKeys[prop] ?? prop;
65
- }
66
- function parse(raw) {
67
- const normalized = normalizeRaw(raw);
68
- const result = {};
69
- for (const prop of Object.keys(codecMap)) {
70
- const rawValue = normalized[getUrlKey(prop)];
71
- result[prop] = codecMap[prop].parse(rawValue);
72
- }
73
- return result;
74
- }
75
- function serialize(values) {
76
- const parts = [];
77
- for (const prop of Object.keys(codecMap)) {
78
- if (!(prop in values)) continue;
79
- const serialized = codecMap[prop].serialize(values[prop]);
80
- if (serialized === defaultSerialized[prop]) continue;
81
- if (serialized === null) continue;
82
- parts.push(`${encodeURIComponent(getUrlKey(prop))}=${encodeURIComponent(serialized)}`);
83
- }
84
- return parts.join("&");
85
- }
86
- function href(pathname, values) {
87
- const qs = serialize(values);
88
- return qs ? `${pathname}?${qs}` : pathname;
89
- }
90
- function toSearchParams(values) {
91
- const usp = new URLSearchParams();
92
- for (const prop of Object.keys(codecMap)) {
93
- if (!(prop in values)) continue;
94
- const serialized = codecMap[prop].serialize(values[prop]);
95
- if (serialized === defaultSerialized[prop]) continue;
96
- if (serialized === null) continue;
97
- usp.set(getUrlKey(prop), serialized);
98
- }
99
- return usp;
100
- }
101
- function extend(newCodecs, extendOptions) {
102
- const combinedCodecs = {
103
- ...codecMap,
104
- ...newCodecs
105
- };
106
- const combinedUrlKeys = { ...urlKeys };
107
- if (extendOptions?.urlKeys) {
108
- for (const [k, v] of Object.entries(extendOptions.urlKeys)) if (v !== void 0) combinedUrlKeys[k] = v;
109
- }
110
- return buildDefinition(combinedCodecs, combinedUrlKeys);
111
- }
112
- function pick(...keys) {
113
- const pickedCodecs = {};
114
- const pickedUrlKeys = {};
115
- for (const key of keys) {
116
- pickedCodecs[key] = codecMap[key];
117
- if (key in urlKeys) pickedUrlKeys[key] = urlKeys[key];
118
- }
119
- return buildDefinition(pickedCodecs, pickedUrlKeys);
120
- }
121
- function useQueryStates$1(options) {
122
- return useQueryStates(codecMap, options, Object.freeze({ ...urlKeys }));
123
- }
124
- return {
125
- parse,
126
- useQueryStates: useQueryStates$1,
127
- extend,
128
- pick,
129
- serialize,
130
- href,
131
- toSearchParams,
132
- codecs: codecMap,
133
- urlKeys: Object.freeze({ ...urlKeys })
134
- };
135
- }
136
- //#endregion
137
- //#region src/search-params/codecs.ts
138
- /**
139
- * Zod v4's ~standard.validate() signature includes Promise in the return union
140
- * to satisfy the Standard Schema spec, but in practice Zod always validates
141
- * synchronously for the schema types we use. We assert the result is sync and
142
- * throw if it isn't — search params parsing must be synchronous.
143
- */
144
- function validateSync(schema, value) {
145
- const result = schema["~standard"].validate(value);
146
- if (result instanceof Promise) throw new Error("[timber] fromSchema: schema returned a Promise — only sync schemas are supported for search params.");
147
- return result;
148
- }
149
- /**
150
- * Bridge a Standard Schema-compatible schema (Zod, Valibot, ArkType) to a
151
- * SearchParamCodec.
152
- *
153
- * Parse: coerces the raw URL string through the schema. On validation failure,
154
- * parses `undefined` to get the schema's default value (the schema should have
155
- * a `.default()` call). If that also fails, returns `undefined`.
156
- *
157
- * Serialize: uses `String()` for primitives, `null` for null/undefined.
158
- *
159
- * ```ts
160
- * import { fromSchema } from '@timber-js/app/search-params'
161
- * import { z } from 'zod/v4'
162
- *
163
- * const pageCodec = fromSchema(z.coerce.number().int().min(1).default(1))
164
- * ```
165
- */
166
- function fromSchema(schema) {
167
- return {
168
- parse(value) {
169
- const result = validateSync(schema, Array.isArray(value) ? value[value.length - 1] : value);
170
- if (!result.issues) return result.value;
171
- const defaultResult = validateSync(schema, void 0);
172
- if (!defaultResult.issues) return defaultResult.value;
173
- },
174
- serialize(value) {
175
- if (value === null || value === void 0) return null;
176
- return String(value);
177
- }
178
- };
179
- }
180
- /**
181
- * Bridge a Standard Schema for array values. Handles both single strings
182
- * and repeated query keys (`?tag=a&tag=b`).
183
- *
184
- * ```ts
185
- * import { fromArraySchema } from '@timber-js/app/search-params'
186
- * import { z } from 'zod/v4'
187
- *
188
- * const tagsCodec = fromArraySchema(z.array(z.string()).default([]))
189
- * ```
190
- */
191
- function fromArraySchema(schema) {
192
- return {
193
- parse(value) {
194
- let input = value;
195
- if (typeof value === "string") input = [value];
196
- else if (value === void 0) input = void 0;
197
- const result = validateSync(schema, input);
198
- if (!result.issues) return result.value;
199
- const defaultResult = validateSync(schema, void 0);
200
- if (!defaultResult.issues) return defaultResult.value;
201
- },
202
- serialize(value) {
203
- if (value === null || value === void 0) return null;
204
- if (Array.isArray(value)) return value.length === 0 ? null : value.join(",");
205
- return String(value);
206
- }
207
- };
208
- }
209
- //#endregion
210
- //#region src/search-params/builtin-codecs.ts
211
- /**
212
- * Normalize array inputs to a single string (last value wins, matching
213
- * URLSearchParams.get() semantics). Returns undefined if absent or empty.
214
- */
215
- function normalizeInput(value) {
216
- if (Array.isArray(value)) return value.length > 0 ? value[value.length - 1] : void 0;
217
- return value;
218
- }
219
- /**
220
- * String codec. Returns the raw string value, or null if absent.
221
- *
222
- * ```ts
223
- * import { parseAsString } from '@timber-js/app/search-params'
224
- *
225
- * const def = createSearchParams({ q: parseAsString })
226
- * // ?q=shoes → { q: 'shoes' }
227
- * // (absent) → { q: null }
228
- * ```
229
- */
230
- var parseAsString = {
231
- parse(value) {
232
- const v = normalizeInput(value);
233
- return v !== void 0 ? v : null;
234
- },
235
- serialize(value) {
236
- return value;
237
- }
238
- };
239
- /**
240
- * Integer codec. Parses a base-10 integer, or returns null if absent or
241
- * not a valid integer. Rejects floats, NaN, Infinity, and non-numeric strings.
242
- *
243
- * ```ts
244
- * import { parseAsInteger, withDefault } from '@timber-js/app/search-params'
245
- *
246
- * const def = createSearchParams({ page: withDefault(parseAsInteger, 1) })
247
- * // ?page=2 → { page: 2 }
248
- * // ?page=abc → { page: 1 }
249
- * // (absent) → { page: 1 }
250
- * ```
251
- */
252
- var parseAsInteger = {
253
- parse(value) {
254
- const v = normalizeInput(value);
255
- if (v === void 0 || v === "") return null;
256
- const n = Number(v);
257
- if (!Number.isFinite(n) || !Number.isInteger(n)) return null;
258
- return n;
259
- },
260
- serialize(value) {
261
- return value === null ? null : String(value);
262
- }
263
- };
264
- /**
265
- * Float codec. Parses a finite number, or returns null if absent or invalid.
266
- * Rejects NaN and Infinity.
267
- *
268
- * ```ts
269
- * import { parseAsFloat, withDefault } from '@timber-js/app/search-params'
270
- *
271
- * const def = createSearchParams({ price: withDefault(parseAsFloat, 0) })
272
- * ```
273
- */
274
- var parseAsFloat = {
275
- parse(value) {
276
- const v = normalizeInput(value);
277
- if (v === void 0 || v === "") return null;
278
- const n = Number(v);
279
- if (!Number.isFinite(n)) return null;
280
- return n;
281
- },
282
- serialize(value) {
283
- return value === null ? null : String(value);
284
- }
285
- };
286
- /**
287
- * Boolean codec. Accepts "true"/"1" as true, "false"/"0" as false.
288
- * Returns null for absent or unrecognized values.
289
- *
290
- * ```ts
291
- * import { parseAsBoolean, withDefault } from '@timber-js/app/search-params'
292
- *
293
- * const def = createSearchParams({ debug: withDefault(parseAsBoolean, false) })
294
- * // ?debug=true → { debug: true }
295
- * // ?debug=0 → { debug: false }
296
- * ```
297
- */
298
- var parseAsBoolean = {
299
- parse(value) {
300
- const v = normalizeInput(value);
301
- if (v === void 0) return null;
302
- if (v === "true" || v === "1") return true;
303
- if (v === "false" || v === "0") return false;
304
- return null;
305
- },
306
- serialize(value) {
307
- return value === null ? null : String(value);
308
- }
309
- };
310
- /**
311
- * String enum codec. Accepts only values in the provided list.
312
- * Returns null for absent or invalid values.
313
- *
314
- * ```ts
315
- * import { parseAsStringEnum, withDefault } from '@timber-js/app/search-params'
316
- *
317
- * const sortCodec = withDefault(
318
- * parseAsStringEnum(['price', 'name', 'date']),
319
- * 'date'
320
- * )
321
- * ```
322
- */
323
- function parseAsStringEnum(values) {
324
- const allowed = new Set(values);
325
- return {
326
- parse(value) {
327
- const v = normalizeInput(value);
328
- if (v === void 0) return null;
329
- return allowed.has(v) ? v : null;
330
- },
331
- serialize(value) {
332
- return value;
333
- }
334
- };
335
- }
336
- /**
337
- * String literal codec. Functionally identical to parseAsStringEnum but
338
- * accepts `as const` tuples for narrower type inference.
339
- *
340
- * ```ts
341
- * import { parseAsStringLiteral } from '@timber-js/app/search-params'
342
- *
343
- * const sizes = ['sm', 'md', 'lg', 'xl'] as const
344
- * const codec = parseAsStringLiteral(sizes)
345
- * // Type: SearchParamCodec<'sm' | 'md' | 'lg' | 'xl' | null>
346
- * ```
347
- */
348
- function parseAsStringLiteral(values) {
349
- return parseAsStringEnum(values);
350
- }
1
+ import { n as registerSearchParams, t as getSearchParamsDefinition } from "../_chunks/registry-I2ss-lvy.js";
2
+ import { i as isStandardSchema, n as fromSchema, r as isCodec } from "../_chunks/schema-bridge-Cxu4l-7p.js";
3
+ import { n as defineSearchParams } from "../_chunks/define-B-Q_UMOD.js";
4
+ //#region src/search-params/wrappers.ts
351
5
  /**
352
6
  * Wrap a nullable codec with a default value. When the inner codec returns
353
7
  * null, the default is used instead. The output type becomes non-nullable.
354
8
  *
9
+ * Works with any codec — nuqs parsers, custom codecs, fromSchema results.
10
+ *
355
11
  * ```ts
356
- * import { parseAsInteger, withDefault } from '@timber-js/app/search-params'
12
+ * import { parseAsInteger } from 'nuqs'
13
+ * import { withDefault } from '@timber-js/app/search-params'
357
14
  *
358
15
  * const page = withDefault(parseAsInteger, 1)
359
16
  * // page.parse(undefined) → 1 (not null)
@@ -371,104 +28,40 @@ function withDefault(codec, defaultValue) {
371
28
  }
372
29
  };
373
30
  }
374
- //#endregion
375
- //#region src/search-params/analyze.ts
376
31
  /**
377
- * Patterns that indicate a valid default export:
32
+ * Attach a URL key alias to a codec. The alias determines what query
33
+ * parameter key is used in the URL, while the TypeScript property name
34
+ * stays descriptive.
378
35
  *
379
- * 1. `export default createSearchParams(...)`
380
- * 2. `export default someVar.extend(...)`
381
- * 3. `export default someVar.pick(...)`
382
- * 4. `export default someVar.extend(...).extend(...)` (chained)
383
- * 5. `export default someVar.extend(...).pick(...)` (chained)
384
- * 6. `export default createSearchParams(...).extend(...)`
36
+ * Aliases travel with codecs through object spread composition — when
37
+ * you spread a bundle containing aliased codecs into defineSearchParams,
38
+ * the aliases come along automatically.
385
39
  *
386
- * Invalid patterns:
387
- * - `export default someFunction(...)` (arbitrary factory)
388
- * - `export default condition ? a : b` (runtime conditional)
389
- * - `export default variable` (opaque reference without call)
390
- */
391
- /**
392
- * Analyze a search-params.ts file source for static analyzability.
40
+ * ```ts
41
+ * import { parseAsString } from 'nuqs'
42
+ * import { withUrlKey } from '@timber-js/app/search-params'
43
+ *
44
+ * export const searchable = {
45
+ * q: withUrlKey(parseAsString, 'search'),
46
+ * // ?search=shoes → { q: 'shoes' }
47
+ * }
48
+ * ```
393
49
  *
394
- * @param source - The file content as a string
395
- * @param filePath - Absolute path to the file (for diagnostics)
50
+ * Composes with withDefault:
51
+ * ```ts
52
+ * import { parseAsInteger } from 'nuqs'
53
+ * withUrlKey(withDefault(parseAsInteger, 1), 'p')
54
+ * ```
396
55
  */
397
- function analyzeSearchParams(source, filePath) {
398
- const defaultExport = extractDefaultExport(stripComments(source));
399
- if (!defaultExport) return {
400
- valid: false,
401
- error: {
402
- filePath,
403
- expression: "(no default export found)",
404
- suggestion: "search-params.ts must have a default export. Use: export default createSearchParams({ ... })"
405
- }
406
- };
407
- if (isValidExpression(defaultExport.trim())) return { valid: true };
56
+ function withUrlKey(codecOrSchema, urlKey) {
57
+ const codec = isCodec(codecOrSchema) ? codecOrSchema : isStandardSchema(codecOrSchema) ? fromSchema(codecOrSchema) : codecOrSchema;
408
58
  return {
409
- valid: false,
410
- error: {
411
- filePath,
412
- expression: defaultExport.trim(),
413
- suggestion: "The default export must be a createSearchParams() call, or a chain of .extend() / .pick() calls on a SearchParamsDefinition. Arbitrary factory functions and runtime conditionals are not supported."
414
- }
59
+ parse: codec.parse.bind(codec),
60
+ serialize: codec.serialize.bind(codec),
61
+ urlKey
415
62
  };
416
63
  }
417
- /** Strip single-line and multi-line comments from source. */
418
- function stripComments(source) {
419
- let result = source.replace(/\/\*[\s\S]*?\*\//g, "");
420
- result = result.replace(/\/\/.*$/gm, "");
421
- return result;
422
- }
423
- /**
424
- * Extract the expression from `export default <expr>`.
425
- *
426
- * Handles both:
427
- * export default createSearchParams(...)
428
- * export default expr\n (terminated by newline or semicolon before next statement)
429
- */
430
- function extractDefaultExport(source) {
431
- const match = source.match(/export\s+default\s+([\s\S]+?)(?:;|\n(?=export|import|const|let|var|function|class|type|interface|declare))/);
432
- if (match) return match[1];
433
- const fallback = source.match(/export\s+default\s+([\s\S]+)$/);
434
- if (fallback) return fallback[1].replace(/;\s*$/, "");
435
- }
436
- /**
437
- * Check if an expression is a valid statically-analyzable pattern.
438
- *
439
- * Valid patterns:
440
- * - Starts with `createSearchParams(`
441
- * - Contains `.extend(` or `.pick(` chains (possibly starting with createSearchParams or a variable)
442
- * - A variable identifier followed by chaining
443
- */
444
- function isValidExpression(expr) {
445
- const normalized = expr.replace(/\s+/g, " ").trim();
446
- if (normalized.startsWith("createSearchParams(")) return true;
447
- if (/\.(extend|pick)\s*\(/.test(normalized)) {
448
- if (/\?/.test(normalized) && /:/.test(normalized)) return false;
449
- if (/^\s*(function|=>|\()/.test(normalized)) return false;
450
- return true;
451
- }
452
- return false;
453
- }
454
- /**
455
- * Format an AnalyzeError into a human-readable build error message.
456
- */
457
- function formatAnalyzeError(error) {
458
- return [
459
- `[timber] Non-analyzable search-params.ts`,
460
- ``,
461
- ` File: ${error.filePath}`,
462
- ` Expression: ${error.expression}`,
463
- ``,
464
- ` ${error.suggestion}`,
465
- ``,
466
- ` The framework must be able to statically extract the type from your`,
467
- ` search-params.ts at build time. Dynamic values, conditionals, and`,
468
- ` arbitrary factory functions prevent this analysis.`
469
- ].join("\n");
470
- }
471
64
  //#endregion
472
- export { analyzeSearchParams, createSearchParams, formatAnalyzeError, fromArraySchema, fromSchema, getSearchParams, parseAsBoolean, parseAsFloat, parseAsInteger, parseAsString, parseAsStringEnum, parseAsStringLiteral, registerSearchParams, withDefault };
65
+ export { defineSearchParams, getSearchParamsDefinition, registerSearchParams, withDefault, withUrlKey };
473
66
 
474
67
  //# sourceMappingURL=index.js.map