void 0.20.3 → 0.21.0

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 (294) hide show
  1. package/README.md +2 -2
  2. package/dist/agents-gni4eqBu.mjs +111 -0
  3. package/dist/auth-3sGB0zJ1.mjs +22 -0
  4. package/dist/{auth-DPl6kck4.mjs → auth-B9_D6ygs.mjs} +6 -241
  5. package/dist/auth-CAw7zHqj.mjs +2 -0
  6. package/dist/auth-client-BWBT8HLp.mjs +6 -0
  7. package/dist/auth-client-Bawdj38n.d.mts +7 -0
  8. package/dist/auth-client-react-7GFffu8R.d.mts +7 -0
  9. package/dist/auth-client-react-CMLwT2xI.mjs +6 -0
  10. package/dist/auth-client-solid-DyTFL4cq.d.mts +7 -0
  11. package/dist/auth-client-solid-UoreJWZG.mjs +6 -0
  12. package/dist/auth-client-svelte-Cv_WvrRk.mjs +6 -0
  13. package/dist/auth-client-svelte-zetW0KIH.d.mts +7 -0
  14. package/dist/auth-client-vue-CFk7Xbv3.mjs +6 -0
  15. package/dist/auth-client-vue-bChShbQP.d.mts +7 -0
  16. package/dist/{auth-cmd-CzwquNiP.mjs → auth-cmd-MkBG2u1f.mjs} +5 -5
  17. package/dist/{auth-link-ElDTgF7j.mjs → auth-link-Devmv96E.mjs} +5 -5
  18. package/dist/{better-auth-shared-DSCeohOK.d.mts → better-auth-shared-BoVwA5Vm.d.mts} +1 -6
  19. package/dist/{better-auth-shared-CYw1T3k4.mjs → better-auth-shared-syGYYmnY.mjs} +1 -1
  20. package/dist/{build-cmd-BpJe6boP.mjs → build-cmd-DsBGwtfs.mjs} +6 -4
  21. package/dist/{cache-D98YTqeE.mjs → cache-BMw8eMyF.mjs} +6 -4
  22. package/dist/{cancel-deploy-CPbEQLMG.mjs → cancel-deploy-B3_s9NIN.mjs} +5 -3
  23. package/dist/cf-access-rAZxzMkL.mjs +181 -0
  24. package/dist/cf-build-output-CTdlo6Rt.mjs +520 -0
  25. package/dist/cli/cf-compat.d.mts +1 -0
  26. package/dist/cli/cf-compat.mjs +934 -0
  27. package/dist/cli/cli.mjs +60 -38
  28. package/dist/cli/env-schema-probe.mjs +3 -3
  29. package/dist/client-DAAivdid.mjs +2 -0
  30. package/dist/{client-BQBrZoCX.mjs → client-PdAJ-F0t.mjs} +6 -12
  31. package/dist/{cloudflare-auth-6M5llVPC.mjs → cloudflare-auth-BCmTc1X_.mjs} +13 -44
  32. package/dist/{cloudflare-cmd-4RPGN3KB.mjs → cloudflare-cmd-D6PrKn7o.mjs} +4 -7
  33. package/dist/{cloudflare-connect-t1UU5svD.mjs → cloudflare-connect-DloREDlc.mjs} +6 -6
  34. package/dist/cloudflare-operations-BHNJVDbN.mjs +2 -0
  35. package/dist/{cloudflare-operations-BzWnlC1_.mjs → cloudflare-operations-CPEdHYhM.mjs} +37 -39
  36. package/dist/cloudflare-user-output-Q-k0QoNQ.mjs +20 -0
  37. package/dist/collect-DAUItMDS.mjs +2 -0
  38. package/dist/collect-DXHNWHcT.mjs +48 -0
  39. package/dist/config--T87TD8T.mjs +2 -0
  40. package/dist/{config-NOG_U1aK.mjs → config-BSe70f4T.mjs} +4 -6
  41. package/dist/config-DDIFxQYx.mjs +2 -0
  42. package/dist/{config-uNGuFsI2.mjs → config-Dxr6cTXn.mjs} +22 -37
  43. package/dist/config-DywxBLQC.d.mts +185 -0
  44. package/dist/config-entry.d.mts +6 -0
  45. package/dist/config-entry.mjs +7 -0
  46. package/dist/config-uP7ZDtVZ.mjs +21 -0
  47. package/dist/config-write-y3CBI_ux.mjs +60 -0
  48. package/dist/{connect-WCQZ_u3m.mjs → connect-BvC9kolB.mjs} +8 -6
  49. package/dist/{create-project-D0oXA090.mjs → create-project-C9lQhRzj.mjs} +8 -23
  50. package/dist/create-project-CI-17RVJ.mjs +2 -0
  51. package/dist/database-provider-Cx525bwX.mjs +6 -0
  52. package/dist/database-provider.mjs +1 -5
  53. package/dist/{db-DJ-9qs3S.mjs → db-R7IQgOv5.mjs} +48 -44
  54. package/dist/{delete-BZ4-WaGm.mjs → delete-CghI_NXn.mjs} +6 -4
  55. package/dist/deploy-CYPymbtG.mjs +2 -0
  56. package/dist/{deploy-BAhhcg5q.mjs → deploy-H968Lo4T.mjs} +751 -190
  57. package/dist/discover-BBzDZe_o.mjs +2 -0
  58. package/dist/{discover-xvfrgJeo.mjs → discover-C4O6YxVS.mjs} +3 -8
  59. package/dist/{dist-BrsS7cai.mjs → dist-4WkAWhWx.mjs} +1 -15
  60. package/dist/{dist-m40_XgNh.mjs → dist-Bn8Kodjp.mjs} +1 -1
  61. package/dist/dist-C5fND3R0.mjs +2 -0
  62. package/dist/dist-D7-nEOXi.mjs +2 -0
  63. package/dist/{output-B0cfNSx5.mjs → dist-Dn6nn2IU.mjs} +3 -926
  64. package/dist/{domain-BxAyhxXN.mjs → domain-CITt8lC-.mjs} +7 -5
  65. package/dist/{route-types-Da-DpyUp.mjs → drizzle-Beb2Am5S.mjs} +1 -280
  66. package/dist/{email-Ce6SQq-i.mjs → email-C5kaZXzJ.mjs} +2 -2
  67. package/dist/{email-Bj7Cvdwp.mjs → email-_8VmyX7V.mjs} +14 -12
  68. package/dist/{entry-DU3oDoQ3.mjs → entry-DdRFGK0y.mjs} +2 -2
  69. package/dist/{env-DP_EErve.mjs → env-DV4r3nHz.mjs} +9 -7
  70. package/dist/{env-DBKmK4vc.mjs → env-DX_v-Q-v.mjs} +1 -1
  71. package/dist/env-Yz4HcvHs.mjs +78 -0
  72. package/dist/env-helpers--wFmQ_5Q.mjs +136 -0
  73. package/dist/{env-types-BNPhro-M.mjs → env-types-CWDtqHgw.mjs} +6 -2
  74. package/dist/{env-validation-CF6KvTRf.mjs → env-validation-BsFEXps5.mjs} +19 -28
  75. package/dist/env-validation-DIDGM7h4.mjs +2 -0
  76. package/dist/fetch-CXDChK7B.mjs +18 -0
  77. package/dist/fetch-_SeGZao9.d.mts +57 -0
  78. package/dist/fetch-stream-AOByI7Ki.mjs +81 -0
  79. package/dist/fetch-stream-Bjf0hoZb.d.mts +49 -0
  80. package/dist/gen-BBiIZw6g.mjs +2 -0
  81. package/dist/{gen-B_wPnVTK.mjs → gen-CFOEEc-t.mjs} +13 -11
  82. package/dist/{generate-RTK8_kK1.mjs → generate-C0VY6RVf.mjs} +2 -2
  83. package/dist/{github-cmd-C-z_xRrQ.mjs → github-cmd-jYjha2LO.mjs} +6 -4
  84. package/dist/{handler-D1hLsObx.d.mts → handler-BXJTXd02.d.mts} +6 -1
  85. package/dist/handler-DghKr6dU.mjs +150 -0
  86. package/dist/head-D_QRR5Yd.mjs +112 -0
  87. package/dist/head-client-DzmJGN4C.mjs +90 -0
  88. package/dist/{headers-BAHwgHdW.mjs → headers-B_HBMgi0.mjs} +2 -2
  89. package/dist/{help-CwOX-zmI.mjs → help-C46mnlUS.mjs} +17 -12
  90. package/dist/help-CS_nAsWu.mjs +2 -0
  91. package/dist/index.d.mts +2 -20
  92. package/dist/index.mjs +116 -60
  93. package/dist/{init-BGktCXgA.mjs → init-CSXmvxKu.mjs} +49 -50
  94. package/dist/{link-D2kbqhWb.mjs → link-DxMOALXk.mjs} +7 -5
  95. package/dist/{list-CvkK_G7k.mjs → list-0wQs0oYg.mjs} +7 -5
  96. package/dist/live-CB1y5IuC.mjs +411 -0
  97. package/dist/live-CKiJilLr.d.mts +105 -0
  98. package/dist/local-d1-DzykTWY8.mjs +104 -0
  99. package/dist/{login-WIjNc77c.mjs → login-CKk5NX4d.mjs} +6 -11
  100. package/dist/login-Ch9cgWRF.mjs +2 -0
  101. package/dist/{logs-dLUFCapG.mjs → logs-hxWBSoej.mjs} +6 -4
  102. package/dist/migrate-CLty4mZR.mjs +2 -0
  103. package/dist/migrate-DcW8F2W8.mjs +285 -0
  104. package/dist/migration-handler-DM4clYj5.d.mts +51 -0
  105. package/dist/{neon-DHwd2zvC.mjs → neon-n74ta1Pr.mjs} +1 -1
  106. package/dist/{node-Ez5KW5rn.mjs → node-Cupyf7-s.mjs} +6 -6
  107. package/dist/{operator-auth-B3e08unv.mjs → operator-auth-BkVgJqv-.mjs} +2 -2
  108. package/dist/{operator-client-LUZnlnYk.mjs → operator-client-A0iex2yi.mjs} +2 -1
  109. package/dist/{operator-cmd-CKJ7xIRs.mjs → operator-cmd-BEUYhaHB.mjs} +6 -6
  110. package/dist/output-urU86XeT.mjs +146 -0
  111. package/dist/{package-json-CPoWX79C.mjs → package-json-iCbMg5XF.mjs} +1 -1
  112. package/dist/pages/client.d.mts +5 -2
  113. package/dist/pages/client.mjs +5 -3
  114. package/dist/pages/head-client.mjs +1 -89
  115. package/dist/pages/head.mjs +1 -111
  116. package/dist/pages/index.d.mts +2 -3
  117. package/dist/pages/index.mjs +7 -7
  118. package/dist/pages/islands-plugin.mjs +2 -2
  119. package/dist/pages/prefetch.d.mts +2 -30
  120. package/dist/pages/prefetch.mjs +1 -89
  121. package/dist/pages/protocol.d.mts +2 -2
  122. package/dist/pages/protocol.mjs +3 -3
  123. package/dist/pages/serialize.d.mts +2 -9
  124. package/dist/pages/serialize.mjs +1 -13
  125. package/dist/plan-BEZ8VJW0.mjs +256 -0
  126. package/dist/plan-DpuOr14e.mjs +2 -0
  127. package/dist/{platform-auth-config-CdVWRRJr.mjs → platform-auth-config-Df6yVw-e.mjs} +6 -6
  128. package/dist/{platform-auth-protection-Drl0qhrn.mjs → platform-auth-protection-Jb0yftay.mjs} +7 -5
  129. package/dist/{platform-auth-recovery-CmKEWpDo.mjs → platform-auth-recovery-DmRyIfW0.mjs} +6 -5
  130. package/dist/platform-cmd-C9Vt7m-d.mjs +2 -0
  131. package/dist/{platform-cmd-5q_k56xS.mjs → platform-cmd-DRxCOTwy.mjs} +8 -5
  132. package/dist/{platform-domain-4GiDlcqx.mjs → platform-domain-IjiXgrXJ.mjs} +4 -3
  133. package/dist/{platform-lifecycle-R9xAxvtG.mjs → platform-lifecycle-BquAaU-5.mjs} +208 -37
  134. package/dist/platform-lifecycle-CuJIZNvA.mjs +2 -0
  135. package/dist/{platform-management-BfWsXHEW.mjs → platform-management-CCQKGsq4.mjs} +8 -5
  136. package/dist/platform-management-Cgyed0WY.mjs +2 -0
  137. package/dist/{platform-recovery-CbK-I1FB.mjs → platform-recovery-DS8ih1SW.mjs} +3 -3
  138. package/dist/platform-registry-BJbgZLS1.mjs +431 -0
  139. package/dist/{plugin-inference-BDRfZngg.mjs → plugin-inference-DsvtJLll.mjs} +4 -4
  140. package/dist/prefetch-Bsc_Pb6c.mjs +90 -0
  141. package/dist/prefetch-Ce6la4EI.d.mts +31 -0
  142. package/dist/{prepare-blNRQvQl.mjs → prepare-CaUxODOU.mjs} +3 -2
  143. package/dist/prepare-D4CkM3_v.mjs +2 -0
  144. package/dist/{prepare-CtDJjoOj.mjs → prepare-pcWcxSCh.mjs} +13 -11
  145. package/dist/prerender-render-Cf_WDE9W.mjs +111 -0
  146. package/dist/prerender-render.mjs +1 -110
  147. package/dist/{preset-lAy0B0BQ.mjs → preset-Dowh9tTt.mjs} +16 -118
  148. package/dist/project-BEBFDFLz.mjs +2 -0
  149. package/dist/project-CWNIPoXc.mjs +209 -0
  150. package/dist/{project-cmd-CTdmnzvc.mjs → project-cmd-2lN--YAX.mjs} +18 -16
  151. package/dist/{project-paths-SK8nMHPp.mjs → project-paths-CKQ-Q5JS.mjs} +47 -14
  152. package/dist/project-slug-23TpquG4.mjs +8 -0
  153. package/dist/project-slug-DofjTFd-.mjs +2 -0
  154. package/dist/{project-team-CGxsQe3_.mjs → project-team-Dapn9HZn.mjs} +6 -4
  155. package/dist/{project-token-Cirx7uwZ.mjs → project-token-C90v9SJK.mjs} +6 -4
  156. package/dist/{project-tsconfig-Ql2XsSQp.mjs → project-tsconfig-CwfqUnVp.mjs} +2 -2
  157. package/dist/{protocol-C-pqYJjE.d.mts → protocol-ZH3jP4a7.d.mts} +1 -1
  158. package/dist/providers-BNKRacMr.d.mts +7 -0
  159. package/dist/provision-CNgEBkVA.mjs +3 -0
  160. package/dist/{provision-CSJOjjQk.mjs → provision-Cck2m3jJ.mjs} +11 -25
  161. package/dist/queues-BWKt1Xo4.d.mts +7 -0
  162. package/dist/{requests-4Nq59hOr.mjs → requests-CzX46I0i.mjs} +5 -3
  163. package/dist/resolve-project-BTotl8Nn.mjs +2 -0
  164. package/dist/{resolve-project--Vxawf7z.mjs → resolve-project-Xvis70DG.mjs} +2 -8
  165. package/dist/response-Tn7rU0MV.mjs +30 -0
  166. package/dist/{rollback-Dr7u0Ljx.mjs → rollback-BEeyc73H.mjs} +6 -4
  167. package/dist/{rolldown-runtime-rQ84J-ij.mjs → rolldown-runtime-DXIUcv95.mjs} +1 -10
  168. package/dist/route-types-Id82-veQ.mjs +280 -0
  169. package/dist/{local-d1-D2I6Ox5F.mjs → runner-BGVsGgkb.mjs} +6 -114
  170. package/dist/runner-CQs_cDSG.mjs +2 -0
  171. package/dist/runner-mysql-1o47achK.mjs +2 -0
  172. package/dist/{runner-mysql-7BPUNGmL.mjs → runner-mysql-BhwMk2Bm.mjs} +2 -9
  173. package/dist/{runner-pg-BkEza-dX.mjs → runner-pg-CJ_JeGF6.mjs} +2 -9
  174. package/dist/runner-pg-D7z01mQS.mjs +2 -0
  175. package/dist/runtime/ai.mjs +1 -1
  176. package/dist/runtime/auth-client-react.d.mts +2 -6
  177. package/dist/runtime/auth-client-react.mjs +1 -5
  178. package/dist/runtime/auth-client-solid.d.mts +2 -6
  179. package/dist/runtime/auth-client-solid.mjs +1 -5
  180. package/dist/runtime/auth-client-svelte.d.mts +2 -6
  181. package/dist/runtime/auth-client-svelte.mjs +1 -5
  182. package/dist/runtime/auth-client-vue.d.mts +2 -6
  183. package/dist/runtime/auth-client-vue.mjs +1 -5
  184. package/dist/runtime/auth-client.d.mts +2 -6
  185. package/dist/runtime/auth-client.mjs +1 -5
  186. package/dist/runtime/auth.mjs +1 -21
  187. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  188. package/dist/runtime/better-auth-mysql.mjs +1 -1
  189. package/dist/runtime/better-auth-pg.d.mts +1 -1
  190. package/dist/runtime/better-auth-pg.mjs +1 -1
  191. package/dist/runtime/better-auth.d.mts +1 -1
  192. package/dist/runtime/better-auth.mjs +1 -1
  193. package/dist/runtime/client-react.d.mts +3 -3
  194. package/dist/runtime/client-react.mjs +3 -3
  195. package/dist/runtime/client-solid.d.mts +3 -3
  196. package/dist/runtime/client-solid.mjs +3 -3
  197. package/dist/runtime/client-svelte.d.mts +3 -3
  198. package/dist/runtime/client-svelte.mjs +3 -3
  199. package/dist/runtime/client-vue.d.mts +3 -3
  200. package/dist/runtime/client-vue.mjs +3 -3
  201. package/dist/runtime/client.d.mts +3 -3
  202. package/dist/runtime/client.mjs +3 -3
  203. package/dist/runtime/db.mjs +1 -1
  204. package/dist/runtime/durable.mjs +1 -1
  205. package/dist/runtime/email/testing.mjs +1 -1
  206. package/dist/runtime/env-helpers.mjs +1 -135
  207. package/dist/runtime/env-public-client.mjs +1 -1
  208. package/dist/runtime/env-public.mjs +2 -2
  209. package/dist/runtime/env.mjs +1 -77
  210. package/dist/runtime/fetch-stream.d.mts +2 -49
  211. package/dist/runtime/fetch-stream.mjs +2 -80
  212. package/dist/runtime/fetch.d.mts +2 -57
  213. package/dist/runtime/fetch.mjs +2 -17
  214. package/dist/runtime/handler.d.mts +1 -1
  215. package/dist/runtime/handler.mjs +1 -149
  216. package/dist/runtime/kv.mjs +1 -1
  217. package/dist/runtime/live-client.d.mts +1 -1
  218. package/dist/runtime/live-server.mjs +2 -2
  219. package/dist/runtime/live.d.mts +2 -104
  220. package/dist/runtime/live.mjs +1 -410
  221. package/dist/runtime/migration-handler-mysql.d.mts +1 -1
  222. package/dist/runtime/migration-handler-pg.d.mts +1 -1
  223. package/dist/runtime/migration-handler.d.mts +2 -50
  224. package/dist/runtime/queues.d.mts +2 -6
  225. package/dist/runtime/queues.mjs +1 -1
  226. package/dist/runtime/response.mjs +1 -29
  227. package/dist/runtime/sandbox.mjs +1 -1
  228. package/dist/runtime/sse.mjs +1 -171
  229. package/dist/runtime/storage.mjs +1 -1
  230. package/dist/runtime/validator.d.mts +1 -1
  231. package/dist/runtime/validator.mjs +1 -71
  232. package/dist/runtime/ws-server.d.mts +2 -2
  233. package/dist/runtime/ws-server.mjs +2 -2
  234. package/dist/runtime/ws.d.mts +2 -121
  235. package/dist/{scan-CpK-57ug.mjs → scan-DJbooZm2.mjs} +3 -3
  236. package/dist/{scan-BMH4rzlv.mjs → scan-DdDvRCU1.mjs} +8 -26
  237. package/dist/{secret-AcPi-FoA.mjs → secret-wnTel5Yw.mjs} +8 -6
  238. package/dist/serialize-BPvnNQuA.mjs +14 -0
  239. package/dist/serialize-CfSwWfF2.d.mts +10 -0
  240. package/dist/{skills-C0RvGjeE.mjs → skills-B-690E7h.mjs} +3 -2
  241. package/dist/sse-BaC1jXko.mjs +172 -0
  242. package/dist/{subcommand-prompt-Bmyn5Rlc.mjs → subcommand-prompt-Gj3VzLIh.mjs} +2 -1
  243. package/dist/sveltekit.d.mts +2 -1
  244. package/dist/sveltekit.mjs +3 -2
  245. package/dist/validate-DqJ33oHj.mjs +2 -0
  246. package/dist/validate-qNhV00PD.mjs +180 -0
  247. package/dist/validator-BTOu0fB0.mjs +72 -0
  248. package/dist/{wrangler--imS8n0d.mjs → wrangler-D01qs6VB.mjs} +259 -71
  249. package/dist/ws-BwcqizuH.d.mts +122 -0
  250. package/dist/{yarn-pnp-DxSInkzL.mjs → yarn-pnp-CVEc3gE7.mjs} +1 -1
  251. package/package.json +19 -8
  252. package/skills/void/SKILL.md +6 -4
  253. package/skills/void/docs/guide/ai.md +3 -3
  254. package/skills/void/docs/guide/app-types.md +12 -11
  255. package/skills/void/docs/guide/auth.md +2 -2
  256. package/skills/void/docs/guide/database/d1.md +1 -1
  257. package/skills/void/docs/guide/database/mysql.md +1 -1
  258. package/skills/void/docs/guide/database/postgresql.md +3 -3
  259. package/skills/void/docs/guide/deployment.md +2 -2
  260. package/skills/void/docs/guide/durable-state.md +2 -2
  261. package/skills/void/docs/guide/edge/headers.md +3 -3
  262. package/skills/void/docs/guide/edge/prerendering.md +1 -1
  263. package/skills/void/docs/guide/edge/redirects.md +4 -4
  264. package/skills/void/docs/guide/edge/revalidation.md +6 -6
  265. package/skills/void/docs/guide/edge/rewrites.md +28 -27
  266. package/skills/void/docs/guide/edge/static-assets.md +1 -1
  267. package/skills/void/docs/guide/email.md +15 -15
  268. package/skills/void/docs/guide/env-migration.md +1 -1
  269. package/skills/void/docs/guide/index.md +1 -1
  270. package/skills/void/docs/guide/pages-routing/head.md +1 -1
  271. package/skills/void/docs/guide/platform/administration/access.md +13 -5
  272. package/skills/void/docs/guide/platform/administration/projects.md +3 -1
  273. package/skills/void/docs/guide/platform/installation/ci.md +3 -0
  274. package/skills/void/docs/guide/platform/installation/credentials.md +15 -5
  275. package/skills/void/docs/guide/platform/installation/prerequisites.md +2 -0
  276. package/skills/void/docs/guide/platform/installation/setup.md +1 -1
  277. package/skills/void/docs/guide/remote-dev.md +2 -2
  278. package/skills/void/docs/guide/sandboxes.md +1 -1
  279. package/skills/void/docs/guide/ssg.md +1 -1
  280. package/skills/void/docs/guide/websockets.md +1 -1
  281. package/skills/void/docs/integrations/cloudflare.md +86 -84
  282. package/skills/void/docs/integrations/frameworks/analog.md +14 -9
  283. package/skills/void/docs/integrations/frameworks/astro.md +14 -10
  284. package/skills/void/docs/integrations/frameworks/nuxt.md +14 -9
  285. package/skills/void/docs/integrations/frameworks/overview.md +35 -29
  286. package/skills/void/docs/integrations/frameworks/react-router.md +1 -1
  287. package/skills/void/docs/integrations/frameworks/sveltekit.md +33 -30
  288. package/skills/void/docs/integrations/frameworks/tanstack-start.md +1 -1
  289. package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -5
  290. package/skills/void/docs/reference/api.md +21 -4
  291. package/skills/void/docs/reference/cli.md +32 -23
  292. package/skills/void/docs/reference/config.md +56 -33
  293. package/skills/void/docs/reference/structure.md +2 -2
  294. package/dist/validate-tBBN_dXH.mjs +0 -505
