void 0.27.0 → 0.28.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 (283) hide show
  1. package/README.md +3 -1
  2. package/dist/{account-cmd-l-FM7Ioq.mjs → account-cmd-Ci00cncT.mjs} +5 -5
  3. package/dist/{agents-B_pX_HmQ.mjs → agents-CuNtT0D_.mjs} +5 -2
  4. package/dist/{application-analysis-DKy02UY0.mjs → application-analysis-D72ZQfMZ.mjs} +118 -135
  5. package/dist/{application-routing-DQyUh_5S.mjs → application-routing-Dy589Vgn.mjs} +1 -2
  6. package/dist/atomic-write-Dq6R0BPN.mjs +18 -0
  7. package/dist/{auth-Dn2vw-SG.mjs → auth-B6iOCjKI.mjs} +23 -56
  8. package/dist/{auth-link-vz9Z2kmG.mjs → auth-link-DWr6Afao.mjs} +10 -10
  9. package/dist/{auth-migrations-BwHgeEsD.mjs → auth-migrations-Cgs0k6lS.mjs} +28 -5
  10. package/dist/{auth-router-DvsCUVw4.mjs → auth-router-DP14wVkZ.mjs} +4 -4
  11. package/dist/auth-wn6F8dB8.mjs +2 -0
  12. package/dist/base64-DVrOndmI.mjs +16 -0
  13. package/dist/{better-auth-shared-CPvWD3nG.d.mts → better-auth-shared-B74NJIus.d.mts} +8 -13
  14. package/dist/{better-auth-shared-DPpj8zxc.mjs → better-auth-shared-CMXlZG7W.mjs} +56 -68
  15. package/dist/{build-cmd-D6we0VjO.mjs → build-cmd-Cr3FJxv0.mjs} +5 -5
  16. package/dist/{cache-CZRdzKx1.mjs → cache-D0Tt28cn.mjs} +5 -5
  17. package/dist/{cancel-deploy-CQ3NnMvf.mjs → cancel-deploy-CJKvk7AN.mjs} +4 -4
  18. package/dist/{cf-access-TWNzXltp.mjs → cf-access-BM9G0lhO.mjs} +4 -3
  19. package/dist/{cf-access-BcIBSKqG.mjs → cf-access-CWP4avfP.mjs} +3 -7
  20. package/dist/cf-build-output-2u583yJK.mjs +2 -0
  21. package/dist/{cf-build-output-DjvB_872.mjs → cf-build-output-Bc8i3dzE.mjs} +2 -2
  22. package/dist/cf-user-agent-ChjQp2MU.mjs +33 -0
  23. package/dist/cli/cli.mjs +198 -311
  24. package/dist/cli/cloudflare-operation-process.mjs +41 -15
  25. package/dist/cli/env-schema-probe.d.mts +5 -43
  26. package/dist/cli/env-schema-probe.mjs +14 -80
  27. package/dist/client-C1BjRn3g.mjs +2 -0
  28. package/dist/{client-DlDJuY0s.mjs → client-DM9Kcf4e.mjs} +161 -415
  29. package/dist/{cloudflare-auth-CuxfF6OA.mjs → cloudflare-auth-CqFBDo52.mjs} +12 -39
  30. package/dist/{cloudflare-cmd-lHqNlJGW.mjs → cloudflare-cmd-CTrn-lXJ.mjs} +6 -5
  31. package/dist/{cloudflare-config-BmhBv3HV.mjs → cloudflare-config-DV60XFFK.mjs} +16 -28
  32. package/dist/{cloudflare-connect-2G3rL2rP.mjs → cloudflare-connect-BosmCNlq.mjs} +3 -3
  33. package/dist/{cloudflare-operations-CwI1bChl.mjs → cloudflare-operations-BKdSfNBN.mjs} +26 -34
  34. package/dist/{cloudflare-operations-BlYLlowZ.mjs → cloudflare-operations-Ds-lX3Ts.mjs} +1 -1
  35. package/dist/{cloudflare-process-2-TfIEzB.mjs → cloudflare-process-CeDWJRhj.mjs} +12 -7
  36. package/dist/collect-NUlJMpLY.mjs +2 -0
  37. package/dist/{collect-DiTn9yr6.mjs → collect-xjffdCdk.mjs} +1 -1
  38. package/dist/{config-CSa15FvD.d.mts → config-7qoq2p9v.d.mts} +2 -2
  39. package/dist/{config-CLYAosnQ.mjs → config-BEm9vRvS.mjs} +11 -5
  40. package/dist/{config-DiowPT80.mjs → config-Bx_1SpnO.mjs} +87 -177
  41. package/dist/config-CNnrSMYm.mjs +2 -0
  42. package/dist/{config-DPByhVck.mjs → config-D0GY5ItR.mjs} +1 -1
  43. package/dist/config-entry.d.mts +1 -1
  44. package/dist/{connect-BfPBHHm-.mjs → connect-nukQSoEO.mjs} +8 -8
  45. package/dist/{create-project-BdXEFKal.mjs → create-project-D4APeBwX.mjs} +7 -7
  46. package/dist/{create-project-qFDC45zg.mjs → create-project-DL7YXpjj.mjs} +1 -1
  47. package/dist/{db-Xs80hcaA.mjs → db-27RztQLy.mjs} +173 -263
  48. package/dist/{delete-d2vuou3j.mjs → delete-BbsZFZIw.mjs} +5 -5
  49. package/dist/deploy-B06EQq4t.mjs +6009 -0
  50. package/dist/deploy-Db2ALnQP.mjs +3 -0
  51. package/dist/deploy-managed-static-CGswbcay.mjs +2277 -0
  52. package/dist/deploy-transport-BiicfoQW.mjs +180 -0
  53. package/dist/deploy.d.mts +10 -0
  54. package/dist/deploy.mjs +82 -0
  55. package/dist/dev-inbox-Rd6j_8vM.mjs +217 -0
  56. package/dist/discover-CTUiSsfG.mjs +2 -0
  57. package/dist/{discover-CkCYv9T_.mjs → discover-D2PGT63u.mjs} +2 -2
  58. package/dist/{dist-BVqXeR_h.mjs → dist-ipQi0Q8y.mjs} +2 -3
  59. package/dist/{domain-BsDUBAvt.mjs → domain-Bfq9n03H.mjs} +7 -22
  60. package/dist/{dotenv-BfU6eqFt.mjs → dotenv-CNazY3-w.mjs} +4 -16
  61. package/dist/{email-d_Aux1vM.mjs → email-BcjSyAL0.mjs} +4 -20
  62. package/dist/{email-_lGAHOhp.mjs → email-DIwaQU4P.mjs} +99 -191
  63. package/dist/email-cloudflare-CH053RxK.mjs +1096 -0
  64. package/dist/email-protocol-D9nTvhCp.mjs +82 -0
  65. package/dist/{entry-CMAkqBmU.mjs → entry-ehmBvs5w.mjs} +2 -2
  66. package/dist/{env-BxocywBB.mjs → env-BJjULvL0.mjs} +2 -2
  67. package/dist/{env-DMA3cXZt.mjs → env-BhdWMrNy.mjs} +2 -13
  68. package/dist/{env-C74QepDE.mjs → env-C6ipBLp3.mjs} +8 -8
  69. package/dist/{env-public-DR7ZM6d-.d.mts → env-public-CCdykygU.d.mts} +6 -23
  70. package/dist/{env-raw-jZpP5n47.mjs → env-raw-Cklzcde3.mjs} +3 -20
  71. package/dist/{env-types-CwXgeMgL.mjs → env-types-DS2_y4X8.mjs} +2 -2
  72. package/dist/{env-validation-CrVNjsPm.mjs → env-validation-CTn-HhG1.mjs} +1 -1
  73. package/dist/env-validation-cE0zcmzO.mjs +486 -0
  74. package/dist/{gen-DtkQhvQg.mjs → gen-CnN1Xidx.mjs} +131 -253
  75. package/dist/gen-F8pSZnhc.mjs +2 -0
  76. package/dist/{generate-GDbL7sUr.mjs → generate-Dat0UTry.mjs} +38 -4
  77. package/dist/generate-Rii9klHB.mjs +2 -0
  78. package/dist/generated-wrangler-config-DeWj5F9Y.mjs +18 -0
  79. package/dist/{github-cmd-DaDdBbSS.mjs → github-cmd-BdkU4Nhe.mjs} +27 -71
  80. package/dist/{handler-BHAn2fZJ.mjs → handler-BZ1t7-Rv.mjs} +2 -2
  81. package/dist/{handler-CNAwjRcW.d.mts → handler-_PqY82xe.d.mts} +1 -1
  82. package/dist/{headers-DlfR78Nu.mjs → headers-Di1FsD3e.mjs} +26 -81
  83. package/dist/{help-0bTe_lID.mjs → help-Bug7pyK_.mjs} +18 -10
  84. package/dist/help-s9q7LTcu.mjs +2 -0
  85. package/dist/{inbound-PfQDLXc5.mjs → inbound-DmkTQeWp.mjs} +71 -222
  86. package/dist/{inbound-CH5Mksyy.d.mts → inbound-brj2-TM5.d.mts} +19 -58
  87. package/dist/index.d.mts +2 -18
  88. package/dist/index.mjs +200 -496
  89. package/dist/{info-PYWwkWyt.mjs → info-CujPwtMe.mjs} +5 -5
  90. package/dist/{init-DaBGmaXC.mjs → init-ZWOJvc-Z.mjs} +179 -388
  91. package/dist/isr-config-DPjXM8J2.mjs +194 -0
  92. package/dist/{link-C6fjafep.mjs → link-UEc7bnF4.mjs} +8 -8
  93. package/dist/{list-BTFBlqKl.mjs → list-CuWeOnzk.mjs} +6 -17
  94. package/dist/{live-CgQuTpqD.mjs → live-BxLX-JqJ.mjs} +19 -17
  95. package/dist/{live-Du8jXwOW.d.mts → live-DJONVlQK.d.mts} +1 -1
  96. package/dist/load-user-env-DD5qveNU.mjs +49 -0
  97. package/dist/{local-d1-ga5O_idV.mjs → local-d1-BM3p74mm.mjs} +6 -6
  98. package/dist/{login-GKcNUmtI.mjs → login-CZ2Cqa-D.mjs} +11 -11
  99. package/dist/login-DhK7o1oJ.mjs +2 -0
  100. package/dist/{logs-BiMSULmc.mjs → logs-TihRcLTk.mjs} +5 -5
  101. package/dist/migrate-BgT-hmu8.mjs +2 -0
  102. package/dist/{migrate-NLsjBbuM.mjs → migrate-uFwojusJ.mjs} +69 -21
  103. package/dist/migration-handler-Cg0Y4EPu.mjs +470 -0
  104. package/dist/{migration-handler-DM4clYj5.d.mts → migration-handler-CwlEQUoo.d.mts} +17 -26
  105. package/dist/{mime-DxCznlJq.mjs → mime-srOklVVv.mjs} +92 -395
  106. package/dist/{node-DJicPvPj.mjs → node-DoKbo1SZ.mjs} +8 -24
  107. package/dist/{operator-args-DOBhIaIg.mjs → operator-args-UnE8Y2eK.mjs} +27 -26
  108. package/dist/{operator-auth-BEZ_u0Cz.mjs → operator-auth-Cr2zCc-J.mjs} +2 -2
  109. package/dist/{operator-client-DbDv4vtE.mjs → operator-client-C-ROjk1I.mjs} +4 -4
  110. package/dist/{operator-cmd-BT4hgavL.mjs → operator-cmd-C5lCctnc.mjs} +8 -8
  111. package/dist/operator-cmd-Cjk5DiRx.mjs +2 -0
  112. package/dist/{output-C50ag2r3.mjs → output-FNHKw5Ac.mjs} +36 -5
  113. package/dist/{package-json-DXfiT1jV.mjs → package-json-BjYqR-So.mjs} +1 -1
  114. package/dist/pages/client.d.mts +1 -1
  115. package/dist/pages/client.mjs +91 -5
  116. package/dist/pages/index.d.mts +1 -2
  117. package/dist/pages/index.mjs +6 -6
  118. package/dist/pages/islands-plugin.mjs +5 -83
  119. package/dist/pages/protocol.d.mts +2 -2
  120. package/dist/pages/protocol.mjs +1 -1
  121. package/dist/pages/serialize.mjs +1 -1
  122. package/dist/{platform-args-DUeXY9Om.mjs → platform-args-C6Mb_I3a.mjs} +34 -58
  123. package/dist/platform-args-Cm7x-fot.mjs +2 -0
  124. package/dist/{platform-auth-config-CkSx3usH.mjs → platform-auth-config-CJmNkFT2.mjs} +10 -11
  125. package/dist/{platform-auth-protection-BJimB_p9.mjs → platform-auth-protection-D5wvsI-Y.mjs} +36 -26
  126. package/dist/{platform-auth-recovery-BU6izFAU.mjs → platform-auth-recovery-D_0I3n-1.mjs} +8 -9
  127. package/dist/{platform-cmd-BbmJiq5O.mjs → platform-cmd-Cuj4oUVo.mjs} +1 -1
  128. package/dist/{platform-cmd-BbY1dWiM.mjs → platform-cmd-DxxZO6e5.mjs} +15 -15
  129. package/dist/{platform-discovery-DIYz8V63.mjs → platform-discovery-CHhNs8Nn.mjs} +1 -1
  130. package/dist/{platform-domain-CHVS6cV0.mjs → platform-domain-zLXnW1G_.mjs} +5 -5
  131. package/dist/{platform-lifecycle-DzCwqhFq.mjs → platform-lifecycle-DOW-wLfx.mjs} +1398 -2043
  132. package/dist/{platform-lifecycle-ByAlpkhV.mjs → platform-lifecycle-_gfnjUBr.mjs} +1 -1
  133. package/dist/{platform-management-CBOT4BSM.mjs → platform-management-CYrLvTGH.mjs} +1 -1
  134. package/dist/{platform-management-CuuVDhyt.mjs → platform-management-t7HKy4-U.mjs} +632 -124
  135. package/dist/{platform-plans-config-CN-heS4q.mjs → platform-plans-config-CNH6zbPX.mjs} +15 -11
  136. package/dist/{platform-recovery-CskSJgLh.mjs → platform-recovery-DeucI7A9.mjs} +6 -9
  137. package/dist/{platform-registry-Cjv2Qf0r.mjs → platform-registry-B9mWX9LO.mjs} +13 -18
  138. package/dist/{platform-setup-BBxRxmFC.mjs → platform-setup-CTf6MMT9.mjs} +19 -26
  139. package/dist/{plugin-inference-BlQbOL0P.mjs → plugin-inference-DsARdQKE.mjs} +18 -33
  140. package/dist/{prepare-Dq9hTIbo.mjs → prepare-C4zfwks4.mjs} +3 -3
  141. package/dist/{prepare-Do96654b.mjs → prepare-CSH9dKTI.mjs} +11 -13
  142. package/dist/prepare-dr9uxQSV.mjs +2 -0
  143. package/dist/{prerender-render-Ct20jftc.mjs → prerender-render-Bfsumdkv.mjs} +8 -2
  144. package/dist/prerender-render.d.mts +2 -0
  145. package/dist/prerender-render.mjs +2 -2
  146. package/dist/project-DiiOBZPF.mjs +2 -0
  147. package/dist/{project-cmd-DaoRrn-8.mjs → project-cmd-Dq75AXzy.mjs} +19 -19
  148. package/dist/{project-paths-GgcMozYz.mjs → project-paths-DMvEeSau.mjs} +9 -14
  149. package/dist/{project-BAm2aB6Q.mjs → project-rqDnVsJN.mjs} +8 -4
  150. package/dist/{project-team-Q_lCA7Io.mjs → project-team-B3_QcStG.mjs} +6 -6
  151. package/dist/{project-token-BArgK9o1.mjs → project-token-CvsRvv2I.mjs} +5 -5
  152. package/dist/{project-tsconfig-CVJhNMxs.mjs → project-tsconfig-bveqhlYA.mjs} +3 -5
  153. package/dist/{project-zero-trust-KO9Hu2Pq.mjs → project-zero-trust-D1ICiwN_.mjs} +5 -5
  154. package/dist/{protocol-BPZaNqBo.d.mts → protocol-4H7V_3Os.d.mts} +1 -1
  155. package/dist/{protocol-CfaUwNs8.mjs → protocol-RNP0u7UY.mjs} +9 -3
  156. package/dist/{provision-BfaLiWbj.mjs → provision-DDh7ITVS.mjs} +118 -865
  157. package/dist/{requests-C7Oeoh5u.mjs → requests-3CL3BuZh.mjs} +4 -4
  158. package/dist/resolve-project-B9Hr0D3n.mjs +2 -0
  159. package/dist/resolve-project-C_Cu7E8a.mjs +48 -0
  160. package/dist/{rollback-DVAtrLAl.mjs → rollback-Ce1d_0J9.mjs} +7 -17
  161. package/dist/{route-types-CbtsIeFn.mjs → route-types-IrBuwJ7u.mjs} +35 -70
  162. package/dist/routing-assets-VkrKIbxE.mjs +139 -0
  163. package/dist/{runner-9wjsSZx-.mjs → runner-B5huK2eC.mjs} +1 -1
  164. package/dist/{runner-DMBKSrRk.mjs → runner-DcVDrzuR.mjs} +7 -28
  165. package/dist/{runner-mysql-CEzKtmFb.mjs → runner-mysql-CCtyI0p6.mjs} +4 -3
  166. package/dist/runner-mysql-CaJq-hd6.mjs +2 -0
  167. package/dist/runner-pg-BJhFZZG4.mjs +2 -0
  168. package/dist/{runner-pg-DV8p_zjA.mjs → runner-pg-CPd-CB_F.mjs} +1 -1
  169. package/dist/runtime/ai.mjs +9 -22
  170. package/dist/runtime/better-auth-mysql.d.mts +2 -5
  171. package/dist/runtime/better-auth-mysql.mjs +6 -31
  172. package/dist/runtime/better-auth-pg.d.mts +2 -5
  173. package/dist/runtime/better-auth-pg.mjs +6 -32
  174. package/dist/runtime/better-auth.d.mts +2 -4
  175. package/dist/runtime/better-auth.mjs +9 -19
  176. package/dist/runtime/db.mjs +1 -1
  177. package/dist/runtime/durable.d.mts +16 -0
  178. package/dist/runtime/durable.mjs +26 -2
  179. package/dist/runtime/email/testing.d.mts +1 -1
  180. package/dist/runtime/email/testing.mjs +9 -23
  181. package/dist/runtime/email-protocol.d.mts +12 -0
  182. package/dist/runtime/email-protocol.mjs +2 -70
  183. package/dist/runtime/email.d.mts +1 -1
  184. package/dist/runtime/email.mjs +79 -221
  185. package/dist/runtime/env-public.d.mts +1 -1
  186. package/dist/runtime/env-public.mjs +12 -38
  187. package/dist/runtime/env.d.mts +1 -12
  188. package/dist/runtime/env.mjs +1 -1
  189. package/dist/runtime/handler.d.mts +1 -1
  190. package/dist/runtime/handler.mjs +1 -1
  191. package/dist/runtime/isr.mjs +1 -1
  192. package/dist/runtime/kv.mjs +1 -1
  193. package/dist/runtime/live-client.d.mts +1 -1
  194. package/dist/runtime/live-server.mjs +1 -16
  195. package/dist/runtime/live.d.mts +1 -1
  196. package/dist/runtime/live.mjs +1 -1
  197. package/dist/runtime/migration-handler-mysql.d.mts +2 -2
  198. package/dist/runtime/migration-handler-mysql.mjs +3 -2
  199. package/dist/runtime/migration-handler-pg.d.mts +2 -2
  200. package/dist/runtime/migration-handler-pg.mjs +1 -1
  201. package/dist/runtime/migration-handler.d.mts +2 -2
  202. package/dist/runtime/migration-handler.mjs +2 -470
  203. package/dist/runtime/queues.mjs +1 -1
  204. package/dist/runtime/remote/binding-handler.mjs +62 -62
  205. package/dist/runtime/remote/index.mjs +16 -77
  206. package/dist/runtime/routing.d.mts +1 -4
  207. package/dist/runtime/routing.mjs +82 -218
  208. package/dist/runtime/sandbox-container.d.mts +2 -2
  209. package/dist/runtime/sandbox-container.mjs +2 -2
  210. package/dist/runtime/sandbox.d.mts +2 -2
  211. package/dist/runtime/sandbox.mjs +13 -6
  212. package/dist/runtime/storage.mjs +1 -1
  213. package/dist/runtime/validator.d.mts +1 -1
  214. package/dist/runtime/ws-server.d.mts +2 -3
  215. package/dist/runtime/ws-server.mjs +6 -28
  216. package/dist/runtime/ws.d.mts +1 -1
  217. package/dist/{sandbox-container-Bo0eiFKz.d.mts → sandbox-container-ChQRum-j.d.mts} +3 -1
  218. package/dist/{sandbox-container-C6ItmVuN.mjs → sandbox-container-DBKIqDEK.mjs} +12 -1
  219. package/dist/{sandbox-C5LFoJMf.d.mts → sandbox-q3waMc2T.d.mts} +1 -1
  220. package/dist/{scan-C3uDzz6J.mjs → scan-C0BMdmEd.mjs} +84 -7
  221. package/dist/{secret-BvtB7IjY.mjs → secret-B5J8bBsI.mjs} +62 -80
  222. package/dist/{serialize-BPvnNQuA.mjs → serialize-BtQyaYoC.mjs} +10 -4
  223. package/dist/{skills-BgVMvQdy.mjs → skills-BJsan98C.mjs} +2 -2
  224. package/dist/{subcommand-prompt-BSlnD1fI.mjs → subcommand-prompt-gQ-NDA-u.mjs} +38 -43
  225. package/dist/sveltekit.mjs +1 -1
  226. package/dist/validate-C9xtFOYR.mjs +2 -0
  227. package/dist/{validate-C9qJArv7.mjs → validate-CheZGRE7.mjs} +4 -8
  228. package/dist/version-metadata-DIrqEHQo.mjs +73 -0
  229. package/dist/{wrangler-D9KTuqnv.mjs → wrangler-BYs07Rxy.mjs} +119 -378
  230. package/dist/{ws-CChrrAU-.d.mts → ws-aKVYB-fA.d.mts} +1 -1
  231. package/dist/yarn-pnp-DLbEFMT0.mjs +92 -0
  232. package/docs/guide/auth.md +2 -0
  233. package/docs/guide/database/postgresql.md +2 -0
  234. package/docs/guide/database.md +2 -0
  235. package/docs/guide/durable-state.md +24 -0
  236. package/docs/guide/platform/administration/access.md +4 -0
  237. package/docs/guide/platform/administration/connected-apps.md +55 -0
  238. package/docs/guide/platform/installation/credentials.md +3 -1
  239. package/docs/guide/quickstart.md +2 -0
  240. package/docs/guide/sandboxes.md +2 -0
  241. package/docs/reference/api/deploy.md +23 -0
  242. package/docs/reference/api/pages.md +2 -0
  243. package/docs/reference/api.md +2 -1
  244. package/docs/reference/cli/database.md +9 -3
  245. package/docs/reference/cli/platform-installation.md +1 -1
  246. package/docs/reference/cli/setup.md +2 -0
  247. package/package.json +13 -16
  248. package/skills/void/SKILL.md +1 -0
  249. package/dist/auth-LMJcNESe.mjs +0 -2
  250. package/dist/cf-build-output-H9a97vME.mjs +0 -2
  251. package/dist/cf-user-agent-lKblH3zU.mjs +0 -17
  252. package/dist/client-tso2OfcG.mjs +0 -2
  253. package/dist/collect-DLyFDiKW.mjs +0 -2
  254. package/dist/config-5r-YpMC-.mjs +0 -2
  255. package/dist/config-B_ggY-IO.mjs +0 -89
  256. package/dist/config-BtSFvXZx.mjs +0 -2
  257. package/dist/config-write-AHGesphx.mjs +0 -61
  258. package/dist/deploy-Bqe1PYBw.mjs +0 -10458
  259. package/dist/deploy-VsWsVQkw.mjs +0 -2
  260. package/dist/dev-inbox-CK-UuPob.mjs +0 -297
  261. package/dist/discover-EDUf6JJw.mjs +0 -2
  262. package/dist/dist-_UUlL6bg.mjs +0 -2
  263. package/dist/env-validation-Dxdx_5wo.mjs +0 -951
  264. package/dist/gen-dA9hW7AV.mjs +0 -2
  265. package/dist/head-client-DzmJGN4C.mjs +0 -90
  266. package/dist/help-DfQYVfGY.mjs +0 -2
  267. package/dist/login-mx_ydhmp.mjs +0 -2
  268. package/dist/migrate-BHp07yJE.mjs +0 -2
  269. package/dist/operator-cmd-CwBB-1yb.mjs +0 -2
  270. package/dist/pages/head-client.d.mts +0 -13
  271. package/dist/pages/head-client.mjs +0 -2
  272. package/dist/platform-args-D4E1PjVw.mjs +0 -2
  273. package/dist/prepare-DRUV-g3X.mjs +0 -2
  274. package/dist/project-DedqCp59.mjs +0 -2
  275. package/dist/provision-Wu9ZBk9L.mjs +0 -2
  276. package/dist/resolve-project-BIeYs9Cw.mjs +0 -2
  277. package/dist/resolve-project-CP8rZs_p.mjs +0 -28
  278. package/dist/runner-mysql-CkFqZ6CE.mjs +0 -2
  279. package/dist/runner-pg-BGYRFdRp.mjs +0 -2
  280. package/dist/runtime/env-helpers.d.mts +0 -2
  281. package/dist/runtime/env-helpers.mjs +0 -2
  282. package/dist/validate-BJr9LfXy.mjs +0 -2
  283. package/dist/yarn-pnp-CUX_iTPA.mjs +0 -188
