void 0.26.0 → 0.26.1

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 (360) hide show
  1. package/AGENTS_TEMPLATE.md +1 -3
  2. package/README.md +19 -9
  3. package/dist/{account-cmd-CDry3B5V.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
  4. package/dist/{application-analysis-DC2yPvzY.mjs → application-analysis-DKy02UY0.mjs} +21 -32
  5. package/dist/{application-routing-C9khgLiS.mjs → application-routing-DQyUh_5S.mjs} +1 -1
  6. package/dist/{auth-D52yG7hl.mjs → auth-B5_tZLxT.mjs} +7 -7
  7. package/dist/{auth-B60QDbjg.mjs → auth-BgX2qYSY.mjs} +1 -1
  8. package/dist/{auth-link-DjeOptYi.mjs → auth-link-D5RmKnzh.mjs} +5 -5
  9. package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
  10. package/dist/{auth-router-BRxIuqDi.mjs → auth-router-Bap-pvbn.mjs} +4 -17
  11. package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
  12. package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
  13. package/dist/{build-cmd-Ce3C8huo.mjs → build-cmd-B58c8iS8.mjs} +7 -6
  14. package/dist/{cache-CS8Yxr5a.mjs → cache-Bo52trKF.mjs} +7 -7
  15. package/dist/{cancel-deploy-mZsD88Xa.mjs → cancel-deploy-BZNz3Q26.mjs} +5 -4
  16. package/dist/{cf-access-YTlqvAsk.mjs → cf-access-ngGqZpHZ.mjs} +10 -11
  17. package/dist/{cf-build-output-U8o1Gl6X.mjs → cf-build-output-DjvB_872.mjs} +62 -85
  18. package/dist/cf-build-output-H9a97vME.mjs +2 -0
  19. package/dist/cli/cli.mjs +48 -83
  20. package/dist/cli/cloudflare-operation-process.mjs +71 -77
  21. package/dist/cli/env-schema-probe.mjs +5 -6
  22. package/dist/client-By4JjMw_.mjs +2 -0
  23. package/dist/{client-mC-dFGDD.mjs → client-C2Prx_Bi.mjs} +28 -6
  24. package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
  25. package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
  26. package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
  27. package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
  28. package/dist/{cloudflare-operations-DoQrVHAt.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
  29. package/dist/{cloudflare-operations-DYa3coIk.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
  30. package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
  31. package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
  32. package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
  33. package/dist/config-BtSFvXZx.mjs +2 -0
  34. package/dist/config-CLYAosnQ.mjs +78 -0
  35. package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
  36. package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
  37. package/dist/config-entry.d.mts +1 -1
  38. package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
  39. package/dist/{connect-H6EvP62X.mjs → connect-X0MUA1gk.mjs} +10 -9
  40. package/dist/{create-project-B2kk9Q0o.mjs → create-project-DxiyW6iX.mjs} +6 -6
  41. package/dist/{create-project-Dbb4uiN-.mjs → create-project-iwkbqiBU.mjs} +1 -1
  42. package/dist/{db-DpCKZto0.mjs → db-XnVMHzoV.mjs} +100 -132
  43. package/dist/{delete-CxlSvsvW.mjs → delete-esYlMiSJ.mjs} +6 -6
  44. package/dist/{deploy-CeEbnv4b.mjs → deploy-BsEvnlJl.mjs} +2346 -2495
  45. package/dist/deploy-C1d-YTfp.mjs +2 -0
  46. package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
  47. package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
  48. package/dist/discover-EDUf6JJw.mjs +2 -0
  49. package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
  50. package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
  51. package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
  52. package/dist/{domain-B_9VgOm6.mjs → domain-CbbBWhWE.mjs} +28 -29
  53. package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
  54. package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
  55. package/dist/{email-BokHgjKj.mjs → email-CpuT42g7.mjs} +23 -18
  56. package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
  57. package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
  58. package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
  59. package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
  60. package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
  61. package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
  62. package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
  63. package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
  64. package/dist/{env-BdTc-K2L.mjs → env-w9jOyGZn.mjs} +9 -9
  65. package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
  66. package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
  67. package/dist/{fetch-stream-Nm3hkZbT.mjs → fetch-stream-PGgz4uGz.mjs} +18 -23
  68. package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
  69. package/dist/{gen-BhDlTpwW.mjs → gen-DtkQhvQg.mjs} +40 -57
  70. package/dist/gen-dA9hW7AV.mjs +2 -0
  71. package/dist/{github-cmd-hhkTzlGS.mjs → github-cmd-D_FsOFxq.mjs} +64 -163
  72. package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
  73. package/dist/{handler-BeK3weD4.d.mts → handler-CNAwjRcW.d.mts} +4 -11
  74. package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
  75. package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
  76. package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
  77. package/dist/{help-Bv44e2tm.mjs → help-CVFBTmBx.mjs} +13 -32
  78. package/dist/help-DzKUrQvk.mjs +2 -0
  79. package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
  80. package/dist/index.d.mts +19 -2
  81. package/dist/index.mjs +617 -530
  82. package/dist/{info-DhtTKh65.mjs → info-PYWwkWyt.mjs} +4 -4
  83. package/dist/{init-BMf4T03q.mjs → init-Bw-fRKGp.mjs} +160 -197
  84. package/dist/{link-BqYsSS_I.mjs → link-DlPG8iX3.mjs} +9 -9
  85. package/dist/{list-_kBToO-l.mjs → list-2GN7_ueV.mjs} +8 -7
  86. package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
  87. package/dist/{live-iAuEH1hd.d.mts → live-Du8jXwOW.d.mts} +4 -2
  88. package/dist/{local-d1-fGxYrVD6.mjs → local-d1-ga5O_idV.mjs} +2 -2
  89. package/dist/{login-DFuo-RWO.mjs → login-D-Q4xw3Q.mjs} +7 -7
  90. package/dist/login-Dc-wuTDq.mjs +2 -0
  91. package/dist/{logs-DYgnh6dH.mjs → logs-rd8J-OFh.mjs} +27 -10
  92. package/dist/migrate-BHp07yJE.mjs +2 -0
  93. package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
  94. package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
  95. package/dist/{node-C6Q6e1Es.mjs → node-DJicPvPj.mjs} +5 -5
  96. package/dist/{operator-args-DdY54Bgb.mjs → operator-args-BNsW5gfp.mjs} +10 -1
  97. package/dist/{operator-auth-2dsGlTT5.mjs → operator-auth-AzVLbrr3.mjs} +1 -1
  98. package/dist/{operator-client-BFqpp6z0.mjs → operator-client-BQtzyG-g.mjs} +1 -1
  99. package/dist/{operator-cmd-CUGHXrQf.mjs → operator-cmd-B6f6Cg9Z.mjs} +24 -11
  100. package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
  101. package/dist/{output-BvdaehtE.mjs → output-C50ag2r3.mjs} +20 -2
  102. package/dist/pages/client.d.mts +19 -51
  103. package/dist/pages/client.mjs +204 -225
  104. package/dist/pages/head-client.d.mts +1 -1
  105. package/dist/pages/head.d.mts +1 -1
  106. package/dist/pages/head.mjs +1 -1
  107. package/dist/pages/index.d.mts +2 -2
  108. package/dist/pages/index.mjs +6 -12
  109. package/dist/pages/islands-plugin.d.mts +1 -1
  110. package/dist/pages/islands-plugin.mjs +21 -25
  111. package/dist/pages/protocol.d.mts +2 -2
  112. package/dist/pages/protocol.mjs +2 -2
  113. package/dist/{plan-CJGEeTEI.mjs → plan-BhLO2p4w.mjs} +2 -1
  114. package/dist/plan-CH2G51je.mjs +2 -0
  115. package/dist/{platform-args-DSV2p4nY.mjs → platform-args-BoZkWQnJ.mjs} +1 -1
  116. package/dist/platform-args-DYgITk0D.mjs +2 -0
  117. package/dist/{platform-auth-config-Bosx7U1h.mjs → platform-auth-config-n603OANg.mjs} +40 -36
  118. package/dist/{platform-auth-protection-DcbL_LW_.mjs → platform-auth-protection-zxDr0hWW.mjs} +8 -7
  119. package/dist/{platform-auth-recovery-WfTZ8K6o.mjs → platform-auth-recovery-tw9lgtgE.mjs} +7 -6
  120. package/dist/{platform-cmd-DbKtQb_4.mjs → platform-cmd-B8-bCb7t.mjs} +10 -10
  121. package/dist/{platform-cmd-dyFUof0t.mjs → platform-cmd-C00YM14r.mjs} +1 -1
  122. package/dist/{platform-domain-Bsq43AJp.mjs → platform-domain-p0kobLV8.mjs} +5 -5
  123. package/dist/{platform-lifecycle-Cfi0o6xM.mjs → platform-lifecycle-D_QEY32D.mjs} +75 -386
  124. package/dist/{platform-lifecycle--5gWmDoI.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
  125. package/dist/{platform-management-BrF9STZp.mjs → platform-management-BdYblvvE.mjs} +6 -6
  126. package/dist/{platform-management-Bbwf6-Dq.mjs → platform-management-oi-SvI3f.mjs} +1 -1
  127. package/dist/{platform-plans-config-DU-8nC2Y.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
  128. package/dist/{platform-recovery-DQAqAQYu.mjs → platform-recovery-PvNS9Nl2.mjs} +2 -2
  129. package/dist/platform-setup-DVe42Ws7.mjs +299 -0
  130. package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
  131. package/dist/prepare-DRUV-g3X.mjs +2 -0
  132. package/dist/{prepare-WoUubFKL.mjs → prepare-Do96654b.mjs} +8 -8
  133. package/dist/{prepare-BMrRWLwP.mjs → prepare-Dq9hTIbo.mjs} +4 -4
  134. package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
  135. package/dist/prerender-render.mjs +1 -1
  136. package/dist/{project-cmd-BbH2LptN.mjs → project-cmd-ti8_yTcA.mjs} +18 -18
  137. package/dist/{project-team-Yiww3-go.mjs → project-team-CDPE1Tsg.mjs} +14 -17
  138. package/dist/{project-token-BrtT2NkY.mjs → project-token-CkZ1cN0Z.mjs} +13 -16
  139. package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
  140. package/dist/{project-zero-trust-nYJ2V2nc.mjs → project-zero-trust-DdjLR61k.mjs} +11 -8
  141. package/dist/{protocol-BX8t2jiw.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
  142. package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
  143. package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
  144. package/dist/{provision-VeqAC77A.mjs → provision-BfaLiWbj.mjs} +38 -41
  145. package/dist/{provision-DMTPG8Rh.mjs → provision-Wu9ZBk9L.mjs} +2 -3
  146. package/dist/{requests-TIz_jtSu.mjs → requests-DFAqyYy8.mjs} +4 -4
  147. package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
  148. package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
  149. package/dist/{rollback-dBqICPzj.mjs → rollback-BKYXBduI.mjs} +29 -36
  150. package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
  151. package/dist/route-url-BgPja1GS.d.mts +5 -0
  152. package/dist/route-url-BjGv_KKY.mjs +28 -0
  153. package/dist/runner-9wjsSZx-.mjs +2 -0
  154. package/dist/{runner--2KF6Kua.mjs → runner-DMBKSrRk.mjs} +2 -2
  155. package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
  156. package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
  157. package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
  158. package/dist/runtime/ai.d.mts +1 -1
  159. package/dist/runtime/ai.mjs +34 -95
  160. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  161. package/dist/runtime/better-auth-mysql.mjs +4 -9
  162. package/dist/runtime/better-auth-pg.d.mts +1 -1
  163. package/dist/runtime/better-auth-pg.mjs +5 -10
  164. package/dist/runtime/better-auth.d.mts +1 -1
  165. package/dist/runtime/better-auth.mjs +3 -3
  166. package/dist/runtime/client-react.d.mts +2 -3
  167. package/dist/runtime/client-react.mjs +2 -2
  168. package/dist/runtime/client-solid.d.mts +2 -3
  169. package/dist/runtime/client-solid.mjs +2 -2
  170. package/dist/runtime/client-svelte.d.mts +2 -3
  171. package/dist/runtime/client-svelte.mjs +2 -2
  172. package/dist/runtime/client-vue.d.mts +2 -3
  173. package/dist/runtime/client-vue.mjs +2 -2
  174. package/dist/runtime/client.d.mts +2 -3
  175. package/dist/runtime/client.mjs +2 -2
  176. package/dist/runtime/db.mjs +1 -1
  177. package/dist/runtime/durable.mjs +3 -10
  178. package/dist/runtime/email/testing.mjs +5 -5
  179. package/dist/runtime/email.d.mts +2 -1
  180. package/dist/runtime/email.mjs +11 -27
  181. package/dist/runtime/env-public.mjs +15 -20
  182. package/dist/runtime/env.mjs +1 -1
  183. package/dist/runtime/fetch-stream.d.mts +2 -2
  184. package/dist/runtime/fetch-stream.mjs +1 -1
  185. package/dist/runtime/fetch.d.mts +2 -3
  186. package/dist/runtime/fetch.mjs +1 -1
  187. package/dist/runtime/handler.d.mts +1 -1
  188. package/dist/runtime/handler.mjs +2 -2
  189. package/dist/runtime/isr.mjs +1 -1
  190. package/dist/runtime/kv.mjs +10 -11
  191. package/dist/runtime/live-client.d.mts +1 -1
  192. package/dist/runtime/live-client.mjs +12 -22
  193. package/dist/runtime/live-server.mjs +27 -35
  194. package/dist/runtime/live.d.mts +2 -2
  195. package/dist/runtime/live.mjs +2 -2
  196. package/dist/runtime/migration-handler.mjs +4 -81
  197. package/dist/runtime/queues.mjs +1 -1
  198. package/dist/runtime/remote/binding-handler.d.mts +2 -2
  199. package/dist/runtime/remote/binding-handler.mjs +8 -9
  200. package/dist/runtime/remote/index.mjs +27 -77
  201. package/dist/runtime/route-url.d.mts +2 -4
  202. package/dist/runtime/route-url.mjs +1 -1
  203. package/dist/runtime/routing.d.mts +1 -1
  204. package/dist/runtime/routing.mjs +15 -26
  205. package/dist/runtime/sandbox.mjs +2 -2
  206. package/dist/runtime/sse.mjs +1 -1
  207. package/dist/runtime/storage.mjs +1 -1
  208. package/dist/runtime/validator.d.mts +1 -1
  209. package/dist/runtime/ws-server.d.mts +2 -2
  210. package/dist/runtime/ws-server.mjs +30 -61
  211. package/dist/runtime/ws.d.mts +1 -1
  212. package/dist/runtime/ws.mjs +1 -1
  213. package/dist/{scan-C8dA7iM4.mjs → scan-C3uDzz6J.mjs} +12 -13
  214. package/dist/{secret-AKnNXNP5.mjs → secret-BAt2KMmO.mjs} +14 -14
  215. package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
  216. package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
  217. package/dist/{subcommand-prompt-B6WS9Aoz.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
  218. package/dist/sveltekit.d.mts +0 -2
  219. package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
  220. package/dist/validate-BJr9LfXy.mjs +2 -0
  221. package/dist/{validate-ymhap6M_.mjs → validate-C9qJArv7.mjs} +9 -28
  222. package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
  223. package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
  224. package/dist/{ws-C79j4aED.d.mts → ws-CChrrAU-.d.mts} +1 -1
  225. package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
  226. package/{skills/void/docs → docs}/guide/ai.md +5 -3
  227. package/{skills/void/docs → docs}/guide/auth.md +37 -1
  228. package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
  229. package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
  230. package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
  231. package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
  232. package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
  233. package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
  234. package/{skills/void/docs → docs}/guide/jobs.md +2 -2
  235. package/{skills/void/docs → docs}/guide/live.md +10 -5
  236. package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +20 -8
  237. package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
  238. package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
  239. package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
  240. package/{skills/void/docs → docs}/guide/platform/administration/access.md +2 -10
  241. package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
  242. package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
  243. package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
  244. package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
  245. package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
  246. package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
  247. package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +3 -1
  248. package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +4 -0
  249. package/{skills/void/docs → docs}/guide/project-collaboration.md +6 -2
  250. package/{skills/void/docs → docs}/guide/queues.md +0 -2
  251. package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
  252. package/{skills/void/docs → docs}/guide/sandboxes.md +2 -2
  253. package/{skills/void/docs → docs}/guide/sse.md +0 -2
  254. package/{skills/void/docs → docs}/guide/storage.md +7 -2
  255. package/{skills/void/docs → docs}/guide/websockets.md +4 -0
  256. package/docs/integrations/agents.md +37 -0
  257. package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
  258. package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
  259. package/{skills/void/docs → docs}/integrations/hono.md +15 -7
  260. package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
  261. package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
  262. package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
  263. package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
  264. package/{skills/void/docs → docs}/reference/cli/auth.md +0 -5
  265. package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
  266. package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
  267. package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
  268. package/{skills/void/docs → docs}/reference/cli/platform-config.md +1 -1
  269. package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
  270. package/{skills/void/docs → docs}/reference/cli/platform-installation.md +1 -1
  271. package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
  272. package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
  273. package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
  274. package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
  275. package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
  276. package/{skills/void/docs → docs}/reference/cli.md +1 -1
  277. package/{skills/void/docs → docs}/reference/config.md +13 -13
  278. package/{skills/void/docs → docs}/reference/resource-inference.md +1 -16
  279. package/package.json +34 -30
  280. package/schema.json +1 -1
  281. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
  282. package/skills/void/SKILL.md +6 -3
  283. package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
  284. package/dist/client-BxVixJBI.mjs +0 -2
  285. package/dist/config-0acf1oys.mjs +0 -2
  286. package/dist/config-D8MOgiQV.mjs +0 -32
  287. package/dist/deploy-qmiLE1G1.mjs +0 -2
  288. package/dist/discover-AMCBXivQ.mjs +0 -2
  289. package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
  290. package/dist/gen-qCBwH3fZ.mjs +0 -2
  291. package/dist/help-Dw5f9Xrg.mjs +0 -2
  292. package/dist/login-D7meQg_3.mjs +0 -2
  293. package/dist/migrate-CEu2X5DB.mjs +0 -2
  294. package/dist/operator-cmd-DRPvhpjM.mjs +0 -2
  295. package/dist/plan-COtUvdMA.mjs +0 -2
  296. package/dist/platform-args-Dcy_5b_Y.mjs +0 -2
  297. package/dist/prepare-BBknoZI1.mjs +0 -2
  298. package/dist/resolve-project-DtbidV4y.mjs +0 -2
  299. package/dist/route-url-CG7U-cRN.mjs +0 -15
  300. package/dist/runner-voIltZrY.mjs +0 -2
  301. package/dist/validate-pna7R3Pv.mjs +0 -2
  302. package/skills/void/docs/integrations/agents.md +0 -26
  303. package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
  304. package/{skills/void/docs → docs}/guide/app-types.md +0 -0
  305. package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
  306. package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
  307. package/{skills/void/docs → docs}/guide/database.md +8 -8
  308. package/{skills/void/docs → docs}/guide/deployment.md +0 -0
  309. package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
  310. package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
  311. package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
  312. package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
  313. package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
  314. package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
  315. package/{skills/void/docs → docs}/guide/email.md +0 -0
  316. package/{skills/void/docs → docs}/guide/index.md +0 -0
  317. package/{skills/void/docs → docs}/guide/kv.md +0 -0
  318. package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
  319. package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
  320. package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
  321. package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
  322. package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
  323. package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
  324. package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
  325. package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
  326. package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +0 -0
  327. package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
  328. package/{skills/void/docs → docs}/guide/platform/installation/setup.md +0 -0
  329. package/{skills/void/docs → docs}/guide/platform/installation/uninstall.md +0 -0
  330. package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
  331. package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
  332. package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
  333. package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
  334. package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
  335. package/{skills/void/docs → docs}/guide/ssg.md +0 -0
  336. package/{skills/void/docs → docs}/guide/ssr.md +0 -0
  337. package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
  338. package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
  339. package/{skills/void/docs → docs}/index.md +0 -0
  340. package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
  341. package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
  342. package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
  343. package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
  344. package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
  345. package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
  346. package/{skills/void/docs → docs}/reference/api/client.md +0 -0
  347. package/{skills/void/docs → docs}/reference/api/database.md +2 -2
  348. /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
  349. /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
  350. /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
  351. /package/{skills/void/docs → docs}/reference/api/resources.md +0 -0
  352. /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
  353. /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
  354. /package/{skills/void/docs → docs}/reference/api.md +0 -0
  355. /package/{skills/void/docs → docs}/reference/cli/deploy.md +0 -0
  356. /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
  357. /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
  358. /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
  359. /package/{skills/void/docs → docs}/reference/cli/platform.md +0 -0
  360. /package/{skills/void/docs → docs}/reference/structure.md +0 -0
@@ -12,23 +12,22 @@ function usableToken(token) {
12
12
  return false;
13
13
  }
14
14
  }
15
+ function readOriginCredentials(raw) {
16
+ const parsed = JSON.parse(raw);
17
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error("platform: VOID_ACCESS_CREDENTIALS must contain an origin-keyed JSON object.");
18
+ return parsed;
19
+ }
15
20
  function rememberOriginToken(origin, token) {
16
- let entries = {};
17
- if (process.env.VOID_ACCESS_CREDENTIALS) {
18
- const parsed = JSON.parse(process.env.VOID_ACCESS_CREDENTIALS);
19
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error("platform: VOID_ACCESS_CREDENTIALS must contain an origin-keyed JSON object.");
20
- entries = parsed;
21
- }
21
+ const raw = process.env.VOID_ACCESS_CREDENTIALS;
22
22
  process.env.VOID_ACCESS_CREDENTIALS = JSON.stringify({
23
- ...entries,
23
+ ...raw ? readOriginCredentials(raw) : {},
24
24
  [origin]: { CF_ACCESS_TOKEN: token }
25
25
  });
26
26
  }
27
27
  function forgetOriginToken(origin) {
28
- if (!process.env.VOID_ACCESS_CREDENTIALS) return;
29
- const parsed = JSON.parse(process.env.VOID_ACCESS_CREDENTIALS);
30
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error("platform: VOID_ACCESS_CREDENTIALS must contain an origin-keyed JSON object.");
31
- const entries = { ...parsed };
28
+ const raw = process.env.VOID_ACCESS_CREDENTIALS;
29
+ if (!raw) return;
30
+ const entries = { ...readOriginCredentials(raw) };
32
31
  delete entries[origin];
33
32
  process.env.VOID_ACCESS_CREDENTIALS = JSON.stringify(entries);
34
33
  }
@@ -1,6 +1,7 @@
1
1
  import { a as join, i as isAbsolute, l as relative, n as dirname, r as extname, t as basename, u as resolve } from "./dist-BVqXeR_h.mjs";
2
2
  import { copyFileSync, cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
3
3
  import { fileURLToPath } from "node:url";
4
+ import { isRecord } from "@void/deploy-core";
4
5
  import { randomUUID } from "node:crypto";
5
6
  import { tmpdir } from "node:os";
6
7
  import { isDeepStrictEqual } from "node:util";
@@ -10,7 +11,7 @@ import { InputConfigSchema, OutputContainerSchema } from "@cloudflare/config";
10
11
  import ignore from "ignore";
11
12
  //#region src/cli/cf-config-migrate.ts
12
13
  function record(value) {
13
- return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
14
+ return isRecord(value) ? value : null;
14
15
  }
15
16
  function empty(value) {
16
17
  return value === void 0 || value === null || Array.isArray(value) && value.length === 0 || record(value) !== null && Object.keys(value).length === 0;
@@ -61,7 +62,7 @@ function applyPreservationFlags(raw, worker) {
61
62
  };
62
63
  }
63
64
  function applyWorkflows(raw, worker) {
64
- if (raw.workflows === void 0 || empty(raw.workflows)) return;
65
+ if (empty(raw.workflows)) return;
65
66
  if (!Array.isArray(raw.workflows)) throw new Error("Invalid Workflow bindings in the built Cloudflare config.");
66
67
  const env = record(worker.env) ?? {};
67
68
  const exports = record(worker.exports) ?? {};
@@ -114,6 +115,7 @@ function uncredentialedEnvironment() {
114
115
  function assertHandledFollowUps(followUps) {
115
116
  for (const item of followUps) {
116
117
  if (!item.blocking) continue;
118
+ if (item.code === "vite-plugin-install-disabled" && item.sourcePath === void 0) continue;
117
119
  const path = item.sourcePath ?? item.code;
118
120
  if (!(path === "assets.directory" && item.message.includes("assets directory") || /^d1_databases\.\d+$/.test(path) && /`migrations_(?:dir|table)`/.test(item.message) || /^durable_objects\.bindings\.\d+$/.test(path) || path === "migrations" || path === "containers")) throw new Error(`cf cannot migrate Cloudflare setting ${path}: ${item.message}`);
119
121
  }
@@ -295,9 +297,9 @@ function migrateBuiltWranglerConfig(raw) {
295
297
  class_name: className
296
298
  };
297
299
  }
300
+ result.containers = containers;
298
301
  }
299
302
  if (Object.keys(exports).length > 0) worker.exports = exports;
300
- if (containers.length > 0) result.containers = containers;
301
303
  return InputConfigSchema.parse(result);
302
304
  } finally {
303
305
  rmSync(directory, {
@@ -339,9 +341,6 @@ async function buildContainerImage(dockerfile, buildContext = dirname(dockerfile
339
341
  }
340
342
  //#endregion
341
343
  //#region src/cli/cf-build-output.ts
342
- function object(value) {
343
- return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
344
- }
345
344
  const moduleTypes = {
346
345
  ".js": "esm",
347
346
  ".mjs": "esm",
@@ -359,6 +358,11 @@ const moduleTypes = {
359
358
  ".json": "json",
360
359
  ".map": "sourcemap"
361
360
  };
361
+ /** Whether `path` resolves strictly inside `directory`. */
362
+ function isInside(directory, path) {
363
+ const child = relative(directory, path);
364
+ return child !== "" && child !== ".." && !child.startsWith("../") && !isAbsolute(child);
365
+ }
362
366
  function copyBundle(source, destination) {
363
367
  const modules = {};
364
368
  for (const entry of readdirSync(source, {
@@ -367,11 +371,7 @@ function copyBundle(source, destination) {
367
371
  })) {
368
372
  if (!entry.isFile() && !entry.isSymbolicLink()) continue;
369
373
  const absolute = join(entry.parentPath, entry.name);
370
- if (entry.isSymbolicLink()) {
371
- const target = realpathSync(absolute);
372
- const targetRelative = relative(realpathSync(source), target).replace(/\\/g, "/");
373
- if (!targetRelative || targetRelative === ".." || targetRelative.startsWith("../") || isAbsolute(targetRelative)) throw new Error("The built Worker contains a symlink outside its output directory.");
374
- }
374
+ if (entry.isSymbolicLink() && !isInside(realpathSync(source), realpathSync(absolute))) throw new Error("The built Worker contains a symlink outside its output directory.");
375
375
  const name = relative(source, absolute);
376
376
  if (name === "wrangler.json" || name === ".dev.vars" || name === join(".vite", "manifest.json") || name.endsWith(".css") || name.endsWith(".css.map")) continue;
377
377
  const type = moduleTypes[extname(entry.name).toLowerCase()];
@@ -387,7 +387,7 @@ function copyBundle(source, destination) {
387
387
  /** Create a private cf Build Output tree from Void's verified Vite artifact. */
388
388
  async function prepareCfBuildOutput(workerDirectory, accountId) {
389
389
  const source = resolve(workerDirectory);
390
- const raw = object(JSON.parse(readFileSync(join(source, "wrangler.json"), "utf8")));
390
+ const raw = record(JSON.parse(readFileSync(join(source, "wrangler.json"), "utf8")));
391
391
  if (!raw) return null;
392
392
  if (typeof raw.account_id === "string" && raw.account_id !== accountId) return null;
393
393
  const config = migrateBuiltWranglerConfig(raw);
@@ -395,23 +395,23 @@ async function prepareCfBuildOutput(workerDirectory, accountId) {
395
395
  if (typeof raw.main !== "string" || !raw.main) throw new Error("The built Worker configuration is missing its main entry. Rebuild the app.");
396
396
  const entry = raw.main.replaceAll("\\", "/");
397
397
  const main = relative(source, resolve(source, entry));
398
- if (isAbsolute(entry) || /^[a-z]:/i.test(entry) || !main || main === ".." || main.startsWith("../")) throw new Error("The built Worker main entry must be inside its output directory.");
398
+ if (isAbsolute(entry) || /^[a-z]:/i.test(entry) || !isInside(source, resolve(source, entry))) throw new Error("The built Worker main entry must be inside its output directory.");
399
399
  if (!existsSync(join(source, main))) throw new Error(`The built Worker main entry ${JSON.stringify(main)} is missing. Rebuild the app.`);
400
- const assetsDirectory = object(raw.assets)?.directory;
400
+ const assetsDirectory = record(raw.assets)?.directory;
401
401
  if (assetsDirectory !== void 0 && typeof assetsDirectory !== "string") return null;
402
402
  const images = [];
403
403
  const directory = mkdtempSync(join(tmpdir(), "void-cf-deploy-"));
404
+ const dispose = async () => {
405
+ rmSync(directory, {
406
+ recursive: true,
407
+ force: true
408
+ });
409
+ await Promise.all(images.map((image) => image.dispose()));
410
+ };
404
411
  try {
405
412
  const bundle = getWorkerBundleDir(directory);
406
413
  mkdirSync(bundle, { recursive: true });
407
414
  const modules = copyBundle(source, bundle);
408
- if (!modules) {
409
- rmSync(directory, {
410
- recursive: true,
411
- force: true
412
- });
413
- return null;
414
- }
415
415
  await writeRootConfig(directory, { accountId }, {
416
416
  isPreview: false,
417
417
  mode: "production"
@@ -445,11 +445,7 @@ async function prepareCfBuildOutput(workerDirectory, accountId) {
445
445
  if (typeof assetsDirectory === "string") {
446
446
  const assetPath = resolve(source, assetsDirectory);
447
447
  if (!existsSync(assetPath)) {
448
- rmSync(directory, {
449
- recursive: true,
450
- force: true
451
- });
452
- await Promise.all(images.map((image) => image.dispose()));
448
+ await dispose();
453
449
  return null;
454
450
  }
455
451
  await writeAssets({
@@ -461,30 +457,16 @@ async function prepareCfBuildOutput(workerDirectory, accountId) {
461
457
  return {
462
458
  directory,
463
459
  ...typeof assetsDirectory === "string" ? { assetsDirectory: resolve(source, assetsDirectory) } : {},
464
- dispose: async () => {
465
- rmSync(directory, {
466
- recursive: true,
467
- force: true
468
- });
469
- await Promise.all(images.map((image) => image.dispose()));
470
- }
460
+ dispose
471
461
  };
472
462
  } catch (error) {
473
- rmSync(directory, {
474
- recursive: true,
475
- force: true
476
- });
477
- await Promise.all(images.map((image) => image.dispose()));
463
+ await dispose();
478
464
  throw error;
479
465
  }
480
466
  }
481
- /** Bundle Void's generated thin static Worker before handing it to cf as prebuilt output. */
482
- async function prepareCfStaticBuildOutput(options) {
483
- const raw = object(JSON.parse(readFileSync(options.configPath, "utf8")));
484
- if (!raw || typeof raw.main !== "string" || basename(raw.main) !== raw.main) return null;
485
- const entry = join(dirname(options.configPath), raw.main);
486
- if (!existsSync(entry)) return null;
487
- const scratch = mkdtempSync(join(tmpdir(), "void-cf-static-"));
467
+ /** Bundle a generated Worker entry with Vite, then hand the result to `prepareCfBuildOutput`. */
468
+ async function prepareBundledBuildOutput(options) {
469
+ const scratch = mkdtempSync(join(tmpdir(), options.scratchPrefix));
488
470
  try {
489
471
  const { build } = await import("vite");
490
472
  await build({
@@ -496,20 +478,18 @@ async function prepareCfStaticBuildOutput(options) {
496
478
  outDir: scratch,
497
479
  emptyOutDir: true,
498
480
  lib: {
499
- entry,
481
+ entry: options.entry,
500
482
  formats: ["es"],
501
483
  fileName: "index"
502
484
  },
485
+ ...options.external ? { rollupOptions: { external: options.external } } : {},
503
486
  target: "es2022"
504
487
  }
505
488
  });
506
489
  writeFileSync(join(scratch, "wrangler.json"), JSON.stringify({
507
- ...raw,
490
+ ...options.config,
508
491
  main: "index.js",
509
- assets: {
510
- ...object(raw.assets),
511
- directory: resolve(options.assetsDirectory)
512
- }
492
+ assets: options.assets
513
493
  }), { mode: 384 });
514
494
  return await prepareCfBuildOutput(scratch, options.accountId);
515
495
  } finally {
@@ -519,16 +499,33 @@ async function prepareCfStaticBuildOutput(options) {
519
499
  });
520
500
  }
521
501
  }
502
+ /** Bundle Void's generated thin static Worker before handing it to cf as prebuilt output. */
503
+ async function prepareCfStaticBuildOutput(options) {
504
+ const raw = record(JSON.parse(readFileSync(options.configPath, "utf8")));
505
+ if (!raw || typeof raw.main !== "string" || basename(raw.main) !== raw.main) return null;
506
+ const entry = join(dirname(options.configPath), raw.main);
507
+ if (!existsSync(entry)) return null;
508
+ return prepareBundledBuildOutput({
509
+ projectRoot: options.projectRoot,
510
+ entry,
511
+ scratchPrefix: "void-cf-static-",
512
+ config: raw,
513
+ assets: {
514
+ ...record(raw.assets),
515
+ directory: resolve(options.assetsDirectory)
516
+ },
517
+ accountId: options.accountId
518
+ });
519
+ }
522
520
  /** Bundle an adapter-produced Worker and copy only its public framework assets. */
523
521
  async function prepareCfFrameworkBuildOutput(options) {
524
- const raw = object(JSON.parse(readFileSync(options.configPath, "utf8")));
525
- const assets = object(raw?.assets);
522
+ const raw = record(JSON.parse(readFileSync(options.configPath, "utf8")));
523
+ const assets = record(raw?.assets);
526
524
  if (!raw || typeof raw.main !== "string" || typeof assets?.directory !== "string") return null;
527
525
  const configDirectory = dirname(options.configPath);
528
526
  const entry = resolve(configDirectory, raw.main);
529
527
  const sourceAssets = resolve(configDirectory, assets.directory);
530
528
  if (!existsSync(entry) || !existsSync(sourceAssets)) return null;
531
- const scratch = mkdtempSync(join(tmpdir(), "void-cf-framework-"));
532
529
  const publicAssets = mkdtempSync(join(tmpdir(), "void-cf-framework-assets-"));
533
530
  try {
534
531
  const ignored = ignore();
@@ -547,47 +544,27 @@ async function prepareCfFrameworkBuildOutput(options) {
547
544
  mkdirSync(dirname(destination), { recursive: true });
548
545
  if (file.isSymbolicLink()) {
549
546
  const target = realpathSync(absolute);
550
- const targetRelative = relative(realAssets, target);
551
- if (targetRelative === ".." || targetRelative.startsWith("../") || isAbsolute(targetRelative)) throw new Error("The framework assets contain a symlink outside the asset directory.");
547
+ if (!isInside(realAssets, target)) throw new Error("The framework assets contain a symlink outside the asset directory.");
552
548
  copyFileSync(target, destination);
553
549
  } else if (file.isFile()) copyFileSync(absolute, destination);
554
550
  }
555
- const { build } = await import("vite");
556
- await build({
557
- configFile: false,
558
- root: options.projectRoot,
559
- publicDir: false,
560
- logLevel: "error",
561
- build: {
562
- outDir: scratch,
563
- emptyOutDir: true,
564
- lib: {
565
- entry,
566
- formats: ["es"],
567
- fileName: "index"
568
- },
569
- rollupOptions: { external: [/^cloudflare:/, /^node:/] },
570
- target: "es2022"
571
- }
572
- });
573
- writeFileSync(join(scratch, "wrangler.json"), JSON.stringify({
574
- ...raw,
575
- main: "index.js",
551
+ const prepared = await prepareBundledBuildOutput({
552
+ projectRoot: options.projectRoot,
553
+ entry,
554
+ scratchPrefix: "void-cf-framework-",
555
+ config: raw,
576
556
  assets: {
577
557
  ...assets,
578
558
  directory: publicAssets
579
- }
580
- }), { mode: 384 });
581
- const prepared = await prepareCfBuildOutput(scratch, options.accountId);
559
+ },
560
+ accountId: options.accountId,
561
+ external: [/^cloudflare:/, /^node:/]
562
+ });
582
563
  return prepared ? {
583
564
  ...prepared,
584
565
  assetsDirectory: sourceAssets
585
566
  } : null;
586
567
  } finally {
587
- rmSync(scratch, {
588
- recursive: true,
589
- force: true
590
- });
591
568
  rmSync(publicAssets, {
592
569
  recursive: true,
593
570
  force: true
@@ -595,4 +572,4 @@ async function prepareCfFrameworkBuildOutput(options) {
595
572
  }
596
573
  }
597
574
  //#endregion
598
- export { migrateBuiltWranglerConfig as i, prepareCfFrameworkBuildOutput as n, prepareCfStaticBuildOutput as r, prepareCfBuildOutput as t };
575
+ export { record as a, migrateBuiltWranglerConfig as i, prepareCfFrameworkBuildOutput as n, prepareCfStaticBuildOutput as r, prepareCfBuildOutput as t };
@@ -0,0 +1,2 @@
1
+ import { t as prepareCfBuildOutput } from "./cf-build-output-DjvB_872.mjs";
2
+ export { prepareCfBuildOutput };
package/dist/cli/cli.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { a as join } from "../dist-BVqXeR_h.mjs";
3
- import { L as log } from "../prompts-6OSVA7DJ.mjs";
3
+ import { L as log } from "../dist-D3m88sjf.mjs";
4
+ import { l as import_picocolors } from "../output-C50ag2r3.mjs";
4
5
  import { n as getPackageDir } from "../agents-B_pX_HmQ.mjs";
5
6
  import { t as formatCloudflareUserMessage } from "../cloudflare-user-output-Q-k0QoNQ.mjs";
6
- import { c as import_picocolors } from "../output-BvdaehtE.mjs";
7
- import { i as printVoidHeader, n as printGlobalHelp, r as printHelpPage, t as getHelpPath } from "../help-Bv44e2tm.mjs";
8
- import { r as OperatorClientError } from "../operator-client-BFqpp6z0.mjs";
9
- import { n as platformSubcommands, t as parsePlatformArgs } from "../platform-args-DSV2p4nY.mjs";
7
+ import { i as printVoidHeader, n as printGlobalHelp, r as printHelpPage, t as getHelpPath } from "../help-CVFBTmBx.mjs";
8
+ import { r as OperatorClientError } from "../operator-client-BQtzyG-g.mjs";
9
+ import { n as platformSubcommands, t as parsePlatformArgs } from "../platform-args-BoZkWQnJ.mjs";
10
10
  import { readFileSync } from "node:fs";
11
11
  import { parseArgs } from "node:util";
12
12
  //#region src/cli/account-args.ts
@@ -137,13 +137,9 @@ function parseAuthArgs(args) {
137
137
  if (!subcommand || ![
138
138
  "login",
139
139
  "logout",
140
- "status",
141
- "whoami",
142
- "link",
143
- "token"
140
+ "status"
144
141
  ].includes(subcommand)) throw new Error("auth: Usage: void auth <login|status|logout> [--platform cloudflare|void].");
145
142
  let platform;
146
- let connectionId;
147
143
  for (let index = 0; index < rest.length; index++) {
148
144
  const value = rest[index];
149
145
  if (value === "--platform") {
@@ -151,14 +147,11 @@ function parseAuthArgs(args) {
151
147
  if (target !== "cloudflare" && target !== "void") throw new Error("auth: --platform must be cloudflare or void.");
152
148
  if (platform) throw new Error("auth: --platform may be supplied only once.");
153
149
  platform = target;
154
- } else if (subcommand === "link" && !connectionId && /^[a-z][a-z0-9_-]{0,63}$/.test(value)) connectionId = value;
155
- else throw new Error(`auth: Unexpected argument '${value}'.`);
150
+ } else throw new Error(`auth: Unexpected argument '${value}'.`);
156
151
  }
157
- if ((subcommand === "link" || subcommand === "token") && platform === "cloudflare") throw new Error(`auth: ${subcommand} belongs to a Void account. Use \`void account ${subcommand}\`.`);
158
152
  return {
159
153
  subcommand,
160
- ...platform ? { platform } : {},
161
- ...connectionId ? { connectionId } : {}
154
+ ...platform ? { platform } : {}
162
155
  };
163
156
  }
164
157
  //#endregion
@@ -886,13 +879,14 @@ function parseRouteArgs(args) {
886
879
  methods
887
880
  };
888
881
  }
889
- function parseMiddlewareArgs(args) {
882
+ /** Shared parser for the single-name generators whose names may contain hyphens. */
883
+ function parseHyphenatedNameArgs(args, subcommand, label) {
890
884
  const [name, extra] = args;
891
- if (!name) throw new Error("gen: Usage: void gen middleware <name>.");
885
+ if (!name) throw new Error(`gen: Usage: void gen ${subcommand} <name>.`);
892
886
  if (extra) throw new Error(`gen: Unexpected argument '${extra}'.`);
893
- if (!NAME_WITH_HYPHENS_RE.test(name)) throw new Error("gen: Middleware name must be lowercase alphanumeric with underscores or hyphens and no leading digits.");
887
+ if (!NAME_WITH_HYPHENS_RE.test(name)) throw new Error(`gen: ${label} name must be lowercase alphanumeric with underscores or hyphens and no leading digits.`);
894
888
  return {
895
- subcommand: "middleware",
889
+ subcommand,
896
890
  name
897
891
  };
898
892
  }
@@ -921,35 +915,15 @@ function parseSsrArgs(args) {
921
915
  framework: frameworks[0]
922
916
  };
923
917
  }
924
- function parseCronArgs(args) {
925
- const [name, extra] = args;
926
- if (!name) throw new Error("gen: Usage: void gen cron <name>.");
927
- if (extra) throw new Error(`gen: Unexpected argument '${extra}'.`);
928
- if (!NAME_WITH_HYPHENS_RE.test(name)) throw new Error("gen: Cron name must be lowercase alphanumeric with underscores or hyphens and no leading digits.");
929
- return {
930
- subcommand: "cron",
931
- name
932
- };
933
- }
934
- function parseQueueArgs(args) {
935
- const [name, extra] = args;
936
- if (!name) throw new Error("gen: Usage: void gen queue <name>.");
937
- if (extra) throw new Error(`gen: Unexpected argument '${extra}'.`);
938
- if (!NAME_WITH_HYPHENS_RE.test(name)) throw new Error("gen: Queue name must be lowercase alphanumeric with underscores or hyphens and no leading digits.");
939
- return {
940
- subcommand: "queue",
941
- name
942
- };
943
- }
944
918
  function parseGenArgs(args) {
945
919
  const [subcommand, ...rest] = args;
946
920
  if (subcommand === "model") return parseModelArgs(rest);
947
921
  if (subcommand === "migration") return parseMigrationArgs(rest);
948
922
  if (subcommand === "route") return parseRouteArgs(rest);
949
- if (subcommand === "middleware") return parseMiddlewareArgs(rest);
923
+ if (subcommand === "middleware") return parseHyphenatedNameArgs(rest, "middleware", "Middleware");
950
924
  if (subcommand === "ssr") return parseSsrArgs(rest);
951
- if (subcommand === "cron") return parseCronArgs(rest);
952
- if (subcommand === "queue") return parseQueueArgs(rest);
925
+ if (subcommand === "cron") return parseHyphenatedNameArgs(rest, "cron", "Cron");
926
+ if (subcommand === "queue") return parseHyphenatedNameArgs(rest, "queue", "Queue");
953
927
  throw new Error("gen: Usage: void gen <model|migration|route|middleware|ssr|cron|queue>.");
954
928
  }
955
929
  //#endregion
@@ -1613,7 +1587,7 @@ async function runSubcommandGroup(command, subcommands, parse, run) {
1613
1587
  const hasNamedSubcommand = args.slice(1).some((arg) => subcommands.some(({ name }) => name === arg));
1614
1588
  try {
1615
1589
  if ((!sub || sub.startsWith("-") && !hasNamedSubcommand) && process.stdin.isTTY) {
1616
- const { promptSubcommand } = await import("../subcommand-prompt-B6WS9Aoz.mjs");
1590
+ const { promptSubcommand } = await import("../subcommand-prompt-BSlnD1fI.mjs");
1617
1591
  if (command === "platform" && !sub) log.info("A Void platform lets a team deploy Void apps to a shared Cloudflare account.\nThis command sets up and manages platforms. Join with `void connect <url>`.\nDocs: https://void.cloud/guide/self-hosted-platform");
1618
1592
  const result = await promptSubcommand(command, subcommands);
1619
1593
  if (!result) process.exit(0);
@@ -1638,6 +1612,21 @@ async function runSubcommandGroup(command, subcommands, parse, run) {
1638
1612
  const args = process.argv.slice(2);
1639
1613
  const command = args[0];
1640
1614
  const helpPath = getHelpPath(args);
1615
+ const subcommandGroups = {
1616
+ auth: () => runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-router-Bap-pvbn.mjs").then(({ runAuthRouter }) => runAuthRouter(root, parsed))),
1617
+ account: () => runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (root, parsed) => import("../account-cmd-CfUXh_nU.mjs").then(({ runAccountCommand }) => runAccountCommand(root, parsed))),
1618
+ platform: () => runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-C00YM14r.mjs").then(({ runPlatformCommand }) => runPlatformCommand(root, parsed))),
1619
+ cloudflare: () => runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (root, parsed) => import("../cloudflare-cmd-lHqNlJGW.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(root, parsed))),
1620
+ project: () => runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-ti8_yTcA.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed))),
1621
+ secret: () => runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-BAt2KMmO.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed))),
1622
+ domain: () => runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-CbbBWhWE.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed))),
1623
+ email: () => runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-CpuT42g7.mjs").then(({ runEmailCommand }) => runEmailCommand(root, parsed))),
1624
+ db: () => runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-XnVMHzoV.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed))),
1625
+ env: () => runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-w9jOyGZn.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed))),
1626
+ gen: () => runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-dA9hW7AV.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed))),
1627
+ github: () => runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-D_FsOFxq.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed))),
1628
+ build: () => runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-B58c8iS8.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)))
1629
+ };
1641
1630
  if (helpPath) {
1642
1631
  if (helpPath.length === 0) printGlobalHelp();
1643
1632
  else try {
@@ -1655,7 +1644,7 @@ if (helpPath) {
1655
1644
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
1656
1645
  process.exit(1);
1657
1646
  }
1658
- import("../deploy-qmiLE1G1.mjs").then(({ runDeploy }) => {
1647
+ import("../deploy-C1d-YTfp.mjs").then(({ runDeploy }) => {
1659
1648
  runDeploy(root, {
1660
1649
  projectSlug: deployArgs.projectSlug,
1661
1650
  dir: deployArgs.dir,
@@ -1673,26 +1662,14 @@ if (helpPath) {
1673
1662
  });
1674
1663
  } else if (command === "connect") (async () => {
1675
1664
  const parsed = parseConnectArgs(args.slice(1));
1676
- const { runConnectCommand } = await import("../connect-H6EvP62X.mjs");
1665
+ const { runConnectCommand } = await import("../connect-X0MUA1gk.mjs");
1677
1666
  await runConnectCommand(process.cwd(), parsed);
1678
1667
  })().catch((err) => {
1679
1668
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
1680
1669
  process.exit(1);
1681
1670
  });
1682
- else if (command === "auth") runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-router-BRxIuqDi.mjs").then(({ runAuthRouter }) => runAuthRouter(root, parsed)));
1683
- else if (command === "account") runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (root, parsed) => import("../account-cmd-CDry3B5V.mjs").then(({ runAccountCommand }) => runAccountCommand(root, parsed)));
1684
- else if (command === "platform") runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-dyFUof0t.mjs").then(({ runPlatformCommand }) => runPlatformCommand(root, parsed)));
1685
- else if (command === "cloudflare") runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (root, parsed) => import("../cloudflare-cmd-bhwCxAN6.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(root, parsed)));
1686
- else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-BbH2LptN.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed)));
1687
- else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-AKnNXNP5.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed)));
1688
- else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-B_9VgOm6.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed)));
1689
- else if (command === "email") runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-BokHgjKj.mjs").then(({ runEmailCommand }) => runEmailCommand(root, parsed)));
1690
- else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-DpCKZto0.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
1691
- else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-BdTc-K2L.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
1692
- else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-qCBwH3fZ.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed)));
1693
- else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-hhkTzlGS.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
1694
- else if (command === "build") runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-Ce3C8huo.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)));
1695
- else if (command === "info") import("../info-DhtTKh65.mjs").then(async ({ runInfoCommand }) => {
1671
+ else if (command && Object.hasOwn(subcommandGroups, command)) subcommandGroups[command]();
1672
+ else if (command === "info") import("../info-PYWwkWyt.mjs").then(async ({ runInfoCommand }) => {
1696
1673
  try {
1697
1674
  await runInfoCommand(process.cwd(), parseInfoArgs(args.slice(1)));
1698
1675
  } catch (err) {
@@ -1714,7 +1691,7 @@ else if (command === "prepare") {
1714
1691
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
1715
1692
  process.exit(1);
1716
1693
  }
1717
- import("../prepare-BMrRWLwP.mjs").then(({ runPrepareCommand }) => {
1694
+ import("../prepare-Dq9hTIbo.mjs").then(({ runPrepareCommand }) => {
1718
1695
  runPrepareCommand(root, prepareArgs).catch((err) => {
1719
1696
  log.error(formatCloudflareUserMessage(err.message ?? String(err)));
1720
1697
  process.exit(1);
@@ -1722,7 +1699,7 @@ else if (command === "prepare") {
1722
1699
  });
1723
1700
  } else if (command === "init") {
1724
1701
  const root = process.cwd();
1725
- import("../init-BMf4T03q.mjs").then(({ runInitCommand, parseInitArgs }) => {
1702
+ import("../init-Bw-fRKGp.mjs").then(({ runInitCommand, parseInitArgs }) => {
1726
1703
  let initArgs;
1727
1704
  try {
1728
1705
  initArgs = parseInitArgs(args.slice(1));
@@ -1740,7 +1717,7 @@ else if (command === "prepare") {
1740
1717
  log.error("migrate: This command takes no arguments.");
1741
1718
  process.exit(1);
1742
1719
  }
1743
- import("../migrate-CEu2X5DB.mjs").then(({ runMigrateCommand }) => {
1720
+ import("../migrate-BHp07yJE.mjs").then(({ runMigrateCommand }) => {
1744
1721
  runMigrateCommand(process.cwd()).catch((err) => {
1745
1722
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
1746
1723
  process.exit(1);
@@ -1756,7 +1733,7 @@ else if (command === "prepare") {
1756
1733
  const topLevelCommands = [
1757
1734
  {
1758
1735
  name: "init",
1759
- hint: "--agents | --tsconfig | --github | --git | --no-git",
1736
+ hint: "--tsconfig | --github | --git | --no-git",
1760
1737
  description: "Set up void in a new or existing project"
1761
1738
  },
1762
1739
  {
@@ -1852,52 +1829,40 @@ else if (command === "prepare") {
1852
1829
  ];
1853
1830
  (async () => {
1854
1831
  printVoidHeader();
1855
- const { promptSubcommand } = await import("../subcommand-prompt-B6WS9Aoz.mjs");
1832
+ const { promptSubcommand } = await import("../subcommand-prompt-BSlnD1fI.mjs");
1856
1833
  const result = await promptSubcommand("", topLevelCommands);
1857
1834
  if (!result) process.exit(0);
1858
1835
  const cmd = result.subcommand;
1859
1836
  const root = process.cwd();
1837
+ if (Object.hasOwn(subcommandGroups, cmd)) return subcommandGroups[cmd]();
1860
1838
  switch (cmd) {
1861
1839
  case "connect": {
1862
- const { runConnectCommand } = await import("../connect-H6EvP62X.mjs");
1840
+ const { runConnectCommand } = await import("../connect-X0MUA1gk.mjs");
1863
1841
  await runConnectCommand(root, parseConnectArgs([]));
1864
1842
  return;
1865
1843
  }
1866
1844
  case "init": {
1867
- const { runInitCommand, parseInitArgs } = await import("../init-BMf4T03q.mjs");
1845
+ const { runInitCommand, parseInitArgs } = await import("../init-Bw-fRKGp.mjs");
1868
1846
  await runInitCommand(root, parseInitArgs([]));
1869
1847
  return;
1870
1848
  }
1871
1849
  case "migrate": {
1872
- const { runMigrateCommand } = await import("../migrate-CEu2X5DB.mjs");
1850
+ const { runMigrateCommand } = await import("../migrate-BHp07yJE.mjs");
1873
1851
  await runMigrateCommand(root);
1874
1852
  return;
1875
1853
  }
1876
1854
  case "deploy": {
1877
- const { runDeploy } = await import("../deploy-qmiLE1G1.mjs");
1855
+ const { runDeploy } = await import("../deploy-C1d-YTfp.mjs");
1878
1856
  await runDeploy(root);
1879
1857
  return;
1880
1858
  }
1881
- case "auth": return runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (r, p) => import("../auth-router-BRxIuqDi.mjs").then(({ runAuthRouter }) => runAuthRouter(r, p)));
1882
- case "account": return runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (r, p) => import("../account-cmd-CDry3B5V.mjs").then(({ runAccountCommand }) => runAccountCommand(r, p)));
1883
- case "platform": return runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (r, p) => import("../platform-cmd-dyFUof0t.mjs").then(({ runPlatformCommand }) => runPlatformCommand(r, p)));
1884
- case "cloudflare": return runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (r, p) => import("../cloudflare-cmd-bhwCxAN6.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(r, p)));
1885
- case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-BbH2LptN.mjs").then(({ runProjectCommand }) => runProjectCommand(r, p)));
1886
- case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-AKnNXNP5.mjs").then(({ runSecretCommand }) => runSecretCommand(r, p)));
1887
- case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-B_9VgOm6.mjs").then(({ runDomainCommand }) => runDomainCommand(r, p)));
1888
- case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-hhkTzlGS.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
1889
- case "build": return runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (r, p) => import("../build-cmd-Ce3C8huo.mjs").then(({ runBuildCommand }) => runBuildCommand(r, p)));
1890
- case "email": return runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (r, p) => import("../email-BokHgjKj.mjs").then(({ runEmailCommand }) => runEmailCommand(r, p)));
1891
- case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-DpCKZto0.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
1892
- case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-BdTc-K2L.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
1893
- case "gen": return runSubcommandGroup("gen", genSubcommands, parseGenArgs, (r, p) => import("../gen-qCBwH3fZ.mjs").then(({ runGenCommand }) => runGenCommand(r, p)));
1894
1859
  case "info": {
1895
- const { runInfoCommand } = await import("../info-DhtTKh65.mjs");
1860
+ const { runInfoCommand } = await import("../info-PYWwkWyt.mjs");
1896
1861
  await runInfoCommand(root, parseInfoArgs([]));
1897
1862
  return;
1898
1863
  }
1899
1864
  case "prepare": {
1900
- const { runPrepareCommand } = await import("../prepare-BMrRWLwP.mjs");
1865
+ const { runPrepareCommand } = await import("../prepare-Dq9hTIbo.mjs");
1901
1866
  await runPrepareCommand(root, parsePrepareArgs([]));
1902
1867
  return;
1903
1868
  }