@@ -0,0 +1,48 @@
1
+ import { a as join, n as dirname } from "./dist-4WkAWhWx.mjs";
2
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
3
+ //#region src/migrations/collect.ts
4
+ /**
5
+ * Collect all .sql migration files from the migrations directory,
6
+ * sorted by filename (lexicographic order).
7
+ */
8
+ function collectMigrations(migrationsDir) {
9
+ if (!existsSync(migrationsDir)) return [];
10
+ return readdirSync(migrationsDir).filter((f) => f.endsWith(".sql") && f !== "seed.sql").sort().map((name) => ({
11
+ name,
12
+ sql: readFileSync(join(migrationsDir, name), "utf-8")
13
+ }));
14
+ }
15
+ /**
16
+ * Read `db/migrations/meta/_journal.json` if it exists. Drizzle maintains
17
+ * this file whenever `drizzle-kit generate` runs; every `.sql` migration
18
+ * under `db/migrations/` should correspond to an entry whose `tag` is the
19
+ * filename without the `.sql` suffix.
20
+ */
21
+ function readJournal(migrationsDir) {
22
+ const journalPath = join(migrationsDir, "meta", "_journal.json");
23
+ if (!existsSync(journalPath)) return;
24
+ try {
25
+ return JSON.parse(readFileSync(journalPath, "utf-8"));
26
+ } catch (err) {
27
+ throw new Error(`db: Failed to parse db/migrations/meta/_journal.json: '${err.message}'.`);
28
+ }
29
+ }
30
+ /**
31
+ * Write `db/migrations/meta/_journal.json` with pretty-printed JSON and a
32
+ * trailing newline, matching the format Drizzle itself emits. Creates the
33
+ * `meta/` directory if it does not yet exist.
34
+ */
35
+ function writeJournal(migrationsDir, journal) {
36
+ const journalPath = join(migrationsDir, "meta", "_journal.json");
37
+ mkdirSync(dirname(journalPath), { recursive: true });
38
+ writeFileSync(journalPath, JSON.stringify(journal, null, 2) + "\n");
39
+ }
40
+ /**
41
+ * Drop the `.sql` extension from a migration filename, leaving any other
42
+ * suffix untouched. Used to line filenames up with journal `tag` values.
43
+ */
44
+ function stripSqlExt(name) {
45
+ return name.endsWith(".sql") ? name.slice(0, -4) : name;
46
+ }
47
+ //#endregion
48
+ export { writeJournal as i, readJournal as n, stripSqlExt as r, collectMigrations as t };
@@ -0,0 +1,2 @@
1
+ import { m as readConfig, u as getDatabaseDialect } from "./config-Dxr6cTXn.mjs";
2
+ export { getDatabaseDialect, readConfig };
@@ -1,10 +1,8 @@
1
- import { n as __exportAll } from "./rolldown-runtime-rQ84J-ij.mjs";
2
- import { c as relative, o as join } from "./dist-BrsS7cai.mjs";
3
- import { n as readProjectPaths } from "./project-paths-SK8nMHPp.mjs";
4
- import { r as schemaSpecifier, t as discoverSchema } from "./discover-xvfrgJeo.mjs";
1
+ import { a as join, l as relative } from "./dist-4WkAWhWx.mjs";
2
+ import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
3
+ import { n as schemaSpecifier, t as discoverSchema } from "./discover-C4O6YxVS.mjs";
5
4
  import { mkdirSync, writeFileSync } from "node:fs";