@@ -1,9 +1,9 @@
1
- import { r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
2
- import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-Dn2vw-SG.mjs";
1
+ import { r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
+ import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-B6iOCjKI.mjs";
3
3
  import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
- import { d as printSuccess, l as import_picocolors } from "./output-C50ag2r3.mjs";
5
- import { c as parsePlatformErrorBody, l as platformErrorMessage, n as PlatformApiError, r as PlatformClient } from "./client-DlDJuY0s.mjs";
6
- import { i as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-CP8rZs_p.mjs";
4
+ import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-FNHKw5Ac.mjs";
5
+ import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-DM9Kcf4e.mjs";
6
+ import { a as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-C_Cu7E8a.mjs";
7
7
  import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
8
8
  import { randomBytes } from "node:crypto";
9
9
  //#region src/cli/github-cmd.ts
@@ -36,11 +36,8 @@ function describeConnectError(status, errorCode) {
36
36
  return null;
37
37
  }
38
38
  /**
39
- * Like {@link describeConnectError}, but for `void github update`. The update
40
- * flow starts from an EXISTING connection, so a 404 "connection not found"
41
- * (the project has no GitHub connection, or it was disconnected between the
42
- * read and the write) is the common case and gets a "connect first" message.
43
- * Everything else defers to the shared connect mapping.
39
+ * Like {@link describeConnectError}, but maps a 404 "connection not found" to a
40
+ * "connect first" message.
44
41
  */
45
42
  function describeUpdateError(status, errorCode) {
46
43
  const code = errorCode ?? "";
@@ -82,10 +79,8 @@ function formatInstallations(installations) {
82
79
  }).join("\n\n");
83
80
  }
84
81
  /**
85
- * Render a GitHub connection as an aligned key/value block for `void github
86
- * status`. The workflow file is the OIDC deploy pin — it is only read for
87
- * github_actions builds (container builds never use it), so it is annotated as
88
- * unused when the executor is container to avoid implying it is active.
82
+ * Render a GitHub connection for `void github status`. Container builds never
83
+ * read the workflow file, so it is marked unused for them.
89
84
  */
90
85
  function formatConnection(connection) {
91
86
  const row = (label, value) => ` ${label.padEnd(16)}${value}`;
@@ -116,15 +111,9 @@ async function runGithubCommand(root, args) {
116
111
  }
117
112
  }
118
113
  /**
119
- * `void github install` — print the GitHub App install URL and open it.
120
- *
121
- * If the account has no linked GitHub identity, the server returns a 403 with
122
- * the stable code `github_identity_required`. Rather than telling the
123
- * user to `void account login` (which risks forking into a second account), we run
124
- * the link flow inline and retry the install URL exactly once.
125
- *
126
- * `linkIdentity` is injectable so tests can supply a fake linker instead of
127
- * starting a real localhost callback server / browser.
114
+ * `void github install`. Without a linked GitHub identity the server returns a
115
+ * 403 `github_identity_required`; link inline and retry once rather than send the
116
+ * user to `void account login`, which risks creating a second account.
128
117
  */
129
118
  async function runInstall(client, linkIdentity = runGithubLink) {
130
119
  let url;
@@ -145,18 +134,13 @@ async function runInstall(client, linkIdentity = runGithubLink) {
145
134
  }
146
135
  } else throw err;
147
136
  }
148
- log.message(`Open this URL to install the Void GitHub App:\n${import_picocolors.default.blue(url)}`);
149
- const { execFile } = await import("node:child_process");
150
- openBrowser(url, execFile);
137
+ log.message(`Open this URL to install the Void GitHub App:\n${import_picocolors.default.blue(formatUrl(url))}`);
138
+ openBrowser(url);
151
139
  log.message("After installing, run `void github connect` to link a repository to your project.");
152
140
  }
153
141
  /**
154
- * Link the current Void account (the logged-in CLI token holder) to a GitHub
155
- * identity. Drives the platform's 3-endpoint link flow with a localhost +
156
- * PKCE handshake, mirroring `void account login`.
157
- *
158
- * The success path is non-exiting so a caller (`github install` after a 403
159
- * for a GitHub-less account) can continue; only error paths exit/throw.
142
+ * Link the logged-in Void account to a GitHub identity. Returns on success so
143
+ * `github install` can continue after linking.
160
144
  */
161
145
  async function runGithubLink(client) {
162
146
  const verifier = createCodeVerifier();
@@ -173,7 +157,7 @@ async function runGithubLink(client) {
173
157
  return url;
174
158
  },
175
159
  describeError: (p) => p.get("error") ? "GitHub authorization failed." : null,
176
- onUrl: (url) => log.message(`Open this URL to link your GitHub account:\n${import_picocolors.default.blue(url)}`),
160
+ onUrl: (url) => log.message(`Open this URL to link your GitHub account:\n${import_picocolors.default.blue(formatUrl(url))}`),
177
161
  finalize: async (params) => {
178
162
  const linkCode = params.get("link_code");
179
163
  if (!linkCode) throw new Error("github: link callback did not return a link code.");
@@ -195,12 +179,8 @@ async function runGithubLink(client) {
195
179
  else printSuccess("GitHub account linked.");
196
180
  }
197
181
  /**
198
- * Browser round-trip (localhost + PKCE) that joins the caller to their
199
- * organization's shared GitHub App installations. Returns the number of
200
- * installations joined. Throws PlatformApiError — including the 503
201
- * `github_oauth_not_configured` — so callers own the user-facing handling
202
- * (`runGithubJoin` prints and exits; the connect auto-join fallback falls
203
- * through to its install-first error).
182
+ * Join the caller to their organization's shared GitHub App installations and
183
+ * return how many were joined. Errors are left to the caller.
204
184
  */
205
185
  async function performGithubJoin(client) {
206
186
  const verifier = createCodeVerifier();
@@ -215,7 +195,7 @@ async function performGithubJoin(client) {
215
195
  return url;
216
196
  },
217
197
  describeError: (p) => p.get("error") ? "GitHub authorization failed." : null,
218
- onUrl: (url) => log.message(`Open this URL to join your organization's shared GitHub App installations:\n${import_picocolors.default.blue(url)}`),
198
+ onUrl: (url) => log.message(`Open this URL to join your organization's shared GitHub App installations:\n${import_picocolors.default.blue(formatUrl(url))}`),
219
199
  finalize: async (params) => {
220
200
  const joinCode = params.get("join_code");
221
201
  if (!joinCode) throw new Error("github: join callback did not return a join code.");
@@ -250,20 +230,8 @@ async function runInstallations(client) {
250
230
  log.message(formatInstallations(installations));
251
231
  }
252
232
  /**
253
- * Per-repo connect authorization round-trip for a non-owner org member.
254
- *
255
- * When the connect route returns 403 `connect_authorization_required`,
256
- * the member has no proof they can access the specific repo under the shared
257
- * installation. This drives the same localhost + PKCE handshake as
258
- * {@link runGithubLink}/{@link runGithubJoin}, but against the platform's
259
- * connect-authorize route: the callback mints and returns the grant IN
260
- * the redirect URL (`?connect_grant=…`), so there is no separate `/complete`
261
- * POST — `finalize` just reads the grant out of the callback query. A
262
- * `?error=repo_not_accessible` callback is mapped to a friendly per-repo message
263
- * by `describeError`, which rejects out of the handshake (no grant, no retry).
264
- *
265
- * Returns the grant plus the PKCE verifier the caller must echo to the connect
266
- * route so the platform can bind the grant to this exchange.
233
+ * Per-repo authorization for an org member who cannot yet prove repo access.
234
+ * The grant arrives in the callback URL; the caller sends it with the verifier.
267
235
  */
268
236
  async function runGithubConnectAuthorize(client, installationId, repoFullName) {
269
237
  const verifier = createCodeVerifier();
@@ -282,7 +250,7 @@ async function runGithubConnectAuthorize(client, installationId, repoFullName) {
282
250
  if (e === "repo_not_accessible") return `You don't have access to ${repoFullName} under this installation on GitHub.`;
283
251
  return e ? "GitHub authorization failed." : null;
284
252
  },
285
- onUrl: (url) => log.message(`Open this URL to authorize access to ${repoFullName}:\n${import_picocolors.default.blue(url)}`),
253
+ onUrl: (url) => log.message(`Open this URL to authorize access to ${repoFullName}:\n${import_picocolors.default.blue(formatUrl(url))}`),
286
254
  finalize: async (params) => {
287
255
  const grant = params.get("connect_grant");
288
256
  if (!grant) throw new Error("github: connect authorization did not return a grant.");
@@ -639,18 +607,12 @@ async function runGithubUpdate(root, client, args) {
639
607
  log.error(`update: ${message}`);
640
608
  process.exit(1);
641
609
  }
642
- throw err;
643
610
  }
644
611
  throw err;
645
612
  }
646
613
  printSuccess(`Updated ${updated.repo_full_name} → branch ${updated.branch}, executor ${updated.build_executor}, workflow ${updated.workflow_path}.`);
647
614
  }
648
- /**
649
- * `void github status [project]` — print the current GitHub connection (repo,
650
- * branch, build executor, deploy workflow). Read-only; never mutates. Project
651
- * resolution mirrors connect/update; a 404 means the project was never
652
- * connected and points the user at `connect`.
653
- */
615
+ /** `void github status [project]`: print the project's GitHub connection. */
654
616
  async function runStatus(root, client, args) {
655
617
  const isTTY = process.stdin.isTTY === true;
656
618
  const projectId = await resolveGithubProjectId(root, client, args.projectName, "status", isTTY);
@@ -670,12 +632,8 @@ async function runStatus(root, client, args) {
670
632
  log.message(formatConnection(connection));
671
633
  }
672
634
  /**
673
- * `void github disconnect [project]` — remove a project's GitHub connection so
674
- * pushes no longer auto-deploy. The server (DELETE /projects/:id/github)
675
- * terminalizes any in-flight builds (revoking their deploy tokens) before
676
- * dropping the connection row. Destructive, so a TTY run confirms first; --yes
677
- * skips the prompt and is REQUIRED in a non-interactive shell. A project with no
678
- * connection is already in the goal state — report it and exit 0.
635
+ * `void github disconnect [project]`. The server cancels in-flight builds before
636
+ * it removes the connection, so a TTY run confirms first.
679
637
  */
680
638
  async function runGithubDisconnect(root, client, args) {
681
639
  const isTTY = process.stdin.isTTY === true;
@@ -685,9 +643,7 @@ async function runGithubDisconnect(root, client, args) {
685
643
  connection = await client.getGithubConnection(projectId);
686
644
  } catch (err) {
687
645
  if (err instanceof PlatformApiError) {
688
- const body = parsePlatformErrorBody(err.body);
689
- const code = body?.error ?? body?.message ?? "";
690
- if (err.status === 404 && code.includes("connection not found")) {
646
+ if (err.status === 404 && err.code?.includes("connection not found")) {
691
647
  log.info("This project is not connected to a GitHub repository. Nothing to disconnect.");
692
648
  return;
693
649
  }
@@ -1,3 +1,4 @@
1
+ import { t as base64ToBytes } from "./base64-DVrOndmI.mjs";
1
2
  import { t as convertReturnValue } from "./response-Tn7rU0MV.mjs";
2
3
  import { t as runValidation } from "./validator-BTOu0fB0.mjs";
3
4
  //#region src/runtime/handler.ts
@@ -58,8 +59,7 @@ function parseBasicAuthHeader(authorization) {
58
59
  if (!authorization?.toLowerCase().startsWith("basic ")) return null;
59
60
  try {
60
61
  const encoded = authorization.slice(6).trim();
61
- const binary = atob(encoded);
62
- const bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));
62
+ const bytes = base64ToBytes(encoded);
63
63
  const decoded = basicAuthDecoder.decode(bytes);
64
64
  const separator = decoded.indexOf(":");
65
65
  if (separator === -1) return null;
@@ -1,4 +1,4 @@
1
- import { l as VoidPlatformSandbox } from "./sandbox-C5LFoJMf.mjs";
1
+ import { l as VoidPlatformSandbox } from "./sandbox-q3waMc2T.mjs";
2
2
  import { t as StandardSchemaV1 } from "./standard-schema-Fo_vCAZh.mjs";
3
3
  import { n as HeadDescriptor } from "./head-C8K_iGe6.mjs";
4
4
  import { r as AuthUser, t as AuthSession } from "./auth-DkcFflXV.mjs";
@@ -1,5 +1,5 @@
1
- import { a as join } from "./dist-BVqXeR_h.mjs";
2
- import { a as convertFallbacksConfig, c as convertRewritesConfig, f as isProtocolRelative, l as countSplats, n as VALID_REDIRECT_STATUSES, o as convertHeadersConfig, p as parseHostPrefixedSource, s as convertRedirectsConfig } from "./config-DiowPT80.mjs";
1
+ import { a as join } from "./dist-ipQi0Q8y.mjs";
2
+ import { a as convertRewritesConfig, i as convertRedirectsConfig, l as isProtocolRelative, n as convertFallbacksConfig, o as countSplats, r as convertHeadersConfig, t as VALID_REDIRECT_STATUSES, u as parseHostPrefixedSource } from "./config-Bx_1SpnO.mjs";
3
3
  import { i as voidWarn } from "./log-vqY3pqwI.mjs";
4
4
  import { existsSync, readFileSync } from "node:fs";
5
5
  //#region src/cli/headers.ts
@@ -49,23 +49,14 @@ function parseHeadersFile(dir) {
49
49
  return rules;
50
50
  }
51
51
  /**
52
- * Parse a `_redirects` file.
52
+ * Parse a `_redirects` file: `source destination [status]` per line (status
53
+ * defaults to 302, `#` starts a comment). Keeps 3xx redirects and 200 rewrites.
53
54
  *
54
- * Format: `source destination [status]` per line (status defaults to 302).
55
- * Lines starting with # are comments. Includes 3xx redirects and 200 rewrites.
56
- *
57
- * Force suffix (`!`) semantics:
58
- * - On status 200: toggles `force: true` (Netlify-compat). The plain form
59
- * fires only when the static asset would 404; the force form fires
60
- * unconditionally, overriding any matching static asset.
61
- * - On 3xx (301/302/307/308): silently stripped. A redirect always changes
62
- * the URL, so `!` is redundant. We count these in `redundantForceOn3xx`
63
- * so the deploy command can surface a single aggregated lint warning
64
- * rather than one per line — Netlify users pasting their `_redirects`
65
- * file shouldn't be punished for harmless cruft.
55
+ * A `!` suffix on 200 sets `force`, so the rewrite applies even when a static
56
+ * asset matches. On a 3xx it is a no-op, stripped and counted in
57
+ * `redundantForceOn3xx`.
66
58
  *
67
59
  * Returns `undefined` when the file doesn't exist or yields no valid rules.
68
- * Otherwise returns `{rules, redundantForceOn3xx}`.
69
60
  */
70
61
  function parseRedirectsFile(dir) {
71
62
  const filePath = join(dir, "_redirects");
@@ -144,11 +135,8 @@ function parseRedirectsFile(dir) {
144
135
  };
145
136
  }
146
137
  /**
147
- * Split parsed `_redirects` rules into "always-apply" and "asset-miss only"
148
- * buckets. Rules with `status: 200` and `force === false` are fallbacks — they
149
- * should only fire when the static asset resolver would 404. All other rules
150
- * (3xx redirects and forced `200!` rewrites) stay in the "always" bucket and
151
- * are merged with `routing.rewrites` / `routing.redirects` from void.json.
138
+ * Split `_redirects` rules into rules that always apply and fallbacks: unforced
139
+ * 200 rewrites, which apply only when no static asset matches.
152
140
  */
153
141
  function splitRedirectRulesByForce(rules) {
154
142
  const always = [];
@@ -165,33 +153,8 @@ function splitRedirectRulesByForce(rules) {
165
153
  };
166
154
  }
167
155
  /**
168
- * Merge file-based rules (`_redirects`, `_headers`) in `dir` with routing
169
- * rules from `void.json`. Shared between the deploy pipeline and the dev
170
- * plugin so both surfaces produce identical rule tables.
171
- *
172
- * Ordering for routing rules (redirects/rewrites/fallbacks): `void.json`
173
- * rules first, then `_redirects` file rules. Because the router evaluates
174
- * routing rules with first-match-wins semantics, `void.json` entries
175
- * override `_redirects` entries for the same source — matching the
176
- * documented precedence (`docs/guide/edge/rewrites.md`). This holds even
177
- * though `_redirects` is conceptually "closer to the build output".
178
- *
179
- * Header rules use the inverse order — `_redirects`/`_headers` last —
180
- * because header rules are last-match-wins (`_headers` is Netlify-style
181
- * last-wins). The asymmetry is intentional and matches dispatch.
182
- *
183
- * Phase split:
184
- * - `_redirects` `200!` (force) + 3xx entries → `redirectRules` (always-fire)
185
- * - `_redirects` plain `200` entries → `fallbackRules` (asset-miss)
186
- * - `routing.redirects` + `routing.rewrites` → `redirectRules`
187
- * - `routing.fallbacks` → `fallbackRules`
188
- *
189
- * Returns `fallbackRules === undefined` when empty, meaning "no post-asset
190
- * phase".
191
- *
192
- * Duplicate linting is NOT called here (callers decide which warning surface
193
- * to use — CLI vs. Vite logger). `redundantForceOn3xx` is returned raw for
194
- * the same reason.
156
+ * Merge `_redirects` and `_headers` in `dir` with `routing` from void.config.ts.
157
+ * Deploy and dev share it so both build the same rule tables; callers lint them.
195
158
  */
196
159
  function mergeRoutingRules(opts) {
197
160
  const { dir, routing } = opts;
@@ -218,20 +181,18 @@ function mergeRoutingRules(opts) {
218
181
  };
219
182
  }
220
183
  /**
221
- * Warn when a rule's `destination` contains a literal `*`. The platform's
222
- * `substituteParams` only replaces `:name` tokens (e.g. `:splat`, `:id`) —
223
- * bare `*` in destinations is a literal character, not a capture reference,
224
- * and will silently pass through to the rewritten/redirected URL.
225
- *
226
- * Users who write `/old/*` → `/new/*` almost always intended `:splat` to
227
- * reflect the captured portion of the source wildcard. Surface the mistake
228
- * with a single aggregated warning at the same surface as
229
- * `lintDuplicateSources` — per-phase, near the merge site — rather than
230
- * failing the deploy: a `*` in a destination is well-formed output, just
231
- * probably not what was meant.
232
- *
233
- * Only reported once per rule — the count of `*` in the destination is
234
- * irrelevant, a single occurrence is already suspicious.
184
+ * Lint each phase on its own: only duplicates within a phase shadow each other,
185
+ * so a redirect and a fallback with the same source are fine.
186
+ */
187
+ function lintRoutingPhases(rules) {
188
+ lintDuplicateSources(rules.redirectRules, "redirects/rewrites (pre-asset)");
189
+ lintDuplicateSources(rules.fallbackRules, "fallbacks (post-asset)");
190
+ lintDestinationSplats(rules.redirectRules, "redirects/rewrites (pre-asset)");
191
+ lintDestinationSplats(rules.fallbackRules, "fallbacks (post-asset)");
192
+ }
193
+ /**
194
+ * Warn about a literal `*` in a destination. Destinations substitute only
195
+ * `:name` params such as `:splat`, so a `*` passes through unchanged.
235
196
  */
236
197
  function lintDestinationSplats(rules, phaseName) {
237
198
  if (!rules || rules.length === 0) return;
@@ -241,24 +202,8 @@ function lintDestinationSplats(rules, phaseName) {
241
202
  voidWarn(`destinations in ${phaseName} contain a literal "*" — splat tokens are not substituted in destinations; use ":splat" (or other named params) or rewrite the destination:\n${lines.join("\n")}`);
242
203
  }
243
204
  /**
244
- * Warn when the same `source` pattern appears more than once within a single
245
- * merged phase (pre-asset `redirectRules` or post-asset `fallbackRules`).
246
- *
247
- * Sources are scoped to the phase: a pattern appearing once in redirects and
248
- * once in fallbacks is *not* a collision, because those lists run in separate
249
- * phases and don't shadow each other. Within a single phase the dispatcher
250
- * uses first-match-wins semantics, so a duplicate silently hides the later
251
- * entry. This lint never fails the deploy; it surfaces the collision so the
252
- * user can decide whether to fix it.
253
- *
254
- * Only exact string duplicates are reported. Subset-shadow cases (e.g. `/*`
255
- * overshadowing `/docs`) are out of scope — pattern-aware analysis would be
256
- * both harder and noisier.
257
- *
258
- * Emits a single aggregated warning summarizing every duplicated source, each
259
- * annotated with the `origin` of every occurrence (e.g. `_redirects:12` vs
260
- * `void.json#routing.rewrites`). Aggregation avoids a wall of per-pair
261
- * warnings on configs with many collisions.
205
+ * Warn when one phase repeats an exact `source`: first match wins, so the later
206
+ * rule never applies. Phases run separately, so callers lint each one.
262
207
  */
263
208
  function lintDuplicateSources(rules, phaseName) {
264
209
  if (!rules || rules.length < 2) return;
@@ -278,4 +223,4 @@ function lintDuplicateSources(rules, phaseName) {
278
223
  voidWarn(`duplicate rule sources detected in ${phaseName} (first match wins — the earlier entry takes effect):\n${lines.join("\n")}`);
279
224
  }
280
225
  //#endregion
281
- export { parseRedirectsFile as i, lintDuplicateSources as n, mergeRoutingRules as r, lintDestinationSplats as t };
226
+ export { mergeRoutingRules as n, parseRedirectsFile as r, lintRoutingPhases as t };
@@ -1,9 +1,7 @@
1
- import { a as join } from "./dist-BVqXeR_h.mjs";
2
1
  import { H as outro } from "./dist-D3m88sjf.mjs";
3
- import { c as helpLine, l as import_picocolors, p as sectionTitle, t as categoryTitle, u as note } from "./output-C50ag2r3.mjs";
4
- import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
5
- import { n as operatorGroups, t as operatorCommands } from "./operator-args-DOBhIaIg.mjs";
6
- import { readFileSync } from "node:fs";
2
+ import { d as helpLine, f as import_picocolors, g as sectionTitle, l as formatUrl, p as note, t as categoryTitle } from "./output-FNHKw5Ac.mjs";
3
+ import { n as getOwnVersion } from "./agents-CuNtT0D_.mjs";
4
+ import { n as operatorGroups, t as operatorCommands } from "./operator-args-UnE8Y2eK.mjs";
7
5
  //#region src/cli/ascii.ts
8
6
  const asciiArts = [
9
7
  `
@@ -80,9 +78,9 @@ function operatorHelpTree() {
80
78
  command: `--${flag} <value>`,
81
79
  description
82
80
  })),
83
- ...(entry.booleans ?? []).map((flag) => ({
81
+ ...Object.entries(entry.booleans ?? {}).map(([flag, description]) => ({
84
82
  command: `--${flag}`,
85
- description: flag === "follow" ? "Poll new logs until interrupted or the build ends" : flag === "ended" ? "Attest that the original provider execution has ended" : flag === "public-apps" ? "Manage public app rules without identity policies" : flag === "protect-new-projects" ? "Protect newly created projects by default" : flag === "check" && group === "zero-trust" ? "Also check the saved settings against Cloudflare Access (several API calls)" : flag === "token-stdin" && group === "zero-trust" ? "Read the Access management API token from stdin" : flag === "token-stdin" && group === "email" ? entry.action === "domain-remove" ? "Read a replacement Cloudflare token for blocked project cleanup from stdin" : "Read a scoped Cloudflare API token from stdin" : flag === "all" ? "Rotate every project" : "Read a full API session from stdin for explicit operator session exchange"
83
+ description
86
84
  }))
87
85
  ]
88
86
  }]))
@@ -1417,13 +1415,23 @@ const HELP_TREE = {
1417
1415
  push: basicSubcommand("Push schema to local D1 without migration files.", "void db push"),
1418
1416
  generate: basicSubcommand("Generate SQL migrations from schema changes.", "void db generate"),
1419
1417
  status: basicSubcommand("Show migration status for local and remote DBs.", "void db status"),
1420
- reset: basicSubcommand("Reset local DB and re-run migrations.", "void db reset"),
1418
+ reset: {
1419
+ summary: "Reset local DB and re-run migrations.",
1420
+ usage: ["void db reset [options]"],
1421
+ options: [{
1422
+ command: "--yes",
1423
+ description: "Skip the prompt for a non-local PostgreSQL/MySQL database"
1424
+ }]
1425
+ },
1421
1426
  seed: {
1422
1427
  summary: "Reset local DB, run migrations, and seed data.",
1423
1428
  usage: ["void db seed [options]"],
1424
1429
  options: [{
1425
1430
  command: "--file <path>",
1426
1431
  description: "Seed from a specific file"
1432
+ }, {
1433
+ command: "--yes",
1434
+ description: "Skip the prompt for a non-local PostgreSQL/MySQL database"
1427
1435
  }]
1428
1436
  },
1429
1437
  execute: {
@@ -1756,10 +1764,10 @@ function printGlobalHelp() {
1756
1764
  helpLine("void <command> --help", "Show command-specific help")
1757
1765
  ].join("\n"), sectionTitle("Commands"));
1758
1766
  note([helpLine("VOID_TOKEN", "Auth token (or use `void account login`)"), helpLine("VOID_PROJECT", "Deploy target project name override")].join("\n"), sectionTitle("Environment"));
1759
- outro("https://void.cloud");
1767
+ outro(formatUrl("https://void.cloud"));
1760
1768
  }
1761
1769
  function printVoidHeader() {
1762
- const version = JSON.parse(readFileSync(join(getPackageDir(), "package.json"), "utf-8")).version;
1770
+ const version = getOwnVersion();
1763
1771
  const art = asciiArts[Math.floor(Math.random() * asciiArts.length)];
1764
1772
  console.log(import_picocolors.default.blue(`${art} v${version}\n`));
1765
1773
  }
@@ -0,0 +1,2 @@
1
+ import { r as printHelpPage } from "./help-Bug7pyK_.mjs";
2
+ export { printHelpPage };