void 1.3.0 → 1.5.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 (451) hide show
  1. package/README.md +1 -1
  2. package/dist/{account-cmd-B4i71m7k.mjs → account-cmd-ChVKPZ-w.mjs} +7 -8
  3. package/dist/{action-key-XZ9HkWAO.mjs → action-key-XtKKbbsi.mjs} +1 -2
  4. package/dist/{agents-CuNtT0D_.mjs → agents-DRo8gzni.mjs} +2 -3
  5. package/dist/{application-analysis-DYdVoMAY.mjs → application-analysis-2vGZrKzg.mjs} +27 -29
  6. package/dist/{application-routing-C8EqRDfv.mjs → application-routing-DnUQoOJD.mjs} +2 -3
  7. package/dist/{ast-CsZ_q_gc.mjs → ast-Cv0JwXqb.mjs} +1 -2
  8. package/dist/{ast-bindings-C3yaPs1y.mjs → ast-bindings-BkivMJIo.mjs} +6 -11
  9. package/dist/{atomic-write-Dq6R0BPN.mjs → atomic-write-DA6eD1Kp.mjs} +1 -2
  10. package/dist/auth-CH4PLAX1.d.mts +68 -0
  11. package/dist/{auth-Cbqi1iVX.mjs → auth-CL-p_rqV.mjs} +1 -1
  12. package/dist/{auth-B6iOCjKI.mjs → auth-Dy8svcqQ.mjs} +6 -7
  13. package/dist/{auth-3sGB0zJ1.mjs → auth-YVjBX5NY.mjs} +1 -2
  14. package/dist/{auth-client-Bawdj38n.d.mts → auth-client-6-Ft9i9T.d.mts} +0 -2
  15. package/dist/{auth-client-BWBT8HLp.mjs → auth-client-DwCdwKbw.mjs} +1 -2
  16. package/dist/{auth-client-react-CMLwT2xI.mjs → auth-client-react-CJdeErvM.mjs} +1 -2
  17. package/dist/{auth-client-react-7GFffu8R.d.mts → auth-client-react-DvQLe5Zb.d.mts} +0 -2
  18. package/dist/{auth-client-solid-UoreJWZG.mjs → auth-client-solid-BRvgvp6h.mjs} +1 -2
  19. package/dist/{auth-client-solid-DyTFL4cq.d.mts → auth-client-solid-P9pEtKGp.d.mts} +0 -2
  20. package/dist/{auth-client-svelte-zetW0KIH.d.mts → auth-client-svelte-B5j8irT6.d.mts} +0 -2
  21. package/dist/{auth-client-svelte-Cv_WvrRk.mjs → auth-client-svelte-BSqUCEed.mjs} +1 -2
  22. package/dist/{auth-client-vue-bChShbQP.d.mts → auth-client-vue-BEiAfavk.d.mts} +0 -2
  23. package/dist/{auth-client-vue-CFk7Xbv3.mjs → auth-client-vue-CPkbRtOO.mjs} +1 -2
  24. package/dist/{auth-link-BKwHPbdv.mjs → auth-link-D4uMdOsw.mjs} +7 -8
  25. package/dist/{auth-migrations-BO27GDNr.mjs → auth-migrations-DDeifS3v.mjs} +1 -2
  26. package/dist/{auth-router-DqLx8E0F.mjs → auth-router-62dna450.mjs} +14 -10
  27. package/dist/{base64-DVrOndmI.mjs → base64-ikl9yBy3.mjs} +1 -2
  28. package/dist/{better-auth-shared-DVk2DkTW.d.mts → better-auth-shared-BJyG2mH0.d.mts} +2 -6
  29. package/dist/{better-auth-shared-7FM3Uk2N.mjs → better-auth-shared-CiclgPde.mjs} +4 -5
  30. package/dist/{build-cmd-Dy4psnt1.mjs → build-cmd-D93K_4Sa.mjs} +7 -8
  31. package/dist/{cache-DV37S6dl.mjs → cache-CiIzEED4.mjs} +7 -8
  32. package/dist/{cancel-deploy-DMPyu1Vt.mjs → cancel-deploy-BNoGfn2e.mjs} +6 -7
  33. package/dist/{cf-access-CWP4avfP.mjs → cf-access-BmBT2h8_.mjs} +3 -4
  34. package/dist/{cf-access-BM9G0lhO.mjs → cf-access-pejlJmuy.mjs} +1 -2
  35. package/dist/{cf-build-output-Bapzc_8Z.mjs → cf-build-output-B1C8U83u.mjs} +60 -317
  36. package/dist/cf-build-output-CmDOcA7K.mjs +1 -0
  37. package/dist/{cf-command-values-ByHk0xg4.mjs → cf-command-values-Ccl-zRhl.mjs} +10 -7
  38. package/dist/cf-config-migrate-Dy8MrKgF.mjs +326 -0
  39. package/dist/{cf-worker-settings-BECvvTVd.mjs → cf-worker-settings-CARs4Wy9.mjs} +14 -10
  40. package/dist/cli/cli.mjs +66 -76
  41. package/dist/cli/cloudflare-operation-process.mjs +21 -19
  42. package/dist/cli/env-schema-probe.d.mts +1 -5
  43. package/dist/cli/env-schema-probe.mjs +4 -5
  44. package/dist/client-DVtAKeUm.mjs +1 -0
  45. package/dist/{client-BEMtySaV.mjs → client-Qayy9xEh.mjs} +10 -12
  46. package/dist/{cloudflare-auth-Byo_0_N9.mjs → cloudflare-auth-CEu-1Ps_.mjs} +3 -4
  47. package/dist/{cloudflare-cmd-BaqIigwI.mjs → cloudflare-cmd-DiFGaLow.mjs} +7 -8
  48. package/dist/{cloudflare-config-DchHxPTo.mjs → cloudflare-config-Chet188_.mjs} +25 -9
  49. package/dist/{cloudflare-connect-pNLQmr_e.mjs → cloudflare-connect-BdgAQBc7.mjs} +5 -6
  50. package/dist/{cloudflare-operations-vP3b5CQf.mjs → cloudflare-operations-CWA24vCh.mjs} +8 -9
  51. package/dist/{cloudflare-operations-PCM4wucv.mjs → cloudflare-operations-D8MoezuN.mjs} +1 -1
  52. package/dist/{cloudflare-process-8jEYIeim.mjs → cloudflare-process-DjJ638A-.mjs} +7 -9
  53. package/dist/{cloudflare-user-output-Q-k0QoNQ.mjs → cloudflare-user-output-zEwuGrEJ.mjs} +1 -2
  54. package/dist/collect-8i0wU63d.mjs +1 -0
  55. package/dist/{collect-Dew86qce.mjs → collect-C6Blu9yw.mjs} +2 -3
  56. package/dist/{config-BU6hMu1W.mjs → config-BszFVhpk.mjs} +1 -1
  57. package/dist/{config-BIaXIkkv.mjs → config-Bt4rw93x.mjs} +5 -6
  58. package/dist/{config-Du88-7Y8.d.mts → config-CzsNzGVH.d.mts} +4 -6
  59. package/dist/{config-DHgSEWT7.mjs → config-DkA9jYF2.mjs} +9 -8
  60. package/dist/config-WlvEcL82.mjs +86 -0
  61. package/dist/config-entry.d.mts +1 -3
  62. package/dist/config-entry.mjs +1 -2
  63. package/dist/{connect-DwVsBvVh.mjs → connect-b9mJbb6X.mjs} +10 -11
  64. package/dist/{create-project-CjzbBlTv.mjs → create-project-eomwm0wa.mjs} +9 -11
  65. package/dist/{create-project-CgrnvzyA.mjs → create-project-rnjum4_V.mjs} +1 -1
  66. package/dist/{database-provider-Cx525bwX.mjs → database-provider-DkZo4VwN.mjs} +1 -2
  67. package/dist/database-provider.d.mts +1 -3
  68. package/dist/database-provider.mjs +1 -1
  69. package/dist/{db-rvo64snS.mjs → db-UPWmiSk1.mjs} +52 -54
  70. package/dist/{db-types-NGxPwnlt.mjs → db-types-C_8amnB0.mjs} +3 -4
  71. package/dist/{delete-DWX6dP4M.mjs → delete-BeeYi1WO.mjs} +7 -8
  72. package/dist/deploy-CfU7CR-b.mjs +2 -0
  73. package/dist/{deploy-hRPvw8ci.mjs → deploy-CwmCcTlq.mjs} +321 -185
  74. package/dist/{deploy-managed-static-CDYA2p3L.mjs → deploy-managed-static-gPDxyp3v.mjs} +46 -46
  75. package/dist/{deploy-transport-JCxw7QDi.mjs → deploy-transport-L6zzPE9T.mjs} +17 -17
  76. package/dist/deploy.d.mts +3 -3
  77. package/dist/deploy.mjs +13 -12
  78. package/dist/{dev-inbox-D0jxye_D.mjs → dev-inbox-CwH5VuZj.mjs} +3 -4
  79. package/dist/discover-D4mQthao.mjs +1 -0
  80. package/dist/{discover-LaV0tbIu.mjs → discover-Dhkzxgdt.mjs} +3 -4
  81. package/dist/{dispatch-OVLeWW8K.mjs → dispatch-CiJ1Xrba.mjs} +13 -16
  82. package/dist/{dist-Cegxq8gs.mjs → dist-B6eN80gc.mjs} +199 -118
  83. package/dist/{dist-D15hFhP0.mjs → dist-BWNkVq50.mjs} +8 -15
  84. package/dist/{dist-Cor9XGoz.mjs → dist-D23AAMxT.mjs} +9 -16
  85. package/dist/{dist-ipQi0Q8y.mjs → dist-DMYe8CZJ.mjs} +1 -2
  86. package/dist/{dist-B1PLt4_8.mjs → dist-eV_Ep60B.mjs} +1 -1
  87. package/dist/{domain-CH5iBD9Y.mjs → domain-3xdH9p2L.mjs} +8 -9
  88. package/dist/{dotenv-CNazY3-w.mjs → dotenv-CEI8hapP.mjs} +1 -2
  89. package/dist/{drizzle-9TubSZvI.mjs → drizzle-C8MPqt5m.mjs} +1 -1
  90. package/dist/{drizzle-BQfyvQKX.mjs → drizzle-lFdzSEa9.mjs} +2 -3
  91. package/dist/{email-B9ayYQEG.mjs → email-BHY72ixO.mjs} +3 -4
  92. package/dist/{email-CbTO1l78.mjs → email-Du3YRnM5.mjs} +14 -15
  93. package/dist/{email-cloudflare-B8-pq_-W.mjs → email-cloudflare-CtD8qE13.mjs} +34 -24
  94. package/dist/{email-protocol-D9nTvhCp.mjs → email-protocol-DTs_TjCS.mjs} +1 -2
  95. package/dist/{entry-BEM8ZuGP.mjs → entry-CBZsCy3O.mjs} +5 -6
  96. package/dist/{env-BBdw236G.mjs → env-Cnvp0pGy.mjs} +10 -11
  97. package/dist/{env-BaMz0j7H.mjs → env-CuzZZyjB.mjs} +3 -4
  98. package/dist/{env-0jrMQJI_.mjs → env-DtKg5G26.mjs} +2 -3
  99. package/dist/{env-helpers--wFmQ_5Q.mjs → env-helpers-Dj_SIwPu.mjs} +1 -2
  100. package/dist/{env-helpers-CyKtOBpj.d.mts → env-helpers-U56xuFgL.d.mts} +1 -3
  101. package/dist/{env-public-6lqiSD2b.d.mts → env-public-CeNeO_AT.d.mts} +2 -4
  102. package/dist/{env-raw-D74P4ebM.mjs → env-raw-e8qgqAzQ.mjs} +1 -2
  103. package/dist/{env-types-BicfKBhV.mjs → env-types-DqzVBKnS.mjs} +4 -5
  104. package/dist/{env-validation-BfBVvBNe.mjs → env-validation-C8Cmvas0.mjs} +1 -1
  105. package/dist/{env-validation-XcukUlFM.mjs → env-validation-GV1oD4EV.mjs} +10 -10
  106. package/dist/error-pages-COVBnzK7.mjs +31 -0
  107. package/dist/{fetch-CUX0tB78.d.mts → fetch-B-gLGYVl.d.mts} +0 -4
  108. package/dist/{fetch-CtESUYWd.mjs → fetch-C8yhLoF3.mjs} +3 -4
  109. package/dist/{fetch-error-Bw0n-IY-.mjs → fetch-error-DmlRM6e4.mjs} +2 -4
  110. package/dist/{fetch-stream-BspOeTAI.mjs → fetch-stream-DafNtVJC.mjs} +4 -5
  111. package/dist/{fetch-stream-DfkAzZf-.d.mts → fetch-stream-DuwxWmBM.d.mts} +1 -3
  112. package/dist/{gen-CCx3t2Ju.mjs → gen-BvVmpZ5f.mjs} +12 -13
  113. package/dist/gen-i61rdQgg.mjs +1 -0
  114. package/dist/{generate-DkEb9rL-.mjs → generate-BOp1g1H_.mjs} +1 -1
  115. package/dist/{generate-B1m4Cm4n.mjs → generate-CWb8aOsm.mjs} +4 -5
  116. package/dist/{generated-wrangler-config-DeWj5F9Y.mjs → generated-wrangler-config-CoDaaFsA.mjs} +1 -2
  117. package/dist/{git-metadata-D-gurjzG.mjs → git-metadata-Cukp5kV5.mjs} +1 -2
  118. package/dist/{github-cmd-BzkRLkbg.mjs → github-cmd-X2GKiLi-.mjs} +8 -9
  119. package/dist/{handler-CQv5YDS0.d.mts → handler-Drm_lyrV.d.mts} +15 -26
  120. package/dist/{handler-BZ1t7-Rv.mjs → handler-xmzz0U38.mjs} +4 -5
  121. package/dist/{head-D2VF4ApL.mjs → head-5XPcnG-j.mjs} +1 -2
  122. package/dist/{head-C8K_iGe6.d.mts → head-MeF_5M_3.d.mts} +0 -2
  123. package/dist/{headers-D522zd0A.mjs → headers-DEUBAM6W.mjs} +4 -5
  124. package/dist/help-BcZDUcTw.mjs +1 -0
  125. package/dist/{help-CKbrhZha.mjs → help-EWDNxST-.mjs} +19 -11
  126. package/dist/{inbound-VrOLqwZY.mjs → inbound-DQfekMtz.mjs} +5 -6
  127. package/dist/{inbound-Da7XsjH3.d.mts → inbound-DSKSHDUj.d.mts} +0 -4
  128. package/dist/index.d.mts +23 -13
  129. package/dist/index.mjs +504 -225
  130. package/dist/{info-oBm8yK8J.mjs → info-jW8_d3VI.mjs} +6 -7
  131. package/dist/{init-CBp_uMve.mjs → init-jDQ5G9QC.mjs} +62 -64
  132. package/dist/{isr-config-fZaJJ8t7.mjs → isr-config-DhBkzCdY.mjs} +5 -9
  133. package/dist/{limits-D0vD1M9A.mjs → limits-CrHLm5Tk.mjs} +1 -2
  134. package/dist/{limits-CFsDKQvU.d.mts → limits-_xIf5z_P.d.mts} +0 -2
  135. package/dist/{link-Dt_QXmM4.mjs → link-DOyxX5Xs.mjs} +8 -9
  136. package/dist/{list-DF6asTdt.mjs → list-C9pTYDtl.mjs} +8 -9
  137. package/dist/{live-CXJ9yC98.d.mts → live-CDBHyYiR.d.mts} +2 -4
  138. package/dist/{live-BcHoTDFe.mjs → live-DF4HUl2m.mjs} +5 -7
  139. package/dist/{load-user-env-DD5qveNU.mjs → load-user-env-CSwdofj0.mjs} +1 -2
  140. package/dist/{local-d1-CUhH3qtj.mjs → local-d1-CKfek6Z4.mjs} +4 -5
  141. package/dist/{log-BMwmN5Ae.mjs → log-D9hwSySP.mjs} +3 -4
  142. package/dist/login-C0MiQrYs.mjs +1 -0
  143. package/dist/{login-BjSyhXlT.mjs → login-koQbjzPd.mjs} +6 -7
  144. package/dist/{logs-DmvBl6xA.mjs → logs-cTU5TsRW.mjs} +8 -9
  145. package/dist/migrate-BG09-KOv.mjs +1 -0
  146. package/dist/{migrate-BXRHpYwR.mjs → migrate-C62pGTfr.mjs} +22 -79
  147. package/dist/{migration-handler-CwlEQUoo.d.mts → migration-handler-D8mDx3Ew.d.mts} +0 -4
  148. package/dist/{migration-handler-Cg0Y4EPu.mjs → migration-handler-DCehTlWs.mjs} +1 -2
  149. package/dist/{mime-BAyHPskU.mjs → mime-DKkO7ZtA.mjs} +2 -3
  150. package/dist/{mysql-migration-sql-BIS5vbNk.mjs → mysql-migration-sql-CI9VTwjt.mjs} +3 -5
  151. package/dist/{neon-DTZr7Bu7.mjs → neon-CJzQSycr.mjs} +2 -3
  152. package/dist/nitro.d.mts +0 -2
  153. package/dist/nitro.mjs +6 -7
  154. package/dist/{node-DtD7ZiPf.mjs → node-BfAt2rz8.mjs} +9 -10
  155. package/dist/{operator-args-BsJIYXaT.mjs → operator-args-D79WQP70.mjs} +2 -3
  156. package/dist/{operator-auth-Cr2zCc-J.mjs → operator-auth-CfDcmzpo.mjs} +2 -3
  157. package/dist/{operator-client-C-ROjk1I.mjs → operator-client-BIY4-N_6.mjs} +3 -4
  158. package/dist/operator-cmd-BhHXIL2G.mjs +1 -0
  159. package/dist/{operator-cmd-DjZKGGgN.mjs → operator-cmd-CnAvSqJ5.mjs} +8 -9
  160. package/dist/{output-BpgYODYx.mjs → output-BCdLioKP.mjs} +4 -5
  161. package/dist/output-E6gecbbV.mjs +1 -0
  162. package/dist/{package-json-BjYqR-So.mjs → package-json-DvS6IFRv.mjs} +2 -3
  163. package/dist/pages/client.d.mts +22 -23
  164. package/dist/pages/client.mjs +51 -31
  165. package/dist/pages/head.d.mts +1 -1
  166. package/dist/pages/head.mjs +1 -1
  167. package/dist/pages/index.d.mts +18 -14
  168. package/dist/pages/index.mjs +99 -10
  169. package/dist/pages/islands-plugin.d.mts +29 -11
  170. package/dist/pages/islands-plugin.mjs +3 -4
  171. package/dist/pages/prefetch.d.mts +1 -1
  172. package/dist/pages/prefetch.mjs +1 -1
  173. package/dist/pages/protocol.d.mts +2 -2
  174. package/dist/pages/protocol.mjs +2 -2
  175. package/dist/pages/serialize.d.mts +1 -1
  176. package/dist/pages/serialize.mjs +1 -1
  177. package/dist/{pg-J2HbZIkX.mjs → pg-DoyPxa_X.mjs} +1 -2
  178. package/dist/{picocolors-BsDfhxIw.mjs → picocolors-D1NxSLw-.mjs} +2 -3
  179. package/dist/{plan-BhLO2p4w.mjs → plan-BOD70XGS.mjs} +1 -2
  180. package/dist/plan-CQ-N4gws.mjs +1 -0
  181. package/dist/{platform-args-BMD2gjc_.mjs → platform-args-Bv9hoLEL.mjs} +4 -7
  182. package/dist/platform-args-C1kqYUen.mjs +1 -0
  183. package/dist/{platform-auth-config-BgnuMbml.mjs → platform-auth-config-CLj0EvnB.mjs} +10 -11
  184. package/dist/{platform-auth-protection-NjRejttU.mjs → platform-auth-protection-DQDSxVhr.mjs} +10 -11
  185. package/dist/{platform-auth-recovery-Ug12d9W5.mjs → platform-auth-recovery-DD3oLerq.mjs} +9 -11
  186. package/dist/{platform-cmd-HByuZAO7.mjs → platform-cmd-PLNLg-2N.mjs} +12 -13
  187. package/dist/{platform-cmd-BYKLMPCn.mjs → platform-cmd-WnOmdLzR.mjs} +1 -1
  188. package/dist/{platform-discovery-CHhNs8Nn.mjs → platform-discovery-B0eZjZ3B.mjs} +2 -3
  189. package/dist/{platform-domain-DLSQ8GF8.mjs → platform-domain-Bnq0vg0q.mjs} +7 -8
  190. package/dist/{platform-lifecycle-3dwFJmnq.mjs → platform-lifecycle-BCsFg1Tl.mjs} +53 -88
  191. package/dist/{platform-lifecycle-BRqcxerG.mjs → platform-lifecycle-BQiN9HN5.mjs} +1 -1
  192. package/dist/{platform-management-ZK6XcbCo.mjs → platform-management-CMJR8Zi-.mjs} +1 -1
  193. package/dist/{platform-management-ZZ6bQM5j.mjs → platform-management-nzCDwtiN.mjs} +7 -9
  194. package/dist/{platform-plans-config-CeydDSj0.mjs → platform-plans-config-Dx1agneU.mjs} +5 -6
  195. package/dist/{platform-recovery-8vNE5dNN.mjs → platform-recovery-DBNoME3I.mjs} +5 -6
  196. package/dist/{platform-registry-B9mWX9LO.mjs → platform-registry-DZ_2Xuqd.mjs} +4 -6
  197. package/dist/{platform-setup-Ca53gtt0.mjs → platform-setup-VEcHu0Vq.mjs} +4 -5
  198. package/dist/{plugin-inference-CeiB6BG5.mjs → plugin-inference-DmwjC3y2.mjs} +16 -24
  199. package/dist/{prefetch-Ce6la4EI.d.mts → prefetch-CG0K6JPd.d.mts} +0 -2
  200. package/dist/{prefetch-Bsc_Pb6c.mjs → prefetch-L93_1Jk7.mjs} +1 -2
  201. package/dist/prepare-BJMmfq3W.mjs +1 -0
  202. package/dist/{prepare-5BR7Splm.mjs → prepare-BPsfLWaW.mjs} +4 -5
  203. package/dist/{prepare-Dseww74N.mjs → prepare-pfl2LIMy.mjs} +17 -14
  204. package/dist/{prerender-render-CaShbHJ3.mjs → prerender-render-RlAj6hh8.mjs} +2 -3
  205. package/dist/prerender-render.d.mts +1 -3
  206. package/dist/prerender-render.mjs +1 -1
  207. package/dist/{project-rqDnVsJN.mjs → project-CLwxcEdq.mjs} +3 -4
  208. package/dist/{project-zdB3fs9G.mjs → project-DVsTAWFh.mjs} +1 -1
  209. package/dist/{project-cmd-CjLNNxwe.mjs → project-cmd-5Izu4Pg3.mjs} +21 -23
  210. package/dist/{project-paths-DGu_QZ_Q.mjs → project-paths-CdGv9Tmi.mjs} +3 -5
  211. package/dist/project-slug-BUy0lmyR.mjs +1 -0
  212. package/dist/{project-slug-23TpquG4.mjs → project-slug-CO6ci9XG.mjs} +0 -1
  213. package/dist/{project-team-DE5drjcl.mjs → project-team-DSUyjZFh.mjs} +7 -8
  214. package/dist/{project-token-XEYEXfiJ.mjs → project-token-wj09YQSB.mjs} +7 -8
  215. package/dist/{project-tsconfig-Itv1f4WC.mjs → project-tsconfig-Cf2NFjlM.mjs} +28 -8
  216. package/dist/{project-zero-trust-6VPU8zmV.mjs → project-zero-trust-BMHf2YF0.mjs} +7 -8
  217. package/dist/{protocol-DimNxVRr.mjs → protocol-0-lp9ZYx.mjs} +6 -7
  218. package/dist/{protocol-BekmFxCI.d.mts → protocol-xdrl-In0.d.mts} +3 -5
  219. package/dist/{providers-BNKRacMr.d.mts → providers-D5P8j_8D.d.mts} +0 -2
  220. package/dist/{providers-BUHwJlmM.mjs → providers-ZARwX2cL.mjs} +1 -2
  221. package/dist/{provision-B7UFrBH7.mjs → provision-CRiNnlfE.mjs} +29 -14
  222. package/dist/{provision-Chq0NRAV.mjs → provision-CxHIGBIZ.mjs} +1 -1
  223. package/dist/{queues-BWKt1Xo4.d.mts → queues-DdM42xXW.d.mts} +0 -2
  224. package/dist/{r2-conditions-B8xUgJRc.mjs → r2-conditions-BqkQNt2n.mjs} +1 -2
  225. package/dist/{requests-CG-Pj8ze.mjs → requests-DicgB5jU.mjs} +6 -7
  226. package/dist/resolve-project-CgfjtOwz.mjs +1 -0
  227. package/dist/{resolve-project-Xoi6eTWY.mjs → resolve-project-D0YNnJfm.mjs} +4 -5
  228. package/dist/{resource-name-C7LVpcRm.mjs → resource-name-DlJ9QXzg.mjs} +1 -2
  229. package/dist/{response-Tn7rU0MV.mjs → response-HmNjB30w.mjs} +1 -2
  230. package/dist/{rollback-CIrm2txZ.mjs → rollback-DrDZOKNE.mjs} +7 -8
  231. package/dist/{rolldown-runtime-3h0WiCiA.mjs → rolldown-runtime-uD8oG6U2.mjs} +1 -2
  232. package/dist/{route-types--PAOzHlH.mjs → route-types-irZc1txT.mjs} +100 -7
  233. package/dist/route-url-BGOiyKNz.d.mts +24 -0
  234. package/dist/route-url-CRDF-I0I.mjs +57 -0
  235. package/dist/routes-stub.d.mts +4 -3
  236. package/dist/routes-stub.mjs +1 -1
  237. package/dist/{routing-assets-DdSFxoLp.mjs → routing-assets-DJIVOrCh.mjs} +1 -2
  238. package/dist/{runner-3uGC-oLF.mjs → runner-5MCSimKx.mjs} +5 -6
  239. package/dist/{runner-WCdfeI0q.mjs → runner-QMeOpScZ.mjs} +1 -1
  240. package/dist/{runner-mysql-BcHnLUuM.mjs → runner-mysql-0zVmB1JW.mjs} +1 -1
  241. package/dist/{runner-mysql-BWmbk5IE.mjs → runner-mysql-Bdmsp_x4.mjs} +3 -4
  242. package/dist/{runner-pg-Cgp-cr_p.mjs → runner-pg-2pjltt0t.mjs} +1 -1
  243. package/dist/{runner-pg-Cr3qrqi4.mjs → runner-pg-mYc75KfH.mjs} +2 -3
  244. package/dist/runtime/ai.d.mts +0 -4
  245. package/dist/runtime/ai.mjs +6 -8
  246. package/dist/runtime/auth-client-react.d.mts +1 -1
  247. package/dist/runtime/auth-client-react.mjs +1 -1
  248. package/dist/runtime/auth-client-solid.d.mts +1 -1
  249. package/dist/runtime/auth-client-solid.mjs +1 -1
  250. package/dist/runtime/auth-client-svelte.d.mts +1 -1
  251. package/dist/runtime/auth-client-svelte.mjs +1 -1
  252. package/dist/runtime/auth-client-vue.d.mts +1 -1
  253. package/dist/runtime/auth-client-vue.mjs +1 -1
  254. package/dist/runtime/auth-client.d.mts +1 -1
  255. package/dist/runtime/auth-client.mjs +1 -1
  256. package/dist/runtime/auth.d.mts +2 -2
  257. package/dist/runtime/auth.mjs +1 -1
  258. package/dist/runtime/better-auth-mysql.d.mts +2 -4
  259. package/dist/runtime/better-auth-mysql.mjs +3 -4
  260. package/dist/runtime/better-auth-pg.d.mts +2 -4
  261. package/dist/runtime/better-auth-pg.mjs +4 -5
  262. package/dist/runtime/better-auth.d.mts +2 -4
  263. package/dist/runtime/better-auth.mjs +3 -4
  264. package/dist/runtime/client-react.d.mts +4 -4
  265. package/dist/runtime/client-react.mjs +4 -4
  266. package/dist/runtime/client-solid.d.mts +4 -4
  267. package/dist/runtime/client-solid.mjs +4 -4
  268. package/dist/runtime/client-svelte.d.mts +4 -4
  269. package/dist/runtime/client-svelte.mjs +4 -4
  270. package/dist/runtime/client-vue.d.mts +4 -4
  271. package/dist/runtime/client-vue.mjs +4 -4
  272. package/dist/runtime/client.d.mts +4 -4
  273. package/dist/runtime/client.mjs +4 -4
  274. package/dist/runtime/db.d.mts +0 -2
  275. package/dist/runtime/db.mjs +2 -3
  276. package/dist/runtime/durable.d.mts +0 -2
  277. package/dist/runtime/durable.mjs +3 -4
  278. package/dist/runtime/email/testing.d.mts +1 -5
  279. package/dist/runtime/email/testing.mjs +5 -6
  280. package/dist/runtime/email-protocol.d.mts +0 -2
  281. package/dist/runtime/email-protocol.mjs +1 -1
  282. package/dist/runtime/email.d.mts +1 -5
  283. package/dist/runtime/email.mjs +6 -7
  284. package/dist/runtime/env-public-client.d.mts +1 -3
  285. package/dist/runtime/env-public-client.mjs +2 -3
  286. package/dist/runtime/env-public.d.mts +2 -2
  287. package/dist/runtime/env-public.mjs +5 -7
  288. package/dist/runtime/env.d.mts +0 -4
  289. package/dist/runtime/env.mjs +1 -1
  290. package/dist/runtime/fetch-server.d.mts +1 -3
  291. package/dist/runtime/fetch-server.mjs +3 -4
  292. package/dist/runtime/fetch-stream.d.mts +2 -2
  293. package/dist/runtime/fetch-stream.mjs +2 -2
  294. package/dist/runtime/fetch.d.mts +1 -1
  295. package/dist/runtime/fetch.mjs +2 -2
  296. package/dist/runtime/handler.d.mts +1 -1
  297. package/dist/runtime/handler.mjs +2 -2
  298. package/dist/runtime/isr.d.mts +1 -3
  299. package/dist/runtime/isr.mjs +2 -3
  300. package/dist/runtime/kv.d.mts +1 -3
  301. package/dist/runtime/kv.mjs +2 -3
  302. package/dist/runtime/limits.d.mts +1 -1
  303. package/dist/runtime/limits.mjs +1 -1
  304. package/dist/runtime/live-client.d.mts +1 -3
  305. package/dist/runtime/live-client.mjs +1 -2
  306. package/dist/runtime/live-server.d.mts +0 -2
  307. package/dist/runtime/live-server.mjs +3 -4
  308. package/dist/runtime/live.d.mts +1 -1
  309. package/dist/runtime/live.mjs +1 -1
  310. package/dist/runtime/log.d.mts +3 -3
  311. package/dist/runtime/log.mjs +26 -18
  312. package/dist/runtime/migration-handler-mysql.d.mts +2 -4
  313. package/dist/runtime/migration-handler-mysql.mjs +2 -3
  314. package/dist/runtime/migration-handler-pg.d.mts +2 -4
  315. package/dist/runtime/migration-handler-pg.mjs +2 -3
  316. package/dist/runtime/migration-handler.d.mts +1 -1
  317. package/dist/runtime/migration-handler.mjs +1 -1
  318. package/dist/runtime/queues.d.mts +1 -1
  319. package/dist/runtime/queues.mjs +2 -3
  320. package/dist/runtime/remote/binding-handler.d.mts +1 -3
  321. package/dist/runtime/remote/binding-handler.mjs +3 -4
  322. package/dist/runtime/remote/index.d.mts +1 -3
  323. package/dist/runtime/remote/index.mjs +8 -13
  324. package/dist/runtime/response.d.mts +1 -3
  325. package/dist/runtime/response.mjs +1 -1
  326. package/dist/runtime/route-url.d.mts +2 -2
  327. package/dist/runtime/route-url.mjs +1 -1
  328. package/dist/runtime/routing.d.mts +10 -12
  329. package/dist/runtime/routing.mjs +27 -88
  330. package/dist/runtime/sandbox-container.d.mts +1 -1
  331. package/dist/runtime/sandbox-container.mjs +1 -1
  332. package/dist/runtime/sandbox.d.mts +2 -2
  333. package/dist/runtime/sandbox.mjs +5 -6
  334. package/dist/runtime/seed.d.mts +0 -2
  335. package/dist/runtime/seed.mjs +1 -2
  336. package/dist/runtime/sse-client.d.mts +1 -3
  337. package/dist/runtime/sse-client.mjs +1 -2
  338. package/dist/runtime/sse.d.mts +1 -3
  339. package/dist/runtime/sse.mjs +1 -1
  340. package/dist/runtime/storage.d.mts +1 -3
  341. package/dist/runtime/storage.mjs +2 -3
  342. package/dist/runtime/validator.d.mts +1 -1
  343. package/dist/runtime/validator.mjs +1 -1
  344. package/dist/runtime/ws-server.d.mts +3 -5
  345. package/dist/runtime/ws-server.mjs +3 -4
  346. package/dist/runtime/ws.d.mts +1 -1
  347. package/dist/runtime/ws.mjs +7 -6
  348. package/dist/{sandbox-q3waMc2T.d.mts → sandbox-DE1WsxuB.d.mts} +2 -4
  349. package/dist/{sandbox-container-a9LRUtii.mjs → sandbox-container-BuxhwCgt.mjs} +1 -2
  350. package/dist/{sandbox-container-ChQRum-j.d.mts → sandbox-container-CZFZdMso.d.mts} +0 -2
  351. package/dist/{scan-N9WzdcAl.mjs → scan-DSQtH3oS.mjs} +31 -25
  352. package/dist/{secret-BL6g7mF5.mjs → secret-C_QtTzJG.mjs} +23 -24
  353. package/dist/{serialize-YHvlcG3Q.mjs → serialize-DUuYuaY3.mjs} +2 -4
  354. package/dist/{serialize-DtR8Vwa_.d.mts → serialize-I4EmS-Wf.d.mts} +0 -2
  355. package/dist/{skills-CrUO3PJ0.mjs → skills-D393E4lB.mjs} +4 -5
  356. package/dist/{sqlite-validation-BzKMWnO4.mjs → sqlite-validation-CLJXXN93.mjs} +1 -2
  357. package/dist/{sse-CMvCgjNk.mjs → sse-CxR30yMF.mjs} +1 -2
  358. package/dist/{standard-schema-Fo_vCAZh.d.mts → standard-schema-CuDawHOC.d.mts} +0 -2
  359. package/dist/{static-asset-marker-Btf-6oCD.mjs → static-asset-marker-NR1XS2z5.mjs} +1 -2
  360. package/dist/{subcommand-prompt-D9OhhbGG.mjs → subcommand-prompt-CxJXporl.mjs} +3 -4
  361. package/dist/sveltekit.d.mts +0 -2
  362. package/dist/sveltekit.mjs +2 -3
  363. package/dist/{terminal-log-text-D9ACPOuG.mjs → terminal-log-text-DNsWJREL.mjs} +1 -2
  364. package/dist/{types-w72dljaA.d.mts → types-agfx0alu.d.mts} +0 -4
  365. package/dist/validate-DY1U9rET.mjs +1 -0
  366. package/dist/{validate-CnZPMq4q.mjs → validate-Ddzl-IwT.mjs} +4 -5
  367. package/dist/{validation-error-Dg9Recn1.mjs → validation-error-rDVbUJet.mjs} +2 -4
  368. package/dist/{validator-BTOu0fB0.mjs → validator-CTfmzZYb.mjs} +2 -5
  369. package/dist/{version-metadata-DmaZNTYW.mjs → version-metadata-Blf5H9BQ.mjs} +5 -6
  370. package/dist/{worker-conditions-AWFRcFxR.mjs → worker-conditions-CBZ0RYsZ.mjs} +1 -2
  371. package/dist/wrangler-CPRX2d9A.mjs +1 -0
  372. package/dist/{wrangler-CDiEBCdS.mjs → wrangler-p-kLCJqF.mjs} +81 -15
  373. package/dist/{wrapper-CEiDeCqD.mjs → wrapper-iejSJDwL.mjs} +18 -15
  374. package/dist/{ws-D1zWiB_P.d.mts → ws-DzBD-NUj.d.mts} +4 -5
  375. package/dist/{yarn-pnp-DLbEFMT0.mjs → yarn-pnp-DgWbE7z5.mjs} +2 -3
  376. package/docs/guide/auth.md +1 -1
  377. package/docs/guide/database.md +4 -4
  378. package/docs/guide/deployment.md +1 -1
  379. package/docs/guide/edge/headers.md +2 -6
  380. package/docs/guide/edge/redirects.md +22 -0
  381. package/docs/guide/edge/static-assets.md +0 -10
  382. package/docs/guide/email/domains.md +3 -1
  383. package/docs/guide/email/receiving.md +3 -3
  384. package/docs/guide/email/sending.md +1 -1
  385. package/docs/guide/pages-routing/actions-and-forms.md +26 -5
  386. package/docs/guide/pages-routing/islands.md +2 -2
  387. package/docs/guide/pages-routing/loaders.md +3 -3
  388. package/docs/guide/pages-routing/markdown.md +6 -6
  389. package/docs/guide/pages-routing/overview.md +34 -27
  390. package/docs/guide/platform/administration/email.md +6 -8
  391. package/docs/guide/platform/installation/credentials.md +6 -6
  392. package/docs/guide/platform/installation/maintenance.md +10 -24
  393. package/docs/guide/platform/installation/prerequisites.md +1 -1
  394. package/docs/guide/platform/installation/setup.md +1 -1
  395. package/docs/guide/platform/installation/uninstall.md +1 -1
  396. package/docs/guide/queues.md +4 -8
  397. package/docs/guide/self-hosted-platform.md +3 -3
  398. package/docs/guide/server-routing.md +8 -6
  399. package/docs/guide/ssg.md +8 -0
  400. package/docs/guide/type-safety.md +42 -0
  401. package/docs/guide/typed-fetch.md +1 -1
  402. package/docs/guide/websockets.md +1 -1
  403. package/docs/integrations/cloudflare.md +17 -8
  404. package/docs/integrations/frameworks/analog.md +1 -1
  405. package/docs/integrations/frameworks/nuxt.md +1 -1
  406. package/docs/integrations/frameworks/sveltekit.md +1 -1
  407. package/docs/integrations/frameworks/tanstack-start.md +1 -1
  408. package/docs/integrations/hono.md +5 -5
  409. package/docs/reference/api/auth.md +6 -2
  410. package/docs/reference/api/deploy.md +15 -11
  411. package/docs/reference/api/pages.md +10 -0
  412. package/docs/reference/api/plugin.md +4 -4
  413. package/docs/reference/api/resources.md +4 -1
  414. package/docs/reference/api/rewrites.md +20 -2
  415. package/docs/reference/api/types.md +41 -0
  416. package/docs/reference/api.md +2 -2
  417. package/docs/reference/cli/database.md +15 -9
  418. package/docs/reference/cli/deploy.md +10 -9
  419. package/docs/reference/cli/email.md +4 -2
  420. package/docs/reference/cli/platform-installation.md +2 -2
  421. package/docs/reference/cli/project.md +2 -2
  422. package/docs/reference/cli/secrets.md +3 -1
  423. package/docs/reference/cli/setup.md +3 -3
  424. package/docs/reference/cli.md +1 -1
  425. package/docs/reference/config.md +12 -2
  426. package/package.json +35 -31
  427. package/sandbox.Dockerfile +1 -1
  428. package/schema.json +4 -0
  429. package/skills/void/SKILL.md +1 -1
  430. package/dist/auth-DkcFflXV.d.mts +0 -42
  431. package/dist/cf-build-output-DlBkWdNU.mjs +0 -1
  432. package/dist/client-DyxPQnF_.mjs +0 -1
  433. package/dist/collect-BWhkgtAn.mjs +0 -1
  434. package/dist/config-BTu1o3Dc.mjs +0 -49
  435. package/dist/deploy-CtHE2A3R.mjs +0 -2
  436. package/dist/discover-D4TPKo57.mjs +0 -1
  437. package/dist/gen-TgXy93Rr.mjs +0 -1
  438. package/dist/help-qOZr3wng.mjs +0 -1
  439. package/dist/login-Cdo8Aco1.mjs +0 -1
  440. package/dist/migrate-COPncCGx.mjs +0 -1
  441. package/dist/operator-cmd-DDiX7Y3f.mjs +0 -1
  442. package/dist/output-BW9uK099.mjs +0 -1
  443. package/dist/plan-CKX_jWnD.mjs +0 -1
  444. package/dist/platform-args-BC8_hsDj.mjs +0 -1
  445. package/dist/prepare-B3VrSF1Z.mjs +0 -1
  446. package/dist/project-slug-6cyz8E7k.mjs +0 -1
  447. package/dist/resolve-project-DD1vu8s9.mjs +0 -1
  448. package/dist/route-url-BgPja1GS.d.mts +0 -5
  449. package/dist/route-url-BjGv_KKY.mjs +0 -28
  450. package/dist/validate-D7Wn8PUX.mjs +0 -1
  451. package/dist/wrangler-DOPr4jyI.mjs +0 -1