6
5
  //#region src/drizzle/config.ts
7
- var config_exports = /* @__PURE__ */ __exportAll({ writeDrizzleConfig: () => writeDrizzleConfig });
8
6
  /**
9
7
  * Write a temporary drizzle-kit config to `.void/drizzle.config.json`.
10
8
  * All paths are relative to the project root (drizzle-kit resolves
@@ -31,4 +29,4 @@ function writeDrizzleConfig(root, dbPath, dialect = "sqlite", options) {
31
29
  return configPath;
32
30
  }
33
31
  //#endregion
34
- export { writeDrizzleConfig as n, config_exports as t };
32
+ export { writeDrizzleConfig as t };
@@ -0,0 +1,2 @@
1
+ import { t as writeDrizzleConfig } from "./config-BSe70f4T.mjs";
2
+ export { writeDrizzleConfig };
@@ -1,27 +1,7 @@
1
- import { n as __exportAll } from "./rolldown-runtime-rQ84J-ij.mjs";
2
- import { o as join } from "./dist-BrsS7cai.mjs";
3
- import { a as validateSourceDir } from "./project-paths-SK8nMHPp.mjs";
1
+ import { a as validateSourceDir, c as loadVoidConfig } from "./project-paths-CKQ-Q5JS.mjs";
4
2
  import { i as isVoidAuthProvider, t as VOID_AUTH_PROVIDERS } from "./providers-CJlNS3kT.mjs";
5
3
  import { a as parseAddress, n as MimeError } from "./mime-D5Nmdzf7.mjs";
6
- import { readFileSync } from "node:fs";
7
4
  //#region src/config.ts
8
- var config_exports = /* @__PURE__ */ __exportAll({
9
- VALID_NOT_FOUND_HANDLING: () => VALID_NOT_FOUND_HANDLING,
10
- VALID_REDIRECT_STATUSES: () => VALID_REDIRECT_STATUSES,
11
- assertSingleSplat: () => assertSingleSplat,
12
- assertUniqueCaptureNames: () => assertUniqueCaptureNames,
13
- convertFallbacksConfig: () => convertFallbacksConfig,
14
- convertHeadersConfig: () => convertHeadersConfig,
15
- convertRedirectsConfig: () => convertRedirectsConfig,
16
- convertRewritesConfig: () => convertRewritesConfig,
17
- countSplats: () => countSplats,
18
- getDatabaseDialect: () => getDatabaseDialect,
19
- isNodeTarget: () => isNodeTarget,
20
- isProtocolRelative: () => isProtocolRelative,
21
- parseHostPrefixedSource: () => parseHostPrefixedSource,
22
- readConfig: () => readConfig,
23
- resolveBindingNames: () => resolveBindingNames
24
- });
25
5
  const CONFIG_FILE = "void.json";
