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,5 +1,5 @@
1
- import { i as writeUncapturedOperationOutput, l as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-2-TfIEzB.mjs";
2
- import { execFile, spawn, spawnSync } from "node:child_process";
1
+ import { i as isCleanCloudflareExit, l as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation, t as createCloudflareProcessRunner } from "./cloudflare-process-CeDWJRhj.mjs";
2
+ import { execFile, spawn } from "node:child_process";
3
3
  //#region src/cli/cloudflare-auth.ts
4
4
  var CloudflareAuthenticationError = class extends Error {
5
5
  name = "CloudflareAuthenticationError";
@@ -32,7 +32,7 @@ async function ensureCloudflareAuthentication(options) {
32
32
  };
33
33
  const readSession = async () => {
34
34
  const result = await run(whoami, true);
35
- if (!isCleanExit(result)) return null;
35
+ if (!isCleanCloudflareExit(result)) return null;
36
36
  const session = parseCloudflareAuthSession(result.data);
37
37
  if (options.requireAccounts) return session && session.accounts.length > 0 ? session : null;
38
38
  return session;
@@ -40,7 +40,8 @@ async function ensureCloudflareAuthentication(options) {
40
40
  const existing = options.forceLogin ? null : await readSession();
41
41
  if (existing) return existing;
42
42
  if (!(options.interactive ?? (process.stdin.isTTY && process.stdout.isTTY))) throw new CloudflareAuthenticationError("Cloudflare authentication is required. Set CLOUDFLARE_API_TOKEN in CI, or run `void cloudflare login` in an interactive terminal.", "not-authenticated");
43
- if (!isCleanExit(await run({ type: "auth.login" }, false))) throw new CloudflareAuthenticationError("Cloudflare browser sign-in did not complete. Run `void cloudflare login` to try again.", "login");
43
+ const login = await run({ type: "auth.login" }, false);
44
+ if (!isCleanCloudflareExit(login)) throw new CloudflareAuthenticationError("Cloudflare browser sign-in did not complete. Run `void cloudflare login` to try again.", "login");
44
45
  const authenticated = await readSession();
45
46
  if (!authenticated) throw new CloudflareAuthenticationError("Cloudflare sign-in completed without a usable session. Run `void cloudflare login` to try again.", "not-authenticated");
46
47
  return authenticated;
@@ -73,41 +74,16 @@ function parseCloudflareAuthSession(value) {
73
74
  };
74
75
  }
75
76
  function createBundledCloudflareAuthRunner(root) {
76
- const [command, ...prefix] = resolveCloudflareOperationArgv(root);
77
- return (operation, capture) => {
78
- const args = encodeCloudflareOperation(operation);
79
- const env = cloudflareAuthEnvironment();
80
- const streaming = cloudflareAuthNeedsTerminal(operation);
81
- const result = spawnSync(command, [...prefix, ...args], {
82
- cwd: root,
83
- encoding: "utf8",
84
- env,
85
- maxBuffer: 10485760,
86
- shell: false,
87
- stdio: streaming ? "inherit" : [
88
- "ignore",
89
- "pipe",
90
- "pipe"
91
- ],
92
- timeout: 6e5,
93
- windowsHide: true
94
- });
95
- const raw = {
96
- status: result.status,
97
- stderr: streaming ? "" : result.stderr || "",
98
- stdout: streaming ? "" : result.stdout || "",
99
- signal: result.signal,
100
- error: result.error?.message
101
- };
102
- if (streaming) return raw;
103
- const decoded = decodeCloudflareOperationResult(raw);
104
- if (!capture) writeUncapturedOperationOutput(decoded);
105
- return decoded;
106
- };
77
+ const run = createCloudflareProcessRunner({
78
+ root,
79
+ env: cloudflareAuthEnvironment,
80
+ timeoutMs: 6e5
81
+ });
82
+ return (operation, capture) => run(operation, { capture });
107
83
  }
108
84
  /** Run a captured auth command without blocking terminal input or exposing credentials. */
109
85
  function runCloudflareAuthCommand(root, operation, signal) {
110
- const [command, ...prefix] = resolveCloudflareOperationArgv(root);
86
+ const [command, ...prefix] = resolveCloudflareOperationArgv();
111
87
  const args = encodeCloudflareOperation(operation);
112
88
  if (cloudflareAuthNeedsTerminal(operation)) return new Promise((resolve) => {
113
89
  const child = spawn(command, [...prefix, ...args], {
@@ -173,8 +149,5 @@ function cloudflareAuthEnvironment(source = process.env) {
173
149
  env.CLOUDFLARE_AUTH_USE_KEYRING = "true";
174
150
  return env;
175
151
  }
176
- function isCleanExit(result) {
177
- return result.status === 0 && result.signal == null && (result.error == null || result.error === "");
178
- }
179
152
  //#endregion
180
153
  export { parseCloudflareAuthSession as a, ensureCloudflareAuthentication as i, cloudflareCredentialOverrides as n, runCloudflareAuthCommand as o, createBundledCloudflareAuthRunner as r, CloudflareAuthenticationError as t };
@@ -1,8 +1,9 @@
1
- import { t as basename } from "./dist-BVqXeR_h.mjs";
2
- import { b as readRootWranglerConfig } from "./wrangler-D9KTuqnv.mjs";
1
+ import { t as basename } from "./dist-ipQi0Q8y.mjs";
2
+ import { b as readRootWranglerConfig } from "./wrangler-BYs07Rxy.mjs";
3
3
  import { L as log } from "./dist-D3m88sjf.mjs";
4
- import { d as printSuccess } from "./output-C50ag2r3.mjs";
5
- import { a as parseCloudflareAuthSession, i as ensureCloudflareAuthentication, n as cloudflareCredentialOverrides, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-CuxfF6OA.mjs";
4
+ import { m as printSuccess } from "./output-FNHKw5Ac.mjs";
5
+ import { i as isCleanCloudflareExit } from "./cloudflare-process-CeDWJRhj.mjs";
6
+ import { a as parseCloudflareAuthSession, i as ensureCloudflareAuthentication, n as cloudflareCredentialOverrides, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-CqFBDo52.mjs";
6
7
  //#region src/cli/cloudflare-cmd.ts
7
8
  async function runCloudflareCommand(root, args) {
8
9
  const runWrangler = createBundledCloudflareAuthRunner(root);
@@ -16,7 +17,7 @@ async function runCloudflareCommand(root, args) {
16
17
  return;
17
18
  case "status": {
18
19
  const result = await runWrangler({ type: "auth.whoami" }, true);
19
- const session = result.status === 0 && !result.signal && !result.error ? parseCloudflareAuthSession(result.data) : null;
20
+ const session = isCleanCloudflareExit(result) ? parseCloudflareAuthSession(result.data) : null;
20
21
  if (!session) throw new Error("Not signed in to Cloudflare. Run `void cloudflare login`.");
21
22
  log.info(formatSession(root, session));
22
23
  return;
@@ -1,19 +1,17 @@
1
- import { a as join } from "./dist-BVqXeR_h.mjs";
2
- import "./project-paths-GgcMozYz.mjs";
3
- import { m as readConfig } from "./config-DiowPT80.mjs";
4
- import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
5
- import { randomUUID } from "node:crypto";
6
- import { parse } from "jsonc-parser";
1
+ import { a as join } from "./dist-ipQi0Q8y.mjs";
2
+ import "./project-paths-DMvEeSau.mjs";
3
+ import { d as readConfig } from "./config-Bx_1SpnO.mjs";
4
+ import { t as writeFileAtomic } from "./atomic-write-Dq6R0BPN.mjs";
5
+ import { t as parseJsoncObject } from "./generated-wrangler-config-DeWj5F9Y.mjs";
6
+ import { existsSync, mkdirSync, readFileSync, rmSync } from "node:fs";
7
+ import { isRecord } from "@void/deploy-core";
7
8
  import { isDeepStrictEqual } from "node:util";
8
9
  //#region src/cloudflare-config.ts
9
10
  const MATERIALIZED_CLOUDFLARE_FILE = ".void-wrangler.jsonc";
10
11
  const VOID_LOCK_FILE = "void.lock.json";
11
12
  const PREVIEW_POINTER_FILE = "preview-deploy-config.json";
12
- function isObject(value) {
13
- return typeof value === "object" && value !== null && !Array.isArray(value);
14
- }
15
13
  function arrayIdentity(value) {
16
- if (isObject(value)) {
14
+ if (isRecord(value)) {
17
15
  for (const key of [
18
16
  "binding",
19
17
  "name",
@@ -40,7 +38,7 @@ function mergeConfig(previous, resolved, authored) {
40
38
  return !previousByIdentity.has(identity) && !authoredIdentities.has(identity);
41
39
  })];
42
40
  }
43
- if (isObject(previous) && isObject(resolved) && isObject(authored)) {
41
+ if (isRecord(previous) && isRecord(resolved) && isRecord(authored)) {
44
42
  const result = {};
45
43
  for (const key of /* @__PURE__ */ new Set([
46
44
  ...Object.keys(previous),
@@ -69,9 +67,8 @@ function mergeConfig(previous, resolved, authored) {
69
67
  return authored;
70
68
  }
71
69
  function parseCloudflareText(text, path) {
72
- const errors = [];
73
- const value = parse(text.replace(/^\uFEFF/, ""), errors, { allowTrailingComma: true });
74
- if (errors.length > 0 || !isObject(value)) throw new Error(`config: ${path} must contain a valid JSON/JSONC object.`);
70
+ const value = parseJsoncObject(text);
71
+ if (!value) throw new Error(`config: ${path} must contain a valid JSON/JSONC object.`);
75
72
  return value;
76
73
  }
77
74
  function readState(root) {
@@ -83,27 +80,18 @@ function readState(root) {
83
80
  } catch {
84
81
  throw new Error(`config: Invalid ${VOID_LOCK_FILE}. Fix or restore it before continuing.`);
85
82
  }
86
- if (!isObject(value) || value.version !== 1 || !isObject(value.source) || !isObject(value.resolved) || typeof value.text !== "string") throw new Error(`config: Invalid ${VOID_LOCK_FILE}. Fix or restore it before continuing.`);
83
+ if (!isRecord(value) || value.version !== 1 || !isRecord(value.source) || !isRecord(value.resolved) || typeof value.text !== "string") throw new Error(`config: Invalid ${VOID_LOCK_FILE}. Fix or restore it before continuing.`);
87
84
  const state = value;
88
85
  if (!isDeepStrictEqual(parseCloudflareText(state.text, "void.lock.json"), state.resolved)) state.text = `${provenance(state.text)}${JSON.stringify(state.resolved, null, 2)}\n`;
89
86
  return state;
90
87
  }
91
- function writeAtomic(path, content) {
92
- const temporary = `${path}.${randomUUID()}.tmp`;
93
- writeFileSync(temporary, content, { flag: "wx" });
94
- try {
95
- renameSync(temporary, path);
96
- } finally {
97
- rmSync(temporary, { force: true });
98
- }
99
- }
100
88
  function writeState(root, state) {
101
89
  const path = join(root, VOID_LOCK_FILE);
102
90
  const content = `${JSON.stringify(state, null, 2)}\n`;
103
91
  if (existsSync(path)) try {
104
92
  if (isDeepStrictEqual(JSON.parse(readFileSync(path, "utf8")), state)) return;
105
93
  } catch {}
106
- writeAtomic(path, content);
94
+ writeFileAtomic(path, content);
107
95
  }
108
96
  /** Keep Vite preview usable without leaving Wrangler's implicit deploy pointer after a build. */
109
97
  function stashCloudflareDeployPointer(root) {
@@ -111,7 +99,7 @@ function stashCloudflareDeployPointer(root) {
111
99
  if (!existsSync(pointer)) return;
112
100
  const directory = join(root, ".void");
113
101
  mkdirSync(directory, { recursive: true });
114
- writeAtomic(join(directory, PREVIEW_POINTER_FILE), readFileSync(pointer, "utf8"));
102
+ writeFileAtomic(join(directory, PREVIEW_POINTER_FILE), readFileSync(pointer, "utf8"));
115
103
  rmSync(pointer, { force: true });
116
104
  }
117
105
  function restoreCloudflarePreviewPointer(root) {
@@ -119,7 +107,7 @@ function restoreCloudflarePreviewPointer(root) {
119
107
  if (!existsSync(saved)) return false;
120
108
  const directory = join(root, ".wrangler", "deploy");
121
109
  mkdirSync(directory, { recursive: true });
122
- writeAtomic(join(directory, "config.json"), readFileSync(saved, "utf8"));
110
+ writeFileAtomic(join(directory, "config.json"), readFileSync(saved, "utf8"));
123
111
  return true;
124
112
  }
125
113
  /** Preserve Void's JSONC provenance comments when authored settings change. */
@@ -139,7 +127,7 @@ function materializeCloudflareConfig(root) {
139
127
  const resolved = state ? mergeConfig(state.source, state.resolved, authored) : authored;
140
128
  const text = state && isDeepStrictEqual(resolved, state.resolved) && isDeepStrictEqual(authored, state.source) ? state.text : `${provenance(state?.text ?? "")}${JSON.stringify(resolved, null, 2)}\n`;
141
129
  const path = join(root, MATERIALIZED_CLOUDFLARE_FILE);
142
- if (!existsSync(path) || readFileSync(path, "utf8") !== text) writeAtomic(path, text);
130
+ if (!existsSync(path) || readFileSync(path, "utf8") !== text) writeFileAtomic(path, text);
143
131
  if (state) writeState(root, {
144
132
  version: 1,
145
133
  source: authored,
@@ -1,7 +1,7 @@
1
- import { a as join, t as basename } from "./dist-BVqXeR_h.mjs";
2
- import { b as readRootWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } from "./wrangler-D9KTuqnv.mjs";
1
+ import { a as join, t as basename } from "./dist-ipQi0Q8y.mjs";
2
+ import { b as readRootWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } from "./wrangler-BYs07Rxy.mjs";
3
3
  import { K as select, L as log, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
- import { i as ensureCloudflareAuthentication, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-CuxfF6OA.mjs";
4
+ import { i as ensureCloudflareAuthentication, r as createBundledCloudflareAuthRunner } from "./cloudflare-auth-CqFBDo52.mjs";
5
5
  import { existsSync } from "node:fs";
6
6
  //#region src/cli/cloudflare-connect.ts
7
7
  async function connectCloudflare(root, interactive = Boolean(process.stdin.isTTY)) {
@@ -1,9 +1,10 @@
1
- import { a as join } from "./dist-BVqXeR_h.mjs";
2
- import { i as persistCloudflareConfig, r as materializeCloudflareConfig } from "./cloudflare-config-BmhBv3HV.mjs";
3
- import { A as updateWranglerCustomDomain, M as writeWranglerPublishedTrafficSnapshot, S as readWranglerCustomDomains, w as readWranglerPublishedTrafficSnapshot } from "./wrangler-D9KTuqnv.mjs";
4
- import { n as scanWranglerDotenvKeys } from "./dotenv-BfU6eqFt.mjs";
5
- import { t as createCloudflareProcessRunner } from "./cloudflare-process-2-TfIEzB.mjs";
6
- import { _ as resolvePinnedApiBaseUrl, g as provisionEnv, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware } from "./provision-BfaLiWbj.mjs";
1
+ import { a as join } from "./dist-ipQi0Q8y.mjs";
2
+ import { i as persistCloudflareConfig, r as materializeCloudflareConfig } from "./cloudflare-config-DV60XFFK.mjs";
3
+ import { A as updateWranglerCustomDomain, M as writeWranglerPublishedTrafficSnapshot, S as readWranglerCustomDomains, w as readWranglerPublishedTrafficSnapshot } from "./wrangler-BYs07Rxy.mjs";
4
+ import { u as getErrorMessage } from "./output-FNHKw5Ac.mjs";
5
+ import { t as createCloudflareProcessRunner } from "./cloudflare-process-CeDWJRhj.mjs";
6
+ import { a as deleteEnvVarCaseAware, d as resolvePinnedApiBaseUrl, t as assertNoTransportRedirectInProjectDotenv, u as provisionEnv } from "./provision-DDh7ITVS.mjs";
7
+ import { a as findWranglerCiOverrideDotenvFile, i as findAmbientConfigOverride } from "./deploy-transport-BiicfoQW.mjs";
7
8
  import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
8
9
  import { tmpdir } from "node:os";
9
10
  import { deployCloudflareVersionTraffic, encodeCloudflareVersionMessage, parseCloudflareVersionMessage, parseRootWranglerConfig, readBindingFieldPresence, readCloudflareTriggerConfig, readWranglerTopLevelString, resolveD1MigrateTarget, stabilizeCloudflareVersionTriggers } from "@void/deploy-cloudflare";
@@ -28,7 +29,7 @@ function resolveCloudflareOperationContext(root, runner) {
28
29
  };
29
30
  }
30
31
  async function listCloudflareSecrets(context) {
31
- const parsed = parseJson((await run(context, {
32
+ const parsed = requireData((await run(context, {
32
33
  type: "secret.list",
33
34
  configPath: context.configPath,
34
35
  workerName: context.workerName
@@ -82,7 +83,7 @@ function resolveCloudflareD1Context(root, binding, runner) {
82
83
  };
83
84
  }
84
85
  async function executeCloudflareD1Sql(context, sql) {
85
- const parsed = parseJson((await run(context.operation, {
86
+ const parsed = requireData((await run(context.operation, {
86
87
  type: "d1.execute",
87
88
  database: context.migrateToken,
88
89
  sql,
@@ -103,7 +104,7 @@ async function readCloudflareD1Migrations(context) {
103
104
  try {
104
105
  return (await executeCloudflareD1Sql(context, `SELECT name FROM "${table}" ORDER BY name`)).map((row) => typeof row.name === "string" ? row.name : null).filter((name) => name !== null);
105
106
  } catch (error) {
106
- if (/no such table/i.test(errorMessage(error))) return [];
107
+ if (/no such table/i.test(getErrorMessage(error))) return [];
107
108
  throw error;
108
109
  }
109
110
  }
@@ -144,7 +145,7 @@ async function readCloudflareWorkerStatus(context) {
144
145
  }
145
146
  /** Return only versions that Cloudflare records as members of a production deployment. */
146
147
  function parseCloudflareDeployedVersionIds(value) {
147
- const parsed = parseJson(value, "Cloudflare deployment list");
148
+ const parsed = requireData(value, "Cloudflare deployment list");
148
149
  if (!Array.isArray(parsed)) throw new Error("Cloudflare deployment list returned an unexpected response.");
149
150
  const ids = /* @__PURE__ */ new Set();
150
151
  parsed.forEach((deployment, deploymentIndex) => {
@@ -157,7 +158,7 @@ function parseCloudflareDeployedVersionIds(value) {
157
158
  return [...ids];
158
159
  }
159
160
  function parseCloudflareVersions(value) {
160
- const parsed = parseJson(value, "Cloudflare version list");
161
+ const parsed = requireData(value, "Cloudflare version list");
161
162
  if (!Array.isArray(parsed)) throw new Error("Cloudflare version list returned an unexpected response.");
162
163
  return parsed.map((entry, index) => {
163
164
  if (typeof entry !== "object" || entry === null || typeof entry.id !== "string") throw new Error(`Cloudflare version list entry ${index + 1} is malformed.`);
@@ -173,7 +174,7 @@ function parseCloudflareVersions(value) {
173
174
  });
174
175
  }
175
176
  function parseActiveVersionId(value) {
176
- const parsed = parseJson(value, "Cloudflare deployment status");
177
+ const parsed = requireData(value, "Cloudflare deployment status");
177
178
  if (typeof parsed !== "object" || parsed === null) throw new Error("Cloudflare deployment status returned an unexpected response.");
178
179
  const deployment = parsed;
179
180
  if (!Array.isArray(deployment.versions)) throw new Error("Cloudflare deployment status returned an unexpected response.");
@@ -259,7 +260,7 @@ async function activateCloudflareExistingVersion(context, target, current) {
259
260
  else if (!restoredTriggers.targetOwnsTraffic) recoveryFailure = `recovery was superseded by ${restoredTriggers.activeVersionId}`;
260
261
  else recordPublishedTraffic(context.configPath, currentTriggerConfig);
261
262
  } catch (error) {
262
- recoveryFailure = errorMessage(error);
263
+ recoveryFailure = getErrorMessage(error);
263
264
  }
264
265
  throw new Error(recoveryFailure ? `Cloudflare trigger synchronization failed after activating ${target.id}, and automatic recovery also failed: ${recoveryFailure}` : `Cloudflare trigger synchronization failed after activating ${target.id}; traffic and triggers were restored to ${current.id}.`);
265
266
  }
@@ -283,7 +284,7 @@ async function tailCloudflareWorker(context, options) {
283
284
  function listCloudflareDomains(root) {
284
285
  return readWranglerCustomDomains(root).domains;
285
286
  }
286
- async function changeCloudflareDomain(root, hostname, action, runner, emptyDomainPublisher) {
287
+ async function changeCloudflareDomain(root, hostname, action, runner) {
287
288
  const context = resolveCloudflareOperationContext(root, runner);
288
289
  const before = readWranglerCustomDomains(root);
289
290
  const original = readFileSync(before.configPath, "utf-8");
@@ -293,7 +294,7 @@ async function changeCloudflareDomain(root, hostname, action, runner, emptyDomai
293
294
  const triggerConfigPath = join(triggerConfigDir, "wrangler.json");
294
295
  const deployRoutes = async () => {
295
296
  if (readWranglerCustomDomains(root).domains.length === 0) {
296
- await (emptyDomainPublisher ?? publishEmptyCloudflareCustomDomainSet)(context);
297
+ await publishEmptyCloudflareCustomDomainSet(context);
297
298
  return;
298
299
  }
299
300
  writeDomainTriggerConfig(context, before.configPath, triggerConfigPath);
@@ -311,9 +312,9 @@ async function changeCloudflareDomain(root, hostname, action, runner, emptyDomai
311
312
  try {
312
313
  await deployRoutes();
313
314
  } catch (restoreError) {
314
- throw new Error(`Cloudflare rejected the domain trigger update and also rejected the automatic remote restore. The local Wrangler config was restored, but remote route state may be partially applied. ${errorMessage(error)} Restore failed: ${errorMessage(restoreError)}`);
315
+ throw new Error(`Cloudflare rejected the domain trigger update and also rejected the automatic remote restore. The local Wrangler config was restored, but remote route state may be partially applied. ${getErrorMessage(error)} Restore failed: ${getErrorMessage(restoreError)}`);
315
316
  }
316
- throw new Error(`Cloudflare rejected the domain trigger update; both the local config and remote triggers were restored. ${errorMessage(error)}`);
317
+ throw new Error(`Cloudflare rejected the domain trigger update; both the local config and remote triggers were restored. ${getErrorMessage(error)}`);
317
318
  } finally {
318
319
  rmSync(triggerConfigDir, {
319
320
  recursive: true,
@@ -419,19 +420,13 @@ function createCloudflareOperationRunner(root, accountId, apiBaseUrl) {
419
420
  });
420
421
  }
421
422
  function assertNoOperationConfigOverride(root) {
422
- if (process.env.CLOUDFLARE_ENV?.trim()) throw new Error("CLOUDFLARE_ENV is set. Void Cloudflare operations target the top-level config only.");
423
- if (process.env.CLOUDFLARE_VITE_WRANGLER_CONFIG_PATH?.trim()) throw new Error("CLOUDFLARE_VITE_WRANGLER_CONFIG_PATH is set. Void Cloudflare operations use the root Wrangler config only.");
424
- for (const file of [
425
- ".env",
426
- ".env.local",
427
- ".env.",
428
- ".env..local"
429
- ]) {
430
- const keys = scanWranglerDotenvKeys(join(root, file));
431
- if (process.platform === "win32" ? [...keys].some((key) => key.toLowerCase() === "wrangler_ci_override_name") : keys.has("WRANGLER_CI_OVERRIDE_NAME")) throw new Error(`Project file "${file}" sets WRANGLER_CI_OVERRIDE_NAME, which can replace the pinned Worker name. Remove it before running this command.`);
432
- }
423
+ const override = findAmbientConfigOverride();
424
+ if (override === "CLOUDFLARE_ENV") throw new Error("CLOUDFLARE_ENV is set. Void Cloudflare operations target the top-level config only.");
425
+ if (override) throw new Error("CLOUDFLARE_VITE_WRANGLER_CONFIG_PATH is set. Void Cloudflare operations use the root Wrangler config only.");
426
+ const file = findWranglerCiOverrideDotenvFile(root);
427
+ if (file) throw new Error(`Project file "${file}" sets WRANGLER_CI_OVERRIDE_NAME, which can replace the pinned Worker name. Remove it before running this command.`);
433
428
  }
434
- function parseJson(value, label) {
429
+ function requireData(value, label) {
435
430
  if (value === void 0) throw new Error(label + " did not return structured data.");
436
431
  return value;
437
432
  }
@@ -439,12 +434,9 @@ function failedOperationResult(error) {
439
434
  return {
440
435
  status: 1,
441
436
  stdout: "",
442
- stderr: errorMessage(error),
443
- error: errorMessage(error)
437
+ stderr: getErrorMessage(error),
438
+ error: getErrorMessage(error)
444
439
  };
445
440
  }
446
- function errorMessage(error) {
447
- return error instanceof Error ? error.message : String(error);
448
- }
449
441
  //#endregion
450
442
  export { resolveCloudflareD1Context as _, createCloudflareEmptyDomainPublisher as a, tailCloudflareWorker as b, listCloudflareDomains as c, parseCloudflareDeployedVersionIds as d, parseCloudflareVersions as f, readCloudflareWorkerStatus as g, readCloudflareD1Migrations as h, createCloudflareEmptyCronPublisher as i, listCloudflareSecrets as l, putCloudflareSecret as m, applyCloudflareD1Migrations as n, deleteCloudflareSecret as o, publishEmptyCloudflareCustomDomainSet as p, changeCloudflareDomain as r, executeCloudflareD1Sql as s, activateCloudflareExistingVersion as t, parseActiveVersionId as u, resolveCloudflareOperationContext as v, syncCloudflareSecrets as y };
@@ -1,2 +1,2 @@
1
- import { _ as resolveCloudflareD1Context, b as tailCloudflareWorker, c as listCloudflareDomains, g as readCloudflareWorkerStatus, h as readCloudflareD1Migrations, l as listCloudflareSecrets, m as putCloudflareSecret, n as applyCloudflareD1Migrations, o as deleteCloudflareSecret, r as changeCloudflareDomain, s as executeCloudflareD1Sql, t as activateCloudflareExistingVersion, v as resolveCloudflareOperationContext, y as syncCloudflareSecrets } from "./cloudflare-operations-CwI1bChl.mjs";
1
+ import { _ as resolveCloudflareD1Context, b as tailCloudflareWorker, c as listCloudflareDomains, g as readCloudflareWorkerStatus, h as readCloudflareD1Migrations, l as listCloudflareSecrets, m as putCloudflareSecret, n as applyCloudflareD1Migrations, o as deleteCloudflareSecret, r as changeCloudflareDomain, s as executeCloudflareD1Sql, t as activateCloudflareExistingVersion, v as resolveCloudflareOperationContext, y as syncCloudflareSecrets } from "./cloudflare-operations-BKdSfNBN.mjs";
2
2
  export { activateCloudflareExistingVersion, applyCloudflareD1Migrations, changeCloudflareDomain, deleteCloudflareSecret, executeCloudflareD1Sql, listCloudflareDomains, listCloudflareSecrets, putCloudflareSecret, readCloudflareD1Migrations, readCloudflareWorkerStatus, resolveCloudflareD1Context, resolveCloudflareOperationContext, syncCloudflareSecrets, tailCloudflareWorker };
@@ -1,7 +1,7 @@
1
- import { a as join, l as relative, n as dirname, u as resolve } from "./dist-BVqXeR_h.mjs";
2
- import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
3
- import { i as hasSsrEntry, r as getSsrServerEntryPath } from "./entry-CMAkqBmU.mjs";
4
- import { i as readPackageJson, n as hasPackageDependency, t as getPackageDependencies } from "./package-json-DXfiT1jV.mjs";
1
+ import { a as join, c as resolve, n as dirname, s as relative } from "./dist-ipQi0Q8y.mjs";
2
+ import { n as readProjectPaths } from "./project-paths-DMvEeSau.mjs";
3
+ import { i as hasSsrEntry, r as getSsrServerEntryPath } from "./entry-ehmBvs5w.mjs";
4
+ import { i as readPackageJson, n as hasPackageDependency, t as getPackageDependencies } from "./package-json-BjYqR-So.mjs";
5
5
  import { existsSync } from "node:fs";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { spawnSync } from "node:child_process";
@@ -134,7 +134,7 @@ function shellQuoteExecutable(value) {
134
134
  return `'${value.replace(/'/g, "'\\''")}'`;
135
135
  }
136
136
  /** Resolve the bundled cf transport without consulting project dependencies. */
137
- function resolveCloudflareOperationArgv(_root) {
137
+ function resolveCloudflareOperationArgv() {
138
138
  const directory = dirname(fileURLToPath(import.meta.url));
139
139
  const entry = [
140
140
  join(directory, "cloudflare-operation-process.ts"),
@@ -302,6 +302,10 @@ function backendDirs(paths) {
302
302
  function encodeCloudflareOperation(operation) {
303
303
  return [JSON.stringify(operation)];
304
304
  }
305
+ /** True only for a child that ran to completion with a clean exit 0. */
306
+ function isCleanCloudflareExit(result) {
307
+ return result.status === 0 && result.signal == null && (result.error == null || result.error === "");
308
+ }
305
309
  /** Decode the private process envelope once, retaining cancellation provenance. */
306
310
  function decodeCloudflareOperationResult(result) {
307
311
  if (result.signal || result.error || result.status === null) return result;
@@ -345,7 +349,7 @@ function writeUncapturedOperationOutput(result) {
345
349
  if (result.stderr) process.stderr.write(result.stderr);
346
350
  }
347
351
  function createCloudflareProcessRunner(options) {
348
- const [command, ...prefix] = resolveCloudflareOperationArgv(options.root);
352
+ const [command, ...prefix] = resolveCloudflareOperationArgv();
349
353
  return (operation, run) => {
350
354
  const streaming = !run.capture && (operation.type === "auth.login" || operation.type === "tail");
351
355
  const env = typeof options.env === "function" ? options.env() : options.env ?? process.env;
@@ -361,6 +365,7 @@ function createCloudflareProcessRunner(options) {
361
365
  shell: false,
362
366
  windowsHide: true,
363
367
  maxBuffer: 33554432,
368
+ timeout: options.timeoutMs,
364
369
  stdio: streaming ? [
365
370
  "inherit",
366
371
  "inherit",
@@ -385,4 +390,4 @@ function createCloudflareProcessRunner(options) {
385
390
  };
386
391
  }
387
392
  //#endregion
388
- export { FRAMEWORK_PRESETS as a, hasBackendFiles as c, writeUncapturedOperationOutput as i, resolveCloudflareOperationArgv as l, decodeCloudflareOperationResult as n, detectPreset as o, encodeCloudflareOperation as r, formatProjectCommand as s, createCloudflareProcessRunner as t, resolveProjectCommand as u };
393
+ export { FRAMEWORK_PRESETS as a, hasBackendFiles as c, isCleanCloudflareExit as i, resolveCloudflareOperationArgv as l, decodeCloudflareOperationResult as n, detectPreset as o, encodeCloudflareOperation as r, formatProjectCommand as s, createCloudflareProcessRunner as t, resolveProjectCommand as u };
@@ -0,0 +1,2 @@
1
+ import { t as collectMigrations } from "./collect-xjffdCdk.mjs";
2
+ export { collectMigrations };
@@ -1,4 +1,4 @@
1
- import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
1
+ import { a as join, n as dirname } from "./dist-ipQi0Q8y.mjs";
2
2
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
3
3
  //#region src/migrations/collect.ts
4
4
  /**
@@ -21,7 +21,7 @@ type RedirectDestination = string | {
21
21
  to: string;
22
22
  status?: 301 | 302 | 303 | 307 | 308;
23
23
  };
24
- /** Curated Worker fields accepted in the legacy void.json config. */
24
+ /** Curated Worker fields accepted by the `worker` config field. */
25
25
  type WranglerConfig = {
26
26
  compatibility_date?: string;
27
27
  compatibility_flags?: Array<string>;
@@ -156,7 +156,7 @@ type CloudflareConfig = Record<string, unknown> & {
156
156
  assets?: CloudflareField<{
157
157
  directory?: string;
158
158
  binding?: string;
159
- not_found_handling?: "single-page-application" | "404-page" | "none";
159
+ not_found_handling?: NotFoundHandling;
160
160
  run_worker_first?: boolean | Array<string>;
161
161
  }>;
162
162
  triggers?: CloudflareField<{
@@ -1,9 +1,15 @@
1
- import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
2
- import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
3
- import { n as schemaSpecifier, t as discoverSchema } from "./discover-CkCYv9T_.mjs";
1
+ import { a as join, s as relative } from "./dist-ipQi0Q8y.mjs";
2
+ import { n as readProjectPaths } from "./project-paths-DMvEeSau.mjs";
3
+ import { n as schemaSpecifier, t as discoverSchema } from "./discover-D2PGT63u.mjs";
4
4
  import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  //#region src/drizzle/config.ts
7
+ /** drizzle-kit `generate` needs a URL but never connects. */
8
+ const PLACEHOLDER_DB_URL = {
9
+ sqlite: ":memory:",
10
+ postgresql: "postgresql://dummy",
11
+ mysql: "mysql://dummy"
12
+ };
7
13
  /**
8
14
  * Write a temporary drizzle-kit config, by default to `.void/drizzle.config.json`.
9
15
  * Schema and migration paths are relative to the project root: drizzle-kit
@@ -72,7 +78,7 @@ function removeProjectDrizzleConfigWithUrl(root) {
72
78
  } catch {
73
79
  return;
74
80
  }
75
- if (typeof url === "string" && url.includes("://") && url !== "postgresql://dummy" && url !== "mysql://dummy") rmSync(configPath, { force: true });
81
+ if (typeof url === "string" && url.includes("://") && !Object.values(PLACEHOLDER_DB_URL).includes(url)) rmSync(configPath, { force: true });
76
82
  }
77
83
  //#endregion
78
- export { writeDrizzleConfig as n, withPrivateDrizzleConfig as t };
84
+ export { withPrivateDrizzleConfig as n, writeDrizzleConfig as r, PLACEHOLDER_DB_URL as t };