@@ -1,53 +1,54 @@
1
- import { n as __toESM, t as __commonJSMin } from "./rolldown-runtime-3h0WiCiA.mjs";
2
- import { a as join, c as resolve, n as dirname, o as normalize, r as extname, s as relative, t as basename } from "./dist-ipQi0Q8y.mjs";
3
- import { t as require_picocolors } from "./picocolors-BsDfhxIw.mjs";
4
- import { r as detectFramework } from "./plugin-inference-CeiB6BG5.mjs";
5
- import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-DGu_QZ_Q.mjs";
6
- import { m as resolveBindingNames, p as readConfig, u as isNodeTarget } from "./config-DHgSEWT7.mjs";
7
- import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, o as requiresSandboxPlatformImage, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync } from "./application-analysis-DYdVoMAY.mjs";
8
- import { t as collectMigrations } from "./collect-Dew86qce.mjs";
9
- import { o as validateSsrEntry } from "./entry-BEM8ZuGP.mjs";
10
- import { r as hasEmailHandlers } from "./email-B9ayYQEG.mjs";
11
- import { a as resolveDistDir, c as hasDocumentRoutes, l as resolveAssetConfig, n as collectRevalidate, o as resolveWorkerDirName, r as hasRevalidate, s as hasApiRoutes } from "./isr-config-fZaJJ8t7.mjs";
12
- import { t as writeFileAtomic } from "./atomic-write-Dq6R0BPN.mjs";
13
- import { s as listPlatformConnections } from "./platform-registry-B9mWX9LO.mjs";
14
- import { c as writeDeploymentPlatform, n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
15
- import { n as readGeneratedWranglerConfigFile } from "./generated-wrangler-config-DeWj5F9Y.mjs";
16
- import { i as persistCloudflareConfig, r as materializeCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-DchHxPTo.mjs";
17
- import { A as syncWranglerWebSockets, C as readWranglerManagedQueueCleanupCandidates, D as sameMigrationsDir, E as resolveLiveBindingConfig, M as writeProvisionedWranglerConfig, N as writeWranglerPublishedTrafficSnapshot, a as LIVE_MIGRATION_TAG, c as bindingEntriesForField, h as nextDurableObjectMigrationTag, k as syncWranglerDurableObjects, m as hasDurableObjectSqliteMigration, o as acknowledgeWranglerManagedQueueRemovals, r as FRIENDLY_BINDING_NAMES, v as readExistingLiveBindingConfig, w as readWranglerPublishedTrafficSnapshot } from "./wrangler-CDiEBCdS.mjs";
18
- import { r as trustedCloudflareWorkerAccessHeaders, t as cfAccessHeaders } from "./cf-access-BM9G0lhO.mjs";
19
- import { t as ensurePlatformAccessToken } from "./cf-access-CWP4avfP.mjs";
20
- import { a as getApiUrl, c as getToken, l as getTokenSource } from "./auth-B6iOCjKI.mjs";
21
- import { i as otherQueueConsumers, n as chooseCloudflareQueueName, o as scopedCloudflareQueueName, r as cloudflareQueueName } from "./dispatch-OVLeWW8K.mjs";
22
- import { l as resolveRemoteMode, n as CLOUDFLARE_QUEUE_NAMES_BUILD_ENV, t as CLOUDFLARE_DEPLOY_BUILD_ENV } from "./env-BaMz0j7H.mjs";
23
- import { t as assertNoPrerenderFailures } from "./prerender-render-CaShbHJ3.mjs";
24
- import { a as buildEnv, n as readVersionMetadataBinding, r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-DmaZNTYW.mjs";
25
- import { a as emailConfigInputs, c as renderAddressMap, d as isGeneratedAssetHeaders, g as prerenderPagesNode, h as prerenderPages, i as createNodeEmailDns, l as renderEmailChecklist, m as collectPrerenderPathsNode, n as SEND_EMAIL_BINDING, o as preflightEmail, p as collectPrerenderPaths, r as applyEmailSetup, t as EMAIL_FROM_VAR } from "./email-cloudflare-B8-pq_-W.mjs";
26
- import { n as completeApplicationAnalysis, t as analyzeApplication } from "./application-routing-C8EqRDfv.mjs";
27
- import { a as record, i as migrateBuiltWranglerConfig, n as prepareCfFrameworkBuildOutput, r as prepareCfStaticBuildOutput, t as prepareCfBuildOutput } from "./cf-build-output-Bapzc_8Z.mjs";
28
- import { i as validateMigrations, t as assertJournalCoherence } from "./validate-CnZPMq4q.mjs";
29
- import { A as confirm, K as select, L as log, tt as isCancel } from "./dist-Cor9XGoz.mjs";
30
- import { r as getPackageDir } from "./agents-CuNtT0D_.mjs";
31
- import { a as isExpiredTokenError, r as PlatformClient } from "./client-BEMtySaV.mjs";
32
- import { o as formatCount, p as note, r as createSpinner, u as getErrorMessage } from "./output-BpgYODYx.mjs";
33
- import { t as getRequestedProjectSlug } from "./resolve-project-Xoi6eTWY.mjs";
34
- import { i as safePositional, r as readCfUploadOutput, t as CF_VERSION_SOURCE_MAX_OUTPUT_BYTES } from "./cf-command-values-ByHk0xg4.mjs";
35
- import { a as FRAMEWORK_PRESETS, c as hasBackendFiles, i as isCleanCloudflareExit, l as resolveCloudflareOperationArgv, o as detectPreset, s as formatProjectCommand, t as createCloudflareProcessRunner, u as resolveProjectCommand } from "./cloudflare-process-8jEYIeim.mjs";
36
- import { f as listSelfHostSecretNames, h as selfHostSchemaFailureMessage, i as SelfHostSecretListError, l as dischargeSelfHostEnvContext, n as SelfHostFirstDeployError, p as readEmittedWorkerVars, r as SelfHostSchemaError, s as deriveSelfHostEnvContextFromVars, t as SelfHostEnvValidationError } from "./env-validation-XcukUlFM.mjs";
37
- import { a as needsWrapper, r as cleanupWrapper, t as bundleEntry } from "./wrapper-CEiDeCqD.mjs";
38
- import { A as promptDeployProjectConfig, C as ensureManagedHyperdrive, D as hasNonPageBackend, E as getGitCommit, F as resolveStaticBuildCommand, I as resolveStaticDeployPreset, L as toManifestSchedulesAndQueues, M as resolveDeployWorkerMain, N as resolveDeployWranglerCompat, O as hasPrerenderSources, P as resolveFullDeployBuildCommand, R as validateDeployMigrations, S as createProjectFromSlug, T as getExitCode, _ as getDeploySchemaDriftMessage, a as collectAndHashAssets, b as assertProjectDeployAccess, c as readWranglerHtmlHandling, d as printDeploySuccess, f as mergeAndLintRoutingRules, g as assertDeploySchemaDriftFree, h as warnUnpublishedRouting, i as buildStaticManifest, j as resolveDeployLiveBindingConfig, k as log$1, l as formatDeploySummary, m as warnIgnoredNotFoundForFramework, n as runStaticDeploy, o as collectWorkerFiles, p as streamDirectR2Deploy, r as buildFrameworkManifest, s as detectNonSpaFallbackWarning, t as assembleVoidManifest, u as printDeployContext, v as hasDeploySchemaDrift, w as generateDeployWrapperIfNeeded, x as assertWorkerMainUploaded, y as assertEnvSchemaValid } from "./deploy-managed-static-CDYA2p3L.mjs";
39
- import { a as checkCloudflareProvisionDrift, d as isQueueConfirmedAbsent, f as isRealD1Id, g as provisionCloudflareResources, i as assertValidResourceName, m as isRealKvId, s as deleteEnvVarCaseAware } from "./provision-B7UFrBH7.mjs";
40
- import { c as scrubWranglerAuthCredentials, n as buildSchemaProbeEnv, o as resolveDeployTransport, r as deployChildEnv, s as scrubManagedDeployBuildMarkers, t as MANAGED_DEPLOY_BUILD_ENV } from "./deploy-transport-JCxw7QDi.mjs";
41
- import { n as getCfCliVersion, r as getVoidUserAgent, t as publishCloudflareObservability } from "./cf-worker-settings-BECvvTVd.mjs";
42
- import { t as sanitizeTerminalLogText } from "./terminal-log-text-D9ACPOuG.mjs";
43
- import { t as promptForLoginToken } from "./login-BjSyhXlT.mjs";
44
- import { a as parseCloudflareAuthSession, i as ensureCloudflareAuthentication, n as cloudflareCredentialOverrides, t as CloudflareAuthenticationError } from "./cloudflare-auth-Byo_0_N9.mjs";
45
- import { a as createCloudflareEmptyDomainPublisher, i as createCloudflareEmptyCronPublisher } from "./cloudflare-operations-vP3b5CQf.mjs";
46
- import { n as openMigrationValidationDatabase, t as SqliteMigrationError } from "./sqlite-validation-BzKMWnO4.mjs";
47
- import { a as discoverFrameworkWranglerFiles, i as writeVoidProjectConfig, t as migrateLegacyVoidConfig } from "./migrate-BXRHpYwR.mjs";
48
- import { a as runMySqlMigrations } from "./runner-mysql-BWmbk5IE.mjs";
49
- import { i as runPgMigrations } from "./runner-pg-Cr3qrqi4.mjs";
50
- import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
1
+ import { n as __toESM, t as __commonJSMin } from "./rolldown-runtime-uD8oG6U2.mjs";
2
+ import { a as join, c as resolve, n as dirname, o as normalize, r as extname, s as relative, t as basename } from "./dist-DMYe8CZJ.mjs";
3
+ import { t as require_picocolors } from "./picocolors-D1NxSLw-.mjs";
4
+ import { r as detectFramework } from "./plugin-inference-DmwjC3y2.mjs";
5
+ import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-CdGv9Tmi.mjs";
6
+ import { m as resolveBindingNames, p as readConfig, u as isNodeTarget } from "./config-DkA9jYF2.mjs";
7
+ import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, o as requiresSandboxPlatformImage, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync } from "./application-analysis-2vGZrKzg.mjs";
8
+ import { t as collectMigrations } from "./collect-C6Blu9yw.mjs";
9
+ import { o as validateSsrEntry } from "./entry-CBZsCy3O.mjs";
10
+ import { r as hasEmailHandlers } from "./email-BHY72ixO.mjs";
11
+ import { a as resolveDistDir, c as hasDocumentRoutes, l as resolveAssetConfig, n as collectRevalidate, o as resolveWorkerDirName, r as hasRevalidate, s as hasApiRoutes } from "./isr-config-DhBkzCdY.mjs";
12
+ import { t as writeFileAtomic } from "./atomic-write-DA6eD1Kp.mjs";
13
+ import { s as listPlatformConnections } from "./platform-registry-DZ_2Xuqd.mjs";
14
+ import { c as writeDeploymentPlatform, n as readDeploymentPlatform, r as readProjectConfig } from "./project-CLwxcEdq.mjs";
15
+ import { n as readGeneratedWranglerConfigFile } from "./generated-wrangler-config-CoDaaFsA.mjs";
16
+ import { a as persistCloudflareConfig, c as stashCloudflareDeployPointer, i as materializeCloudflareConfig } from "./cloudflare-config-Chet188_.mjs";
17
+ import { A as syncWranglerWebSockets, C as readWranglerManagedQueueCleanupCandidates, D as sameMigrationsDir, E as resolveLiveBindingConfig, L as writeVoidProjectConfig, M as writeProvisionedWranglerConfig, N as writeWranglerPublishedTrafficSnapshot, a as LIVE_MIGRATION_TAG, c as bindingEntriesForField, h as nextDurableObjectMigrationTag, k as syncWranglerDurableObjects, m as hasDurableObjectSqliteMigration, o as acknowledgeWranglerManagedQueueRemovals, r as FRIENDLY_BINDING_NAMES, v as readExistingLiveBindingConfig, w as readWranglerPublishedTrafficSnapshot } from "./wrangler-p-kLCJqF.mjs";
18
+ import { r as trustedCloudflareWorkerAccessHeaders, t as cfAccessHeaders } from "./cf-access-pejlJmuy.mjs";
19
+ import { t as ensurePlatformAccessToken } from "./cf-access-BmBT2h8_.mjs";
20
+ import { a as getApiUrl, c as getToken, l as getTokenSource } from "./auth-Dy8svcqQ.mjs";
21
+ import { n as record, t as migrateBuiltWranglerConfig } from "./cf-config-migrate-Dy8MrKgF.mjs";
22
+ import { l as resolveRemoteMode, n as CLOUDFLARE_QUEUE_NAMES_BUILD_ENV, t as CLOUDFLARE_DEPLOY_BUILD_ENV } from "./env-CuzZZyjB.mjs";
23
+ import { i as otherQueueConsumers, n as chooseCloudflareQueueName, o as scopedCloudflareQueueName, r as cloudflareQueueName } from "./dispatch-CiJ1Xrba.mjs";
24
+ import { t as assertNoPrerenderFailures } from "./prerender-render-RlAj6hh8.mjs";
25
+ import { a as buildEnv, n as readVersionMetadataBinding, r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-Blf5H9BQ.mjs";
26
+ import { a as emailConfigInputs, c as renderAddressMap, d as isGeneratedAssetHeaders, g as prerenderPagesNode, h as prerenderPages, i as createNodeEmailDns, l as renderEmailChecklist, m as collectPrerenderPathsNode, n as SEND_EMAIL_BINDING, o as preflightEmail, p as collectPrerenderPaths, r as applyEmailSetup, t as EMAIL_FROM_VAR } from "./email-cloudflare-CtD8qE13.mjs";
27
+ import { n as completeApplicationAnalysis, t as analyzeApplication } from "./application-routing-DnUQoOJD.mjs";
28
+ import { n as prepareCfFrameworkBuildOutput, r as prepareCfStaticBuildOutput, t as prepareCfBuildOutput } from "./cf-build-output-B1C8U83u.mjs";
29
+ import { i as validateMigrations, t as assertJournalCoherence } from "./validate-Ddzl-IwT.mjs";
30
+ import { A as confirm, K as select, L as log, tt as isCancel } from "./dist-D23AAMxT.mjs";
31
+ import { r as getPackageDir } from "./agents-DRo8gzni.mjs";
32
+ import { a as isExpiredTokenError, r as PlatformClient } from "./client-Qayy9xEh.mjs";
33
+ import { o as formatCount, p as note, r as createSpinner, u as getErrorMessage } from "./output-BCdLioKP.mjs";
34
+ import { t as getRequestedProjectSlug } from "./resolve-project-D0YNnJfm.mjs";
35
+ import { i as safePositional, r as readCfUploadOutput, t as CF_VERSION_SOURCE_MAX_OUTPUT_BYTES } from "./cf-command-values-Ccl-zRhl.mjs";
36
+ import { a as FRAMEWORK_PRESETS, c as hasBackendFiles, i as isCleanCloudflareExit, l as resolveCloudflareOperationArgv, o as detectPreset, s as formatProjectCommand, t as createCloudflareProcessRunner, u as resolveProjectCommand } from "./cloudflare-process-DjJ638A-.mjs";
37
+ import { f as listSelfHostSecretNames, h as selfHostSchemaFailureMessage, i as SelfHostSecretListError, l as dischargeSelfHostEnvContext, n as SelfHostFirstDeployError, p as readEmittedWorkerVars, r as SelfHostSchemaError, s as deriveSelfHostEnvContextFromVars, t as SelfHostEnvValidationError } from "./env-validation-GV1oD4EV.mjs";
38
+ import { a as needsWrapper, r as cleanupWrapper, t as bundleEntry } from "./wrapper-iejSJDwL.mjs";
39
+ import { A as promptDeployProjectConfig, C as ensureManagedHyperdrive, D as hasNonPageBackend, E as getGitCommit, F as resolveStaticBuildCommand, I as resolveStaticDeployPreset, L as toManifestSchedulesAndQueues, M as resolveDeployWorkerMain, N as resolveDeployWranglerCompat, O as hasPrerenderSources, P as resolveFullDeployBuildCommand, R as validateDeployMigrations, S as createProjectFromSlug, T as getExitCode, _ as getDeploySchemaDriftMessage, a as collectAndHashAssets, b as assertProjectDeployAccess, c as readWranglerHtmlHandling, d as printDeploySuccess, f as mergeAndLintRoutingRules, g as assertDeploySchemaDriftFree, h as warnUnpublishedRouting, i as buildStaticManifest, j as resolveDeployLiveBindingConfig, k as log$1, l as formatDeploySummary, m as warnIgnoredNotFoundForFramework, n as runStaticDeploy, o as collectWorkerFiles, p as streamDirectR2Deploy, r as buildFrameworkManifest, s as detectNonSpaFallbackWarning, t as assembleVoidManifest, u as printDeployContext, v as hasDeploySchemaDrift, w as generateDeployWrapperIfNeeded, x as assertWorkerMainUploaded, y as assertEnvSchemaValid } from "./deploy-managed-static-gPDxyp3v.mjs";
40
+ import { a as checkCloudflareProvisionDrift, b as resolveWorkersDevComplianceRegion, d as isQueueConfirmedAbsent, f as isRealD1Id, g as provisionCloudflareResources, i as assertValidResourceName, m as isRealKvId, s as deleteEnvVarCaseAware } from "./provision-CRiNnlfE.mjs";
41
+ import { c as scrubWranglerAuthCredentials, n as buildSchemaProbeEnv, o as resolveDeployTransport, r as deployChildEnv, s as scrubManagedDeployBuildMarkers, t as MANAGED_DEPLOY_BUILD_ENV } from "./deploy-transport-L6zzPE9T.mjs";
42
+ import { n as getCfCliVersion, r as getVoidUserAgent, t as publishCloudflareWorkerSettings } from "./cf-worker-settings-CARs4Wy9.mjs";
43
+ import { t as sanitizeTerminalLogText } from "./terminal-log-text-DNsWJREL.mjs";
44
+ import { t as promptForLoginToken } from "./login-koQbjzPd.mjs";
45
+ import { a as parseCloudflareAuthSession, i as ensureCloudflareAuthentication, n as cloudflareCredentialOverrides, t as CloudflareAuthenticationError } from "./cloudflare-auth-CEu-1Ps_.mjs";
46
+ import { a as createCloudflareEmptyDomainPublisher, i as createCloudflareEmptyCronPublisher } from "./cloudflare-operations-CWA24vCh.mjs";
47
+ import { n as openMigrationValidationDatabase, t as SqliteMigrationError } from "./sqlite-validation-CLJXXN93.mjs";
48
+ import { r as discoverFrameworkWranglerFiles, t as migrateLegacyVoidConfig } from "./migrate-C62pGTfr.mjs";
49
+ import { a as runMySqlMigrations } from "./runner-mysql-Bdmsp_x4.mjs";
50
+ import { i as runPgMigrations } from "./runner-pg-mYc75KfH.mjs";
51
+ import { t as collectGitDeployMetadata } from "./git-metadata-Cukp5kV5.mjs";
51
52
  import { createRequire } from "node:module";
52
53
  import { cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
53
54
  import { fileURLToPath } from "node:url";
@@ -60,12 +61,12 @@ import { execFile, execSync, spawn } from "node:child_process";
60
61
  import { getWorkerAssetsDir, getWorkerBundleDir, getWorkerConfigPath, readBuildOutput } from "@cloudflare/build-output-utils";
61
62
  import { convertToWranglerConfig } from "@cloudflare/config";
62
63
  import ignore from "ignore";
63
- import { CloudflareWorkerInspectionError, activateCloudflareVersion, assertCloudflareBindingsPreserved, assertCloudflareDurableObjectLifecycleSupported, assertExistingCloudflareConfig, cloudflareCommandDiagnostic, encodeCloudflareVersionMessage, extractWorkersDevSubdomain, normalizeWorkersDevSubdomain, parseRootWranglerConfig, parseRootWranglerConfig as parseRootWranglerConfig$1, readBindingFieldPresence, readCloudflareTriggerConfig, readConfigEntryString, readExistingCloudflareWorker, readStoredResourceName, readWranglerTopLevelString, renderCloudflareStaticEntry, resolveD1MigrateTarget, stageCloudflareStaticAssets, writeCloudflareFrameworkDeployConfig, writeCloudflareStaticDeployConfig } from "@void/deploy-cloudflare";
64
+ import { CloudflareWorkerInspectionError, activateCloudflareVersion, assertCloudflareBindingsPreserved, assertCloudflareDurableObjectLifecycleSupported, assertExistingCloudflareConfig, cloudflareCommandDiagnostic, encodeCloudflareVersionMessage, extractWorkersDevSubdomain, normalizeReadinessAccessOrigin, normalizeWorkersDevSubdomain, parseRootWranglerConfig, parseRootWranglerConfig as parseRootWranglerConfig$1, readBindingFieldPresence, readCloudflareTriggerConfig, readConfigEntryString, readExistingCloudflareWorker, readStoredResourceName, readWranglerTopLevelString, renderCloudflareStaticEntry, resolveD1MigrateTarget, stageCloudflareStaticAssets, writeCloudflareFrameworkDeployConfig, writeCloudflareStaticDeployConfig } from "@void/deploy-cloudflare";
64
65
  import { setTimeout as setTimeout$1 } from "node:timers/promises";
65
66
  import mime from "mime";
66
67
  import { Buffer as Buffer$1 } from "node:buffer";
67
68
  import { Minimatch } from "minimatch";
68
- //#region src/cli/cloudflare-candidate.ts
69
+ // src/cli/cloudflare-candidate.ts
69
70
  const CANDIDATE_FILE = ".void/cloudflare-candidate.json";
70
71
  const INVALID_CANDIDATE_MESSAGE = "The saved Cloudflare candidate receipt is invalid. Restore or remove .void/cloudflare-candidate.json before retrying.";
71
72
  /** A saved upload chain: a non-empty list of distinct, non-empty version IDs. */
@@ -104,8 +105,7 @@ function clearCloudflareCandidate(root) {
104
105
  const path = join(root, CANDIDATE_FILE);
105
106
  if (existsSync(path)) unlinkSync(path);
106
107
  }
107
- //#endregion
108
- //#region src/cli/cloudflare-link.ts
108
+ // src/cli/cloudflare-link.ts
109
109
  const LINK_FILE = ".void/cloudflare-link.json";
110
110
  /** A pending handoff survives a failed build, so retrying cannot provision replacements. */
111
111
  function readCloudflareLink(root) {
@@ -218,8 +218,112 @@ async function maybeLinkCloudflareDeploy(root, options = {}, deps = {}) {
218
218
  });
219
219
  return isCancel(accepted) || accepted !== true ? "cancelled" : "existing";
220
220
  }
221
- //#endregion
222
- //#region src/cli/deploy-binding-snapshot.ts
221
+ // src/cli/cloudflare-readiness.ts
222
+ const STATE_FILE = join(".void", "cloudflare.json");
223
+ /** Resolve the account subdomain without exposing Cloudflare credentials to project code. */
224
+ function resolveCloudflareWorkersDevSubdomain(root, accountId, env = process.env) {
225
+ const configured = env.CLOUDFLARE_WORKERS_SUBDOMAIN;
226
+ if (configured !== void 0 && configured.trim().length > 0) {
227
+ const normalized = normalizeWorkersDevSubdomain(configured);
228
+ if (!normalized) throw new Error("deploy: CLOUDFLARE_WORKERS_SUBDOMAIN must be the account subdomain, for example \"my-team\" or \"my-team.workers.dev\".");
229
+ return normalized;
230
+ }
231
+ const cached = subdomainsByAccount(readCloudflareLocalState(root))[accountId];
232
+ return typeof cached === "string" ? normalizeWorkersDevSubdomain(cached) : void 0;
233
+ }
234
+ /**
235
+ * Record `CF_ACCESS_READINESS_ORIGIN` before project code runs. `void.config.ts` is evaluated in
236
+ * this process, so a later read of `process.env` could see a value that the project assigned,
237
+ * for example through a dotenv import. `null` means unset. An already recorded value is kept.
238
+ */
239
+ function withRecordedReadinessAccessOrigin(options, env = process.env) {
240
+ return options.readinessAccessOrigin !== void 0 ? options : {
241
+ ...options,
242
+ readinessAccessOrigin: env.CF_ACCESS_READINESS_ORIGIN ?? null
243
+ };
244
+ }
245
+ /**
246
+ * Validate the operator-selected origin that may receive readiness Access credentials when the
247
+ * probe uses a route or Custom Domain. Pass the value that `withRecordedReadinessAccessOrigin`
248
+ * recorded, not the current `process.env`.
249
+ */
250
+ function resolveCloudflareReadinessAccessOrigin(env) {
251
+ const configured = env.CF_ACCESS_READINESS_ORIGIN?.trim();
252
+ if (!configured) return;
253
+ const origin = normalizeReadinessAccessOrigin(configured);
254
+ if (!origin) throw new Error("deploy: CF_ACCESS_READINESS_ORIGIN must be one exact https origin, without a wildcard, path, query, fragment, or credentials, for example \"https://app.example.com\".");
255
+ return origin;
256
+ }
257
+ /**
258
+ * Read the account subdomain from the Cloudflare API when a first publish reports no URL and
259
+ * no subdomain is configured or cached. The API returns only the account label, so this adds
260
+ * `.fed` for FedRAMP High, as Wrangler does. A failed lookup resolves `unavailable`.
261
+ */
262
+ async function readCloudflareWorkersDevSubdomain(options) {
263
+ if (!options.verifyUploader()) return {
264
+ ok: false,
265
+ reason: "uploader-changed"
266
+ };
267
+ let label;
268
+ try {
269
+ const result = await options.runWrangler({
270
+ type: "workers.subdomain.get",
271
+ configPath: options.configPath
272
+ }, { capture: true });
273
+ if (!isCleanCloudflareExit(result) || !result.data || typeof result.data !== "object" || !("subdomain" in result.data) || typeof result.data.subdomain !== "string") return {
274
+ ok: false,
275
+ reason: "unavailable"
276
+ };
277
+ label = result.data.subdomain;
278
+ } catch {
279
+ return {
280
+ ok: false,
281
+ reason: "unavailable"
282
+ };
283
+ }
284
+ const subdomain = normalizeWorkersDevSubdomain(options.complianceRegion === "fedramp_high" ? `${label}.fed` : label);
285
+ return subdomain ? {
286
+ ok: true,
287
+ subdomain
288
+ } : {
289
+ ok: false,
290
+ reason: "unavailable"
291
+ };
292
+ }
293
+ /** Cache a Wrangler-reported account subdomain for later no-preview version probes. */
294
+ function rememberCloudflareWorkersDevSubdomain(root, accountId, url) {
295
+ const workersDevSubdomain = extractWorkersDevSubdomain(url);
296
+ if (!workersDevSubdomain) return false;
297
+ const current = readCloudflareLocalState(root);
298
+ const currentByAccount = subdomainsByAccount(current);
299
+ if (currentByAccount[accountId] === workersDevSubdomain) return false;
300
+ const { workersDevSubdomain: _legacy, ...state } = current;
301
+ const filePath = join(root, STATE_FILE);
302
+ mkdirSync(dirname(filePath), { recursive: true });
303
+ writeFileSync(filePath, JSON.stringify({
304
+ ...state,
305
+ workersDevSubdomains: {
306
+ ...currentByAccount,
307
+ [accountId]: workersDevSubdomain
308
+ }
309
+ }, null, 2) + "\n");
310
+ return true;
311
+ }
312
+ function subdomainsByAccount(state) {
313
+ const value = state.workersDevSubdomains;
314
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
315
+ }
316
+ function readCloudflareLocalState(root) {
317
+ const filePath = join(root, STATE_FILE);
318
+ if (!existsSync(filePath)) return {};
319
+ try {
320
+ const parsed = JSON.parse(readFileSync(filePath, "utf-8"));
321
+ return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : {};
322
+ } catch {
323
+ return {};
324
+ }
325
+ }
326
+ // src/cli/deploy-binding-snapshot.ts
223
327
  /** The id-bearing binding fields whose identity must survive the build unchanged. */
224
328
  const DEPLOY_BINDING_IDENTITY_FIELDS = {
225
329
  d1: {
@@ -642,8 +746,7 @@ function collectEmittedQueueGroupNames(value, group) {
642
746
  function deployPointerPath(root) {
643
747
  return join(root, ".wrangler", "deploy", "config.json");
644
748
  }
645
- //#endregion
646
- //#region src/cli/deploy-resources.ts
749
+ // src/cli/deploy-resources.ts
647
750
  /** Human labels for a drifted resource kind, used in guidance messages. */
648
751
  const CLOUDFLARE_RESOURCE_LABELS = {
649
752
  d1: "D1 database",
@@ -830,8 +933,7 @@ async function computeDesiredCloudflareResources(root, voidConfig, configPath, a
830
933
  needsLive: bindings.needsLive === true
831
934
  };
832
935
  }
833
- //#endregion
834
- //#region src/cli/deploy-artifact-validation.ts
936
+ // src/cli/deploy-artifact-validation.ts
835
937
  /**
836
938
  * Derive the env schema's server and required key names in an isolated subprocess, so project
837
939
  * code never runs in the credentialed parent. Loaded lazily to keep it out of managed deploys.
@@ -1251,8 +1353,7 @@ async function validateCloudflarePostBuildEnv(options) {
1251
1353
  }
1252
1354
  return true;
1253
1355
  }
1254
- //#endregion
1255
- //#region ../../node_modules/.pnpm/ci-info@4.4.0/node_modules/ci-info/vendors.json
1356
+ // ../../node_modules/.pnpm/ci-info@4.4.0/node_modules/ci-info/vendors.json
1256
1357
  var require_vendors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1257
1358
  module.exports = [
1258
1359
  {
@@ -1579,8 +1680,7 @@ var require_vendors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1579
1680
  }
1580
1681
  ];
1581
1682
  }));
1582
- //#endregion
1583
- //#region src/cli/deploy-cloudflare-auth.ts
1683
+ // src/cli/deploy-cloudflare-auth.ts
1584
1684
  var import_ci_info = (/* @__PURE__ */ __commonJSMin(((exports) => {
1585
1685
  const vendors = require_vendors();
1586
1686
  const env = process.env;
@@ -1776,11 +1876,9 @@ async function ensureCloudflareAuthSecret(options) {
1776
1876
  if (!(await list(false)).includes("BETTER_AUTH_SECRET")) throw new CloudflareAuthSecretError(`deploy: Cloudflare reported success but ${BETTER_AUTH_SECRET_NAME} was not present afterward. No worker was uploaded; retry once Cloudflare secret storage is available.`, "verification-failed");
1777
1877
  return { created: true };
1778
1878
  }
1779
- //#endregion
1780
- //#region src/cli/node-buffer.ts
1879
+ // src/cli/node-buffer.ts
1781
1880
  const Buffer$2 = Buffer$1;
1782
- //#endregion
1783
- //#region src/cli/cf-version-api.ts
1881
+ // src/cli/cf-version-api.ts
1784
1882
  var CloudflareApiError = class extends Error {
1785
1883
  status;
1786
1884
  code;
@@ -1805,6 +1903,31 @@ function textValue(value, label) {
1805
1903
  if (typeof value !== "string") throw new Error(`The Cloudflare ${label} is missing from the verified Worker output.`);
1806
1904
  return value;
1807
1905
  }
1906
+ /** Match cf's package collection for uploads that preserve secrets through the JSON API. */
1907
+ async function readPackageDependencies(directory) {
1908
+ try {
1909
+ const pkg = record(JSON.parse(readFileSync(join(directory, "package.json"), "utf8")));
1910
+ const declared = {
1911
+ ...record(pkg?.dependencies),
1912
+ ...record(pkg?.devDependencies)
1913
+ };
1914
+ const { getInstalledPackageVersion } = await import("@cloudflare/workers-utils");
1915
+ const dependencies = [];
1916
+ for (const [name, packageJsonVersion] of Object.entries(declared)) {
1917
+ if (dependencies.length >= 200) break;
1918
+ if (typeof packageJsonVersion !== "string" || /^(workspace|catalog|file|link):/.test(packageJsonVersion)) continue;
1919
+ const installedVersion = getInstalledPackageVersion(name, directory);
1920
+ if (installedVersion) dependencies.push({
1921
+ name,
1922
+ packageJsonVersion,
1923
+ installedVersion
1924
+ });
1925
+ }
1926
+ return dependencies.length ? dependencies : void 0;
1927
+ } catch {
1928
+ return;
1929
+ }
1930
+ }
1808
1931
  const moduleContentTypes = {
1809
1932
  esm: "application/javascript+module",
1810
1933
  cjs: "application/javascript",
@@ -2298,7 +2421,7 @@ async function prepareContainerMetadata(options) {
2298
2421
  maxOutputBytes: 16777216
2299
2422
  });
2300
2423
  if (pushed.status !== 0 || pushed.signal || pushed.error) throw new Error("Cloudflare Container image push failed.");
2301
- const matches = [...pushed.stdout.matchAll(/Pushed image:\s*(\S+)/g)];
2424
+ const matches = [...`${pushed.stdout}\n${pushed.stderr}`.matchAll(/Pushed image:\s*(\S+)/g)];
2302
2425
  const remote = matches.length === 1 ? matches[0][1] : "";
2303
2426
  if (!remote.startsWith(`registry.cloudflare.com/${options.accountId}/`) || [...remote].some((character) => character.charCodeAt(0) <= 32 || character.charCodeAt(0) === 127)) throw new Error("Cloudflare Container image push did not return the verified account registry.");
2304
2427
  image = await dockerImageDigest(remote, Math.min(12e4, remaining()), options.verifyUploader);
@@ -2544,6 +2667,7 @@ async function uploadPinnedCloudflareVersion(options) {
2544
2667
  modules,
2545
2668
  compatibility_date: config.compatibilityDate,
2546
2669
  compatibility_flags: config.compatibilityFlags,
2670
+ package_dependencies: await readPackageDependencies(options.output.directory),
2547
2671
  bindings,
2548
2672
  ...config.limits ? { limits: {
2549
2673
  cpu_ms: config.limits.cpuMs,
@@ -2584,8 +2708,7 @@ async function uploadPinnedCloudflareVersion(options) {
2584
2708
  urls: Array.isArray(uploaded.urls) ? uploaded.urls.filter((url) => typeof url === "string") : []
2585
2709
  };
2586
2710
  }
2587
- //#endregion
2588
- //#region src/cli/cf-version-runner.ts
2711
+ // src/cli/cf-version-runner.ts
2589
2712
  function failed(message) {
2590
2713
  return {
2591
2714
  status: 1,
@@ -2836,7 +2959,7 @@ function createCfVersionRunner(options) {
2836
2959
  const uploadedResult = (result) => {
2837
2960
  if (!isCleanCloudflareExit(result)) return result;
2838
2961
  if (isRecord(result.data) && typeof result.data.versionId === "string") return result;
2839
- const { versionId, previewUrl, workersDevUrl } = readCfUploadOutput(result.stdout);
2962
+ const { versionId, previewUrl, workersDevUrl } = readCfUploadOutput(result);
2840
2963
  return {
2841
2964
  ...result,
2842
2965
  data: versionId ? {
@@ -3096,17 +3219,18 @@ function createCfVersionRunner(options) {
3096
3219
  "deploy",
3097
3220
  "--prebuilt"
3098
3221
  ], command.capture, directory);
3099
- if (isCleanCloudflareExit(deployed) && raw.observability !== void 0) {
3222
+ if (isCleanCloudflareExit(deployed) && (raw.observability !== void 0 || raw.logpush !== void 0)) {
3100
3223
  const credentials = options.pinnedUpload;
3101
3224
  if (!credentials || !credentials.verifyUploader()) return failed("The Cloudflare settings publisher is unavailable.");
3102
3225
  try {
3103
3226
  const token = await credentials.getToken();
3104
3227
  if (!token || !credentials.verifyUploader()) return failed("Cloudflare session is unavailable for publishing Worker settings.");
3105
- await publishCloudflareObservability({
3228
+ await publishCloudflareWorkerSettings({
3106
3229
  apiBaseUrl: credentials.apiBaseUrl,
3107
3230
  accountId: credentials.accountId,
3108
3231
  workerName,
3109
3232
  observability: raw.observability,
3233
+ logpush: raw.logpush,
3110
3234
  headers: { Authorization: `Bearer ${token}` }
3111
3235
  });
3112
3236
  } catch (cause) {
@@ -3166,55 +3290,7 @@ function createCfVersionRunner(options) {
3166
3290
  return failed(`Unsupported Cloudflare activation operation: ${operation.type}`);
3167
3291
  };
3168
3292
  }
3169
- //#endregion
3170
- //#region src/cli/cloudflare-readiness.ts
3171
- const STATE_FILE = join(".void", "cloudflare.json");
3172
- /** Resolve the account subdomain without exposing Cloudflare credentials to project code. */
3173
- function resolveCloudflareWorkersDevSubdomain(root, accountId, env = process.env) {
3174
- const configured = env.CLOUDFLARE_WORKERS_SUBDOMAIN;
3175
- if (configured !== void 0 && configured.trim().length > 0) {
3176
- const normalized = normalizeWorkersDevSubdomain(configured);
3177
- if (!normalized) throw new Error("deploy: CLOUDFLARE_WORKERS_SUBDOMAIN must be the account subdomain, for example \"my-team\" or \"my-team.workers.dev\".");
3178
- return normalized;
3179
- }
3180
- const cached = subdomainsByAccount(readCloudflareLocalState(root))[accountId];
3181
- return typeof cached === "string" ? normalizeWorkersDevSubdomain(cached) : void 0;
3182
- }
3183
- /** Cache a Wrangler-reported account subdomain for later no-preview version probes. */
3184
- function rememberCloudflareWorkersDevSubdomain(root, accountId, url) {
3185
- const workersDevSubdomain = extractWorkersDevSubdomain(url);
3186
- if (!workersDevSubdomain) return false;
3187
- const current = readCloudflareLocalState(root);
3188
- const currentByAccount = subdomainsByAccount(current);
3189
- if (currentByAccount[accountId] === workersDevSubdomain) return false;
3190
- const { workersDevSubdomain: _legacy, ...state } = current;
3191
- const filePath = join(root, STATE_FILE);
3192
- mkdirSync(dirname(filePath), { recursive: true });
3193
- writeFileSync(filePath, JSON.stringify({
3194
- ...state,
3195
- workersDevSubdomains: {
3196
- ...currentByAccount,
3197
- [accountId]: workersDevSubdomain
3198
- }
3199
- }, null, 2) + "\n");
3200
- return true;
3201
- }
3202
- function subdomainsByAccount(state) {
3203
- const value = state.workersDevSubdomains;
3204
- return value && typeof value === "object" && !Array.isArray(value) ? value : {};
3205
- }
3206
- function readCloudflareLocalState(root) {
3207
- const filePath = join(root, STATE_FILE);
3208
- if (!existsSync(filePath)) return {};
3209
- try {
3210
- const parsed = JSON.parse(readFileSync(filePath, "utf-8"));
3211
- return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) ? parsed : {};
3212
- } catch {
3213
- return {};
3214
- }
3215
- }
3216
- //#endregion
3217
- //#region src/cli/deploy-cloudflare-helpers.ts
3293
+ // src/cli/deploy-cloudflare-helpers.ts
3218
3294
  /**
3219
3295
  * Discover the root wrangler config path the same way the build / bindings
3220
3296
  * writer do (wrangler.jsonc first, then wrangler.json). Falls back to the
@@ -3266,6 +3342,7 @@ async function connectCloudflareDeployAccount(options) {
3266
3342
  log$1.error(`deploy: ${getErrorMessage(error)}`);
3267
3343
  return null;
3268
3344
  }
3345
+ const complianceRegion = resolveWorkersDevComplianceRegion(process.env, readWranglerTopLevelString(rootConfig, "compliance_region"));
3269
3346
  const pins = createCloudflareUploaderPins(root, deps);
3270
3347
  let accountId = readWranglerTopLevelString(rootConfig, "account_id") ?? (process.env.CLOUDFLARE_ACCOUNT_ID?.trim() || void 0);
3271
3348
  if (!accountId) {
@@ -3285,8 +3362,10 @@ async function connectCloudflareDeployAccount(options) {
3285
3362
  }
3286
3363
  }
3287
3364
  let workersDevSubdomain;
3365
+ let readinessAccessOrigin;
3288
3366
  try {
3289
3367
  workersDevSubdomain = resolveCloudflareWorkersDevSubdomain(root, accountId);
3368
+ readinessAccessOrigin = resolveCloudflareReadinessAccessOrigin({ CF_ACCESS_READINESS_ORIGIN: options.readinessAccessOrigin ?? void 0 });
3290
3369
  } catch (error) {
3291
3370
  log$1.error(getErrorMessage(error));
3292
3371
  return null;
@@ -3294,8 +3373,10 @@ async function connectCloudflareDeployAccount(options) {
3294
3373
  return {
3295
3374
  ...pins,
3296
3375
  apiBaseUrl,
3376
+ complianceRegion,
3297
3377
  accountId,
3298
3378
  workersDevSubdomain,
3379
+ readinessAccessOrigin,
3299
3380
  runWrangler: deps.runWrangler ?? createDeployWranglerRunner(root, accountId, apiBaseUrl),
3300
3381
  rootConfig
3301
3382
  };
@@ -3381,7 +3462,21 @@ function cloudflareCandidateActivationOptions(options) {
3381
3462
  },
3382
3463
  readinessHeaders: cloudflareWorkerReadinessHeaders(),
3383
3464
  workersDevSubdomain,
3465
+ resolveWorkersDevSubdomain: async () => {
3466
+ const { complianceRegion } = options;
3467
+ if (complianceRegion === void 0) return {
3468
+ ok: false,
3469
+ reason: "unavailable"
3470
+ };
3471
+ return readCloudflareWorkersDevSubdomain({
3472
+ configPath,
3473
+ complianceRegion,
3474
+ runWrangler,
3475
+ verifyUploader: options.assertUploaderStillPinned
3476
+ });
3477
+ },
3384
3478
  readinessHeadersWorkersDevSubdomain: process.env.CLOUDFLARE_WORKERS_SUBDOMAIN?.trim() ? workersDevSubdomain : void 0,
3479
+ readinessHeadersOrigin: options.readinessAccessOrigin,
3385
3480
  ...createCloudflareEmptyTriggerPublishers({
3386
3481
  accountId,
3387
3482
  apiBaseUrl: options.apiBaseUrl,
@@ -3482,36 +3577,64 @@ function formatCloudflareActivationFailure(result) {
3482
3577
  ].join("\n");
3483
3578
  case "readiness-staging-failed": return `deploy: Cloudflare could not stage the uploaded Worker Version at zero-percent traffic${status}; production traffic is unchanged.${cloudflareCode}${diagnostic}${result.cloudflareErrorCode === 10210 && (result.diagnostic ?? "").toLowerCase().includes("durable object migration") ? "\n\nReview the Durable Object migration, then run `void deploy --platform cloudflare --atomic`. For future deploys, set deploy.cloudflare.mode to \"atomic\" in void.config.ts." : result.cloudflareErrorCode === 100405 ? "\n\nThe new version declares different exports from the live version (for example a Durable Object or Workflow class), so Cloudflare cannot split traffic between them. Run `void deploy --platform cloudflare --atomic` once to publish it at 100% directly; it receives traffic before readiness is checked." : ""}`;
3484
3579
  case "atomic-failed": return `deploy: Cloudflare could not publish the Worker atomically${status}; inspect production status before retrying.${cloudflareCode}${diagnostic}`;
3485
- case "atomic-output-invalid": return "deploy: Cloudflare published atomically but did not report a version id or URL. Inspect `void project status` immediately.";
3580
+ case "atomic-output-invalid":
3581
+ if (result.versionId) return formatCloudflarePublishWithoutUrl(`Cloudflare published Worker version ${result.versionId} atomically`, `If the app uses workers.dev, set CLOUDFLARE_WORKERS_SUBDOMAIN to your account subdomain ${WORKERS_SUBDOMAIN_EXAMPLE}.`);
3582
+ return "deploy: Cloudflare published atomically but did not report its version id. Inspect `void project status` immediately.";
3486
3583
  case "atomic-readiness-failed":
3487
- case "atomic-readiness-access-denied": return `deploy: the atomic Worker deployment is live, but /__void/ready could not be verified. Inspect \`void project status\` and Worker logs immediately.${diagnostic}`;
3584
+ case "atomic-readiness-access-denied": return `deploy: the atomic Worker deployment is live, but /__void/ready could not be verified. Inspect \`void project status\` and Worker logs immediately.${diagnostic}${result.customRouteReadinessOrigin ? `\n\n${customRouteAccessHint(result.customRouteReadinessOrigin).join("\n")}` : ""}`;
3488
3585
  case "readiness-failed": return ["deploy: the uploaded Worker Version did not pass /__void/ready.", formatCloudflareReadinessRestoration(result)].join("\n");
3489
- case "readiness-access-denied": return [
3490
- "deploy: Cloudflare Access blocked the uploaded Worker Version readiness probe.",
3491
- "For CI, set CF_ACCESS_CLIENT_ID and CF_ACCESS_CLIENT_SECRET to an admitted service token.",
3492
- "For a local deploy, set CF_ACCESS_TOKEN to a short-lived user JWT from cloudflared.",
3493
- "If the response is error 1050, create an Access application for this hostname; a token alone cannot bypass account default-deny.",
3494
- `Then retry. ${formatCloudflareReadinessRestoration(result)}`
3495
- ].join("\n");
3586
+ case "readiness-access-denied":
3587
+ if (result.customRouteReadinessOrigin) return [
3588
+ "deploy: Cloudflare Access blocked the uploaded Worker Version readiness probe.",
3589
+ ...customRouteAccessHint(result.customRouteReadinessOrigin),
3590
+ ATOMIC_ACCESS_ALTERNATIVE,
3591
+ formatCloudflareReadinessRestoration(result)
3592
+ ].join("\n");
3593
+ return [
3594
+ "deploy: Cloudflare Access blocked the uploaded Worker Version readiness probe.",
3595
+ "For CI, set CF_ACCESS_CLIENT_ID and CF_ACCESS_CLIENT_SECRET to an admitted service token.",
3596
+ "For a local deploy, set CF_ACCESS_TOKEN to a short-lived user JWT from cloudflared.",
3597
+ "If the response is error 1050, create an Access application for this hostname; a token alone cannot bypass account default-deny.",
3598
+ `Then retry. ${formatCloudflareReadinessRestoration(result)}`
3599
+ ].join("\n");
3496
3600
  case "bootstrap-failed": return `deploy: Cloudflare could not bootstrap the first Worker deployment${status}.${cloudflareCode}${diagnostic}`;
3497
- case "bootstrap-output-invalid": return ["deploy: Cloudflare bootstrapped the first Worker deployment, but Wrangler", "did not report its version id and workers.dev URL. Inspect `void project status` before retrying."].join("\n");
3601
+ case "bootstrap-output-invalid":
3602
+ if (result.versionId) return formatCloudflarePublishWithoutUrl(`Cloudflare published the first Worker deployment as version ${result.versionId}`, `If the app uses workers.dev, enable workers.dev for this Worker in the Cloudflare dashboard. Then set CLOUDFLARE_WORKERS_SUBDOMAIN to your account subdomain ${WORKERS_SUBDOMAIN_EXAMPLE}.`);
3603
+ return ["deploy: Cloudflare bootstrapped the first Worker deployment, but Wrangler", "did not report its version id. Inspect `void project status` before retrying."].join("\n");
3498
3604
  case "bootstrap-readiness-failed": return [
3499
3605
  "deploy: the first Worker deployment did not pass /__void/ready.",
3500
3606
  "Cloudflare requires this bootstrap to be non-versioned, so the new Worker is already active;",
3501
3607
  "inspect its logs and `void project status` before retrying."
3502
3608
  ].join("\n") + diagnostic;
3503
- case "bootstrap-readiness-access-denied": return [
3504
- "deploy: Cloudflare Access blocked the first Worker deployment readiness probe.",
3505
- "For CI, set CF_ACCESS_CLIENT_ID and CF_ACCESS_CLIENT_SECRET to an admitted service token;",
3506
- "for a local deploy, set CF_ACCESS_TOKEN to a short-lived user JWT from cloudflared.",
3507
- "If the response is error 1050, create an Access application for this hostname; a token alone cannot bypass account default-deny.",
3508
- "Then retry. Cloudflare requires the first deployment to be non-versioned, so the new",
3509
- "Worker is already active behind Access."
3510
- ].join("\n");
3609
+ case "bootstrap-readiness-access-denied":
3610
+ if (result.customRouteReadinessOrigin) return [
3611
+ "deploy: Cloudflare Access blocked the first Worker deployment readiness probe.",
3612
+ "Cloudflare requires the first deployment to be non-versioned, so the new Worker is already active behind Access.",
3613
+ ...customRouteAccessHint(result.customRouteReadinessOrigin),
3614
+ "Later deploys check readiness before traffic moves, so they need the same setting.",
3615
+ ATOMIC_ACCESS_ALTERNATIVE
3616
+ ].join("\n");
3617
+ return [
3618
+ "deploy: Cloudflare Access blocked the first Worker deployment readiness probe.",
3619
+ "For CI, set CF_ACCESS_CLIENT_ID and CF_ACCESS_CLIENT_SECRET to an admitted service token;",
3620
+ "for a local deploy, set CF_ACCESS_TOKEN to a short-lived user JWT from cloudflared.",
3621
+ "If the response is error 1050, create an Access application for this hostname; a token alone cannot bypass account default-deny.",
3622
+ "Then retry. Cloudflare requires the first deployment to be non-versioned, so the new",
3623
+ "Worker is already active behind Access."
3624
+ ].join("\n");
3511
3625
  case "activation-failed": return `deploy: the ready Worker Version could not be activated${status}; production traffic is unchanged.`;
3512
3626
  case "triggers-failed": return `deploy: the Worker activated, but Cloudflare trigger synchronization failed${status}. ${result.rollback === "succeeded" ? "Traffic was restored to the previous version." : result.rollback === "unavailable" ? result.previousVersionId === null ? "This was the first deployment, so no previous version was available to restore." : "Traffic or trigger restoration could not be completed. Inspect its routes, schedules, queues, and workflows in Cloudflare before retrying." : "Automatic traffic restoration failed; inspect `void project status` immediately."}`;
3513
3627
  }
3514
3628
  }
3629
+ /** Explain why a custom-route readiness probe carried no Access credentials. */
3630
+ function customRouteAccessHint(origin) {
3631
+ return [
3632
+ `Void did not send Access credentials to ${origin}. A route or Custom Domain receives them only when CF_ACCESS_READINESS_ORIGIN names its origin.`,
3633
+ `If Access protects ${origin} and admits your credentials, set CF_ACCESS_READINESS_ORIGIN=${origin} with CF_ACCESS_CLIENT_ID and CF_ACCESS_CLIENT_SECRET, or CF_ACCESS_TOKEN. Then retry.`,
3634
+ "Set it only if you control this hostname and it serves this Worker, because Void sends your Access credentials to it."
3635
+ ];
3636
+ }
3637
+ const ATOMIC_ACCESS_ALTERNATIVE = "For a Worker with Durable Object migration history, `void deploy --platform cloudflare --atomic` publishes without the zero-traffic check. The new version receives traffic first, and the command still exits with an error because Void cannot verify readiness through Access.";
3515
3638
  function formatCloudflareReadinessRestoration(result) {
3516
3639
  switch (result.rollback) {
3517
3640
  case "succeeded": return "The failed version remains inactive, and traffic was restored to the previous version.";
@@ -3521,6 +3644,16 @@ function formatCloudflareReadinessRestoration(result) {
3521
3644
  default: return "The failed version remains inactive for inspection; production traffic is unchanged.";
3522
3645
  }
3523
3646
  }
3647
+ const WORKERS_SUBDOMAIN_EXAMPLE = "(for example \"my-team\", or \"my-team.fed\" for FedRAMP High)";
3648
+ /** Explain a live version whose readiness URL Void could not determine. */
3649
+ function formatCloudflarePublishWithoutUrl(published, recovery) {
3650
+ return [
3651
+ `deploy: ${published}, but Void could not determine its URL.`,
3652
+ "Void did not update its routes, workers.dev setting, or other triggers, and did not check /__void/ready.",
3653
+ recovery,
3654
+ "Then inspect `void project status` before you deploy again."
3655
+ ].join("\n");
3656
+ }
3524
3657
  /** Capture the Access credential used only by the guarded Worker readiness probe. */
3525
3658
  function cloudflareWorkerReadinessHeaders() {
3526
3659
  return trustedCloudflareWorkerAccessHeaders({
@@ -3529,8 +3662,7 @@ function cloudflareWorkerReadinessHeaders() {
3529
3662
  CF_ACCESS_TOKEN: process.env.CF_ACCESS_TOKEN
3530
3663
  });
3531
3664
  }
3532
- //#endregion
3533
- //#region src/cli/deploy-cloudflare-static.ts
3665
+ // src/cli/deploy-cloudflare-static.ts
3534
3666
  /** Default runtime date for static and framework Workers that set none. */
3535
3667
  const DEFAULT_COMPATIBILITY_DATE = "2026-09-11";
3536
3668
  /** Build the trusted Wrangler pointer for a framework that emits Worker files directly. */
@@ -3648,10 +3780,11 @@ async function runCloudflareStaticDeploy(root, options, voidConfig, preset, cliL
3648
3780
  configPath,
3649
3781
  rootConfig: parseRootWranglerConfig(configPath),
3650
3782
  deps,
3651
- persistAccount: !(options.reuseExistingWorker || initialCloudflareLink)
3783
+ persistAccount: !(options.reuseExistingWorker || initialCloudflareLink),
3784
+ readinessAccessOrigin: options.readinessAccessOrigin
3652
3785
  });
3653
3786
  if (!connection || !await confirmCloudflareDeployAuthentication(connection, configPath)) return exit(1);
3654
- const { apiBaseUrl, usesCf, cfUploaderIsPinned, assertUploaderStillPinned, accountId, workersDevSubdomain, runWrangler } = connection;
3787
+ const { apiBaseUrl, complianceRegion, usesCf, cfUploaderIsPinned, assertUploaderStillPinned, accountId, workersDevSubdomain, readinessAccessOrigin, runWrangler } = connection;
3655
3788
  const existingWorker = await prepareExistingCloudflareDeployWithAuth({
3656
3789
  root,
3657
3790
  configPath,
@@ -3699,6 +3832,7 @@ async function runCloudflareStaticDeploy(root, options, voidConfig, preset, cliL
3699
3832
  const merged = mergeAndLintRoutingRules(preset.outputDir, voidConfig.routing);
3700
3833
  const manifest = buildStaticManifest({
3701
3834
  appType: preset.appType,
3835
+ alwaysUseHttps: voidConfig.routing?.alwaysUseHttps,
3702
3836
  hashedAssetsPrefix: "assets",
3703
3837
  headerRules: merged.headerRules,
3704
3838
  redirectRules: merged.redirectRules,
@@ -3731,6 +3865,7 @@ async function runCloudflareStaticDeploy(root, options, voidConfig, preset, cliL
3731
3865
  }, null, 2)}\n`, { mode: 384 });
3732
3866
  writeFileSync(entryPath, renderCloudflareStaticEntry({
3733
3867
  runtimeImport: "void/edge",
3868
+ alwaysUseHttps: manifest.alwaysUseHttps,
3734
3869
  headerRules: manifest.headerRules,
3735
3870
  redirectRules: manifest.redirectRules,
3736
3871
  fallbackRules: manifest.fallbackRules,
@@ -3779,8 +3914,10 @@ async function runCloudflareStaticDeploy(root, options, voidConfig, preset, cliL
3779
3914
  uploadConfigPath: staticConfigPath,
3780
3915
  accountId,
3781
3916
  apiBaseUrl,
3917
+ complianceRegion,
3782
3918
  workerName,
3783
3919
  workersDevSubdomain,
3920
+ readinessAccessOrigin,
3784
3921
  runWrangler,
3785
3922
  readExistingWorker: deps.readExistingWorker,
3786
3923
  existingWorker,
@@ -3821,8 +3958,7 @@ async function runCloudflareStaticDeploy(root, options, voidConfig, preset, cliL
3821
3958
  }), execution.previewUrl);
3822
3959
  printDeploySuccess();
3823
3960
  }
3824
- //#endregion
3825
- //#region src/cli/deploy-migrations.ts
3961
+ // src/cli/deploy-migrations.ts
3826
3962
  /**
3827
3963
  * Apply the checked-in migrations to an in-memory SQLite database and assert the resulting
3828
3964
  * schema has every required auth table and column, with its primary key, NOT NULL, UNIQUE and
@@ -4209,8 +4345,7 @@ To undo these migrations, restore this point (discards every later write):
4209
4345
  }
4210
4346
  return { restoreCommand };
4211
4347
  }
4212
- //#endregion
4213
- //#region src/cli/deploy-cloudflare-build.ts
4348
+ // src/cli/deploy-cloudflare-build.ts
4214
4349
  /** Build the Worker without Cloudflare credentials, then run the post-build gates. */
4215
4350
  async function buildCloudflareWorker(input) {
4216
4351
  const { root, voidConfig, deps, exit, atomic, frameworkPreset, detectedFramework } = input;
@@ -4368,7 +4503,7 @@ async function buildCloudflareWorker(input) {
4368
4503
  projectRoot: root,
4369
4504
  configPath: generatedConfigPath,
4370
4505
  accountId
4371
- }) : prepareCfBuildOutput(dirname(generatedConfigPath), accountId);
4506
+ }) : prepareCfBuildOutput(dirname(generatedConfigPath), accountId, void 0, root);
4372
4507
  if (usesCf) {
4373
4508
  const preflight = await prepareBuildOutput();
4374
4509
  if (!preflight) {
@@ -4384,8 +4519,7 @@ async function buildCloudflareWorker(input) {
4384
4519
  prepareBuildOutput
4385
4520
  };
4386
4521
  }
4387
- //#endregion
4388
- //#region src/cli/deploy-cloudflare-migrate.ts
4522
+ // src/cli/deploy-cloudflare-migrate.ts
4389
4523
  /** Provision the auth secret and apply database migrations, then verify the artifact. */
4390
4524
  async function migrateCloudflareWorker(input) {
4391
4525
  const { root, deps, exit, cliLog } = input;
@@ -4471,8 +4605,7 @@ async function migrateCloudflareWorker(input) {
4471
4605
  d1RestoreCommand
4472
4606
  };
4473
4607
  }
4474
- //#endregion
4475
- //#region src/cli/cloudflare-deploy/classify.ts
4608
+ // src/cli/cloudflare-deploy/classify.ts
4476
4609
  /**
4477
4610
  * Narrow native Cloudflare deploys to app shapes whose emitted Worker artifact
4478
4611
  * the current verifier understands. This runs before any account operation;
@@ -4512,8 +4645,7 @@ function unsupported(reason) {
4512
4645
  reason
4513
4646
  };
4514
4647
  }
4515
- //#endregion
4516
- //#region src/cli/cloudflare-isr.ts
4648
+ // src/cli/cloudflare-isr.ts
4517
4649
  /** A configured opt-in authorizes only the cache identity declared before the build. */
4518
4650
  function approvedCloudflareIsrBinding(config, rootConfig) {
4519
4651
  if (config.routing?.isr !== true || resolveBindingNames(config.inference?.bindings)?.kv === "ISR_CACHE") return [];
@@ -4549,8 +4681,7 @@ async function chooseCloudflareIsr(root, config, options) {
4549
4681
  log.info(`Saved routing.isr: ${String(enabled)} in void.config.ts. ISR caching ${enabled ? "will be enabled in this deployment" : "stays disabled until you change this setting"}.`);
4550
4682
  return enabled;
4551
4683
  }
4552
- //#endregion
4553
- //#region src/cli/deploy-cloudflare-email.ts
4684
+ // src/cli/deploy-cloudflare-email.ts
4554
4685
  /** Whether the root config carries the `send_email` binding Void writes. */
4555
4686
  function hasVoidSendEmailBinding(rootConfig) {
4556
4687
  return Array.isArray(rootConfig.send_email) && rootConfig.send_email.some((binding) => binding?.name === "SEND_EMAIL");
@@ -4705,8 +4836,7 @@ async function runCloudflareEmailStep(input) {
4705
4836
  function existingAddresses(rootConfig, pre) {
4706
4837
  return Array.isArray(rootConfig.addresses) ? rootConfig.addresses.map((a) => typeof a === "string" ? a.toLowerCase() : "").filter((a) => pre.addresses.includes(a)) : [];
4707
4838
  }
4708
- //#endregion
4709
- //#region src/cli/deploy-cloudflare-queues.ts
4839
+ // src/cli/deploy-cloudflare-queues.ts
4710
4840
  function isValidQueueName(name) {
4711
4841
  try {
4712
4842
  assertValidResourceName("queue", name);
@@ -4813,8 +4943,7 @@ async function chooseCloudflareQueueNames(input) {
4813
4943
  absent
4814
4944
  };
4815
4945
  }
4816
- //#endregion
4817
- //#region src/cli/deploy-cloudflare-preflight.ts
4946
+ // src/cli/deploy-cloudflare-preflight.ts
4818
4947
  /** Validate source-level native deploy inputs before account operations or project code. */
4819
4948
  async function prepareCloudflareDeploySource(root, options, voidConfig) {
4820
4949
  if (options.skipBuild) {
@@ -4891,10 +5020,11 @@ async function preflightCloudflareWorker(input) {
4891
5020
  configPath,
4892
5021
  rootConfig,
4893
5022
  deps,
4894
- persistAccount: !(options.reuseExistingWorker || initialCloudflareLink)
5023
+ persistAccount: !(options.reuseExistingWorker || initialCloudflareLink),
5024
+ readinessAccessOrigin: options.readinessAccessOrigin
4895
5025
  });
4896
5026
  if (!connection) return exit(1);
4897
- const { apiBaseUrl, usesCf, cfUploaderIsPinned, assertUploaderStillPinned, accountId, workersDevSubdomain, runWrangler } = connection;
5027
+ const { apiBaseUrl, complianceRegion, usesCf, cfUploaderIsPinned, assertUploaderStillPinned, accountId, workersDevSubdomain, readinessAccessOrigin, runWrangler } = connection;
4898
5028
  rootConfig = connection.rootConfig;
4899
5029
  const workerName = readWranglerTopLevelString(rootConfig, "name") ?? deriveWorkerName(root);
4900
5030
  printDeployContext(workerName, "Cloudflare");
@@ -5122,11 +5252,13 @@ async function preflightCloudflareWorker(input) {
5122
5252
  });
5123
5253
  return {
5124
5254
  apiBaseUrl,
5255
+ complianceRegion,
5125
5256
  usesCf,
5126
5257
  cfUploaderIsPinned,
5127
5258
  assertUploaderStillPinned,
5128
5259
  accountId,
5129
5260
  workersDevSubdomain,
5261
+ readinessAccessOrigin,
5130
5262
  runWrangler,
5131
5263
  workerName,
5132
5264
  emailMap,
@@ -5141,13 +5273,12 @@ async function preflightCloudflareWorker(input) {
5141
5273
  expectedDurableObjectState
5142
5274
  };
5143
5275
  }
5144
- //#endregion
5145
- //#region src/cli/deploy-cloudflare-publish.ts
5276
+ // src/cli/deploy-cloudflare-publish.ts
5146
5277
  /** Upload the verified Worker as a candidate version, probe it, and activate it. */
5147
5278
  async function publishCloudflareWorker(input) {
5148
5279
  const { root, deps, exit, cliLog, atomic, detectedFramework, initialCloudflareCandidate } = input;
5149
5280
  const { configPath, needsSandbox, desired, analysis } = input.source;
5150
- const { usesCf, existingWorker, pinnedHandoffLink, accountId, workerName, cfUploaderIsPinned, apiBaseUrl, runWrangler, assertUploaderStillPinned, schemaFacts, approvedHandoffKv, workersDevSubdomain } = input.preflight;
5281
+ const { usesCf, existingWorker, pinnedHandoffLink, accountId, workerName, cfUploaderIsPinned, apiBaseUrl, complianceRegion, runWrangler, assertUploaderStillPinned, schemaFacts, approvedHandoffKv, workersDevSubdomain, readinessAccessOrigin } = input.preflight;
5151
5282
  const { migrations, d1MigrateToken, generatedConfigPath, prepareBuildOutput } = input.build;
5152
5283
  const { workerWasMissingBeforeSecretProvisioning, initialAuthSecret, appliedMigrations } = input.migration;
5153
5284
  const queueConsumerCleanup = readWranglerManagedQueueCleanupCandidates(configPath);
@@ -5189,8 +5320,10 @@ async function publishCloudflareWorker(input) {
5189
5320
  uploadConfigPath: generatedConfigPath,
5190
5321
  accountId,
5191
5322
  apiBaseUrl,
5323
+ complianceRegion,
5192
5324
  workerName,
5193
5325
  workersDevSubdomain,
5326
+ readinessAccessOrigin,
5194
5327
  runWrangler,
5195
5328
  readExistingWorker: deps.readExistingWorker,
5196
5329
  existingWorker,
@@ -5237,10 +5370,10 @@ async function publishCloudflareWorker(input) {
5237
5370
  framework: detectedFramework?.name
5238
5371
  }), execution.previewUrl);
5239
5372
  }
5240
- //#endregion
5241
- //#region src/cli/deploy-cloudflare.ts
5373
+ // src/cli/deploy-cloudflare.ts
5242
5374
  /** Deploy to the user's own Cloudflare account through the guarded native Worker flow. */
5243
5375
  async function runCloudflareDeploy(root, options, cliLog, deps = {}) {
5376
+ options = withRecordedReadinessAccessOrigin(options);
5244
5377
  const initialCloudflareLink = readCloudflareLink(root);
5245
5378
  const initialCloudflareCandidate = readCloudflareCandidate(root);
5246
5379
  const exit = deps.exit ?? ((code) => process.exit(code));
@@ -5277,6 +5410,14 @@ async function runCloudflareDeploy(root, options, cliLog, deps = {}) {
5277
5410
  }
5278
5411
  return runCloudflareStaticDeploy(root, options, voidConfig, staticPreset, cliLog, deps, initialCloudflareLink, initialCloudflareCandidate);
5279
5412
  }
5413
+ if (detectedFramework && voidConfig.routing?.alwaysUseHttps === true) {
5414
+ log$1.error([
5415
+ `deploy: native Cloudflare deployment cannot apply Void routing.alwaysUseHttps to ${detectedFramework.name}.`,
5416
+ "This framework owns its Worker request handler, so the HTTPS redirect would otherwise be ignored.",
5417
+ "Redirect HTTP to HTTPS in the framework, or turn on Cloudflare's Always Use HTTPS setting for your zone, then remove routing.alwaysUseHttps and retry."
5418
+ ].join("\n"));
5419
+ return exit(1);
5420
+ }
5280
5421
  const source = await prepareCloudflareDeploySource(root, options, voidConfig);
5281
5422
  if (!source) return exit(1);
5282
5423
  const preflight = await preflightCloudflareWorker({
@@ -5343,8 +5484,7 @@ async function runCloudflareDeploy(root, options, cliLog, deps = {}) {
5343
5484
  if (preflight.emailMap) log$1.message(renderAddressMap(preflight.emailMap));
5344
5485
  printDeploySuccess();
5345
5486
  }
5346
- //#endregion
5347
- //#region src/cli/deploy-managed-framework.ts
5487
+ // src/cli/deploy-managed-framework.ts
5348
5488
  /**
5349
5489
  * Class B/C framework deploy: build with framework CLI, package with preset output paths.
5350
5490
  */
@@ -5446,6 +5586,7 @@ async function runFrameworkDeploy(root, config, client, detected, fwPreset, void
5446
5586
  };
5447
5587
  const manifest = buildFrameworkManifest({
5448
5588
  frameworkName: detected.name,
5589
+ alwaysUseHttps: voidConfig.routing?.alwaysUseHttps,
5449
5590
  workerMain: actualWorkerMain,
5450
5591
  bindings,
5451
5592
  migrations: validatedMigrations,
@@ -5496,8 +5637,7 @@ async function runFrameworkDeploy(root, config, client, detected, fwPreset, void
5496
5637
  warnUnpublishedRouting(result);
5497
5638
  printDeploySuccess(result.published !== false);
5498
5639
  }
5499
- //#endregion
5500
- //#region src/cli/deploy-managed-full.ts
5640
+ // src/cli/deploy-managed-full.ts
5501
5641
  async function runFullDeploy(root, config, client, voidConfig, fwPreset, skipBuild, gitMetadata, detected, cliLog) {
5502
5642
  cliLog?.info("deploy_mode", {
5503
5643
  mode: "full",
@@ -5619,7 +5759,7 @@ async function runFullDeploy(root, config, client, voidConfig, fwPreset, skipBui
5619
5759
  buildCommand: null,
5620
5760
  outputDir: clientDir,
5621
5761
  appType: "static"
5622
- }, true, gitMetadata, assetsPrefix, headerRules, redirectRules, fallbackRules, void 0, cliLog, voidConfig.routing?.notFound);
5762
+ }, true, gitMetadata, assetsPrefix, headerRules, redirectRules, fallbackRules, void 0, cliLog, voidConfig.routing?.notFound, voidConfig.routing?.alwaysUseHttps);
5623
5763
  }
5624
5764
  }
5625
5765
  const prerenderSourcesPresent = hasPrerenderSources({
@@ -5702,6 +5842,7 @@ async function runFullDeploy(root, config, client, voidConfig, fwPreset, skipBui
5702
5842
  ...bindings,
5703
5843
  needsLive: true
5704
5844
  } : bindings,
5845
+ alwaysUseHttps: voidConfig.routing?.alwaysUseHttps,
5705
5846
  hasEmailHandlers: !isFrameworkMode && routeScan.email !== void 0 && hasEmailHandlers(routeScan.email),
5706
5847
  migrations: validatedMigrations,
5707
5848
  schedules,
@@ -5769,8 +5910,7 @@ async function runFullDeploy(root, config, client, voidConfig, fwPreset, skipBui
5769
5910
  warnUnpublishedRouting(result);
5770
5911
  printDeploySuccess(result.published !== false);
5771
5912
  }
5772
- //#endregion
5773
- //#region src/cli/github-oidc.ts
5913
+ // src/cli/github-oidc.ts
5774
5914
  /**
5775
5915
  * GitHub Actions OIDC → Void deploy-token exchange for `void deploy` without `VOID_TOKEN`.
5776
5916
  *
@@ -5865,8 +6005,7 @@ async function safeText(res) {
5865
6005
  return "";
5866
6006
  }
5867
6007
  }
5868
- //#endregion
5869
- //#region src/cli/installed-void.ts
6008
+ // src/cli/installed-void.ts
5870
6009
  /** A global CLI still builds with the project's installed Vite plugin. */
5871
6010
  function assertInstalledVoidMatchesCli(root) {
5872
6011
  const projectManifest = join(root, "package.json");
@@ -5903,8 +6042,7 @@ function assertInstalledVoidMatchesCli(root) {
5903
6042
  if (installedVersion !== cli.version) throw new Error(`deploy: this CLI is void@${cli.version}, but the project's installed Vite plugin is ${installedVersion ? `void@${installedVersion}` : "missing"}. Install the same Void version in the project (or link this development checkout) before deploying. The build imports the project package; mixing versions can rewrite legacy config and produce an unsafe Cloudflare deploy target.`);
5904
6043
  if (installedPackageDir && existsSync(join(cliPackageDir, "src", "index.ts")) && realpathSync(installedPackageDir) !== realpathSync(cliPackageDir)) throw new Error("deploy: this development CLI and the project Vite plugin come from different Void builds, even though their package versions match. Link the same development checkout into the project before deploying.");
5905
6044
  }
5906
- //#endregion
5907
- //#region src/cli/log-file.ts
6045
+ // src/cli/log-file.ts
5908
6046
  /**
5909
6047
  * Flatten a serialized `ErrChainNode` (from `describeErrorChain`, or read back
5910
6048
  * out of a JSONL record) to a single inline string, joining cause levels with
@@ -6054,8 +6192,7 @@ function openDeployLog(opts) {
6054
6192
  }
6055
6193
  };
6056
6194
  }
6057
- //#endregion
6058
- //#region src/cli/log-summary.ts
6195
+ // src/cli/log-summary.ts
6059
6196
  var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1);
6060
6197
  const FIELD_VALUE_MAX = 80;
6061
6198
  const LINE_MAX = 160;
@@ -6197,13 +6334,13 @@ function buildDeployLogSummary(path) {
6197
6334
  }
6198
6335
  return formatDeployLogSummary(text.split("\n"));
6199
6336
  }
6200
- //#endregion
6201
- //#region src/cli/deploy.ts
6337
+ // src/cli/deploy.ts
6202
6338
  function resolveDeploymentPlatform(root, options) {
6203
6339
  return options?.platform ?? readDeploymentPlatform(root) ?? "void";
6204
6340
  }
6205
6341
  /** Run `void deploy`; a failure carries a summary of the deploy log in its message. */
6206
6342
  async function runDeploy(root, options) {
6343
+ options = withRecordedReadinessAccessOrigin(options ?? {});
6207
6344
  console.log();
6208
6345
  const cliLog = openDeployLog({ mirrorToStderr: options?.debug === true || process.env.VOID_DEPLOY_DEBUG === "1" });
6209
6346
  cliLog.info("deploy_start", {
@@ -6447,5 +6584,4 @@ async function runManagedDeploy(root, options, cliLog) {
6447
6584
  throw error;
6448
6585
  }
6449
6586
  }
6450
- //#endregion
6451
6587
  export { discoverRootWranglerConfig as a, runWranglerAuthToken as c, checkWranglerMigrationApplySet as i, deriveWorkerName as l, resolveDeploymentPlatform as n, createDeployWranglerRunner as o, runDeploy as r, isWranglerNonInteractiveOrCI as s, parseRootWranglerConfig$1 as t };