26
6
  const VALID_TARGETS = /* @__PURE__ */ new Set([
27
7
  "cloudflare",
@@ -220,24 +200,21 @@ const MIGRATION_ERRORS = {
220
200
  mode: "\"mode\" has been renamed to \"inference.appType\"",
221
201
  revalidate: "\"revalidate\" has moved to \"routing.revalidate\""
222
202
  };
223
- /**
224
- * Read and validate the `void.json` config file from the project root.
225
- * Returns an empty config object if no file exists.
226
- */
203
+ /** Read and validate the project's typed config, with legacy JSON compatibility. */
227
204
  function readConfig(root) {
228
- const filePath = join(root, CONFIG_FILE);
229
- let raw;
230
- try {
231
- raw = readFileSync(filePath, "utf-8");
232
- } catch {
233
- return {};
234
- }
235
- let config;
205
+ const loaded = loadVoidConfig(root);
206
+ return loaded ? validateConfig(loaded.value, loaded.source) : {};
207
+ }
208
+ /** Runtime validation also applies to TypeScript configs, whose types may be bypassed. */
209
+ function validateConfig(config, source = CONFIG_FILE) {
236
210
  try {
237
- config = JSON.parse(raw);
238
- } catch {
239
- throw new Error(`config: Invalid JSON in ${CONFIG_FILE}.`);
211
+ return validateConfigObject(config);
212
+ } catch (error) {
213
+ if (source !== CONFIG_FILE && error instanceof Error) throw new Error(error.message.replaceAll(CONFIG_FILE, source), { cause: error });
214
+ throw error;
240
215
  }
216
+ }
217
+ function validateConfigObject(config) {
241
218
  if (typeof config !== "object" || config === null || Array.isArray(config)) throw new Error(`config: ${CONFIG_FILE} must be a JSON object.`);
242
219
  const obj = config;
243
220
  for (const [key, message] of Object.entries(MIGRATION_ERRORS)) if (obj[key] !== void 0) throw new Error(`config: ${message} in ${CONFIG_FILE}.`);
@@ -457,6 +434,9 @@ function readConfig(root) {
457
434
  }
458
435
  }
459
436
  }
437
+ if (obj.cloudflare !== void 0) {
438
+ if (typeof obj.cloudflare !== "object" || obj.cloudflare === null || Array.isArray(obj.cloudflare)) throw new Error(`config: "cloudflare" in ${CONFIG_FILE} must be an object.`);
439
+ }
460
440
  if (obj.database !== void 0) {
461
441
  if (typeof obj.database !== "string" || !VALID_DATABASE_VALUES.has(obj.database)) throw new Error(`config: "database" in ${CONFIG_FILE} must be "pg" or "mysql".`);
462
442
  }
@@ -472,6 +452,11 @@ function readConfig(root) {
472
452
  for (const key of Object.keys(emailCfg)) if (key !== "from") throw new Error(`config: Unknown key 'email.${key}' in ${CONFIG_FILE}. Valid: from.`);
473
453
  if (emailCfg.from !== void 0) parseEmailFrom(emailCfg.from);
474
454
  }
455
+ if ("$schema" in obj) {
456
+ const resolved = { ...obj };
457
+ delete resolved.$schema;
458
+ return resolved;
459
+ }
475
460
  return obj;
476
461
  }
477
462
  /**
@@ -642,4 +627,4 @@ function convertFallbacksConfig(fallbacks) {
642
627
  return rules.length > 0 ? rules : void 0;
643
628
  }
644
629
  //#endregion
645
- export { convertRedirectsConfig as a, getDatabaseDialect as c, parseHostPrefixedSource as d, readConfig as f, convertHeadersConfig as i, isNodeTarget as l, config_exports as n, convertRewritesConfig as o, resolveBindingNames as p, convertFallbacksConfig as r, countSplats as s, VALID_REDIRECT_STATUSES as t, isProtocolRelative as u };
630
+ export { convertFallbacksConfig as a, convertRewritesConfig as c, isNodeTarget as d, isProtocolRelative as f, validateConfig as g, resolveBindingNames as h, assertUniqueCaptureNames as i, countSplats as l, readConfig as m, VALID_REDIRECT_STATUSES as n, convertHeadersConfig as o, parseHostPrefixedSource as p, assertSingleSplat as r, convertRedirectsConfig as s, VALID_NOT_FOUND_HANDLING as t, getDatabaseDialect as u };
@@ -0,0 +1,185 @@
1
+ import "./types-CKWnYgfy.mjs";
2
+ import { t as VoidAuthProvider } from "./providers-BNKRacMr.mjs";
3
+ import { t as HeadConfig } from "./head-Do8P4puT.mjs";
4
+ import { RewriteDestination } from "void/routes";
5
+ //#region src/sandbox/config.d.ts
6
+ type SandboxInstanceType = "dev" | "lite" | "basic" | "standard" | "standard-1" | "standard-2" | "standard-3" | "standard-4";
7
+ type SandboxConfig = {
8
+ binding?: string;
9
+ className?: string;
10
+ containerName?: string;
11
+ image?: string;
12
+ imageBuildContext?: string;
13
+ platformImage?: string;
14
+ instanceType?: SandboxInstanceType;
15
+ maxInstances?: number;
16
+ };
17
+ //#endregion
18
+ //#region src/config.d.ts
19
+ /** Redirect destination — string (302) or object with explicit status. */
20
+ type RedirectDestination = string | {
21
+ to: string;
22
+ status?: 301 | 302 | 303 | 307 | 308;
23
+ };
24
+ /** Curated Worker fields accepted in the legacy void.json config. */
25
+ type WranglerConfig = {
26
+ compatibility_date?: string;
27
+ compatibility_flags?: Array<string>;
28
+ vars?: Record<string, string>;
29
+ limits?: {
30
+ cpu_ms?: number;
31
+ };
32
+ };
33
+ /**
34
+ * How the asset layer answers a request that matched no asset and no worker
35
+ * route. Mirrors Cloudflare's `assets.not_found_handling`.
36
+ */
37
+ type NotFoundHandling = "single-page-application" | "404-page" | "none";
38
+ /** Routing configuration — headers, redirects, rewrites, fallbacks, revalidation, prerendering. */
39
+ type RoutingConfig = {
40
+ /** Disable ISR and edge prerendering, including per-page policies. Static output is unaffected. */
41
+ isr?: boolean;
42
+ revalidate?: number | Record<string, number>;
43
+ revalidateQueryAllowlist?: Record<string, Array<string>>;
44
+ prerender?: Array<string>;
45
+ headers?: Record<string, Array<string>>;
46
+ redirects?: Record<string, RedirectDestination>;
47
+ rewrites?: Record<string, RewriteDestination>;
48
+ fallbacks?: Record<string, RewriteDestination>;
49
+ /**
50
+ * Override the inferred `not_found_handling` for the asset layer.
51
+ *
52
+ * Void infers `single-page-application` whenever the worker does not own HTML
53
+ * routing, because a real SPA needs `/index.html` served for deep links. An
54
+ * app whose assets were emitted by a static site generator (VitePress,
55
+ * Docusaurus, …) wants the opposite: unknown URLs should serve the generator's
56
+ * own `404.html` with a real HTTP 404, not `index.html` with a 200. Nothing in
57
+ * a built asset tree distinguishes the two, so this is an explicit opt-in.
58
+ *
59
+ * Only `not_found_handling` is affected — `run_worker_first` is unchanged, so
60
+ * API routes, auth, and `/__void/*` still reach the worker first.
61
+ */
62
+ notFound?: NotFoundHandling;
63
+ };
64
+ /** Inference configuration — bindings, scanDirs, build, outputDir, appType. */
65
+ type InferenceConfig = {
66
+ bindings?: {
67
+ db?: boolean | string;
68
+ kv?: boolean | string;
69
+ storage?: boolean | string;
70
+ ai?: boolean | string;
71
+ email?: boolean;
72
+ };
73
+ scanDirs?: ReadonlyArray<string>;
74
+ build?: string;
75
+ outputDir?: string;
76
+ appType?: "spa" | "static" | "void" | "framework";
77
+ };
78
+ /** Auth configuration — high-level provider selection for Better Auth defaults. */
79
+ type AuthConfig = {
80
+ providers?: Array<VoidAuthProvider>;
81
+ };
82
+ /** AI configuration — the Cloudflare AI Gateway used by `ai.provider().fetch()` on self-hosted deploys (Workers AI `ai.run`/`ai.image` use the `env.AI` binding directly). */
83
+ type AiConfig = {
84
+ gateway?: string;
85
+ };
86
+ /**
87
+ * Email configuration. `from` is the default sender for `sendEmail()` — one
88
+ * address, optionally with a display name (`Acme <noreply@mail.acme.com>`) —
89
+ * and, on `void deploy --platform cloudflare`, its host is the domain the CLI
90
+ * sets Email Routing and Email Sending up on.
91
+ */
92
+ type EmailConfig = {
93
+ from?: string;
94
+ };
95
+ /** Cloudflare Worker configuration passed through to the native deploy artifact. */
96
+ type CloudflareField<T> = T & Record<string, unknown>;
97
+ type CloudflareConfig = Record<string, unknown> & {
98
+ account_id?: string;
99
+ name?: string;
100
+ main?: string;
101
+ compatibility_date?: string;
102
+ compatibility_flags?: Array<string>;
103
+ workers_dev?: boolean;
104
+ preview_urls?: boolean;
105
+ vars?: Record<string, unknown>;
106
+ routes?: Array<string | CloudflareField<{
107
+ pattern: string;
108
+ zone_name?: string;
109
+ zone_id?: string;
110
+ }>>;
111
+ route?: string | CloudflareField<{
112
+ pattern: string;
113
+ zone_name?: string;
114
+ zone_id?: string;
115
+ }>;
116
+ d1_databases?: Array<CloudflareField<{
117
+ binding: string;
118
+ database_name?: string;
119
+ database_id?: string;
120
+ migrations_dir?: string;
121
+ migrations_table?: string;
122
+ }>>;
123
+ kv_namespaces?: Array<CloudflareField<{
124
+ binding: string;
125
+ id?: string;
126
+ preview_id?: string;
127
+ }>>;
128
+ r2_buckets?: Array<CloudflareField<{
129
+ binding: string;
130
+ bucket_name?: string;
131
+ preview_bucket_name?: string;
132
+ }>>;
133
+ hyperdrive?: Array<CloudflareField<{
134
+ binding: string;
135
+ id?: string;
136
+ }>>;
137
+ queues?: CloudflareField<{
138
+ producers?: Array<CloudflareField<{
139
+ binding: string;
140
+ queue: string;
141
+ }>>;
142
+ consumers?: Array<CloudflareField<{
143
+ queue: string;
144
+ max_batch_size?: number;
145
+ max_batch_timeout?: number;
146
+ max_retries?: number;
147
+ dead_letter_queue?: string;
148
+ }>>;
149
+ }>;
150
+ assets?: CloudflareField<{
151
+ directory?: string;
152
+ binding?: string;
153
+ not_found_handling?: "single-page-application" | "404-page" | "none";
154
+ run_worker_first?: boolean | Array<string>;
155
+ }>;
156
+ triggers?: CloudflareField<{
157
+ crons?: Array<string>;
158
+ }>;
159
+ send_email?: Array<CloudflareField<{
160
+ name: string;
161
+ destination_address?: string;
162
+ allowed_destination_addresses?: Array<string>;
163
+ allowed_sender_addresses?: Array<string>;
164
+ }>>;
165
+ addresses?: Array<string>;
166
+ };
167
+ /** Shape of the Void project config. All fields optional. */
168
+ type VoidConfig = {
169
+ sourceDir?: string;
170
+ target?: "cloudflare" | "node" | "bun" | "deno";
171
+ output?: "server" | "static";
172
+ auth?: AuthConfig;
173
+ head?: HeadConfig;
174
+ routing?: RoutingConfig;
175
+ inference?: InferenceConfig;
176
+ sandbox?: boolean | SandboxConfig;
177
+ remote?: boolean;
178
+ worker?: WranglerConfig;
179
+ cloudflare?: CloudflareConfig;
180
+ database?: "pg" | "mysql";
181
+ ai?: AiConfig;
182
+ email?: EmailConfig;
183
+ };
184
+ //#endregion
185
+ export { VoidConfig as t };
@@ -0,0 +1,6 @@
1
+ import { t as VoidConfig } from "./config-DywxBLQC.mjs";
2
+ //#region src/config-entry.d.ts
3
+ /** Define a typed Void project configuration without loading the Vite plugin. */
4
+ export declare function defineConfig<const T extends VoidConfig>(config: T): T;
5
+ //#endregion
6
+ export type { VoidConfig };
@@ -0,0 +1,7 @@
1
+ //#region src/config-entry.ts
2
+ /** Define a typed Void project configuration without loading the Vite plugin. */
3
+ function defineConfig(config) {
4
+ return config;
5
+ }
6
+ //#endregion
7
+ export { defineConfig };
@@ -0,0 +1,21 @@
1
+ import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { pathToFileURL } from "node:url";
4
+ //#region src/auth/config.ts
5
+ function isVoidAuthConfigSource(code) {
6
+ return /\bfrom\s+["']void\/auth["']/.test(code);
7
+ }
8
+ function findVoidAuthConfig(root, paths = readProjectPaths(root)) {
9
+ for (const absPath of paths.authConfigCandidates) {
10
+ if (!existsSync(absPath)) continue;
11
+ if (isVoidAuthConfigSource(readFileSync(absPath, "utf-8"))) return absPath;
12
+ }
13
+ return null;
14
+ }
15
+ async function loadVoidAuthConfig(configPath) {
16
+ if (!configPath) return;
17
+ const mod = await import(pathToFileURL(configPath).href);
18
+ return mod.default ?? mod.auth ?? mod.config;
19
+ }
20
+ //#endregion
21
+ export { loadVoidAuthConfig as n, findVoidAuthConfig as t };
@@ -0,0 +1,60 @@
1
+ import { a as join } from "./dist-4WkAWhWx.mjs";
2
+ import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-CKQ-Q5JS.mjs";
3
+ import { g as validateConfig } from "./config-Dxr6cTXn.mjs";
4
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
5
+ import { parse } from "acorn";
6
+ //#region src/config-write.ts
7
+ const GENERATED_MARKERS = [
8
+ "// Generated by void migrate.",
9
+ "// Generated from void.json by void migrate.",
10
+ "// Generated by void init."
11
+ ];
12
+ function renderVoidConfig(config, marker = GENERATED_MARKERS[0]) {
13
+ return `${marker}\nimport { defineConfig } from 'void/config';\n\nexport default defineConfig(${JSON.stringify(config, null, 2)});\n`;
14
+ }
15
+ function isStaticValue(node) {
16
+ if (!node) return false;
17
+ if (node.type === "Literal") return node.value === null || [
18
+ "string",
19
+ "number",
20
+ "boolean"
21
+ ].includes(typeof node.value);
22
+ if (node.type === "UnaryExpression") return node.operator === "-" && node.argument?.type === "Literal" && typeof node.argument.value === "number";
23
+ if (node.type === "ArrayExpression") return node.elements?.every(isStaticValue) ?? false;
24
+ if (node.type !== "ObjectExpression") return false;
25
+ return node.properties?.every((property) => property.type === "Property" && property.kind === "init" && !property.computed && !property.method && (property.key?.type === "Identifier" || property.key?.type === "Literal") && isStaticValue(property.value)) ?? false;
26
+ }
27
+ function isGeneratedStaticConfig(source) {
28
+ if (!GENERATED_MARKERS.some((marker) => source.startsWith(marker))) return false;
29
+ const comments = [];
30
+ let program;
31
+ try {
32
+ program = parse(source, {
33
+ ecmaVersion: "latest",
34
+ sourceType: "module",
35
+ onComment: (_block, comment) => comments.push(comment.trim())
36
+ });
37
+ } catch {
38
+ return false;
39
+ }
40
+ if (comments.length !== 1 || !GENERATED_MARKERS.includes(`// ${comments[0]}`)) return false;
41
+ const [importDeclaration, exportDeclaration] = program.body ?? [];
42
+ const call = exportDeclaration?.declaration;
43
+ return program.body?.length === 2 && importDeclaration?.type === "ImportDeclaration" && importDeclaration.source?.value === "void/config" && importDeclaration.specifiers?.length === 1 && importDeclaration.specifiers[0]?.imported?.name === "defineConfig" && importDeclaration.specifiers[0]?.local?.name === "defineConfig" && exportDeclaration?.type === "ExportDefaultDeclaration" && call?.type === "CallExpression" && call.callee?.name === "defineConfig" && call.arguments?.length === 1 && isStaticValue(call.arguments[0]);
44
+ }
45
+ function canRewriteVoidProjectConfig(root) {
46
+ const path = join(root, TYPED_CONFIG_FILE);
47
+ return !existsSync(path) || isGeneratedStaticConfig(readFileSync(path, "utf8"));
48
+ }
49
+ /** Update CLI-owned static config without silently rewriting authored TypeScript. */
50
+ function writeVoidProjectConfig(root, config) {
51
+ validateConfig(config, TYPED_CONFIG_FILE);
52
+ const path = join(root, TYPED_CONFIG_FILE);
53
+ if (existsSync(path)) {
54
+ if (!isGeneratedStaticConfig(readFileSync(path, "utf8"))) throw new Error(`config: ${TYPED_CONFIG_FILE} contains authored TypeScript or comments. Update it directly and rerun the command.`);
55
+ validateConfig(loadTypedVoidConfigFile(path), TYPED_CONFIG_FILE);
56
+ }
57
+ writeFileSync(path, renderVoidConfig(config, "// Generated by void init."));
58
+ }
59
+ //#endregion
60
+ export { writeVoidProjectConfig as n, canRewriteVoidProjectConfig as t };
@@ -1,9 +1,11 @@
1
- import { D as log, I as isCancel, M as select, X as normalizePlatformApiUrl, Y as listPlatformConnections } from "./output-B0cfNSx5.mjs";
2
- import { T as writePlatformSelection, p as readPlatformToken, w as writeDeploymentPlatform, x as readDeploymentPlatform } from "./auth-DPl6kck4.mjs";
3
- import { a as isExpiredTokenError, n as PlatformClient } from "./client-BQBrZoCX.mjs";
4
- import { n as promptForLoginToken } from "./login-WIjNc77c.mjs";
5
- import { discoverPlatform, promptPlatformUrl, saveDiscoveredPlatform } from "./platform-cmd-5q_k56xS.mjs";
6
- import { t as connectCloudflare } from "./cloudflare-connect-t1UU5svD.mjs";
1
+ import { f as readPlatformToken } from "./auth-B9_D6ygs.mjs";
2
+ import { o as listPlatformConnections, s as normalizePlatformApiUrl } from "./platform-registry-BJbgZLS1.mjs";
3
+ import { i as readDeploymentPlatform, l as writeDeploymentPlatform, u as writePlatformSelection } from "./project-CWNIPoXc.mjs";
4
+ import { I as select, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
5
+ import { i as isExpiredTokenError, n as PlatformClient } from "./client-PdAJ-F0t.mjs";
6
+ import { t as promptForLoginToken } from "./login-CKk5NX4d.mjs";
7
+ import { i as saveDiscoveredPlatform, n as promptPlatformUrl, t as discoverPlatform } from "./platform-cmd-DRxCOTwy.mjs";
8
+ import { t as connectCloudflare } from "./cloudflare-connect-DloREDlc.mjs";
7
9
  //#region src/cli/connect.ts
8
10
  async function selectVoidPlatform(interactive) {
9
11
  if (!interactive) throw new Error("connect: Supply a Void platform URL in non-interactive mode.");
@@ -1,20 +1,10 @@
1
- import { n as __exportAll } from "./rolldown-runtime-rQ84J-ij.mjs";
2
- import { C as cancel, D as log, I as isCancel, M as select, P as text, c as import_picocolors, w as confirm } from "./output-B0cfNSx5.mjs";
3
- import { E as writeProjectConfig, c as getSiteDomain, y as attachSelectedPlatform } from "./auth-DPl6kck4.mjs";
4
- import { t as PlatformApiError } from "./client-BQBrZoCX.mjs";
5
- import { n as inferDefaultSlug } from "./resolve-project--Vxawf7z.mjs";
6
- //#region src/cli/project-slug.ts
7
- var project_slug_exports = /* @__PURE__ */ __exportAll({
8
- MAX_SLUG_LENGTH: () => 56,
9
- validateProjectSlug: () => validateProjectSlug
10
- });
11
- function validateProjectSlug(value) {
12
- const slug = (value ?? "").trim();
13
- if (slug.length === 0) return "Project slug is required.";
14
- if (!(slug.length === 1 ? /^[a-z0-9]$/.test(slug) : /^[a-z0-9][a-z0-9-]*[a-z0-9]$/.test(slug))) return "Slug must be lowercase alphanumeric with dashes.";
15
- if (slug.length > 56) return `Slug must be at most 56 characters (it forms the email sender <slug>+noreply@).`;
16
- }
17
- //#endregion
1
+ import { c as import_picocolors } from "./output-urU86XeT.mjs";
2
+ import { s as getSiteDomain } from "./auth-B9_D6ygs.mjs";
3
+ import { d as writeProjectConfig, t as attachSelectedPlatform } from "./project-CWNIPoXc.mjs";
4
+ import { B as text, E as confirm, I as select, T as cancel, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
5
+ import { t as PlatformApiError } from "./client-PdAJ-F0t.mjs";
6
+ import { t as validateProjectSlug } from "./project-slug-23TpquG4.mjs";
7
+ import { n as inferDefaultSlug } from "./resolve-project-Xvis70DG.mjs";
18
8
  //#region src/cli/prompt.ts
19
9
  async function promptProjectSetupAction(message = "Set up a Void project:", options = {}) {
20
10
  const result = await select({
@@ -79,11 +69,6 @@ async function promptProjectSlug(defaultSlug) {
79
69
  }
80
70
  //#endregion
81
71
  //#region src/cli/create-project.ts
82
- var create_project_exports = /* @__PURE__ */ __exportAll({
83
- createProjectWithSlugRetry: () => createProjectWithSlugRetry,
84
- isRetryableCreateError: () => isRetryableCreateError,
85
- promptAndCreateProject: () => promptAndCreateProject
86
- });
87
72
  /**
88
73
  * Prompts for a slug and calls `client.createProject`, re-prompting whenever
89
74
  * the server rejects with a retryable error (e.g. free-plan short-slug 403,
@@ -136,4 +121,4 @@ function isSlugRelatedError(error) {
136
121
  return `${error.code ?? ""} ${error.body ?? ""}`.toLowerCase().includes("slug");
137
122
  }
138
123
  //#endregion
139
- export { project_slug_exports as a, promptProjectSetupAction as i, promptAndCreateProject as n, promptProjectSelection as r, create_project_exports as t };
124
+ export { promptProjectSetupAction as a, promptProjectSelection as i, isRetryableCreateError as n, promptAndCreateProject as r, createProjectWithSlugRetry as t };
@@ -0,0 +1,2 @@
1
+ import { t as createProjectWithSlugRetry } from "./create-project-C9lQhRzj.mjs";
2
+ export { createProjectWithSlugRetry };
@@ -0,0 +1,6 @@
1
+ //#region src/database-provider.ts
2
+ function defineDatabaseProvider(adapter) {
3
+ return adapter;
4
+ }
5
+ //#endregion
6
+ export { defineDatabaseProvider as t };
@@ -1,6 +1,2 @@
1
- //#region src/database-provider.ts
2
- function defineDatabaseProvider(adapter) {
3
- return adapter;
4
- }
5
- //#endregion
1
+ import { t as defineDatabaseProvider } from "./database-provider-Cx525bwX.mjs";
6
2
  export { defineDatabaseProvider };