cf 0.7.0 → 0.8.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 (174) hide show
  1. package/dist/_meta/agent-context.json +1 -1
  2. package/dist/_meta/commands.json +9 -112
  3. package/dist/{abuse-reports-BsF9JZPW.mjs → abuse-reports-C6GFnuYE.mjs} +1 -1
  4. package/dist/{account-D8mYiWxQ.mjs → account-DxzpnGA8.mjs} +1 -1
  5. package/dist/{accounts-CJci1Oez.mjs → accounts-6RFDuFLF.mjs} +1 -1
  6. package/dist/{acm-CmCd985Q.mjs → acm-Bndi5Jqo.mjs} +1 -1
  7. package/dist/{addressing-R7p6TRBe.mjs → addressing-C8HB4n_n.mjs} +1 -1
  8. package/dist/ai-B4La9Oqk.mjs +8 -0
  9. package/dist/{ai-audit-B0vJNOZG.mjs → ai-audit-B9kKFhoY.mjs} +1 -1
  10. package/dist/{ai-gateway-D3vJR3My.mjs → ai-gateway-Bx9MzNxL.mjs} +1 -1
  11. package/dist/{ai-search-CNg7W7U4.mjs → ai-search-BgIOIgXd.mjs} +1 -1
  12. package/dist/{alerting-_sdM0B0S.mjs → alerting-DVI-v6mE.mjs} +1 -1
  13. package/dist/{analytics-BFBJhDrP.mjs → analytics-B98epmDb.mjs} +1 -1
  14. package/dist/{analytics_engine-CWhFvyeK.mjs → analytics_engine-DwDePA2c.mjs} +1 -1
  15. package/dist/{api-gateway-D4AIEtUq.mjs → api-gateway-DW2GX64w.mjs} +1 -1
  16. package/dist/{argo-Bjk6nFfs.mjs → argo-DKEx-B66.mjs} +1 -1
  17. package/dist/{artifacts-Ba4b3iOa.mjs → artifacts-BEU8fBqt.mjs} +1 -1
  18. package/dist/{audit-logs-BE0T5All.mjs → audit-logs-DZiEPYL0.mjs} +1 -1
  19. package/dist/{auth-D_zyQbDR.mjs → auth-009DISzb.mjs} +1 -1
  20. package/dist/{auth-CZ0E51rF.mjs → auth-B1CY5zpC.mjs} +2 -2
  21. package/dist/{billing-Dz6Zj8Eq.mjs → billing-10B4_1qb.mjs} +1 -1
  22. package/dist/{bot-management-pFwIbFi-.mjs → bot-management-D51WzJBO.mjs} +1 -1
  23. package/dist/{botnet-feed-BY9uGChY.mjs → botnet-feed-Dw-leAwX.mjs} +1 -1
  24. package/dist/{brand-protection-DkPAk2Cz.mjs → brand-protection-BTYkTsER.mjs} +1 -1
  25. package/dist/{browser-extension-D9P6Yv8i.mjs → browser-extension-BFa5Ky8u.mjs} +1 -1
  26. package/dist/{browser-run-DhHtz4y3.mjs → browser-run-BMA8Z_hI.mjs} +1 -1
  27. package/dist/build-C1FOoThn.mjs +70 -0
  28. package/dist/{cache-DVhkiIGK.mjs → cache-DrX4gWvg.mjs} +1 -1
  29. package/dist/{calls-95zjvIcO.mjs → calls-m4WyL1Rb.mjs} +1 -1
  30. package/dist/{certificate-authorities-BowBqbVq.mjs → certificate-authorities-BA-S8NE-.mjs} +1 -1
  31. package/dist/{cf-BLT7uKJF.mjs → cf-BhDnTcDR.mjs} +7 -7
  32. package/dist/chunk-2SIGYDH3-_JSHaszR.mjs +473 -0
  33. package/dist/{chunk-6IEM75FG-BEjRFMGh.mjs → chunk-Q72B4Q5Z-B-N_eqrM.mjs} +1 -1
  34. package/dist/{client-certificates-D6mE4vJu.mjs → client-certificates-5h-fXoNq.mjs} +1 -1
  35. package/dist/{cloud-connector-DmwsjeFN.mjs → cloud-connector-ywFQuqtV.mjs} +1 -1
  36. package/dist/{cloudforce-one-CG3TT7IN.mjs → cloudforce-one-CPx4C-r3.mjs} +1 -1
  37. package/dist/{completions-DMc_PlIw.mjs → completions-CCRu-jvY.mjs} +1 -1
  38. package/dist/{connectivity-DJkE3crz.mjs → connectivity-y-Gav-Ge.mjs} +1 -1
  39. package/dist/{connector-interrupts-DTgQ7onV.mjs → connector-interrupts-Bs-jfuh8.mjs} +1 -1
  40. package/dist/{connector-telemetry-events-D0rTHDou.mjs → connector-telemetry-events-Bc6f3xpx.mjs} +1 -1
  41. package/dist/{connector-telemetry-snapshots--0QmD3z6.mjs → connector-telemetry-snapshots-Bl54XZ3h.mjs} +1 -1
  42. package/dist/{connectors-zWaZTi2A.mjs → connectors-BnQq_R19.mjs} +1 -1
  43. package/dist/{content-scanning-CGvGf04y.mjs → content-scanning-Bxk-WkSL.mjs} +1 -1
  44. package/dist/{ct-alerting-ebSPSWNC.mjs → ct-alerting-BSn2Jqou.mjs} +1 -1
  45. package/dist/{custom-certificates-CWUrPYLP.mjs → custom-certificates-BBqr4S9W.mjs} +1 -1
  46. package/dist/{custom-csrs-CRtdrF9R.mjs → custom-csrs-CXeBzLUy.mjs} +1 -1
  47. package/dist/{custom-hostnames-CVQSksqq.mjs → custom-hostnames-CfCOedoN.mjs} +1 -1
  48. package/dist/{custom-nameservers-BRwbIdsX.mjs → custom-nameservers-RPXeu7f_.mjs} +1 -1
  49. package/dist/{custom-pages-Ci8sTQX7.mjs → custom-pages-xGG1xo88.mjs} +1 -1
  50. package/dist/{d1-78Ym1P6D.mjs → d1-CRIOfBsJ.mjs} +1 -1
  51. package/dist/{data-security-zmFoMwRU.mjs → data-security-D5Sw5rwj.mjs} +1 -1
  52. package/dist/{dcv-delegation-Dd4FZ2IG.mjs → dcv-delegation-BBnlgr6F.mjs} +1 -1
  53. package/dist/deploy-D0_KIUpW.mjs +2 -0
  54. package/dist/deploy-input-CdWrpzPA.mjs +1178 -0
  55. package/dist/{dev-DSslyDXx.mjs → dev-Bz87BeKt.mjs} +1 -1
  56. package/dist/{diagnostics-B8Ev5m_o.mjs → diagnostics-C1qryRf4.mjs} +1 -1
  57. package/dist/{dispatch-namespaces-Dm5vGeEP.mjs → dispatch-namespaces-DbosPgPV.mjs} +1 -1
  58. package/dist/{dist-BH-4NQOV.mjs → dist-C-6VkMPZ.mjs} +35 -35
  59. package/dist/dist-CnaLMpVH.mjs +18 -0
  60. package/dist/{dns-D7VAaCyO.mjs → dns-ByufYrJH.mjs} +1 -1
  61. package/dist/{dns-firewall-ByLCsf0q.mjs → dns-firewall-CiokCKRr.mjs} +1 -1
  62. package/dist/{durable-objects-BIpvyu9m.mjs → durable-objects-DjF-WAD3.mjs} +1 -1
  63. package/dist/{email-auth-Cx--s8W4.mjs → email-auth-B4BIYMb-.mjs} +1 -1
  64. package/dist/{email-routing-CiDbivcN.mjs → email-routing-BbbtpVyS.mjs} +1 -1
  65. package/dist/{email-security-BYeAuSc6.mjs → email-security-DuBVypAO.mjs} +1 -1
  66. package/dist/{email-sending-Dg2rSmHH.mjs → email-sending-5g-k05Lv.mjs} +1 -1
  67. package/dist/{filters-DZ8YnQ90.mjs → filters-CzJmLFcS.mjs} +1 -1
  68. package/dist/{firewall-DEd1hs_I.mjs → firewall-CjmeWA2M.mjs} +1 -1
  69. package/dist/{flagship-DVw7xGoP.mjs → flagship-BfyVrWP-.mjs} +1 -1
  70. package/dist/{fraud-BbGS3FZs.mjs → fraud-reRvxNg-.mjs} +1 -1
  71. package/dist/{google-tag-gateway-CBnRGYQR.mjs → google-tag-gateway-CGwzMZU1.mjs} +1 -1
  72. package/dist/{healthchecks-Da9N3ix4.mjs → healthchecks-BhCsPWcG.mjs} +1 -1
  73. package/dist/{hostnames-mimZu2tB.mjs → hostnames-JpgQW4kn.mjs} +1 -1
  74. package/dist/{hyperdrive-BNdvxOos.mjs → hyperdrive-iwYttuwV.mjs} +1 -1
  75. package/dist/{iam-DGQ-OgRl.mjs → iam-ffI98_4v.mjs} +1 -1
  76. package/dist/{images-CI6Iy9ho.mjs → images-Bgb9DGlr.mjs} +1 -1
  77. package/dist/index.mjs +1 -1
  78. package/dist/{intel-BDB-aRtU.mjs → intel-DVRjKpyU.mjs} +1 -1
  79. package/dist/{ips-B9UuPvsY.mjs → ips-BtLRO19r.mjs} +1 -1
  80. package/dist/{keyless-certificates-Ua9uJgPt.mjs → keyless-certificates-13w8KOcC.mjs} +1 -1
  81. package/dist/{kv-BHerx4dZ.mjs → kv-CvQyF_NB.mjs} +1 -1
  82. package/dist/{leaked-credential-checks-B8Vunj9h.mjs → leaked-credential-checks-DvY8VReW.mjs} +1 -1
  83. package/dist/{load-balancers-DSjS5WKw.mjs → load-balancers-6lgExyS7.mjs} +1 -1
  84. package/dist/{logexplorer-DBIfTlRP.mjs → logexplorer-DBfrK1hn.mjs} +1 -1
  85. package/dist/{logo-matches-C00iGpzW.mjs → logo-matches-XS2RaxQu.mjs} +1 -1
  86. package/dist/{logos-CJLhx1go.mjs → logos-COtlpbRq.mjs} +1 -1
  87. package/dist/{logpush-Cr1U-eK-.mjs → logpush-CIpiK3Xl.mjs} +1 -1
  88. package/dist/{logs-DMvtchc6.mjs → logs-0KjIf_3g.mjs} +1 -1
  89. package/dist/{magic-cloud-networking-FQfO8QWH.mjs → magic-cloud-networking-q_d9-he-.mjs} +1 -1
  90. package/dist/{magic-network-monitoring-CDd70fJQ.mjs → magic-network-monitoring-DLNCrUsn.mjs} +1 -1
  91. package/dist/{magic-transit-DiKiPUax.mjs → magic-transit-sIwSlzoK.mjs} +1 -1
  92. package/dist/{managed-transforms-fPVUTrAv.mjs → managed-transforms-BKRjmzJS.mjs} +1 -1
  93. package/dist/{matches-B0yHbQ2I.mjs → matches-DZLS60M2.mjs} +1 -1
  94. package/dist/{moq-UgBawOXe.mjs → moq-Dbb9QhC1.mjs} +1 -1
  95. package/dist/{mtls-certificates-xKUbC5EL.mjs → mtls-certificates-BpIqoWpc.mjs} +1 -1
  96. package/dist/{network-interconnects-BJzOE2ny.mjs → network-interconnects-DZwGJFYT.mjs} +1 -1
  97. package/dist/{oauth-DBJ5GSFk.mjs → oauth-DC9g9uK_.mjs} +1 -1
  98. package/dist/{observability-B-1y36QS.mjs → observability-CVLjPAir.mjs} +1 -1
  99. package/dist/{open-YWOUIZ5Y-CFRcYALi.mjs → open-PBXRGS4R-D5C2-7de.mjs} +1 -1
  100. package/dist/{organization-Dq3PClZ7.mjs → organization-BGF8N1QQ.mjs} +1 -1
  101. package/dist/{organizations-AhsQkHyX.mjs → organizations-BInE8nlx.mjs} +1 -1
  102. package/dist/{origin-ca-certificates-CRgF0UyU.mjs → origin-ca-certificates-wPzWcEa0.mjs} +1 -1
  103. package/dist/{origin-post-quantum-encryption-BXTx7DPa.mjs → origin-post-quantum-encryption-t1Cl9hiy.mjs} +1 -1
  104. package/dist/{origin-tls-client-auth-BDw5q-6G.mjs → origin-tls-client-auth-Cvr9D8eq.mjs} +1 -1
  105. package/dist/{page-rules-DqYQ23eg.mjs → page-rules-CMo73oVb.mjs} +1 -1
  106. package/dist/{page-shield-DKdlZOLO.mjs → page-shield-Z23iqabu.mjs} +1 -1
  107. package/dist/{pages-BsXF11Kv.mjs → pages-ByaZvYjA.mjs} +1 -1
  108. package/dist/{pay-per-crawl-BGAwuAP3.mjs → pay-per-crawl-BXTenh_d.mjs} +1 -1
  109. package/dist/{pipelines-D_QhSnGW.mjs → pipelines-7KWm5BYN.mjs} +1 -1
  110. package/dist/{progress-O88q63Bk.mjs → progress-BLQ2xXwD.mjs} +1 -1
  111. package/dist/{prompt-DTAWiEm2.mjs → prompt-DcfYBioA.mjs} +1 -1
  112. package/dist/{queries-CAE95-OH.mjs → queries-Cgx1lQbn.mjs} +1 -1
  113. package/dist/{queues-BBz35Mqd.mjs → queues-jnugmCYI.mjs} +1 -1
  114. package/dist/{r2-Zp99S5xF.mjs → r2-Dllx7F7a.mjs} +1 -1
  115. package/dist/{r2-data-catalog-BeVLZwrE.mjs → r2-data-catalog-CaAAPwKp.mjs} +1 -1
  116. package/dist/{radar-Cij-XVQJ.mjs → radar-DLSHX2_1.mjs} +1 -1
  117. package/dist/{rate-limits-DSdToIWv.mjs → rate-limits-DlVTd6QY.mjs} +1 -1
  118. package/dist/{raw-fetch-DgezeshQ.mjs → raw-fetch-CeW1mW_u.mjs} +1 -1
  119. package/dist/{realtime-kit-9rJcapfM.mjs → realtime-kit-ct8Fu2kO.mjs} +1 -1
  120. package/dist/{registrar-CXViZlah.mjs → registrar-CKTB7QTM.mjs} +1 -1
  121. package/dist/{registrar-sandbox-CvQyjXLJ.mjs → registrar-sandbox-1-nNk6Uy.mjs} +1 -1
  122. package/dist/{request-tracers-DATfBnE9.mjs → request-tracers-DO6lno0x.mjs} +1 -1
  123. package/dist/{resource-sharing-Cmhn6ghR.mjs → resource-sharing-DYhXJw44.mjs} +1 -1
  124. package/dist/{resource-tagging-BTn05AOj.mjs → resource-tagging-CcKWMF9l.mjs} +1 -1
  125. package/dist/{rules-ens3OHme.mjs → rules-DQKR3qb7.mjs} +1 -1
  126. package/dist/{rulesets-bkreZRao.mjs → rulesets-B9fZb_JY.mjs} +1 -1
  127. package/dist/{rum-CpgXFcwl.mjs → rum-BaJio_GD.mjs} +1 -1
  128. package/dist/{schema-validation-Ca6o94ts.mjs → schema-validation-Cqv8KT1B.mjs} +1 -1
  129. package/dist/{scim-C4oT8TMc.mjs → scim-DkYH1dep.mjs} +1 -1
  130. package/dist/{secrets-store-CWEuiDNo.mjs → secrets-store-CMR_pA1t.mjs} +1 -1
  131. package/dist/{security-center-BOvm7xy6.mjs → security-center-DCHfgCq6.mjs} +1 -1
  132. package/dist/{security-txt-BCAUBctN.mjs → security-txt-D19uTyaf.mjs} +1 -1
  133. package/dist/{session-B1ARgLG7.mjs → session-CQpgz61H.mjs} +1 -1
  134. package/dist/{share-DhmVspmL.mjs → share-CfJbt0WU.mjs} +1 -1
  135. package/dist/shared-D0xvDsDl.mjs +2 -0
  136. package/dist/{smart-shield-DZm4fn6z.mjs → smart-shield-BG5WOmi1.mjs} +1 -1
  137. package/dist/{snippets-oQ0u26-z.mjs → snippets-CYiSdx7R.mjs} +1 -1
  138. package/dist/{spawn-ChG5Xi9Z.mjs → spawn-j3dn7A69.mjs} +1 -1
  139. package/dist/{spectrum-Cnkee5Ww.mjs → spectrum-Qvq3yJax.mjs} +1 -1
  140. package/dist/{speed-DqNnvLBD.mjs → speed-vpoB9msm.mjs} +1 -1
  141. package/dist/{src-By-zTCHz.mjs → src-Bn0FyQIp.mjs} +5 -5
  142. package/dist/{ssl-tS3CYZsZ.mjs → ssl-Qw8eVAiS.mjs} +1 -1
  143. package/dist/{state-OsdDJvdj.mjs → state-C2cBU9iK.mjs} +1 -1
  144. package/dist/{stream-Bud9Os5V.mjs → stream-BNbkY3zI.mjs} +1 -1
  145. package/dist/{submit-BtP8she2.mjs → submit-pQNW7uWj.mjs} +1 -1
  146. package/dist/{tenant-CMwHa-tU.mjs → tenant-xkvdAutS.mjs} +1 -1
  147. package/dist/{token-validation-BYC7HTok.mjs → token-validation-5F2AbQCz.mjs} +1 -1
  148. package/dist/triggers-CYdZhJYr.mjs +2 -0
  149. package/dist/{turnstile-CP4nScaL.mjs → turnstile-BSIaunXn.mjs} +1 -1
  150. package/dist/{ui-BNoF0KpD.mjs → ui-CTo5OG9r.mjs} +1 -1
  151. package/dist/{url-info-Chs9h7Y-.mjs → url-info-Q7m7AVih.mjs} +1 -1
  152. package/dist/{url-normalization-XYxW5Gj0.mjs → url-normalization-Bs2m5jlD.mjs} +1 -1
  153. package/dist/{url-scanner-D4pYNlO-.mjs → url-scanner-CYmT3C99.mjs} +1 -1
  154. package/dist/{user-DtefniLc.mjs → user-Bay_0p3C.mjs} +1 -1
  155. package/dist/{vectorize-BeAY2g-7.mjs → vectorize-cP2OuB5N.mjs} +1 -1
  156. package/dist/{versions-dMW3bLVv.mjs → versions-D7F26fhH.mjs} +1 -1
  157. package/dist/{waiting-rooms-K78HeeTg.mjs → waiting-rooms-B5HR1-37.mjs} +1 -1
  158. package/dist/{web3-Dhw79l4S.mjs → web3-DqCXM4sx.mjs} +1 -1
  159. package/dist/{workers-l3zMNOU6.mjs → workers-Cu-A8AZc.mjs} +1 -1
  160. package/dist/{workers-builds-CuOAB3u4.mjs → workers-builds-CmCg27M-.mjs} +1 -1
  161. package/dist/{workflows-rb7RYBKP.mjs → workflows-DavS4SEh.mjs} +1 -1
  162. package/dist/{zaraz-CHecMYuo.mjs → zaraz-CKcVy5Xa.mjs} +1 -1
  163. package/dist/{zero-trust-DAZoa-Aj.mjs → zero-trust-BKVqb2yq.mjs} +1 -1
  164. package/dist/{zone-BnnqJwW-.mjs → zone-BOcuY4sU.mjs} +1 -1
  165. package/dist/{zones-DpI2YikF.mjs → zones-BR-9WaY7.mjs} +1 -1
  166. package/package.json +5 -4
  167. package/dist/ai-BzJg0RIX.mjs +0 -3
  168. package/dist/build-CWuStmDi.mjs +0 -2
  169. package/dist/chunk-2SIGYDH3-qXx_zE6v.mjs +0 -397
  170. package/dist/deploy-CVvkZFjR.mjs +0 -2
  171. package/dist/lib-Og5sB51C.mjs +0 -68
  172. package/dist/shared-Bod3-Exx.mjs +0 -990
  173. /package/dist/{schema-DCF4yEp_.mjs → schema-DAW-B7wT.mjs} +0 -0
  174. /package/dist/{tools-Dru4l8yh.mjs → tools-BpNGzfj2.mjs} +0 -0
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import{D as e}from"./oauth-DBJ5GSFk.mjs";import{n as t}from"./auth-CZ0E51rF.mjs";import{t as n}from"./output-B6fBFRqe.mjs";import{n as r,t as i}from"./progress-O88q63Bk.mjs";import{n as a,t as o}from"./body-parser-BO6mfo_W.mjs";import{n as s}from"./input-validation-BwUR9z8e.mjs";import{n as c,r as l,t as u}from"./prompt-DTAWiEm2.mjs";function d(e){return e.option(`description`,{type:`string`,description:`Specify an optional description of the hostname.`}).option(`dnslink`,{type:`string`,description:`Specify the DNSLink value used if the target is ipfs.`}).option(`name`,{type:`string`,description:`Specify the hostname that points to the target gateway via CNAME.`}).option(`target`,{type:`string`,description:`Specify the target gateway of the hostname.`,choices:[`ethereum`,`ipfs`,`ipfs_universal_path`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const f={command:`create`,describe:`Create Web3 Hostname`,builder:d,handler:async u=>{if(u.dryRun){r({command:`cf web3 hostnames create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${u.zone??u.zoneId??`<zone>`}/web3/hostnames`,pathParams:{"zone-id":String(u.zone??u[`zone-id`]??``)},bodyKind:`json`,body:u.body===void 0?o({description:s(u.description,`description`,`text`),dnslink:s(u.dnslink,`dnslink`,`text`),name:s(u.name,`name`,`text`),target:s(u.target,`target`,`text`)}):a(u.body)});return}let d=await t(u),f=await e({zone:u.zone},d,{quiet:u.quiet});if(u.zoneId=f,u.body){let e=a(u.body);n(await i(`Creating`,async()=>d.web3.hostnames.create({...e,zone_id:f})),{successLabel:`Created`});return}u.name===void 0&&(u.name=await l(`name`,`Specify the hostname that points to the target gateway via CNAME.`)),u.target===void 0&&(u.target=await c(`target`,`Specify the target gateway of the hostname.`,[`ethereum`,`ipfs`,`ipfs_universal_path`]));let p=o({description:s(u.description,`description`,`text`),dnslink:s(u.dnslink,`dnslink`,`text`),name:s(u.name,`name`,`text`),target:s(u.target,`target`,`text`)});n(await i(`Creating`,async()=>d.web3.hostnames.create({...p,zone_id:f})),{successLabel:`Created`})}};function p(e){return e.positional(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const m={command:`delete <identifier>`,describe:`Delete Web3 Hostname`,builder:p,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames/${a.identifier==null?`<identifier>`:encodeURIComponent(String(a.identifier))}`,pathParams:{identifier:String(a.identifier??``),"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});if(a.zoneId=s,!await u({force:!!a.force})){process.stderr.write(`Aborted.
2
+ import{D as e}from"./oauth-DC9g9uK_.mjs";import{n as t}from"./auth-B1CY5zpC.mjs";import{t as n}from"./output-B6fBFRqe.mjs";import{n as r,t as i}from"./progress-BLQ2xXwD.mjs";import{n as a,t as o}from"./body-parser-BO6mfo_W.mjs";import{n as s}from"./input-validation-BwUR9z8e.mjs";import{n as c,r as l,t as u}from"./prompt-DcfYBioA.mjs";function d(e){return e.option(`description`,{type:`string`,description:`Specify an optional description of the hostname.`}).option(`dnslink`,{type:`string`,description:`Specify the DNSLink value used if the target is ipfs.`}).option(`name`,{type:`string`,description:`Specify the hostname that points to the target gateway via CNAME.`}).option(`target`,{type:`string`,description:`Specify the target gateway of the hostname.`,choices:[`ethereum`,`ipfs`,`ipfs_universal_path`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const f={command:`create`,describe:`Create Web3 Hostname`,builder:d,handler:async u=>{if(u.dryRun){r({command:`cf web3 hostnames create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${u.zone??u.zoneId??`<zone>`}/web3/hostnames`,pathParams:{"zone-id":String(u.zone??u[`zone-id`]??``)},bodyKind:`json`,body:u.body===void 0?o({description:s(u.description,`description`,`text`),dnslink:s(u.dnslink,`dnslink`,`text`),name:s(u.name,`name`,`text`),target:s(u.target,`target`,`text`)}):a(u.body)});return}let d=await t(u),f=await e({zone:u.zone},d,{quiet:u.quiet});if(u.zoneId=f,u.body){let e=a(u.body);n(await i(`Creating`,async()=>d.web3.hostnames.create({...e,zone_id:f})),{successLabel:`Created`});return}u.name===void 0&&(u.name=await l(`name`,`Specify the hostname that points to the target gateway via CNAME.`)),u.target===void 0&&(u.target=await c(`target`,`Specify the target gateway of the hostname.`,[`ethereum`,`ipfs`,`ipfs_universal_path`]));let p=o({description:s(u.description,`description`,`text`),dnslink:s(u.dnslink,`dnslink`,`text`),name:s(u.name,`name`,`text`),target:s(u.target,`target`,`text`)});n(await i(`Creating`,async()=>d.web3.hostnames.create({...p,zone_id:f})),{successLabel:`Created`})}};function p(e){return e.positional(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const m={command:`delete <identifier>`,describe:`Delete Web3 Hostname`,builder:p,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames/${a.identifier==null?`<identifier>`:encodeURIComponent(String(a.identifier))}`,pathParams:{identifier:String(a.identifier??``),"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});if(a.zoneId=s,!await u({force:!!a.force})){process.stderr.write(`Aborted.
3
3
  `);return}n(await i(`Deleting`,async()=>o.web3.hostnames.delete({zone_id:s,identifier:a.identifier})),{successLabel:`Deleted`})}};function h(e){return e.positional(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`description`,{type:`string`,description:`Specify an optional description of the hostname.`}).option(`dnslink`,{type:`string`,description:`Specify the DNSLink value used if the target is ipfs.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const g={command:`edit <identifier>`,describe:`Edit Web3 Hostname`,builder:h,handler:async c=>{if(c.dryRun){r({command:`cf web3 hostnames edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${c.zone??c.zoneId??`<zone>`}/web3/hostnames/${c.identifier==null?`<identifier>`:encodeURIComponent(String(c.identifier))}`,pathParams:{identifier:String(c.identifier??``),"zone-id":String(c.zone??c[`zone-id`]??``)},bodyKind:`json`,body:c.body===void 0?o({description:s(c.description,`description`,`text`),dnslink:s(c.dnslink,`dnslink`,`text`)}):a(c.body)});return}let l=await t(c),u=await e({zone:c.zone},l,{quiet:c.quiet});if(c.zoneId=u,c.body){let e=a(c.body);n(await i(`Updating`,async()=>l.web3.hostnames.edit({...e,zone_id:u,identifier:c.identifier})),{successLabel:`Updated`});return}let d=o({description:s(c.description,`description`,`text`),dnslink:s(c.dnslink,`dnslink`,`text`)});n(await i(`Updating`,async()=>l.web3.hostnames.edit({...d,zone_id:u,identifier:c.identifier})),{successLabel:`Updated`})}};function _(e){return e.positional(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const v={command:`get <identifier>`,describe:`Web3 Hostname Details`,builder:_,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames/${a.identifier==null?`<identifier>`:encodeURIComponent(String(a.identifier))}`,pathParams:{identifier:String(a.identifier??``),"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.web3.hostnames.get({zone_id:s,identifier:a.identifier})),{successLabel:`Loaded`})}};function y(e){return e.positional(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`content`,{type:`string`,description:`Specify the CID or content path of content to block.`}).option(`description`,{type:`string`,description:`Specify an optional description of the content list entry.`}).option(`type`,{type:`string`,description:`Specify the type of content list entry to block.`,choices:[`cid`,`content_path`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const b={command:`create <identifier>`,describe:`Create IPFS Universal Path Gateway Content List Entry`,builder:y,handler:async u=>{if(u.dryRun){r({command:`cf web3 hostnames ipfs-universal-paths content-lists entries create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${u.zone??u.zoneId??`<zone>`}/web3/hostnames/${u.identifier==null?`<identifier>`:encodeURIComponent(String(u.identifier))}/ipfs_universal_path/content_list/entries`,pathParams:{identifier:String(u.identifier??``),"zone-id":String(u.zone??u[`zone-id`]??``)},bodyKind:`json`,body:u.body===void 0?o({content:s(u.content,`content`,`text`),description:s(u.description,`description`,`text`),type:s(u.type,`type`,`text`)}):a(u.body)});return}let d=await t(u),f=await e({zone:u.zone},d,{quiet:u.quiet});if(u.zoneId=f,u.body){let e=a(u.body);n(await i(`Creating`,async()=>d.web3.hostnames.ipfsUniversalPaths.contentLists.entries.create({body:e,zone_id:f,identifier:u.identifier})),{successLabel:`Created`});return}u.content===void 0&&(u.content=await l(`content`,`Specify the CID or content path of content to block.`)),u.type===void 0&&(u.type=await c(`type`,`Specify the type of content list entry to block.`,[`cid`,`content_path`]));let p=o({content:s(u.content,`content`,`text`),description:s(u.description,`description`,`text`),type:s(u.type,`type`,`text`)});n(await i(`Creating`,async()=>d.web3.hostnames.ipfsUniversalPaths.contentLists.entries.create({body:p,zone_id:f,identifier:u.identifier})),{successLabel:`Created`})}};function x(e){return e.positional(`content-list-entry-identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const S={command:`delete <content-list-entry-identifier>`,describe:`Delete IPFS Universal Path Gateway Content List Entry`,builder:x,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames ipfs-universal-paths content-lists entries delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames/${a.identifier==null?`<identifier>`:encodeURIComponent(String(a.identifier))}/ipfs_universal_path/content_list/entries/${a[`content-list-entry-identifier`]==null?`<content-list-entry-identifier>`:encodeURIComponent(String(a[`content-list-entry-identifier`]))}`,pathParams:{"content-list-entry-identifier":String(a[`content-list-entry-identifier`]??``),identifier:String(a.identifier??``),"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});if(a.zoneId=s,!await u({force:!!a.force})){process.stderr.write(`Aborted.
4
4
  `);return}n(await i(`Deleting`,async()=>o.web3.hostnames.ipfsUniversalPaths.contentLists.entries.delete({zone_id:s,identifier:a.identifier,content_list_entry_identifier:a[`content-list-entry-identifier`]})),{successLabel:`Deleted`})}};function C(e){return e.positional(`content-list-entry-identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const w={command:`get <content-list-entry-identifier>`,describe:`IPFS Universal Path Gateway Content List Entry Details`,builder:C,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames ipfs-universal-paths content-lists entries get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames/${a.identifier==null?`<identifier>`:encodeURIComponent(String(a.identifier))}/ipfs_universal_path/content_list/entries/${a[`content-list-entry-identifier`]==null?`<content-list-entry-identifier>`:encodeURIComponent(String(a[`content-list-entry-identifier`]))}`,pathParams:{"content-list-entry-identifier":String(a[`content-list-entry-identifier`]??``),identifier:String(a.identifier??``),"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.web3.hostnames.ipfsUniversalPaths.contentLists.entries.get({zone_id:s,identifier:a.identifier,content_list_entry_identifier:a[`content-list-entry-identifier`]})),{successLabel:`Loaded`})}};function T(e){return e.option(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`list`,describe:`List IPFS Universal Path Gateway Content List Entries`,builder:T,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames ipfs-universal-paths content-lists entries list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames/${a.identifier==null?`<identifier>`:encodeURIComponent(String(a.identifier))}/ipfs_universal_path/content_list/entries`,pathParams:{identifier:String(a.identifier??``),"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.web3.hostnames.ipfsUniversalPaths.contentLists.entries.list({zone_id:s,identifier:a.identifier})),{successLabel:`Loaded`})}};function D(e){return e.positional(`content-list-entry-identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`content`,{type:`string`,description:`Specify the CID or content path of content to block.`}).option(`description`,{type:`string`,description:`Specify an optional description of the content list entry.`}).option(`type`,{type:`string`,description:`Specify the type of content list entry to block.`,choices:[`cid`,`content_path`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const O={command:`update <content-list-entry-identifier>`,describe:`Edit IPFS Universal Path Gateway Content List Entry`,builder:D,handler:async u=>{if(u.dryRun){r({command:`cf web3 hostnames ipfs-universal-paths content-lists entries update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${u.zone??u.zoneId??`<zone>`}/web3/hostnames/${u.identifier==null?`<identifier>`:encodeURIComponent(String(u.identifier))}/ipfs_universal_path/content_list/entries/${u[`content-list-entry-identifier`]==null?`<content-list-entry-identifier>`:encodeURIComponent(String(u[`content-list-entry-identifier`]))}`,pathParams:{"content-list-entry-identifier":String(u[`content-list-entry-identifier`]??``),identifier:String(u.identifier??``),"zone-id":String(u.zone??u[`zone-id`]??``)},bodyKind:`json`,body:u.body===void 0?o({content:s(u.content,`content`,`text`),description:s(u.description,`description`,`text`),type:s(u.type,`type`,`text`)}):a(u.body)});return}let d=await t(u),f=await e({zone:u.zone},d,{quiet:u.quiet});if(u.zoneId=f,u.body){let e=a(u.body);n(await i(`Updating`,async()=>d.web3.hostnames.ipfsUniversalPaths.contentLists.entries.update({body:e,zone_id:f,identifier:u.identifier,content_list_entry_identifier:u[`content-list-entry-identifier`]})),{successLabel:`Updated`});return}u.content===void 0&&(u.content=await l(`content`,`Specify the CID or content path of content to block.`)),u.type===void 0&&(u.type=await c(`type`,`Specify the type of content list entry to block.`,[`cid`,`content_path`]));let p=o({content:s(u.content,`content`,`text`),description:s(u.description,`description`,`text`),type:s(u.type,`type`,`text`)});n(await i(`Updating`,async()=>d.web3.hostnames.ipfsUniversalPaths.contentLists.entries.update({body:p,zone_id:f,identifier:u.identifier,content_list_entry_identifier:u[`content-list-entry-identifier`]})),{successLabel:`Updated`})}},k={command:`entries`,describe:`Web3 gateway hostnames with IPFS Universal Path content list management`,builder:e=>e.command(b).command(S).command(w).command(E).command(O).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function A(e){return e.positional(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const j={command:`get <identifier>`,describe:`IPFS Universal Path Gateway Content List Details`,builder:A,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames ipfs-universal-paths content-lists get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames/${a.identifier==null?`<identifier>`:encodeURIComponent(String(a.identifier))}/ipfs_universal_path/content_list`,pathParams:{identifier:String(a.identifier??``),"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.web3.hostnames.ipfsUniversalPaths.contentLists.get({zone_id:s,identifier:a.identifier})),{successLabel:`Loaded`})}};function M(e){return e.positional(`identifier`,{type:`string`,description:`Specify the identifier of the hostname.`,demandOption:!0}).option(`action`,{type:`string`,description:`Behavior of the content list.`,choices:[`block`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const N={command:`update <identifier>`,describe:`Update IPFS Universal Path Gateway Content List`,builder:M,handler:async l=>{if(l.dryRun){r({command:`cf web3 hostnames ipfs-universal-paths content-lists update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${l.zone??l.zoneId??`<zone>`}/web3/hostnames/${l.identifier==null?`<identifier>`:encodeURIComponent(String(l.identifier))}/ipfs_universal_path/content_list`,pathParams:{identifier:String(l.identifier??``),"zone-id":String(l.zone??l[`zone-id`]??``)},bodyKind:`json`,body:l.body===void 0?o({action:s(l.action,`action`,`text`)}):a(l.body)});return}let u=await t(l),d=await e({zone:l.zone},u,{quiet:l.quiet});if(l.zoneId=d,l.body){let e=a(l.body);n(await i(`Updating`,async()=>u.web3.hostnames.ipfsUniversalPaths.contentLists.update({...e,zone_id:d,identifier:l.identifier})),{successLabel:`Updated`});return}l.action===void 0&&(l.action=await c(`action`,`Behavior of the content list.`,[`block`]));let f=o({action:s(l.action,`action`,`text`)});n(await i(`Updating`,async()=>u.web3.hostnames.ipfsUniversalPaths.contentLists.update({...f,zone_id:d,identifier:l.identifier})),{successLabel:`Updated`})}},P={command:`content-lists`,describe:`Web3 gateway hostnames with IPFS Universal Path content list management`,builder:e=>e.command(j).command(N).command(k).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},F={command:`ipfs-universal-paths`,describe:`Operations for hostnames.ipfs-universal-paths`,builder:e=>e.command(P).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function I(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const L={command:`list`,describe:`List Web3 Hostnames`,builder:I,handler:async a=>{if(a.dryRun){r({command:`cf web3 hostnames list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/web3/hostnames`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.web3.hostnames.list({zone_id:s})),{successLabel:`Loaded`})}},R={command:`hostnames`,describe:`Web3 gateway hostnames with IPFS Universal Path content list management`,builder:e=>e.command(f).command(m).command(g).command(v).command(L).command(F).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},z={command:`web3`,describe:`Web3 gateways — serve IPFS and Ethereum content through custom hostnames on Cloudflare`,builder:e=>e.command(R).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{z as default};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{D as e,E as t,O as n,w as r}from"./oauth-DBJ5GSFk.mjs";import{i,n as a}from"./auth-CZ0E51rF.mjs";import{t as o}from"./output-B6fBFRqe.mjs";import{n as s,t as c}from"./progress-O88q63Bk.mjs";import{t as l}from"./local-C6TLPAT6.mjs";import{n as u,r as d,t as f}from"./body-parser-BO6mfo_W.mjs";import{n as p,t as m}from"./input-validation-BwUR9z8e.mjs";import{n as h,r as g,t as _}from"./prompt-DTAWiEm2.mjs";import{t as v}from"./cli-types-CFw6Xygp.mjs";import{n as ee,t as te}from"./raw-fetch-DgezeshQ.mjs";function y(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`get`,describe:`Fetches Worker account settings for an account.`,builder:y,handler:async e=>{if(e.dryRun){s({command:`cf workers account-settings get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/account-settings`,pathParams:{},bodyKind:`none`});return}let t=await a(e),i=e.local?l:await r();e.accountId=i,o(await c(`Loading`,async()=>t.workers.accountSettings.get({account_id:i})),{successLabel:`Loaded`})}};function x(e){return e.option(`default-usage-model`,{type:`string`,description:`The default_usage_model field`}).option(`green-compute`,{type:`boolean`,description:`The green_compute field`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const S={command:`update`,describe:`Creates Worker account settings for an account.`,builder:x,handler:async e=>{if(e.dryRun){s({command:`cf workers account-settings update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/account-settings`,pathParams:{},bodyKind:`json`,body:e.body===void 0?f({default_usage_model:p(e[`default-usage-model`],`default-usage-model`,`text`),green_compute:e[`green-compute`]}):u(e.body)});return}let t=await a(e),i=e.local?l:await r();if(e.accountId=i,e.body){let n=u(e.body);o(await c(`Updating`,async()=>t.workers.accountSettings.update({body:n,account_id:i})),{successLabel:`Updated`});return}let d=f({default_usage_model:p(e[`default-usage-model`],`default-usage-model`,`text`),green_compute:e[`green-compute`]});o(await c(`Updating`,async()=>t.workers.accountSettings.update({body:d,account_id:i})),{successLabel:`Updated`})}},C={command:`account-settings`,describe:`Operations for account-settings`,builder:e=>e.command(b).command(S).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function w(e){return e.option(`base64`,{type:`string`,description:"Whether the file contents are base64-encoded. Must be `true`.",choices:[`true`],demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).option(`file`,{type:`string`,description:`Path to a file to upload as the request body`})}const T={command:`create`,describe:`Upload assets ahead of creating a Worker version. To learn more about the direct uploads of assets, see https://developers.cloudflare.com/workers/static-assets/direct-upload/.`,builder:v(w),handler:async e=>{let t={base64:e.base64};if(e.dryRun){s({command:`cf workers assets upload create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/assets/upload`,pathParams:{},query:t,bodyKind:`octet-stream`,body:e.body});return}let u=await a(e),d=e.local?l:await r();if(e.accountId=d,e.file){let t=m(e.file),n=new FormData;n.append(`file`,new Blob([t]),e.file.split(/[\\/]/).filter(Boolean).pop()),o(await c(`Creating`,async()=>i(u,`POST`,`/accounts/${d}/workers/assets/upload`,{body:n})),{successLabel:`Created`});return}if(e.body){let n=p(e.body,`body`,`binary`),r=new URLSearchParams(Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString();o(await c(`Creating`,async()=>i(u,`POST`,`/accounts/${d}/workers/assets/upload${r?`?`+r:``}`,{body:n,headers:{"Content-Type":`multipart/form-data`}})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>u.workers.assets.upload.create({account_id:d,...t})),{successLabel:`Created`})}},E={command:`upload`,describe:`Operations for assets.upload`,builder:e=>e.command(T).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},D={command:`assets`,describe:`Operations for assets`,builder:e=>e.command(E).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function O(e){return e.option(`logpush`,{type:`boolean`,description:`Whether logpush is enabled for the Worker.`,default:!1}).option(`name`,{type:`string`,description:`Name of the Worker.`}).option(`observability-enabled`,{type:`boolean`,description:`Whether observability is enabled for the Worker.`,default:!1}).option(`observability-head-sampling-rate`,{type:`number`,description:`The sampling rate for observability. From 0 to 1 (1 = 100%, 0.1 = 10%).`,default:1}).option(`observability-logs-destinations`,{type:`string`,array:!0,description:`A list of destinations where logs will be exported to.`}).option(`observability-logs-enabled`,{type:`boolean`,description:`Whether logs are enabled for the Worker.`,default:!1}).option(`observability-logs-head-sampling-rate`,{type:`number`,description:`The sampling rate for logs. From 0 to 1 (1 = 100%, 0.1 = 10%).`,default:1}).option(`observability-logs-invocation-logs`,{type:`boolean`,description:`Whether [invocation logs](https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs) are enabled for the Worker.`,default:!0}).option(`observability-logs-persist`,{type:`boolean`,description:`Whether log persistence is enabled for the Worker.`,default:!0}).option(`observability-traces-destinations`,{type:`string`,array:!0,description:`A list of destinations where traces will be exported to.`}).option(`observability-traces-enabled`,{type:`boolean`,description:`Whether traces are enabled for the Worker.`,default:!1}).option(`observability-traces-head-sampling-rate`,{type:`number`,description:`The sampling rate for traces. From 0 to 1 (1 = 100%, 0.1 = 10%).`,default:1}).option(`observability-traces-persist`,{type:`boolean`,description:`Whether trace persistence is enabled for the Worker.`,default:!0}).option(`observability-traces-propagation-policy`,{type:`string`,description:`Controls how inbound trace context (traceparent/tracestate) headers on incoming requests are handled. "authenticated" (default) honors inbound trace context only when accompanied by a valid trace auth token. "accept" unconditionally accepts inbound trace context. Requires the trace propagation feature to be enabled.`,choices:[`authenticated`,`accept`],default:`authenticated`}).option(`subdomain-enabled`,{type:`boolean`,description:`Whether the *.workers.dev subdomain is enabled for the Worker.`,default:!1}).option(`subdomain-previews-enabled`,{type:`boolean`,description:`Whether [preview URLs](https://developers.cloudflare.com/workers/configuration/previews/) are enabled for the Worker.`}).option(`tags`,{type:`string`,array:!0,description:`Tags associated with the Worker.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Worker creation parameters.`})}const k={command:`create`,describe:`Create a new Worker.`,builder:O,handler:async e=>{if(e.dryRun){s({command:`cf workers beta workers create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers`,pathParams:{},bodyKind:`json`,body:e.body===void 0?f({logpush:e.logpush,name:p(e.name,`name`,`text`),observability:{enabled:e[`observability-enabled`],head_sampling_rate:e[`observability-head-sampling-rate`],logs:{destinations:e[`observability-logs-destinations`],enabled:e[`observability-logs-enabled`],head_sampling_rate:e[`observability-logs-head-sampling-rate`],invocation_logs:e[`observability-logs-invocation-logs`],persist:e[`observability-logs-persist`]},traces:{destinations:e[`observability-traces-destinations`],enabled:e[`observability-traces-enabled`],head_sampling_rate:e[`observability-traces-head-sampling-rate`],persist:e[`observability-traces-persist`],propagation_policy:p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)}},subdomain:{enabled:e[`subdomain-enabled`],previews_enabled:e[`subdomain-previews-enabled`]},tags:e.tags}):u(e.body)});return}let t=await a(e),i=e.local?l:await r();if(e.accountId=i,e.body){let n=u(e.body);o(await c(`Creating`,async()=>t.workers.beta.workers.create({...n,account_id:i})),{successLabel:`Created`});return}if(e.logpush===void 0)throw Error(`--logpush is required (or pass --body with this field set).`);if(e.name===void 0&&(e.name=await g(`name`,`Name of the Worker.`)),e.tags===void 0)throw Error(`--tags is required (or pass --body with this field set).`);let d=f({logpush:e.logpush,name:p(e.name,`name`,`text`),observability:{enabled:e[`observability-enabled`],head_sampling_rate:e[`observability-head-sampling-rate`],logs:{destinations:e[`observability-logs-destinations`],enabled:e[`observability-logs-enabled`],head_sampling_rate:e[`observability-logs-head-sampling-rate`],invocation_logs:e[`observability-logs-invocation-logs`],persist:e[`observability-logs-persist`]},traces:{destinations:e[`observability-traces-destinations`],enabled:e[`observability-traces-enabled`],head_sampling_rate:e[`observability-traces-head-sampling-rate`],persist:e[`observability-traces-persist`],propagation_policy:p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)}},subdomain:{enabled:e[`subdomain-enabled`],previews_enabled:e[`subdomain-previews-enabled`]},tags:e.tags});o(await c(`Creating`,async()=>t.workers.beta.workers.create({...d,account_id:i})),{successLabel:`Created`})}};function A(e){return e.positional(`worker-id`,{type:`string`,description:`Identifier for the Worker, which can be ID or name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const j={command:`delete <worker-id>`,describe:`Delete a Worker and all its associated resources (versions, deployments, etc.).`,builder:A,handler:async e=>{if(e.dryRun){s({command:`cf workers beta workers delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers/${e[`worker-id`]==null?`<worker-id>`:encodeURIComponent(String(e[`worker-id`]))}`,pathParams:{"worker-id":String(e[`worker-id`]??``)},bodyKind:`none`});return}let t=await a(e),i=e.local?l:await r();if(e.accountId=i,!await _({force:!!e.force})){process.stderr.write(`Aborted.
2
+ import{D as e,E as t,O as n,w as r}from"./oauth-DC9g9uK_.mjs";import{i,n as a}from"./auth-B1CY5zpC.mjs";import{t as o}from"./output-B6fBFRqe.mjs";import{n as s,t as c}from"./progress-BLQ2xXwD.mjs";import{t as l}from"./local-C6TLPAT6.mjs";import{n as u,r as d,t as f}from"./body-parser-BO6mfo_W.mjs";import{n as p,t as m}from"./input-validation-BwUR9z8e.mjs";import{n as h,r as g,t as _}from"./prompt-DcfYBioA.mjs";import{t as v}from"./cli-types-CFw6Xygp.mjs";import{n as ee,t as te}from"./raw-fetch-CeW1mW_u.mjs";function y(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`get`,describe:`Fetches Worker account settings for an account.`,builder:y,handler:async e=>{if(e.dryRun){s({command:`cf workers account-settings get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/account-settings`,pathParams:{},bodyKind:`none`});return}let t=await a(e),i=e.local?l:await r();e.accountId=i,o(await c(`Loading`,async()=>t.workers.accountSettings.get({account_id:i})),{successLabel:`Loaded`})}};function x(e){return e.option(`default-usage-model`,{type:`string`,description:`The default_usage_model field`}).option(`green-compute`,{type:`boolean`,description:`The green_compute field`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const S={command:`update`,describe:`Creates Worker account settings for an account.`,builder:x,handler:async e=>{if(e.dryRun){s({command:`cf workers account-settings update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/account-settings`,pathParams:{},bodyKind:`json`,body:e.body===void 0?f({default_usage_model:p(e[`default-usage-model`],`default-usage-model`,`text`),green_compute:e[`green-compute`]}):u(e.body)});return}let t=await a(e),i=e.local?l:await r();if(e.accountId=i,e.body){let n=u(e.body);o(await c(`Updating`,async()=>t.workers.accountSettings.update({body:n,account_id:i})),{successLabel:`Updated`});return}let d=f({default_usage_model:p(e[`default-usage-model`],`default-usage-model`,`text`),green_compute:e[`green-compute`]});o(await c(`Updating`,async()=>t.workers.accountSettings.update({body:d,account_id:i})),{successLabel:`Updated`})}},C={command:`account-settings`,describe:`Operations for account-settings`,builder:e=>e.command(b).command(S).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function w(e){return e.option(`base64`,{type:`string`,description:"Whether the file contents are base64-encoded. Must be `true`.",choices:[`true`],demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).option(`file`,{type:`string`,description:`Path to a file to upload as the request body`})}const T={command:`create`,describe:`Upload assets ahead of creating a Worker version. To learn more about the direct uploads of assets, see https://developers.cloudflare.com/workers/static-assets/direct-upload/.`,builder:v(w),handler:async e=>{let t={base64:e.base64};if(e.dryRun){s({command:`cf workers assets upload create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/assets/upload`,pathParams:{},query:t,bodyKind:`octet-stream`,body:e.body});return}let u=await a(e),d=e.local?l:await r();if(e.accountId=d,e.file){let t=m(e.file),n=new FormData;n.append(`file`,new Blob([t]),e.file.split(/[\\/]/).filter(Boolean).pop()),o(await c(`Creating`,async()=>i(u,`POST`,`/accounts/${d}/workers/assets/upload`,{body:n})),{successLabel:`Created`});return}if(e.body){let n=p(e.body,`body`,`binary`),r=new URLSearchParams(Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString();o(await c(`Creating`,async()=>i(u,`POST`,`/accounts/${d}/workers/assets/upload${r?`?`+r:``}`,{body:n,headers:{"Content-Type":`multipart/form-data`}})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>u.workers.assets.upload.create({account_id:d,...t})),{successLabel:`Created`})}},E={command:`upload`,describe:`Operations for assets.upload`,builder:e=>e.command(T).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},D={command:`assets`,describe:`Operations for assets`,builder:e=>e.command(E).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function O(e){return e.option(`logpush`,{type:`boolean`,description:`Whether logpush is enabled for the Worker.`,default:!1}).option(`name`,{type:`string`,description:`Name of the Worker.`}).option(`observability-enabled`,{type:`boolean`,description:`Whether observability is enabled for the Worker.`,default:!1}).option(`observability-head-sampling-rate`,{type:`number`,description:`The sampling rate for observability. From 0 to 1 (1 = 100%, 0.1 = 10%).`,default:1}).option(`observability-logs-destinations`,{type:`string`,array:!0,description:`A list of destinations where logs will be exported to.`}).option(`observability-logs-enabled`,{type:`boolean`,description:`Whether logs are enabled for the Worker.`,default:!1}).option(`observability-logs-head-sampling-rate`,{type:`number`,description:`The sampling rate for logs. From 0 to 1 (1 = 100%, 0.1 = 10%).`,default:1}).option(`observability-logs-invocation-logs`,{type:`boolean`,description:`Whether [invocation logs](https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs) are enabled for the Worker.`,default:!0}).option(`observability-logs-persist`,{type:`boolean`,description:`Whether log persistence is enabled for the Worker.`,default:!0}).option(`observability-traces-destinations`,{type:`string`,array:!0,description:`A list of destinations where traces will be exported to.`}).option(`observability-traces-enabled`,{type:`boolean`,description:`Whether traces are enabled for the Worker.`,default:!1}).option(`observability-traces-head-sampling-rate`,{type:`number`,description:`The sampling rate for traces. From 0 to 1 (1 = 100%, 0.1 = 10%).`,default:1}).option(`observability-traces-persist`,{type:`boolean`,description:`Whether trace persistence is enabled for the Worker.`,default:!0}).option(`observability-traces-propagation-policy`,{type:`string`,description:`Controls how inbound trace context (traceparent/tracestate) headers on incoming requests are handled. "authenticated" (default) honors inbound trace context only when accompanied by a valid trace auth token. "accept" unconditionally accepts inbound trace context. Requires the trace propagation feature to be enabled.`,choices:[`authenticated`,`accept`],default:`authenticated`}).option(`subdomain-enabled`,{type:`boolean`,description:`Whether the *.workers.dev subdomain is enabled for the Worker.`,default:!1}).option(`subdomain-previews-enabled`,{type:`boolean`,description:`Whether [preview URLs](https://developers.cloudflare.com/workers/configuration/previews/) are enabled for the Worker.`}).option(`tags`,{type:`string`,array:!0,description:`Tags associated with the Worker.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Worker creation parameters.`})}const k={command:`create`,describe:`Create a new Worker.`,builder:O,handler:async e=>{if(e.dryRun){s({command:`cf workers beta workers create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers`,pathParams:{},bodyKind:`json`,body:e.body===void 0?f({logpush:e.logpush,name:p(e.name,`name`,`text`),observability:{enabled:e[`observability-enabled`],head_sampling_rate:e[`observability-head-sampling-rate`],logs:{destinations:e[`observability-logs-destinations`],enabled:e[`observability-logs-enabled`],head_sampling_rate:e[`observability-logs-head-sampling-rate`],invocation_logs:e[`observability-logs-invocation-logs`],persist:e[`observability-logs-persist`]},traces:{destinations:e[`observability-traces-destinations`],enabled:e[`observability-traces-enabled`],head_sampling_rate:e[`observability-traces-head-sampling-rate`],persist:e[`observability-traces-persist`],propagation_policy:p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)}},subdomain:{enabled:e[`subdomain-enabled`],previews_enabled:e[`subdomain-previews-enabled`]},tags:e.tags}):u(e.body)});return}let t=await a(e),i=e.local?l:await r();if(e.accountId=i,e.body){let n=u(e.body);o(await c(`Creating`,async()=>t.workers.beta.workers.create({...n,account_id:i})),{successLabel:`Created`});return}if(e.logpush===void 0)throw Error(`--logpush is required (or pass --body with this field set).`);if(e.name===void 0&&(e.name=await g(`name`,`Name of the Worker.`)),e.tags===void 0)throw Error(`--tags is required (or pass --body with this field set).`);let d=f({logpush:e.logpush,name:p(e.name,`name`,`text`),observability:{enabled:e[`observability-enabled`],head_sampling_rate:e[`observability-head-sampling-rate`],logs:{destinations:e[`observability-logs-destinations`],enabled:e[`observability-logs-enabled`],head_sampling_rate:e[`observability-logs-head-sampling-rate`],invocation_logs:e[`observability-logs-invocation-logs`],persist:e[`observability-logs-persist`]},traces:{destinations:e[`observability-traces-destinations`],enabled:e[`observability-traces-enabled`],head_sampling_rate:e[`observability-traces-head-sampling-rate`],persist:e[`observability-traces-persist`],propagation_policy:p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)}},subdomain:{enabled:e[`subdomain-enabled`],previews_enabled:e[`subdomain-previews-enabled`]},tags:e.tags});o(await c(`Creating`,async()=>t.workers.beta.workers.create({...d,account_id:i})),{successLabel:`Created`})}};function A(e){return e.positional(`worker-id`,{type:`string`,description:`Identifier for the Worker, which can be ID or name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const j={command:`delete <worker-id>`,describe:`Delete a Worker and all its associated resources (versions, deployments, etc.).`,builder:A,handler:async e=>{if(e.dryRun){s({command:`cf workers beta workers delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers/${e[`worker-id`]==null?`<worker-id>`:encodeURIComponent(String(e[`worker-id`]))}`,pathParams:{"worker-id":String(e[`worker-id`]??``)},bodyKind:`none`});return}let t=await a(e),i=e.local?l:await r();if(e.accountId=i,!await _({force:!!e.force})){process.stderr.write(`Aborted.
3
3
  `);return}o(await c(`Deleting`,async()=>t.workers.beta.workers.delete({account_id:i,worker_id:e[`worker-id`]})),{successLabel:`Deleted`})}};function M(e){return e.positional(`worker-id`,{type:`string`,description:`Identifier for the Worker, which can be ID or name.`,demandOption:!0}).option(`logpush`,{type:`boolean`,description:`Whether logpush is enabled for the Worker.`}).option(`name`,{type:`string`,description:`Name of the Worker.`}).option(`observability-enabled`,{type:`boolean`,description:`Whether observability is enabled for the Worker.`}).option(`observability-head-sampling-rate`,{type:`number`,description:`The sampling rate for observability. From 0 to 1 (1 = 100%, 0.1 = 10%).`}).option(`observability-logs-destinations`,{type:`string`,array:!0,description:`A list of destinations where logs will be exported to.`}).option(`observability-logs-enabled`,{type:`boolean`,description:`Whether logs are enabled for the Worker.`}).option(`observability-logs-head-sampling-rate`,{type:`number`,description:`The sampling rate for logs. From 0 to 1 (1 = 100%, 0.1 = 10%).`}).option(`observability-logs-invocation-logs`,{type:`boolean`,description:`Whether [invocation logs](https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs) are enabled for the Worker.`}).option(`observability-logs-persist`,{type:`boolean`,description:`Whether log persistence is enabled for the Worker.`}).option(`observability-traces-destinations`,{type:`string`,array:!0,description:`A list of destinations where traces will be exported to.`}).option(`observability-traces-enabled`,{type:`boolean`,description:`Whether traces are enabled for the Worker.`}).option(`observability-traces-head-sampling-rate`,{type:`number`,description:`The sampling rate for traces. From 0 to 1 (1 = 100%, 0.1 = 10%).`}).option(`observability-traces-persist`,{type:`boolean`,description:`Whether trace persistence is enabled for the Worker.`}).option(`observability-traces-propagation-policy`,{type:`string`,description:`Controls how inbound trace context (traceparent/tracestate) headers on incoming requests are handled. "authenticated" (default) honors inbound trace context only when accompanied by a valid trace auth token. "accept" unconditionally accepts inbound trace context. Requires the trace propagation feature to be enabled.`,choices:[`authenticated`,`accept`]}).option(`subdomain-enabled`,{type:`boolean`,description:`Whether the *.workers.dev subdomain is enabled for the Worker.`}).option(`subdomain-previews-enabled`,{type:`boolean`,description:`Whether [preview URLs](https://developers.cloudflare.com/workers/configuration/previews/) are enabled for the Worker.`}).option(`tags`,{type:`string`,array:!0,description:`Tags associated with the Worker.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Worker partial update parameters.`}).option(`file`,{type:`string`,description:`Path to a file to upload as the request body`})}const N={command:`edit <worker-id>`,describe:`Perform a partial update on a Worker, where omitted properties are left unchanged from their current values.`,builder:M,handler:async e=>{if(e.dryRun){s({command:`cf workers beta workers edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers/${e[`worker-id`]==null?`<worker-id>`:encodeURIComponent(String(e[`worker-id`]))}`,pathParams:{"worker-id":String(e[`worker-id`]??``)},bodyKind:`json`,body:e.body===void 0?f({logpush:e.logpush,name:p(e.name,`name`,`text`),observability:{enabled:e[`observability-enabled`],head_sampling_rate:e[`observability-head-sampling-rate`],logs:{destinations:e[`observability-logs-destinations`],enabled:e[`observability-logs-enabled`],head_sampling_rate:e[`observability-logs-head-sampling-rate`],invocation_logs:e[`observability-logs-invocation-logs`],persist:e[`observability-logs-persist`]},traces:{destinations:e[`observability-traces-destinations`],enabled:e[`observability-traces-enabled`],head_sampling_rate:e[`observability-traces-head-sampling-rate`],persist:e[`observability-traces-persist`],propagation_policy:p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)}},subdomain:{enabled:e[`subdomain-enabled`],previews_enabled:e[`subdomain-previews-enabled`]},tags:e.tags}):u(e.body)});return}let t=await a(e),h=e.local?l:await r();if(e.accountId=h,e.file){let n=m(e.file);o(await c(`Updating`,async()=>i(t,`PATCH`,`/accounts/${h}/workers/workers/${encodeURIComponent(String(e[`worker-id`]))}`,{body:n,headers:{"Content-Type":`application/merge-patch+json`}})),{successLabel:`Updated`});return}if(e.body){let n=u(e.body);o(await c(`Updating`,async()=>i(t,`PATCH`,`/accounts/${h}/workers/workers/${encodeURIComponent(String(e[`worker-id`]))}`,{body:n})),{successLabel:`Updated`});return}if(e.logpush===void 0)throw Error(`--logpush is required (or pass --body with this field set).`);if(e.name===void 0&&(e.name=await g(`name`,`Name of the Worker.`)),e.tags===void 0)throw Error(`--tags is required (or pass --body with this field set).`);let _={};e.logpush!==void 0&&d(_,[`logpush`],e.logpush),e.name!==void 0&&d(_,[`name`],p(e.name,`name`,`text`)),e[`observability-enabled`]!==void 0&&d(_,[`observability`,`enabled`],e[`observability-enabled`]),e[`observability-head-sampling-rate`]!==void 0&&d(_,[`observability`,`head_sampling_rate`],e[`observability-head-sampling-rate`]),e[`observability-logs-destinations`]!==void 0&&d(_,[`observability`,`logs`,`destinations`],e[`observability-logs-destinations`]),e[`observability-logs-enabled`]!==void 0&&d(_,[`observability`,`logs`,`enabled`],e[`observability-logs-enabled`]),e[`observability-logs-head-sampling-rate`]!==void 0&&d(_,[`observability`,`logs`,`head_sampling_rate`],e[`observability-logs-head-sampling-rate`]),e[`observability-logs-invocation-logs`]!==void 0&&d(_,[`observability`,`logs`,`invocation_logs`],e[`observability-logs-invocation-logs`]),e[`observability-logs-persist`]!==void 0&&d(_,[`observability`,`logs`,`persist`],e[`observability-logs-persist`]),e[`observability-traces-destinations`]!==void 0&&d(_,[`observability`,`traces`,`destinations`],e[`observability-traces-destinations`]),e[`observability-traces-enabled`]!==void 0&&d(_,[`observability`,`traces`,`enabled`],e[`observability-traces-enabled`]),e[`observability-traces-head-sampling-rate`]!==void 0&&d(_,[`observability`,`traces`,`head_sampling_rate`],e[`observability-traces-head-sampling-rate`]),e[`observability-traces-persist`]!==void 0&&d(_,[`observability`,`traces`,`persist`],e[`observability-traces-persist`]),e[`observability-traces-propagation-policy`]!==void 0&&d(_,[`observability`,`traces`,`propagation_policy`],p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)),e[`subdomain-enabled`]!==void 0&&d(_,[`subdomain`,`enabled`],e[`subdomain-enabled`]),e[`subdomain-previews-enabled`]!==void 0&&d(_,[`subdomain`,`previews_enabled`],e[`subdomain-previews-enabled`]),e.tags!==void 0&&d(_,[`tags`],e.tags),o(await c(`Updating`,async()=>i(t,`PATCH`,`/accounts/${h}/workers/workers/${encodeURIComponent(String(e[`worker-id`]))}`,{body:Object.keys(_).length>0?_:void 0})),{successLabel:`Updated`})}};function P(e){return e.positional(`worker-id`,{type:`string`,description:`Identifier for the Worker, which can be ID or name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const F={command:`get <worker-id>`,describe:`Get details about a specific Worker.`,builder:P,handler:async e=>{if(e.dryRun){s({command:`cf workers beta workers get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers/${e[`worker-id`]==null?`<worker-id>`:encodeURIComponent(String(e[`worker-id`]))}`,pathParams:{"worker-id":String(e[`worker-id`]??``)},bodyKind:`none`});return}let t=await a(e),i=e.local?l:await r();e.accountId=i,o(await c(`Loading`,async()=>t.workers.beta.workers.get({account_id:i,worker_id:e[`worker-id`]})),{successLabel:`Loaded`})}};function I(e){return e.option(`page`,{type:`number`,description:`Current page.`}).option(`per-page`,{type:`number`,description:`Items per-page.`}).option(`order-by`,{type:`string`,description:`Property to sort results by.`,choices:[`deployed_on`,`updated_on`,`created_on`,`name`]}).option(`order`,{type:`string`,description:`Sort direction.`,choices:[`asc`,`desc`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const L={command:`list`,describe:`List all Workers for an account.`,builder:v(I),handler:async e=>{let t={page:e.page,per_page:e[`per-page`],order_by:e[`order-by`],order:e.order};if(e.dryRun){s({command:`cf workers beta workers list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers`,pathParams:{},query:t,bodyKind:`none`});return}let i=await a(e),u=e.local?l:await r();e.accountId=u,o(await c(`Loading`,async()=>i.workers.beta.workers.list({account_id:u,...t})),{successLabel:`Loaded`})}};function R(e){return e.positional(`worker-id`,{type:`string`,description:`Identifier for the Worker, which can be ID or name.`,demandOption:!0}).option(`logpush`,{type:`boolean`,description:`Whether logpush is enabled for the Worker.`}).option(`name`,{type:`string`,description:`Name of the Worker.`}).option(`observability-enabled`,{type:`boolean`,description:`Whether observability is enabled for the Worker.`}).option(`observability-head-sampling-rate`,{type:`number`,description:`The sampling rate for observability. From 0 to 1 (1 = 100%, 0.1 = 10%).`}).option(`observability-logs-destinations`,{type:`string`,array:!0,description:`A list of destinations where logs will be exported to.`}).option(`observability-logs-enabled`,{type:`boolean`,description:`Whether logs are enabled for the Worker.`}).option(`observability-logs-head-sampling-rate`,{type:`number`,description:`The sampling rate for logs. From 0 to 1 (1 = 100%, 0.1 = 10%).`}).option(`observability-logs-invocation-logs`,{type:`boolean`,description:`Whether [invocation logs](https://developers.cloudflare.com/workers/observability/logs/workers-logs/#invocation-logs) are enabled for the Worker.`}).option(`observability-logs-persist`,{type:`boolean`,description:`Whether log persistence is enabled for the Worker.`}).option(`observability-traces-destinations`,{type:`string`,array:!0,description:`A list of destinations where traces will be exported to.`}).option(`observability-traces-enabled`,{type:`boolean`,description:`Whether traces are enabled for the Worker.`}).option(`observability-traces-head-sampling-rate`,{type:`number`,description:`The sampling rate for traces. From 0 to 1 (1 = 100%, 0.1 = 10%).`}).option(`observability-traces-persist`,{type:`boolean`,description:`Whether trace persistence is enabled for the Worker.`}).option(`observability-traces-propagation-policy`,{type:`string`,description:`Controls how inbound trace context (traceparent/tracestate) headers on incoming requests are handled. "authenticated" (default) honors inbound trace context only when accompanied by a valid trace auth token. "accept" unconditionally accepts inbound trace context. Requires the trace propagation feature to be enabled.`,choices:[`authenticated`,`accept`]}).option(`subdomain-enabled`,{type:`boolean`,description:`Whether the *.workers.dev subdomain is enabled for the Worker.`}).option(`subdomain-previews-enabled`,{type:`boolean`,description:`Whether [preview URLs](https://developers.cloudflare.com/workers/configuration/previews/) are enabled for the Worker.`}).option(`tags`,{type:`string`,array:!0,description:`Tags associated with the Worker.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Worker update parameters.`})}const z={command:`update <worker-id>`,describe:`Perform a complete replacement of a Worker, where omitted properties are set to their default values. This is the exact same as the Create Worker endpoint, but operates on an existing Worker. To perform a partial update instead, use the Edit Worker endpoint.`,builder:R,handler:async e=>{if(e.dryRun){s({command:`cf workers beta workers update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/workers/workers/${e[`worker-id`]==null?`<worker-id>`:encodeURIComponent(String(e[`worker-id`]))}`,pathParams:{"worker-id":String(e[`worker-id`]??``)},bodyKind:`json`,body:e.body===void 0?f({logpush:e.logpush,name:p(e.name,`name`,`text`),observability:{enabled:e[`observability-enabled`],head_sampling_rate:e[`observability-head-sampling-rate`],logs:{destinations:e[`observability-logs-destinations`],enabled:e[`observability-logs-enabled`],head_sampling_rate:e[`observability-logs-head-sampling-rate`],invocation_logs:e[`observability-logs-invocation-logs`],persist:e[`observability-logs-persist`]},traces:{destinations:e[`observability-traces-destinations`],enabled:e[`observability-traces-enabled`],head_sampling_rate:e[`observability-traces-head-sampling-rate`],persist:e[`observability-traces-persist`],propagation_policy:p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)}},subdomain:{enabled:e[`subdomain-enabled`],previews_enabled:e[`subdomain-previews-enabled`]},tags:e.tags}):u(e.body)});return}let t=await a(e),i=e.local?l:await r();if(e.accountId=i,e.body){let n=u(e.body);o(await c(`Updating`,async()=>t.workers.beta.workers.update({...n,account_id:i,worker_id:e[`worker-id`]})),{successLabel:`Updated`});return}if(e.logpush===void 0)throw Error(`--logpush is required (or pass --body with this field set).`);if(e.name===void 0&&(e.name=await g(`name`,`Name of the Worker.`)),e.tags===void 0)throw Error(`--tags is required (or pass --body with this field set).`);let d=f({logpush:e.logpush,name:p(e.name,`name`,`text`),observability:{enabled:e[`observability-enabled`],head_sampling_rate:e[`observability-head-sampling-rate`],logs:{destinations:e[`observability-logs-destinations`],enabled:e[`observability-logs-enabled`],head_sampling_rate:e[`observability-logs-head-sampling-rate`],invocation_logs:e[`observability-logs-invocation-logs`],persist:e[`observability-logs-persist`]},traces:{destinations:e[`observability-traces-destinations`],enabled:e[`observability-traces-enabled`],head_sampling_rate:e[`observability-traces-head-sampling-rate`],persist:e[`observability-traces-persist`],propagation_policy:p(e[`observability-traces-propagation-policy`],`observability-traces-propagation-policy`,`text`)}},subdomain:{enabled:e[`subdomain-enabled`],previews_enabled:e[`subdomain-previews-enabled`]},tags:e.tags});o(await c(`Updating`,async()=>t.workers.beta.workers.update({...d,account_id:i,worker_id:e[`worker-id`]})),{successLabel:`Updated`})}};function B(e){return e.positional(`worker-id`,{type:`string`,description:`Identifier for the Worker, which can be ID or name.`,demandOption:!0}).option(`deploy`,{type:`boolean`,description:`If true, a deployment will be created that sends 100% of traffic to the new version.`}).option(`assets-config-html-handling`,{type:`string`,description:`Determines the redirects and rewrites of requests for HTML content.`,choices:[`auto-trailing-slash`,`force-trailing-slash`,`drop-trailing-slash`,`none`],default:`auto-trailing-slash`}).option(`assets-config-not-found-handling`,{type:`string`,description:`Determines the response when a request does not match a static asset, and there is no Worker script.`,choices:[`none`,`404-page`,`single-page-application`],default:`none`}).option(`assets-jwt`,{type:`string`,description:`Token provided upon successful upload of all files from a registered manifest.`}).option(`cache-options-cross-version-cache`,{type:`boolean`,description:`Whether cached responses are shared across Worker version
4
4
  uploads. This is independent of \`enabled\`. It can stay true
5
5
  while caching is off, so the preference survives turning
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{O as e,w as t}from"./oauth-DBJ5GSFk.mjs";import{n}from"./auth-CZ0E51rF.mjs";import{t as r}from"./output-B6fBFRqe.mjs";import{n as i,t as a}from"./progress-O88q63Bk.mjs";import{t as o}from"./local-C6TLPAT6.mjs";import{n as s,t as c}from"./body-parser-BO6mfo_W.mjs";import{n as l}from"./input-validation-BwUR9z8e.mjs";import{n as u,r as d,t as f}from"./prompt-DTAWiEm2.mjs";import{t as p}from"./cli-types-CFw6Xygp.mjs";function m(e){return e.positional(`build-uuid`,{type:`string`,description:`Build UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const h={command:`cancel <build-uuid>`,describe:`Cancel a running or queued build`,builder:m,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds builds cancel`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/${s[`build-uuid`]==null?`<build-uuid>`:encodeURIComponent(String(s[`build-uuid`]))}/cancel`,pathParams:{"build-uuid":String(s[`build-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();s.accountId=l,r(await a(`Updating`,async()=>c.workersBuilds.builds.cancel({account_id:l,build_uuid:s[`build-uuid`]})),{successLabel:`Updated`})}};function ee(e){return e.positional(`build-uuid`,{type:`string`,description:`Build UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const g={command:`get <build-uuid>`,describe:`Retrieve detailed information about a specific build`,builder:ee,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds builds get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/${s[`build-uuid`]==null?`<build-uuid>`:encodeURIComponent(String(s[`build-uuid`]))}`,pathParams:{"build-uuid":String(s[`build-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();s.accountId=l,r(await a(`Loading`,async()=>c.workersBuilds.builds.get({account_id:l,build_uuid:s[`build-uuid`]})),{successLabel:`Loaded`})}};function _(e){return e.option(`external-script-id`,{type:`string`,description:`System-generated worker script tag.`,demandOption:!0}).option(`page`,{type:`number`,description:`Page number for pagination`}).option(`per-page`,{type:`number`,description:`Number of items per page`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const v={command:`list`,describe:`Get all builds for a specific worker script with pagination`,builder:_,handler:async s=>{let c={page:s.page,per_page:s[`per-page`]};if(s.dryRun){i({command:`cf workers-builds builds list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/workers/${s[`external-script-id`]==null?`<external-script-id>`:encodeURIComponent(String(s[`external-script-id`]))}/builds`,pathParams:{"external-script-id":String(s[`external-script-id`]??``)},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.builds.list({account_id:u,external_script_id:s[`external-script-id`],...c})),{successLabel:`Loaded`})}};function y(e){return e.positional(`build-uuid`,{type:`string`,description:`Build UUID.`,demandOption:!0}).option(`cursor`,{type:`string`,description:`Pagination cursor for log retrieval.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`get <build-uuid>`,describe:`Retrieve logs for a specific build with cursor-based pagination`,builder:y,handler:async s=>{let c={cursor:s.cursor};if(s.dryRun){i({command:`cf workers-builds builds logs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/${s[`build-uuid`]==null?`<build-uuid>`:encodeURIComponent(String(s[`build-uuid`]))}/logs`,pathParams:{"build-uuid":String(s[`build-uuid`]??``)},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.builds.logs.get({account_id:u,build_uuid:s[`build-uuid`],...c})),{successLabel:`Loaded`})}},x={command:`logs`,describe:`Operations for builds.logs`,builder:e=>e.command(b).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},S={command:`builds`,describe:`Operations for builds`,builder:e=>e.command(h).command(g).command(v).command(x).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function C(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const w={command:`get-account-limits`,describe:`Retrieve account limits and usage information`,builder:C,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds get-account-limits`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/account/limits`,pathParams:{},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();s.accountId=l,r(await a(`Loading`,async()=>c.workersBuilds.getAccountLimits({account_id:l})),{successLabel:`Loaded`})}};function T(e){return e.option(`version-ids`,{type:`string`,description:`Comma-separated list of version UUIDs (max 20).`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`get-builds-by-version`,describe:`Retrieve builds for specific version IDs`,builder:T,handler:async s=>{let c={version_ids:s[`version-ids`]};if(s.dryRun){i({command:`cf workers-builds get-builds-by-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds`,pathParams:{},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.getBuildsByVersion({account_id:u,...c})),{successLabel:`Loaded`})}};function D(e){return e.option(`external-script-ids`,{type:`string`,description:`Comma-separated list of system-generated worker script tags (max 20).`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const O={command:`get-latest-builds`,describe:`Retrieve the most recent builds for multiple worker scripts`,builder:D,handler:async s=>{let c={external_script_ids:s[`external-script-ids`]};if(s.dryRun){i({command:`cf workers-builds get-latest-builds`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/latest`,pathParams:{},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.getLatestBuilds({account_id:u,...c})),{successLabel:`Loaded`})}};function k(e){return e.positional(`repo-id`,{type:`string`,description:`Repository identifier.`,demandOption:!0}).option(`provider-type`,{type:`string`,description:`SCM provider type`,demandOption:!0}).option(`provider-account-id`,{type:`string`,description:`Provider account identifier.`,demandOption:!0}).option(`branch`,{type:`string`,description:`Git branch name.`,demandOption:!0}).option(`root-directory`,{type:`string`,description:`Root directory path.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const A={command:`get <repo-id>`,describe:`Analyze repository for automatic configuration detection`,builder:p(k),handler:async s=>{let c={branch:s.branch,root_directory:s[`root-directory`]};if(s.dryRun){i({command:`cf workers-builds repos config-autofill get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/repos/${s[`provider-type`]==null?`<provider-type>`:encodeURIComponent(String(s[`provider-type`]))}/${s[`provider-account-id`]==null?`<provider-account-id>`:encodeURIComponent(String(s[`provider-account-id`]))}/${s[`repo-id`]==null?`<repo-id>`:encodeURIComponent(String(s[`repo-id`]))}/config_autofill`,pathParams:{"provider-type":String(s[`provider-type`]??``),"provider-account-id":String(s[`provider-account-id`]??``),"repo-id":String(s[`repo-id`]??``)},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.repos.configAutofill.get({account_id:u,provider_type:s[`provider-type`],provider_account_id:s[`provider-account-id`],repo_id:s[`repo-id`],...c})),{successLabel:`Loaded`})}},j={command:`config-autofill`,describe:`Operations for repos.config-autofill`,builder:e=>e.command(A).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function M(e){return e.positional(`repo-connection-uuid`,{type:`string`,description:`Repository connection UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const N={command:`delete <repo-connection-uuid>`,describe:`Remove a repository connection`,builder:M,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds repos connections delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/repos/connections/${s[`repo-connection-uuid`]==null?`<repo-connection-uuid>`:encodeURIComponent(String(s[`repo-connection-uuid`]))}`,pathParams:{"repo-connection-uuid":String(s[`repo-connection-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();if(s.accountId=l,!await f({force:!!s.force})){process.stderr.write(`Aborted.
2
+ import{O as e,w as t}from"./oauth-DC9g9uK_.mjs";import{n}from"./auth-B1CY5zpC.mjs";import{t as r}from"./output-B6fBFRqe.mjs";import{n as i,t as a}from"./progress-BLQ2xXwD.mjs";import{t as o}from"./local-C6TLPAT6.mjs";import{n as s,t as c}from"./body-parser-BO6mfo_W.mjs";import{n as l}from"./input-validation-BwUR9z8e.mjs";import{n as u,r as d,t as f}from"./prompt-DcfYBioA.mjs";import{t as p}from"./cli-types-CFw6Xygp.mjs";function m(e){return e.positional(`build-uuid`,{type:`string`,description:`Build UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const h={command:`cancel <build-uuid>`,describe:`Cancel a running or queued build`,builder:m,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds builds cancel`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/${s[`build-uuid`]==null?`<build-uuid>`:encodeURIComponent(String(s[`build-uuid`]))}/cancel`,pathParams:{"build-uuid":String(s[`build-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();s.accountId=l,r(await a(`Updating`,async()=>c.workersBuilds.builds.cancel({account_id:l,build_uuid:s[`build-uuid`]})),{successLabel:`Updated`})}};function ee(e){return e.positional(`build-uuid`,{type:`string`,description:`Build UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const g={command:`get <build-uuid>`,describe:`Retrieve detailed information about a specific build`,builder:ee,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds builds get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/${s[`build-uuid`]==null?`<build-uuid>`:encodeURIComponent(String(s[`build-uuid`]))}`,pathParams:{"build-uuid":String(s[`build-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();s.accountId=l,r(await a(`Loading`,async()=>c.workersBuilds.builds.get({account_id:l,build_uuid:s[`build-uuid`]})),{successLabel:`Loaded`})}};function _(e){return e.option(`external-script-id`,{type:`string`,description:`System-generated worker script tag.`,demandOption:!0}).option(`page`,{type:`number`,description:`Page number for pagination`}).option(`per-page`,{type:`number`,description:`Number of items per page`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const v={command:`list`,describe:`Get all builds for a specific worker script with pagination`,builder:_,handler:async s=>{let c={page:s.page,per_page:s[`per-page`]};if(s.dryRun){i({command:`cf workers-builds builds list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/workers/${s[`external-script-id`]==null?`<external-script-id>`:encodeURIComponent(String(s[`external-script-id`]))}/builds`,pathParams:{"external-script-id":String(s[`external-script-id`]??``)},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.builds.list({account_id:u,external_script_id:s[`external-script-id`],...c})),{successLabel:`Loaded`})}};function y(e){return e.positional(`build-uuid`,{type:`string`,description:`Build UUID.`,demandOption:!0}).option(`cursor`,{type:`string`,description:`Pagination cursor for log retrieval.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`get <build-uuid>`,describe:`Retrieve logs for a specific build with cursor-based pagination`,builder:y,handler:async s=>{let c={cursor:s.cursor};if(s.dryRun){i({command:`cf workers-builds builds logs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/${s[`build-uuid`]==null?`<build-uuid>`:encodeURIComponent(String(s[`build-uuid`]))}/logs`,pathParams:{"build-uuid":String(s[`build-uuid`]??``)},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.builds.logs.get({account_id:u,build_uuid:s[`build-uuid`],...c})),{successLabel:`Loaded`})}},x={command:`logs`,describe:`Operations for builds.logs`,builder:e=>e.command(b).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},S={command:`builds`,describe:`Operations for builds`,builder:e=>e.command(h).command(g).command(v).command(x).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function C(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const w={command:`get-account-limits`,describe:`Retrieve account limits and usage information`,builder:C,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds get-account-limits`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/account/limits`,pathParams:{},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();s.accountId=l,r(await a(`Loading`,async()=>c.workersBuilds.getAccountLimits({account_id:l})),{successLabel:`Loaded`})}};function T(e){return e.option(`version-ids`,{type:`string`,description:`Comma-separated list of version UUIDs (max 20).`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`get-builds-by-version`,describe:`Retrieve builds for specific version IDs`,builder:T,handler:async s=>{let c={version_ids:s[`version-ids`]};if(s.dryRun){i({command:`cf workers-builds get-builds-by-version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds`,pathParams:{},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.getBuildsByVersion({account_id:u,...c})),{successLabel:`Loaded`})}};function D(e){return e.option(`external-script-ids`,{type:`string`,description:`Comma-separated list of system-generated worker script tags (max 20).`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const O={command:`get-latest-builds`,describe:`Retrieve the most recent builds for multiple worker scripts`,builder:D,handler:async s=>{let c={external_script_ids:s[`external-script-ids`]};if(s.dryRun){i({command:`cf workers-builds get-latest-builds`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/builds/latest`,pathParams:{},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.getLatestBuilds({account_id:u,...c})),{successLabel:`Loaded`})}};function k(e){return e.positional(`repo-id`,{type:`string`,description:`Repository identifier.`,demandOption:!0}).option(`provider-type`,{type:`string`,description:`SCM provider type`,demandOption:!0}).option(`provider-account-id`,{type:`string`,description:`Provider account identifier.`,demandOption:!0}).option(`branch`,{type:`string`,description:`Git branch name.`,demandOption:!0}).option(`root-directory`,{type:`string`,description:`Root directory path.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const A={command:`get <repo-id>`,describe:`Analyze repository for automatic configuration detection`,builder:p(k),handler:async s=>{let c={branch:s.branch,root_directory:s[`root-directory`]};if(s.dryRun){i({command:`cf workers-builds repos config-autofill get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/repos/${s[`provider-type`]==null?`<provider-type>`:encodeURIComponent(String(s[`provider-type`]))}/${s[`provider-account-id`]==null?`<provider-account-id>`:encodeURIComponent(String(s[`provider-account-id`]))}/${s[`repo-id`]==null?`<repo-id>`:encodeURIComponent(String(s[`repo-id`]))}/config_autofill`,pathParams:{"provider-type":String(s[`provider-type`]??``),"provider-account-id":String(s[`provider-account-id`]??``),"repo-id":String(s[`repo-id`]??``)},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.repos.configAutofill.get({account_id:u,provider_type:s[`provider-type`],provider_account_id:s[`provider-account-id`],repo_id:s[`repo-id`],...c})),{successLabel:`Loaded`})}},j={command:`config-autofill`,describe:`Operations for repos.config-autofill`,builder:e=>e.command(A).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function M(e){return e.positional(`repo-connection-uuid`,{type:`string`,description:`Repository connection UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const N={command:`delete <repo-connection-uuid>`,describe:`Remove a repository connection`,builder:M,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds repos connections delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/repos/connections/${s[`repo-connection-uuid`]==null?`<repo-connection-uuid>`:encodeURIComponent(String(s[`repo-connection-uuid`]))}`,pathParams:{"repo-connection-uuid":String(s[`repo-connection-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();if(s.accountId=l,!await f({force:!!s.force})){process.stderr.write(`Aborted.
3
3
  `);return}r(await a(`Deleting`,async()=>c.workersBuilds.repos.connections.delete({account_id:l,repo_connection_uuid:s[`repo-connection-uuid`]})),{successLabel:`Deleted`})}};function P(e){return e.option(`provider-account-id`,{type:`string`,description:`Provider account identifier.`}).option(`provider-account-name`,{type:`string`,description:`The provider_account_name field`}).option(`provider-type`,{type:`string`,description:`The provider_type field`,choices:[`github`,`gitlab`,`gitlab_internal`]}).option(`repo-id`,{type:`string`,description:`Repository identifier.`}).option(`repo-name`,{type:`string`,description:`The repo_name field`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const F={command:`upsert`,describe:`Upsert a repository connection for CI/CD integration`,builder:P,handler:async f=>{if(f.dryRun){i({command:`cf workers-builds repos connections upsert`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/repos/connections`,pathParams:{},bodyKind:`json`,body:f.body===void 0?c({provider_account_id:l(f[`provider-account-id`],`provider-account-id`,`text`),provider_account_name:l(f[`provider-account-name`],`provider-account-name`,`text`),provider_type:l(f[`provider-type`],`provider-type`,`text`),repo_id:l(f[`repo-id`],`repo-id`,`text`),repo_name:l(f[`repo-name`],`repo-name`,`text`)}):s(f.body)});return}let p=await n(f),m=f.local?o:await t();if(f.accountId=m,f.body){let e=s(f.body);r(await a(`Updating`,async()=>p.workersBuilds.repos.connections.upsert({...e,account_id:m})),{successLabel:`Updated`});return}f[`provider-account-id`]===void 0&&(f[`provider-account-id`]=await d(`provider-account-id`,`Provider account identifier.`)),f[`provider-account-name`]===void 0&&(f[`provider-account-name`]=await d(`provider-account-name`,`The provider_account_name field`)),f[`provider-type`]===void 0&&(f[`provider-type`]=await u(`provider-type`,`The provider_type field`,[`github`,`gitlab`,`gitlab_internal`])),f[`repo-id`]===void 0&&(f[`repo-id`]=await d(`repo-id`,`Repository identifier.`)),f[`repo-name`]===void 0&&(f[`repo-name`]=await d(`repo-name`,`The repo_name field`));let h=c({provider_account_id:l(f[`provider-account-id`],`provider-account-id`,`text`),provider_account_name:l(f[`provider-account-name`],`provider-account-name`,`text`),provider_type:l(f[`provider-type`],`provider-type`,`text`),repo_id:l(f[`repo-id`],`repo-id`,`text`),repo_name:l(f[`repo-name`],`repo-name`,`text`)});r(await a(`Updating`,async()=>p.workersBuilds.repos.connections.upsert({...h,account_id:m})),{successLabel:`Updated`})}},I={command:`connections`,describe:`Operations for repos.connections`,builder:e=>e.command(N).command(F).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},L={command:`repos`,describe:`Operations for repos`,builder:e=>e.command(j).command(I).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function R(e){return e.option(`build-token-name`,{type:`string`,description:`The build_token_name field`}).option(`build-token-secret`,{type:`string`,description:`The build_token_secret field`}).option(`cloudflare-token-id`,{type:`string`,description:`The cloudflare_token_id field`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const z={command:`create`,describe:`Create a new build authentication token`,builder:R,handler:async u=>{if(u.dryRun){i({command:`cf workers-builds tokens create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/tokens`,pathParams:{},bodyKind:`json`,body:u.body===void 0?c({build_token_name:l(u[`build-token-name`],`build-token-name`,`text`),build_token_secret:l(u[`build-token-secret`],`build-token-secret`,`text`),cloudflare_token_id:l(u[`cloudflare-token-id`],`cloudflare-token-id`,`text`)}):s(u.body)});return}let f=await n(u),p=u.local?o:await t();if(u.accountId=p,u.body){let e=s(u.body);r(await a(`Creating`,async()=>f.workersBuilds.tokens.create({...e,account_id:p})),{successLabel:`Created`});return}u[`build-token-name`]===void 0&&(u[`build-token-name`]=await d(`build-token-name`,`The build_token_name field`)),u[`build-token-secret`]===void 0&&(u[`build-token-secret`]=await d(`build-token-secret`,`The build_token_secret field`)),u[`cloudflare-token-id`]===void 0&&(u[`cloudflare-token-id`]=await d(`cloudflare-token-id`,`The cloudflare_token_id field`));let m=c({build_token_name:l(u[`build-token-name`],`build-token-name`,`text`),build_token_secret:l(u[`build-token-secret`],`build-token-secret`,`text`),cloudflare_token_id:l(u[`cloudflare-token-id`],`cloudflare-token-id`,`text`)});r(await a(`Creating`,async()=>f.workersBuilds.tokens.create({...m,account_id:p})),{successLabel:`Created`})}};function te(e){return e.positional(`build-token-uuid`,{type:`string`,description:`Build token UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const B={command:`delete <build-token-uuid>`,describe:`Remove a build authentication token`,builder:te,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds tokens delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/tokens/${s[`build-token-uuid`]==null?`<build-token-uuid>`:encodeURIComponent(String(s[`build-token-uuid`]))}`,pathParams:{"build-token-uuid":String(s[`build-token-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();if(s.accountId=l,!await f({force:!!s.force})){process.stderr.write(`Aborted.
4
4
  `);return}r(await a(`Deleting`,async()=>c.workersBuilds.tokens.delete({account_id:l,build_token_uuid:s[`build-token-uuid`]})),{successLabel:`Deleted`})}};function V(e){return e.option(`page`,{type:`number`,description:`Page number for pagination`}).option(`per-page`,{type:`number`,description:`Number of items per page`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const H={command:`list`,describe:`Get all build tokens with pagination`,builder:V,handler:async s=>{let c={page:s.page,per_page:s[`per-page`]};if(s.dryRun){i({command:`cf workers-builds tokens list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/tokens`,pathParams:{},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t();s.accountId=u,r(await a(`Loading`,async()=>l.workersBuilds.tokens.list({account_id:u,...c})),{successLabel:`Loaded`})}},U={command:`tokens`,describe:`Operations for tokens`,builder:e=>e.command(z).command(B).command(H).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function W(e){return e.positional(`trigger-uuid`,{type:`string`,description:`Trigger UUID.`,demandOption:!0}).option(`seed-repo-branch`,{type:`string`,description:`Git branch name.`}).option(`seed-repo-owner`,{type:`string`,description:`The seed_repo.owner field`}).option(`seed-repo-path`,{type:`string`,description:`The seed_repo.path field`}).option(`seed-repo-provider`,{type:`string`,description:`The seed_repo.provider field`,choices:[`github`,`gitlab`,`gitlab_internal`]}).option(`seed-repo-repository`,{type:`string`,description:`The seed_repo.repository field`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`seed-repo-branch`,`seed-repo-owner`,`seed-repo-path`,`seed-repo-provider`,`seed-repo-repository`].some(t=>e[t]!==void 0)){let t=[`seed-repo-branch`,`seed-repo-owner`,`seed-repo-path`,`seed-repo-provider`,`seed-repo-repository`].filter(t=>e[t]===void 0);if(t.length>0)throw Error(`${t.map(e=>`--`+e).join(`, `)} ${t.length===1?`is`:`are`} required when any --seed_repo-* flag is set`)}return!0})}const G={command:`create-build <trigger-uuid>`,describe:`Trigger a manual build for a specific trigger`,builder:W,handler:async u=>{if(u.dryRun){i({command:`cf workers-builds triggers create-build`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/triggers/${u[`trigger-uuid`]==null?`<trigger-uuid>`:encodeURIComponent(String(u[`trigger-uuid`]))}/builds`,pathParams:{"trigger-uuid":String(u[`trigger-uuid`]??``)},bodyKind:`json`,body:u.body===void 0?c({seed_repo:{branch:l(u[`seed-repo-branch`],`seed-repo-branch`,`text`),owner:l(u[`seed-repo-owner`],`seed-repo-owner`,`text`),path:l(u[`seed-repo-path`],`seed-repo-path`,`text`),provider:l(u[`seed-repo-provider`],`seed-repo-provider`,`text`),repository:l(u[`seed-repo-repository`],`seed-repo-repository`,`text`)}}):s(u.body)});return}let d=await n(u),f=u.local?o:await t();if(u.accountId=f,u.body){let e=s(u.body);r(await a(`Creating`,async()=>d.workersBuilds.triggers.createBuild({...e,account_id:f,trigger_uuid:u[`trigger-uuid`]})),{successLabel:`Created`});return}let p=c({seed_repo:{branch:l(u[`seed-repo-branch`],`seed-repo-branch`,`text`),owner:l(u[`seed-repo-owner`],`seed-repo-owner`,`text`),path:l(u[`seed-repo-path`],`seed-repo-path`,`text`),provider:l(u[`seed-repo-provider`],`seed-repo-provider`,`text`),repository:l(u[`seed-repo-repository`],`seed-repo-repository`,`text`)}});r(await a(`Creating`,async()=>d.workersBuilds.triggers.createBuild({...p,account_id:f,trigger_uuid:u[`trigger-uuid`]})),{successLabel:`Created`})}};function K(e){return e.option(`branch-excludes`,{type:`string`,array:!0,description:`The branch_excludes field`}).option(`branch-includes`,{type:`string`,array:!0,description:`The branch_includes field`}).option(`build-caching-enabled`,{type:`boolean`,description:`The build_caching_enabled field`,default:!1}).option(`build-command`,{type:`string`,description:`The build_command field`}).option(`build-token-uuid`,{type:`string`,description:`Build token UUID.`}).option(`deploy-command`,{type:`string`,description:`The deploy_command field`}).option(`external-script-id`,{type:`string`,description:`System-generated worker script tag.`}).option(`path-excludes`,{type:`string`,array:!0,description:`The path_excludes field`}).option(`path-includes`,{type:`string`,array:!0,description:`The path_includes field`}).option(`repo-connection-uuid`,{type:`string`,description:`Repository connection UUID.`}).option(`root-directory`,{type:`string`,description:`Root directory path.`}).option(`trigger-name`,{type:`string`,description:`The trigger_name field`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const q={command:`create`,describe:`Create a new CI/CD trigger`,builder:K,handler:async u=>{if(u.dryRun){i({command:`cf workers-builds triggers create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/triggers`,pathParams:{},bodyKind:`json`,body:u.body===void 0?c({branch_excludes:u[`branch-excludes`],branch_includes:u[`branch-includes`],build_caching_enabled:u[`build-caching-enabled`],build_command:l(u[`build-command`],`build-command`,`text`),build_token_uuid:l(u[`build-token-uuid`],`build-token-uuid`,`text`),deploy_command:l(u[`deploy-command`],`deploy-command`,`text`),external_script_id:l(u[`external-script-id`],`external-script-id`,`text`),path_excludes:u[`path-excludes`],path_includes:u[`path-includes`],repo_connection_uuid:l(u[`repo-connection-uuid`],`repo-connection-uuid`,`text`),root_directory:l(u[`root-directory`],`root-directory`,`text`),trigger_name:l(u[`trigger-name`],`trigger-name`,`text`)}):s(u.body)});return}let f=await n(u),p=u.local?o:await t();if(u.accountId=p,u.body){let e=s(u.body);r(await a(`Creating`,async()=>f.workersBuilds.triggers.create({...e,account_id:p})),{successLabel:`Created`});return}if(u[`branch-excludes`]===void 0)throw Error(`--branch-excludes is required (or pass --body with this field set).`);if(u[`branch-includes`]===void 0)throw Error(`--branch-includes is required (or pass --body with this field set).`);if(u[`build-command`]===void 0&&(u[`build-command`]=await d(`build-command`,`The build_command field`)),u[`build-token-uuid`]===void 0&&(u[`build-token-uuid`]=await d(`build-token-uuid`,`Build token UUID.`)),u[`deploy-command`]===void 0&&(u[`deploy-command`]=await d(`deploy-command`,`The deploy_command field`)),u[`external-script-id`]===void 0&&(u[`external-script-id`]=await d(`external-script-id`,`System-generated worker script tag.`)),u[`path-excludes`]===void 0)throw Error(`--path-excludes is required (or pass --body with this field set).`);if(u[`path-includes`]===void 0)throw Error(`--path-includes is required (or pass --body with this field set).`);u[`repo-connection-uuid`]===void 0&&(u[`repo-connection-uuid`]=await d(`repo-connection-uuid`,`Repository connection UUID.`)),u[`root-directory`]===void 0&&(u[`root-directory`]=await d(`root-directory`,`Root directory path.`)),u[`trigger-name`]===void 0&&(u[`trigger-name`]=await d(`trigger-name`,`The trigger_name field`));let m=c({branch_excludes:u[`branch-excludes`],branch_includes:u[`branch-includes`],build_caching_enabled:u[`build-caching-enabled`],build_command:l(u[`build-command`],`build-command`,`text`),build_token_uuid:l(u[`build-token-uuid`],`build-token-uuid`,`text`),deploy_command:l(u[`deploy-command`],`deploy-command`,`text`),external_script_id:l(u[`external-script-id`],`external-script-id`,`text`),path_excludes:u[`path-excludes`],path_includes:u[`path-includes`],repo_connection_uuid:l(u[`repo-connection-uuid`],`repo-connection-uuid`,`text`),root_directory:l(u[`root-directory`],`root-directory`,`text`),trigger_name:l(u[`trigger-name`],`trigger-name`,`text`)});r(await a(`Creating`,async()=>f.workersBuilds.triggers.create({...m,account_id:p})),{successLabel:`Created`})}};function J(e){return e.positional(`trigger-uuid`,{type:`string`,description:`Trigger UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const Y={command:`delete <trigger-uuid>`,describe:`Remove a CI/CD trigger`,builder:J,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds triggers delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/triggers/${s[`trigger-uuid`]==null?`<trigger-uuid>`:encodeURIComponent(String(s[`trigger-uuid`]))}`,pathParams:{"trigger-uuid":String(s[`trigger-uuid`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();if(s.accountId=l,!await f({force:!!s.force})){process.stderr.write(`Aborted.
5
5
  `);return}r(await a(`Deleting`,async()=>c.workersBuilds.triggers.delete({account_id:l,trigger_uuid:s[`trigger-uuid`]})),{successLabel:`Deleted`})}};function X(e){return e.positional(`environment-variable-key`,{type:`string`,description:`Environment variable key.`,demandOption:!0}).option(`trigger-uuid`,{type:`string`,description:`Trigger UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const Z={command:`delete <environment-variable-key>`,describe:`Remove a specific environment variable from a trigger`,builder:X,handler:async s=>{if(s.dryRun){i({command:`cf workers-builds triggers environment-variables delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/builds/triggers/${s[`trigger-uuid`]==null?`<trigger-uuid>`:encodeURIComponent(String(s[`trigger-uuid`]))}/environment_variables/${s[`environment-variable-key`]==null?`<environment-variable-key>`:encodeURIComponent(String(s[`environment-variable-key`]))}`,pathParams:{"trigger-uuid":String(s[`trigger-uuid`]??``),"environment-variable-key":String(s[`environment-variable-key`]??``)},bodyKind:`none`});return}let c=await n(s),l=s.local?o:await t();if(s.accountId=l,!await f({force:!!s.force})){process.stderr.write(`Aborted.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{O as e,w as t}from"./oauth-DBJ5GSFk.mjs";import{i as n,n as r}from"./auth-CZ0E51rF.mjs";import{t as i}from"./output-B6fBFRqe.mjs";import{n as a,t as o}from"./progress-O88q63Bk.mjs";import{t as s}from"./local-C6TLPAT6.mjs";import{n as c,t as l}from"./body-parser-BO6mfo_W.mjs";import{n as u}from"./input-validation-BwUR9z8e.mjs";import{n as d,r as f,t as p}from"./prompt-DTAWiEm2.mjs";import{t as m}from"./cli-types-CFw6Xygp.mjs";import{n as h,t as ee}from"./raw-fetch-DgezeshQ.mjs";function g(e){return e.positional(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const _={command:`delete <workflow-name>`,describe:`Deletes a Workflow. This only deletes the Workflow and does not delete or modify any Worker associated to this Workflow or bounded to it.`,builder:g,handler:async n=>{if(n.dryRun){a({command:`cf workflows delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}`,pathParams:{"workflow-name":String(n[`workflow-name`]??``)},bodyKind:`none`});return}let c=await r(n),l=n.local?s:await t();if(n.accountId=l,!await p({force:!!n.force,message:`This operation permanently deletes the Workflow.`})){process.stderr.write(`Aborted.
2
+ import{O as e,w as t}from"./oauth-DC9g9uK_.mjs";import{i as n,n as r}from"./auth-B1CY5zpC.mjs";import{t as i}from"./output-B6fBFRqe.mjs";import{n as a,t as o}from"./progress-BLQ2xXwD.mjs";import{t as s}from"./local-C6TLPAT6.mjs";import{n as c,t as l}from"./body-parser-BO6mfo_W.mjs";import{n as u}from"./input-validation-BwUR9z8e.mjs";import{n as d,r as f,t as p}from"./prompt-DcfYBioA.mjs";import{t as m}from"./cli-types-CFw6Xygp.mjs";import{n as h,t as ee}from"./raw-fetch-CeW1mW_u.mjs";function g(e){return e.positional(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const _={command:`delete <workflow-name>`,describe:`Deletes a Workflow. This only deletes the Workflow and does not delete or modify any Worker associated to this Workflow or bounded to it.`,builder:g,handler:async n=>{if(n.dryRun){a({command:`cf workflows delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}`,pathParams:{"workflow-name":String(n[`workflow-name`]??``)},bodyKind:`none`});return}let c=await r(n),l=n.local?s:await t();if(n.accountId=l,!await p({force:!!n.force,message:`This operation permanently deletes the Workflow.`})){process.stderr.write(`Aborted.
3
3
  `);return}i(await o(`Deleting`,async()=>c.workflows.delete({account_id:l,workflow_name:n[`workflow-name`]})),{successLabel:`Deleted`})}};function v(e){return e.positional(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const y={command:`get <workflow-name>`,describe:`Retrieves configuration and metadata for a specific workflow.`,builder:v,handler:async n=>{if(n.dryRun){a({command:`cf workflows get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}`,pathParams:{"workflow-name":String(n[`workflow-name`]??``)},bodyKind:`none`});return}let c=await r(n),l=n.local?s:await t();n.accountId=l,i(await o(`Loading`,async()=>c.workflows.get({account_id:l,workflow_name:n[`workflow-name`]})),{successLabel:`Loaded`})}};function b(e){return e.positional(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const x={command:`batch-terminate <workflow-name>`,describe:`Terminates multiple workflow instances in a single batch operation.`,builder:b,handler:async l=>{if(l.dryRun){a({command:`cf workflows instances batch-terminate`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${l[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(l[`workflow-name`]))}/instances/batch/terminate`,pathParams:{"workflow-name":String(l[`workflow-name`]??``)},bodyKind:`json`,body:l.body===void 0?void 0:c(l.body)});return}let u=await r(l),d=l.local?s:await t();if(l.accountId=d,!await p({force:!!l.force,message:`This operation terminates running instances in bulk.`})){process.stderr.write(`Aborted.
4
4
  `);return}if(l.body){let e=c(l.body);if(Array.isArray(e)&&e.length>100){let t=Math.ceil(e.length/100),r=null;for(let i=0;i<e.length;i+=100){let a=e.slice(i,i+100);r=await o(`Deleting: batch ${Math.floor(i/100)+1}/${t}`,async()=>n(u,`POST`,`/accounts/${d}/workflows/${encodeURIComponent(String(l[`workflow-name`]))}/instances/batch/terminate`,{body:a}))}i(r,{successLabel:`Deleted`});return}i(await o(`Deleting`,async()=>n(u,`POST`,`/accounts/${d}/workflows/${encodeURIComponent(String(l[`workflow-name`]))}/instances/batch/terminate`,{body:e})),{successLabel:`Deleted`});return}if(l.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function S(e){return e.option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const C={command:`bulk`,describe:`Creates multiple workflow instances in a single batch operation.`,builder:S,handler:async l=>{if(l.dryRun){a({command:`cf workflows instances bulk`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${l[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(l[`workflow-name`]))}/instances/batch`,pathParams:{"workflow-name":String(l[`workflow-name`]??``)},bodyKind:`json`,body:l.body===void 0?void 0:c(l.body)});return}let u=await r(l),d=l.local?s:await t();if(l.accountId=d,l.body){let e=c(l.body);if(Array.isArray(e)&&e.length>100){let t=Math.ceil(e.length/100),r=null;for(let i=0;i<e.length;i+=100){let a=e.slice(i,i+100);r=await o(`Creating: batch ${Math.floor(i/100)+1}/${t}`,async()=>n(u,`POST`,`/accounts/${d}/workflows/${encodeURIComponent(String(l[`workflow-name`]))}/instances/batch`,{body:a}))}i(r,{successLabel:`Created`});return}i(await o(`Creating`,async()=>n(u,`POST`,`/accounts/${d}/workflows/${encodeURIComponent(String(l[`workflow-name`]))}/instances/batch`,{body:e})),{successLabel:`Created`});return}if(l.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function w(e){return e.positional(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`instance-id`,{type:`string`,description:"An id of exactly `cf_` followed by 64 lowercase hex characters is reserved for system-generated instances."}).option(`location-hint`,{type:`string`,description:`The location_hint field`,choices:[`wnam`,`weur`,`enam`,`eeur`,`apac`,`oc`,`sam`,`afr`,`me`]}).option(`params`,{type:`string`,description:`JSON-encoded event payload passed into the new instance.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const T={command:`create <workflow-name>`,describe:`Creates a new instance of a workflow, starting its execution.`,builder:w,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances`,pathParams:{"workflow-name":String(n[`workflow-name`]??``)},bodyKind:`json`,body:n.body===void 0?l({instance_id:u(n[`instance-id`],`instance-id`,`text`),location_hint:u(n[`location-hint`],`location-hint`,`text`),params:u(n.params,`params`,`json`)}):c(n.body)});return}let d=await r(n),f=n.local?s:await t();if(n.accountId=f,n.body){let e=c(n.body);i(await o(`Creating`,async()=>d.workflows.instances.create({...e,account_id:f,workflow_name:n[`workflow-name`]})),{successLabel:`Created`});return}let p=l({instance_id:u(n[`instance-id`],`instance-id`,`text`),location_hint:u(n[`location-hint`],`location-hint`,`text`),params:u(n.params,`params`,`json`)});i(await o(`Creating`,async()=>d.workflows.instances.create({...p,account_id:f,workflow_name:n[`workflow-name`]})),{successLabel:`Created`})}};function E(e){return e.positional(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const D={command:`delete <instance-id>`,describe:`Deletes a workflow instance and its stored state.`,builder:E,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``)},bodyKind:`none`});return}let c=await r(n),l=n.local?s:await t();if(n.accountId=l,!await p({force:!!n.force})){process.stderr.write(`Aborted.
5
5
  `);return}i(await o(`Deleting`,async()=>c.workflows.instances.delete({account_id:l,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`]})),{successLabel:`Deleted`})}};function O(e){return e.positional(`event-type`,{type:`string`,description:`Event type`,demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const k={command:`create <event-type>`,describe:`Sends an event to a running workflow instance to trigger state transitions.`,builder:O,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances events create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}/events/${n[`event-type`]==null?`<event-type>`:encodeURIComponent(String(n[`event-type`]))}`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``),"event-type":String(n[`event-type`]??``)},bodyKind:`none`});return}let c=await r(n),l=n.local?s:await t();n.accountId=l,i(await o(`Creating`,async()=>c.workflows.instances.events.create({account_id:l,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`],event_type:n[`event-type`]})),{successLabel:`Created`})}},A={command:`events`,describe:`Workflow instance operations`,builder:e=>e.command(k).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function j(e){return e.positional(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`simple`,{type:`string`,description:`When true, omits step details and returns only metadata with step_count.`,choices:[`true`,`false`]}).option(`order`,{type:`string`,description:`Step ordering: "asc" (default, oldest first) or "desc" (newest first).`,choices:[`asc`,`desc`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const M={command:`get <instance-id>`,describe:`Retrieves logs and execution status for a specific workflow instance.`,builder:m(j),handler:async n=>{let c={simple:n.simple,order:n.order};if(n.dryRun){a({command:`cf workflows instances get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``)},query:c,bodyKind:`none`});return}let l=await r(n),u=n.local?s:await t();n.accountId=u,i(await o(`Loading`,async()=>l.workflows.instances.get({account_id:u,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`],...c})),{successLabel:`Loaded`})}};function N(e){return e.option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`page`,{type:`number`,description:"Deprecated: use `cursor` for pagination instead."}).option(`per-page`,{type:`number`,description:`Per page`}).option(`cursor`,{type:`string`,description:"Opaque token for cursor-based pagination. Mutually exclusive with `page`."}).option(`direction`,{type:`string`,description:`Defines the direction for cursor-based pagination.`,choices:[`asc`,`desc`]}).option(`status`,{type:`string`,description:`Status`,choices:[`queued`,`running`,`paused`,`errored`,`terminated`,`complete`,`waitingForPause`,`waiting`,`rollingBack`]}).option(`date-start`,{type:`string`,description:`Accepts ISO 8601 with no timezone offsets and in UTC.`}).option(`date-end`,{type:`string`,description:`Accepts ISO 8601 with no timezone offsets and in UTC.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const P={command:`list`,describe:`Lists all instances of a workflow with their execution status.`,builder:m(N),handler:async n=>{let c={page:n.page,per_page:n[`per-page`],cursor:n.cursor,direction:n.direction,status:n.status,date_start:n[`date-start`],date_end:n[`date-end`]};if(n.dryRun){a({command:`cf workflows instances list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances`,pathParams:{"workflow-name":String(n[`workflow-name`]??``)},query:c,bodyKind:`none`});return}let l=await r(n),u=n.local?s:await t();n.accountId=u,i(await o(`Loading`,async()=>l.workflows.instances.list({account_id:u,workflow_name:n[`workflow-name`],...c})),{successLabel:`Loaded`})}};function F(e){return e.positional(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`status`,{type:`string`,description:`The status field`,choices:[`pause`,`resume`,`terminate`,`restart`]}).option(`rollback`,{type:`boolean`,description:`Run rollback before terminating.`}).option(`from-count`,{type:`number`,description:`The from.count field`}).option(`from-name`,{type:`string`,description:`The from.name field`}).option(`from-type`,{type:`string`,description:`The from.type field`,choices:[`do`,`sleep`,`waitForEvent`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).conflicts(`rollback`,[`from-count`,`from-name`,`from-type`]).conflicts(`from-count`,[`rollback`]).conflicts(`from-name`,[`rollback`]).conflicts(`from-type`,[`rollback`]).check(e=>{if([`from-count`,`from-name`,`from-type`].some(t=>e[t]!==void 0)){let t={"from-name":[`rollback`]},n=[`from-name`].filter(n=>e[n]===void 0&&!(t[n]??[]).some(t=>e[t]!==void 0));if(n.length>0)throw Error(`${n.map(e=>`--`+e).join(`, `)} ${n.length===1?`is`:`are`} required when any --from-* flag is set`)}return!0})}const I={command:`pause <instance-id>`,describe:`Changes the execution status of a workflow instance (e.g., pause, resume, terminate).`,builder:F,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances pause`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}/status`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``)},bodyKind:`json`,body:n.body===void 0?l({status:u(n.status,`status`,`text`),rollback:n.rollback,from:{count:n[`from-count`],name:u(n[`from-name`],`from-name`,`text`),type:u(n[`from-type`],`from-type`,`text`)}}):c(n.body)});return}let f=await r(n),p=n.local?s:await t();if(n.accountId=p,n.body){let e=c(n.body);i(await o(`Updating`,async()=>f.workflows.instances.status.edit({body:e,account_id:p,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`]})),{successLabel:`Updated`});return}n.status===void 0&&(n.status=await d(`status`,`The status field`,[`pause`,`resume`,`terminate`,`restart`]));let m=l({status:u(n.status,`status`,`text`),rollback:n.rollback,from:{count:n[`from-count`],name:u(n[`from-name`],`from-name`,`text`),type:u(n[`from-type`],`from-type`,`text`)}});i(await o(`Updating`,async()=>f.workflows.instances.status.edit({body:m,account_id:p,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`]})),{successLabel:`Updated`})}};function L(e){return e.positional(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`status`,{type:`string`,description:`The status field`,choices:[`pause`,`resume`,`terminate`,`restart`]}).option(`rollback`,{type:`boolean`,description:`Run rollback before terminating.`}).option(`from-count`,{type:`number`,description:`The from.count field`}).option(`from-name`,{type:`string`,description:`The from.name field`}).option(`from-type`,{type:`string`,description:`The from.type field`,choices:[`do`,`sleep`,`waitForEvent`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).conflicts(`rollback`,[`from-count`,`from-name`,`from-type`]).conflicts(`from-count`,[`rollback`]).conflicts(`from-name`,[`rollback`]).conflicts(`from-type`,[`rollback`]).check(e=>{if([`from-count`,`from-name`,`from-type`].some(t=>e[t]!==void 0)){let t={"from-name":[`rollback`]},n=[`from-name`].filter(n=>e[n]===void 0&&!(t[n]??[]).some(t=>e[t]!==void 0));if(n.length>0)throw Error(`${n.map(e=>`--`+e).join(`, `)} ${n.length===1?`is`:`are`} required when any --from-* flag is set`)}return!0})}const R={command:`restart <instance-id>`,describe:`Changes the execution status of a workflow instance (e.g., pause, resume, terminate).`,builder:L,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances restart`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}/status`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``)},bodyKind:`json`,body:n.body===void 0?l({status:u(n.status,`status`,`text`),rollback:n.rollback,from:{count:n[`from-count`],name:u(n[`from-name`],`from-name`,`text`),type:u(n[`from-type`],`from-type`,`text`)}}):c(n.body)});return}let f=await r(n),p=n.local?s:await t();if(n.accountId=p,n.body){let e=c(n.body);i(await o(`Updating`,async()=>f.workflows.instances.status.edit({body:e,account_id:p,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`]})),{successLabel:`Updated`});return}n.status===void 0&&(n.status=await d(`status`,`The status field`,[`pause`,`resume`,`terminate`,`restart`]));let m=l({status:u(n.status,`status`,`text`),rollback:n.rollback,from:{count:n[`from-count`],name:u(n[`from-name`],`from-name`,`text`),type:u(n[`from-type`],`from-type`,`text`)}});i(await o(`Updating`,async()=>f.workflows.instances.status.edit({body:m,account_id:p,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`]})),{successLabel:`Updated`})}};function z(e){return e.positional(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`status`,{type:`string`,description:`The status field`,choices:[`pause`,`resume`,`terminate`,`restart`]}).option(`rollback`,{type:`boolean`,description:`Run rollback before terminating.`}).option(`from-count`,{type:`number`,description:`The from.count field`}).option(`from-name`,{type:`string`,description:`The from.name field`}).option(`from-type`,{type:`string`,description:`The from.type field`,choices:[`do`,`sleep`,`waitForEvent`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).conflicts(`rollback`,[`from-count`,`from-name`,`from-type`]).conflicts(`from-count`,[`rollback`]).conflicts(`from-name`,[`rollback`]).conflicts(`from-type`,[`rollback`]).check(e=>{if([`from-count`,`from-name`,`from-type`].some(t=>e[t]!==void 0)){let t={"from-name":[`rollback`]},n=[`from-name`].filter(n=>e[n]===void 0&&!(t[n]??[]).some(t=>e[t]!==void 0));if(n.length>0)throw Error(`${n.map(e=>`--`+e).join(`, `)} ${n.length===1?`is`:`are`} required when any --from-* flag is set`)}return!0})}const te={command:`resume <instance-id>`,describe:`Changes the execution status of a workflow instance (e.g., pause, resume, terminate).`,builder:z,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances resume`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}/status`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``)},bodyKind:`json`,body:n.body===void 0?l({status:u(n.status,`status`,`text`),rollback:n.rollback,from:{count:n[`from-count`],name:u(n[`from-name`],`from-name`,`text`),type:u(n[`from-type`],`from-type`,`text`)}}):c(n.body)});return}let f=await r(n),p=n.local?s:await t();if(n.accountId=p,n.body){let e=c(n.body);i(await o(`Updating`,async()=>f.workflows.instances.status.edit({body:e,account_id:p,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`]})),{successLabel:`Updated`});return}n.status===void 0&&(n.status=await d(`status`,`The status field`,[`pause`,`resume`,`terminate`,`restart`]));let m=l({status:u(n.status,`status`,`text`),rollback:n.rollback,from:{count:n[`from-count`],name:u(n[`from-name`],`from-name`,`text`),type:u(n[`from-type`],`from-type`,`text`)}});i(await o(`Updating`,async()=>f.workflows.instances.status.edit({body:m,account_id:p,workflow_name:n[`workflow-name`],instance_id:n[`instance-id`]})),{successLabel:`Updated`})}};function B(e){return e.positional(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const V={command:`status-terminate <workflow-name>`,describe:`Gets the status of a bulk workflow instance termination job.`,builder:B,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances status-terminate`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/terminate`,pathParams:{"workflow-name":String(n[`workflow-name`]??``)},bodyKind:`none`});return}let c=await r(n),l=n.local?s:await t();n.accountId=l,i(await o(`Loading`,async()=>c.workflows.instances.statusTerminate({account_id:l,workflow_name:n[`workflow-name`]})),{successLabel:`Loaded`})}};function H(e){return e.positional(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`name`,{type:`string`,description:`Exact step name from the instance logs response, including the generated counter suffix.`,demandOption:!0}).option(`type`,{type:`string`,description:`Step type to disambiguate step.do and waitForEvent entries that share the same name.`,choices:[`step`,`waitForEvent`],demandOption:!0}).option(`attempt`,{type:`number`,description:`Specific attempt number to retrieve output or error for.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1})}const U={command:`get <instance-id>`,describe:"Retrieves the full, untruncated output for a specific step on a workflow instance. Returns a flat status-shaped JSON body with step `status` ('running' | 'waiting' | 'complete' | 'errored'), `error` (nullable), and `output` (the step value, or null while running/waiting/errored). When the step returned a ReadableStream from step.do, the response is served as 'application/octet-stream' with the raw bytes as the body instead of JSON. A `status='running'` response with non-null `error` indicates the step is currently retrying after a prior attempt failed.",builder:H,handler:async n=>{let i={name:n.name,type:n.type,attempt:n.attempt};if(n.dryRun){a({command:`cf workflows instances step get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}/step`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``)},query:i,bodyKind:`none`});return}await r(n);let c=n.local?s:await t();n.accountId=c;let l=new URLSearchParams(Object.entries(i).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),u=await o(`Loading`,async()=>ee(`/accounts/${c}/workflows/${encodeURIComponent(String(n[`workflow-name`]))}/instances/${encodeURIComponent(String(n[`instance-id`]))}/step${l?`?`+l:``}`,{method:`GET`,localEndpoint:n.local?n.localEndpoint:void 0}));h(n.text===!0?u.toString(`utf-8`):u)}},W={command:`step`,describe:`Operations for instances.step`,builder:e=>e.command(U).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function G(e){return e.positional(`instance-id`,{type:`string`,description:"Instance identifier. User-created instances match `^[a-zA-Z0-9_][a-zA-Z0-9-_]*$` (max 100 characters); cron-triggered instances can use a longer, system-generated id derived from the cron expression.",demandOption:!0}).option(`workflow-name`,{type:`string`,description:`Workflow name`,demandOption:!0}).option(`status`,{type:`string`,description:`The status field`,choices:[`pause`,`resume`,`terminate`,`restart`]}).option(`rollback`,{type:`boolean`,description:`Run rollback before terminating.`}).option(`from-count`,{type:`number`,description:`The from.count field`}).option(`from-name`,{type:`string`,description:`The from.name field`}).option(`from-type`,{type:`string`,description:`The from.type field`,choices:[`do`,`sleep`,`waitForEvent`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).conflicts(`rollback`,[`from-count`,`from-name`,`from-type`]).conflicts(`from-count`,[`rollback`]).conflicts(`from-name`,[`rollback`]).conflicts(`from-type`,[`rollback`]).check(e=>{if([`from-count`,`from-name`,`from-type`].some(t=>e[t]!==void 0)){let t={"from-name":[`rollback`]},n=[`from-name`].filter(n=>e[n]===void 0&&!(t[n]??[]).some(t=>e[t]!==void 0));if(n.length>0)throw Error(`${n.map(e=>`--`+e).join(`, `)} ${n.length===1?`is`:`are`} required when any --from-* flag is set`)}return!0})}const K={command:`terminate <instance-id>`,describe:`Changes the execution status of a workflow instance (e.g., pause, resume, terminate).`,builder:G,handler:async n=>{if(n.dryRun){a({command:`cf workflows instances terminate`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await e()??`<account-id>`}/workflows/${n[`workflow-name`]==null?`<workflow-name>`:encodeURIComponent(String(n[`workflow-name`]))}/instances/${n[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(n[`instance-id`]))}/status`,pathParams:{"workflow-name":String(n[`workflow-name`]??``),"instance-id":String(n[`instance-id`]??``)},bodyKind:`json`,body:n.body===void 0?l({status:u(n.status,`status`,`text`),rollback:n.rollback,from:{count:n[`from-count`],name:u(n[`from-name`],`from-name`,`text`),type:u(n[`from-type`],`from-type`,`text`)}}):c(n.body)});return}let f=await r(n),m=n.local?s:await t();if(n.accountId=m,!await p({force:!!n.force,message:`This operation terminates the running Workflow instance.`})){process.stderr.write(`Aborted.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{D as e}from"./oauth-DBJ5GSFk.mjs";import{i as t,n}from"./auth-CZ0E51rF.mjs";import{t as r}from"./output-B6fBFRqe.mjs";import{n as i,t as a}from"./progress-O88q63Bk.mjs";import{n as o,t as s}from"./body-parser-BO6mfo_W.mjs";import{n as c}from"./input-validation-BwUR9z8e.mjs";import{r as l}from"./prompt-DTAWiEm2.mjs";import{t as u}from"./cli-types-CFw6Xygp.mjs";function d(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const f={command:`get`,describe:`Gets latest Zaraz configuration for a zone. It can be preview or published configuration, whichever was the last updated. Secret variables values will not be included.`,builder:d,handler:async t=>{if(t.dryRun){i({command:`cf zaraz config get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/config`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.config.get({zone_id:s})),{successLabel:`Loaded`})}};function p(e){return e.option(`analytics-default-purpose`,{type:`string`,description:`Consent purpose assigned to Monitoring.`}).option(`analytics-enabled`,{type:`boolean`,description:`Whether Advanced Monitoring reports are enabled.`}).option(`analytics-session-exp-time`,{type:`number`,description:`Session expiration time (seconds).`}).option(`consent-company-email`,{type:`string`,description:`The consent.companyEmail field`}).option(`consent-company-name`,{type:`string`,description:`The consent.companyName field`}).option(`consent-company-street-address`,{type:`string`,description:`The consent.companyStreetAddress field`}).option(`consent-consent-modal-intro-html`,{type:`string`,description:`The consent.consentModalIntroHTML field`}).option(`consent-cookie-name`,{type:`string`,description:`The consent.cookieName field`}).option(`consent-custom-css`,{type:`string`,description:`The consent.customCSS field`}).option(`consent-custom-intro-disclaimer-dismissed`,{type:`boolean`,description:`The consent.customIntroDisclaimerDismissed field`}).option(`consent-default-language`,{type:`string`,description:`The consent.defaultLanguage field`}).option(`consent-enabled`,{type:`boolean`,description:`The consent.enabled field`}).option(`consent-hide-modal`,{type:`boolean`,description:`The consent.hideModal field`}).option(`consent-tcf-compliant`,{type:`boolean`,description:`The consent.tcfCompliant field`}).option(`data-layer`,{type:`boolean`,description:`Data layer compatibility mode enabled.`}).option(`debug-key`,{type:`string`,description:`The key for Zaraz debug mode.`}).option(`history-change`,{type:`boolean`,description:`Single Page Application support enabled.`}).option(`settings-auto-inject-script`,{type:`boolean`,description:`Automatic injection of Zaraz scripts enabled.`}).option(`settings-context-enricher-escaped-worker-name`,{type:`string`,description:`The settings.contextEnricher.escapedWorkerName field`}).option(`settings-context-enricher-worker-tag`,{type:`string`,description:`The settings.contextEnricher.workerTag field`}).option(`settings-cookie-domain`,{type:`string`,description:`The domain Zaraz will use for writing and reading its cookies.`}).option(`settings-ecommerce`,{type:`boolean`,description:`Ecommerce API enabled.`}).option(`settings-events-api-path`,{type:`string`,description:`Custom endpoint for server-side track events.`}).option(`settings-hide-external-referer`,{type:`boolean`,description:`Hiding external referrer URL enabled.`}).option(`settings-hide-ipaddress`,{type:`boolean`,description:`Trimming IP address enabled.`}).option(`settings-hide-query-params`,{type:`boolean`,description:`Removing URL query params enabled.`}).option(`settings-hide-user-agent`,{type:`boolean`,description:`Removing sensitive data from User Agent string enabled.`}).option(`settings-init-path`,{type:`string`,description:`Custom endpoint for Zaraz init script.`}).option(`settings-inject-iframes`,{type:`boolean`,description:`Injection of Zaraz scripts into iframes enabled.`}).option(`settings-mc-root-path`,{type:`string`,description:`Custom path for Managed Components server functionalities.`}).option(`settings-script-path`,{type:`string`,description:`Custom endpoint for Zaraz main script.`}).option(`settings-track-path`,{type:`string`,description:`Custom endpoint for Zaraz tracking requests.`}).option(`zaraz-version`,{type:`number`,description:`Zaraz internal version of the config.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`consent-company-email`,`consent-company-name`,`consent-company-street-address`,`consent-consent-modal-intro-html`,`consent-cookie-name`,`consent-custom-css`,`consent-custom-intro-disclaimer-dismissed`,`consent-default-language`,`consent-enabled`,`consent-hide-modal`,`consent-tcf-compliant`].some(t=>e[t]!==void 0)){let t=[`consent-enabled`].filter(t=>e[t]===void 0);if(t.length>0)throw Error(`${t.map(e=>`--`+e).join(`, `)} ${t.length===1?`is`:`are`} required when any --consent-* flag is set`)}return!0})}const m={command:`update`,describe:`Updates Zaraz configuration for a zone.`,builder:p,handler:async t=>{if(t.dryRun){i({command:`cf zaraz config update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/config`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`json`,body:t.body===void 0?s({analytics:{defaultPurpose:c(t[`analytics-default-purpose`],`analytics-default-purpose`,`text`),enabled:t[`analytics-enabled`],sessionExpTime:t[`analytics-session-exp-time`]},consent:{companyEmail:c(t[`consent-company-email`],`consent-company-email`,`text`),companyName:c(t[`consent-company-name`],`consent-company-name`,`text`),companyStreetAddress:c(t[`consent-company-street-address`],`consent-company-street-address`,`text`),consentModalIntroHTML:c(t[`consent-consent-modal-intro-html`],`consent-consent-modal-intro-html`,`text`),cookieName:c(t[`consent-cookie-name`],`consent-cookie-name`,`text`),customCSS:c(t[`consent-custom-css`],`consent-custom-css`,`text`),customIntroDisclaimerDismissed:t[`consent-custom-intro-disclaimer-dismissed`],defaultLanguage:c(t[`consent-default-language`],`consent-default-language`,`text`),enabled:t[`consent-enabled`],hideModal:t[`consent-hide-modal`],tcfCompliant:t[`consent-tcf-compliant`]},dataLayer:t[`data-layer`],debugKey:c(t[`debug-key`],`debug-key`,`text`),historyChange:t[`history-change`],settings:{autoInjectScript:t[`settings-auto-inject-script`],contextEnricher:{escapedWorkerName:c(t[`settings-context-enricher-escaped-worker-name`],`settings-context-enricher-escaped-worker-name`,`text`),workerTag:c(t[`settings-context-enricher-worker-tag`],`settings-context-enricher-worker-tag`,`text`)},cookieDomain:c(t[`settings-cookie-domain`],`settings-cookie-domain`,`text`),ecommerce:t[`settings-ecommerce`],eventsApiPath:c(t[`settings-events-api-path`],`settings-events-api-path`,`text`),hideExternalReferer:t[`settings-hide-external-referer`],hideIPAddress:t[`settings-hide-ipaddress`],hideQueryParams:t[`settings-hide-query-params`],hideUserAgent:t[`settings-hide-user-agent`],initPath:c(t[`settings-init-path`],`settings-init-path`,`text`),injectIframes:t[`settings-inject-iframes`],mcRootPath:c(t[`settings-mc-root-path`],`settings-mc-root-path`,`text`),scriptPath:c(t[`settings-script-path`],`settings-script-path`,`text`),trackPath:c(t[`settings-track-path`],`settings-track-path`,`text`)},zarazVersion:t[`zaraz-version`]}):o(t.body)});return}let u=await n(t),d=await e({zone:t.zone},u,{quiet:t.quiet});if(t.zoneId=d,t.body){let e=o(t.body);r(await a(`Updating`,async()=>u.zaraz.config.update({...e,zone_id:d})),{successLabel:`Updated`});return}if(t[`data-layer`]===void 0)throw Error(`--data-layer is required (or pass --body with this field set).`);if(t[`debug-key`]===void 0&&(t[`debug-key`]=await l(`debug-key`,`The key for Zaraz debug mode.`)),t[`settings-auto-inject-script`]===void 0)throw Error(`--settings-auto-inject-script is required (or pass --body with this field set).`);if(t[`settings-context-enricher-escaped-worker-name`]===void 0&&(t[`settings-context-enricher-escaped-worker-name`]=await l(`settings-context-enricher-escaped-worker-name`,`The settings.contextEnricher.escapedWorkerName field`)),t[`settings-context-enricher-worker-tag`]===void 0&&(t[`settings-context-enricher-worker-tag`]=await l(`settings-context-enricher-worker-tag`,`The settings.contextEnricher.workerTag field`)),t[`zaraz-version`]===void 0)throw Error(`--zaraz-version is required (or pass --body with this field set).`);let f=s({analytics:{defaultPurpose:c(t[`analytics-default-purpose`],`analytics-default-purpose`,`text`),enabled:t[`analytics-enabled`],sessionExpTime:t[`analytics-session-exp-time`]},consent:{companyEmail:c(t[`consent-company-email`],`consent-company-email`,`text`),companyName:c(t[`consent-company-name`],`consent-company-name`,`text`),companyStreetAddress:c(t[`consent-company-street-address`],`consent-company-street-address`,`text`),consentModalIntroHTML:c(t[`consent-consent-modal-intro-html`],`consent-consent-modal-intro-html`,`text`),cookieName:c(t[`consent-cookie-name`],`consent-cookie-name`,`text`),customCSS:c(t[`consent-custom-css`],`consent-custom-css`,`text`),customIntroDisclaimerDismissed:t[`consent-custom-intro-disclaimer-dismissed`],defaultLanguage:c(t[`consent-default-language`],`consent-default-language`,`text`),enabled:t[`consent-enabled`],hideModal:t[`consent-hide-modal`],tcfCompliant:t[`consent-tcf-compliant`]},dataLayer:t[`data-layer`],debugKey:c(t[`debug-key`],`debug-key`,`text`),historyChange:t[`history-change`],settings:{autoInjectScript:t[`settings-auto-inject-script`],contextEnricher:{escapedWorkerName:c(t[`settings-context-enricher-escaped-worker-name`],`settings-context-enricher-escaped-worker-name`,`text`),workerTag:c(t[`settings-context-enricher-worker-tag`],`settings-context-enricher-worker-tag`,`text`)},cookieDomain:c(t[`settings-cookie-domain`],`settings-cookie-domain`,`text`),ecommerce:t[`settings-ecommerce`],eventsApiPath:c(t[`settings-events-api-path`],`settings-events-api-path`,`text`),hideExternalReferer:t[`settings-hide-external-referer`],hideIPAddress:t[`settings-hide-ipaddress`],hideQueryParams:t[`settings-hide-query-params`],hideUserAgent:t[`settings-hide-user-agent`],initPath:c(t[`settings-init-path`],`settings-init-path`,`text`),injectIframes:t[`settings-inject-iframes`],mcRootPath:c(t[`settings-mc-root-path`],`settings-mc-root-path`,`text`),scriptPath:c(t[`settings-script-path`],`settings-script-path`,`text`),trackPath:c(t[`settings-track-path`],`settings-track-path`,`text`)},zarazVersion:t[`zaraz-version`]});r(await a(`Updating`,async()=>u.zaraz.config.update({...f,zone_id:d})),{successLabel:`Updated`})}},h={command:`config`,describe:`Full Zaraz configuration including tools, triggers, and variables for the zone`,builder:e=>e.command(f).command(m).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function g(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _={command:`get`,describe:`Gets default Zaraz configuration for a zone.`,builder:g,handler:async t=>{if(t.dryRun){i({command:`cf zaraz default get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/default`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.default.get({zone_id:s})),{successLabel:`Loaded`})}},v={command:`default`,describe:`Default Zaraz configuration template used as a starting point for new zones`,builder:e=>e.command(_).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function y(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`get`,describe:`Exports full current published Zaraz configuration for a zone, secret variables included.`,builder:y,handler:async t=>{if(t.dryRun){i({command:`cf zaraz export get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/export`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.export.get({zone_id:s})),{successLabel:`Loaded`})}},x={command:`export`,describe:`Export the current Zaraz configuration as a portable JSON document`,builder:e=>e.command(b).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function S(e){return e.option(`ids`,{type:`string`,description:`Comma separated list of Zaraz configuration IDs.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const C={command:`get`,describe:`Gets a history of published Zaraz configurations by ID(s) for a zone.`,builder:u(S),handler:async t=>{let o={ids:t.ids};if(t.dryRun){i({command:`cf zaraz history configs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/history/configs`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},query:o,bodyKind:`none`});return}let s=await n(t),c=await e({zone:t.zone},s,{quiet:t.quiet});t.zoneId=c,r(await a(`Loading`,async()=>s.zaraz.history.configs.get({zone_id:c,...o})),{successLabel:`Loaded`})}},w={command:`configs`,describe:`Configuration version history — browse and restore previous Zaraz configurations`,builder:e=>e.command(C).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function T(e){return e.option(`offset`,{type:`number`,description:`Ordinal number to start listing the results with. Default value is 0.`}).option(`limit`,{type:`number`,description:`Maximum amount of results to list. Default value is 10.`}).option(`sort-field`,{type:`string`,description:`The field to sort by. Default is updated_at.`,choices:[`id`,`user_id`,`description`,`created_at`,`updated_at`]}).option(`sort-order`,{type:`string`,description:`Sorting order. Default is DESC.`,choices:[`DESC`,`ASC`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`list`,describe:`Lists a history of published Zaraz configuration records for a zone.`,builder:u(T),handler:async t=>{let o={offset:t.offset,limit:t.limit,sortField:t[`sort-field`],sortOrder:t[`sort-order`]};if(t.dryRun){i({command:`cf zaraz history list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/history`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},query:o,bodyKind:`none`});return}let s=await n(t),c=await e({zone:t.zone},s,{quiet:t.quiet});t.zoneId=c,r(await a(`Loading`,async()=>s.zaraz.history.list({zone_id:c,...o})),{successLabel:`Loaded`})}};function D(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`ID of the Zaraz configuration to restore.`})}const O={command:`update`,describe:`Restores a historical published Zaraz configuration by ID for a zone.`,builder:D,handler:async s=>{if(s.dryRun){i({command:`cf zaraz history update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${s.zone??s.zoneId??`<zone>`}/settings/zaraz/history`,pathParams:{"zone-id":String(s.zone??s[`zone-id`]??``)},bodyKind:`json`,body:s.body===void 0?void 0:o(s.body)});return}let c=await n(s),l=await e({zone:s.zone},c,{quiet:s.quiet});if(s.zoneId=l,s.body){let e=o(s.body);r(await a(`Updating`,async()=>c.zaraz.history.update({body:e,zone_id:l})),{successLabel:`Updated`});return}r(await a(`Updating`,async()=>t(c,`PUT`,`/zones/${s.zoneId}/settings/zaraz/history`)),{successLabel:`Updated`})}},k={command:`history`,describe:`Configuration version history — browse and restore previous Zaraz configurations`,builder:e=>e.command(E).command(O).command(w).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function A(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Zaraz configuration description.`})}const j={command:`create`,describe:`Publish current Zaraz preview configuration for a zone.`,builder:A,handler:async s=>{if(s.dryRun){i({command:`cf zaraz publish create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${s.zone??s.zoneId??`<zone>`}/settings/zaraz/publish`,pathParams:{"zone-id":String(s.zone??s[`zone-id`]??``)},bodyKind:`json`,body:s.body===void 0?void 0:o(s.body)});return}let c=await n(s),l=await e({zone:s.zone},c,{quiet:s.quiet});if(s.zoneId=l,s.body){let e=o(s.body);r(await a(`Creating`,async()=>c.zaraz.publish.create({body:e,zone_id:l})),{successLabel:`Created`});return}r(await a(`Creating`,async()=>t(c,`POST`,`/zones/${s.zoneId}/settings/zaraz/publish`)),{successLabel:`Created`})}},M={command:`publish`,describe:`Publish pending Zaraz configuration changes to make them live on the zone`,builder:e=>e.command(j).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function N(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Zaraz workflow.`})}const P={command:`update`,describe:`Updates Zaraz workflow for a zone.`,builder:N,handler:async t=>{if(t.dryRun){i({command:`cf zaraz update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/workflow`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`json`,body:t.body===void 0?void 0:o(t.body)});return}let s=await n(t),c=await e({zone:t.zone},s,{quiet:t.quiet});if(t.zoneId=c,t.body){let e=o(t.body);r(await a(`Updating`,async()=>s.zaraz.update({body:e,zone_id:c})),{successLabel:`Updated`});return}if(t.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function F(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const I={command:`get`,describe:`Gets Zaraz workflow for a zone.`,builder:F,handler:async t=>{if(t.dryRun){i({command:`cf zaraz workflow get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/workflow`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.workflow.get({zone_id:s})),{successLabel:`Loaded`})}},L={command:`workflow`,describe:`Workflow state for Zaraz configuration changes (draft vs. published)`,builder:e=>e.command(I).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},R={command:`zaraz`,describe:`Server-side tag manager — load third-party tools (analytics, pixels, etc.) from Cloudflare's edge without client-side JS`,builder:e=>e.command(P).command(h).command(v).command(x).command(k).command(M).command(L).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{R as default};
2
+ import{D as e}from"./oauth-DC9g9uK_.mjs";import{i as t,n}from"./auth-B1CY5zpC.mjs";import{t as r}from"./output-B6fBFRqe.mjs";import{n as i,t as a}from"./progress-BLQ2xXwD.mjs";import{n as o,t as s}from"./body-parser-BO6mfo_W.mjs";import{n as c}from"./input-validation-BwUR9z8e.mjs";import{r as l}from"./prompt-DcfYBioA.mjs";import{t as u}from"./cli-types-CFw6Xygp.mjs";function d(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const f={command:`get`,describe:`Gets latest Zaraz configuration for a zone. It can be preview or published configuration, whichever was the last updated. Secret variables values will not be included.`,builder:d,handler:async t=>{if(t.dryRun){i({command:`cf zaraz config get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/config`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.config.get({zone_id:s})),{successLabel:`Loaded`})}};function p(e){return e.option(`analytics-default-purpose`,{type:`string`,description:`Consent purpose assigned to Monitoring.`}).option(`analytics-enabled`,{type:`boolean`,description:`Whether Advanced Monitoring reports are enabled.`}).option(`analytics-session-exp-time`,{type:`number`,description:`Session expiration time (seconds).`}).option(`consent-company-email`,{type:`string`,description:`The consent.companyEmail field`}).option(`consent-company-name`,{type:`string`,description:`The consent.companyName field`}).option(`consent-company-street-address`,{type:`string`,description:`The consent.companyStreetAddress field`}).option(`consent-consent-modal-intro-html`,{type:`string`,description:`The consent.consentModalIntroHTML field`}).option(`consent-cookie-name`,{type:`string`,description:`The consent.cookieName field`}).option(`consent-custom-css`,{type:`string`,description:`The consent.customCSS field`}).option(`consent-custom-intro-disclaimer-dismissed`,{type:`boolean`,description:`The consent.customIntroDisclaimerDismissed field`}).option(`consent-default-language`,{type:`string`,description:`The consent.defaultLanguage field`}).option(`consent-enabled`,{type:`boolean`,description:`The consent.enabled field`}).option(`consent-hide-modal`,{type:`boolean`,description:`The consent.hideModal field`}).option(`consent-tcf-compliant`,{type:`boolean`,description:`The consent.tcfCompliant field`}).option(`data-layer`,{type:`boolean`,description:`Data layer compatibility mode enabled.`}).option(`debug-key`,{type:`string`,description:`The key for Zaraz debug mode.`}).option(`history-change`,{type:`boolean`,description:`Single Page Application support enabled.`}).option(`settings-auto-inject-script`,{type:`boolean`,description:`Automatic injection of Zaraz scripts enabled.`}).option(`settings-context-enricher-escaped-worker-name`,{type:`string`,description:`The settings.contextEnricher.escapedWorkerName field`}).option(`settings-context-enricher-worker-tag`,{type:`string`,description:`The settings.contextEnricher.workerTag field`}).option(`settings-cookie-domain`,{type:`string`,description:`The domain Zaraz will use for writing and reading its cookies.`}).option(`settings-ecommerce`,{type:`boolean`,description:`Ecommerce API enabled.`}).option(`settings-events-api-path`,{type:`string`,description:`Custom endpoint for server-side track events.`}).option(`settings-hide-external-referer`,{type:`boolean`,description:`Hiding external referrer URL enabled.`}).option(`settings-hide-ipaddress`,{type:`boolean`,description:`Trimming IP address enabled.`}).option(`settings-hide-query-params`,{type:`boolean`,description:`Removing URL query params enabled.`}).option(`settings-hide-user-agent`,{type:`boolean`,description:`Removing sensitive data from User Agent string enabled.`}).option(`settings-init-path`,{type:`string`,description:`Custom endpoint for Zaraz init script.`}).option(`settings-inject-iframes`,{type:`boolean`,description:`Injection of Zaraz scripts into iframes enabled.`}).option(`settings-mc-root-path`,{type:`string`,description:`Custom path for Managed Components server functionalities.`}).option(`settings-script-path`,{type:`string`,description:`Custom endpoint for Zaraz main script.`}).option(`settings-track-path`,{type:`string`,description:`Custom endpoint for Zaraz tracking requests.`}).option(`zaraz-version`,{type:`number`,description:`Zaraz internal version of the config.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`consent-company-email`,`consent-company-name`,`consent-company-street-address`,`consent-consent-modal-intro-html`,`consent-cookie-name`,`consent-custom-css`,`consent-custom-intro-disclaimer-dismissed`,`consent-default-language`,`consent-enabled`,`consent-hide-modal`,`consent-tcf-compliant`].some(t=>e[t]!==void 0)){let t=[`consent-enabled`].filter(t=>e[t]===void 0);if(t.length>0)throw Error(`${t.map(e=>`--`+e).join(`, `)} ${t.length===1?`is`:`are`} required when any --consent-* flag is set`)}return!0})}const m={command:`update`,describe:`Updates Zaraz configuration for a zone.`,builder:p,handler:async t=>{if(t.dryRun){i({command:`cf zaraz config update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/config`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`json`,body:t.body===void 0?s({analytics:{defaultPurpose:c(t[`analytics-default-purpose`],`analytics-default-purpose`,`text`),enabled:t[`analytics-enabled`],sessionExpTime:t[`analytics-session-exp-time`]},consent:{companyEmail:c(t[`consent-company-email`],`consent-company-email`,`text`),companyName:c(t[`consent-company-name`],`consent-company-name`,`text`),companyStreetAddress:c(t[`consent-company-street-address`],`consent-company-street-address`,`text`),consentModalIntroHTML:c(t[`consent-consent-modal-intro-html`],`consent-consent-modal-intro-html`,`text`),cookieName:c(t[`consent-cookie-name`],`consent-cookie-name`,`text`),customCSS:c(t[`consent-custom-css`],`consent-custom-css`,`text`),customIntroDisclaimerDismissed:t[`consent-custom-intro-disclaimer-dismissed`],defaultLanguage:c(t[`consent-default-language`],`consent-default-language`,`text`),enabled:t[`consent-enabled`],hideModal:t[`consent-hide-modal`],tcfCompliant:t[`consent-tcf-compliant`]},dataLayer:t[`data-layer`],debugKey:c(t[`debug-key`],`debug-key`,`text`),historyChange:t[`history-change`],settings:{autoInjectScript:t[`settings-auto-inject-script`],contextEnricher:{escapedWorkerName:c(t[`settings-context-enricher-escaped-worker-name`],`settings-context-enricher-escaped-worker-name`,`text`),workerTag:c(t[`settings-context-enricher-worker-tag`],`settings-context-enricher-worker-tag`,`text`)},cookieDomain:c(t[`settings-cookie-domain`],`settings-cookie-domain`,`text`),ecommerce:t[`settings-ecommerce`],eventsApiPath:c(t[`settings-events-api-path`],`settings-events-api-path`,`text`),hideExternalReferer:t[`settings-hide-external-referer`],hideIPAddress:t[`settings-hide-ipaddress`],hideQueryParams:t[`settings-hide-query-params`],hideUserAgent:t[`settings-hide-user-agent`],initPath:c(t[`settings-init-path`],`settings-init-path`,`text`),injectIframes:t[`settings-inject-iframes`],mcRootPath:c(t[`settings-mc-root-path`],`settings-mc-root-path`,`text`),scriptPath:c(t[`settings-script-path`],`settings-script-path`,`text`),trackPath:c(t[`settings-track-path`],`settings-track-path`,`text`)},zarazVersion:t[`zaraz-version`]}):o(t.body)});return}let u=await n(t),d=await e({zone:t.zone},u,{quiet:t.quiet});if(t.zoneId=d,t.body){let e=o(t.body);r(await a(`Updating`,async()=>u.zaraz.config.update({...e,zone_id:d})),{successLabel:`Updated`});return}if(t[`data-layer`]===void 0)throw Error(`--data-layer is required (or pass --body with this field set).`);if(t[`debug-key`]===void 0&&(t[`debug-key`]=await l(`debug-key`,`The key for Zaraz debug mode.`)),t[`settings-auto-inject-script`]===void 0)throw Error(`--settings-auto-inject-script is required (or pass --body with this field set).`);if(t[`settings-context-enricher-escaped-worker-name`]===void 0&&(t[`settings-context-enricher-escaped-worker-name`]=await l(`settings-context-enricher-escaped-worker-name`,`The settings.contextEnricher.escapedWorkerName field`)),t[`settings-context-enricher-worker-tag`]===void 0&&(t[`settings-context-enricher-worker-tag`]=await l(`settings-context-enricher-worker-tag`,`The settings.contextEnricher.workerTag field`)),t[`zaraz-version`]===void 0)throw Error(`--zaraz-version is required (or pass --body with this field set).`);let f=s({analytics:{defaultPurpose:c(t[`analytics-default-purpose`],`analytics-default-purpose`,`text`),enabled:t[`analytics-enabled`],sessionExpTime:t[`analytics-session-exp-time`]},consent:{companyEmail:c(t[`consent-company-email`],`consent-company-email`,`text`),companyName:c(t[`consent-company-name`],`consent-company-name`,`text`),companyStreetAddress:c(t[`consent-company-street-address`],`consent-company-street-address`,`text`),consentModalIntroHTML:c(t[`consent-consent-modal-intro-html`],`consent-consent-modal-intro-html`,`text`),cookieName:c(t[`consent-cookie-name`],`consent-cookie-name`,`text`),customCSS:c(t[`consent-custom-css`],`consent-custom-css`,`text`),customIntroDisclaimerDismissed:t[`consent-custom-intro-disclaimer-dismissed`],defaultLanguage:c(t[`consent-default-language`],`consent-default-language`,`text`),enabled:t[`consent-enabled`],hideModal:t[`consent-hide-modal`],tcfCompliant:t[`consent-tcf-compliant`]},dataLayer:t[`data-layer`],debugKey:c(t[`debug-key`],`debug-key`,`text`),historyChange:t[`history-change`],settings:{autoInjectScript:t[`settings-auto-inject-script`],contextEnricher:{escapedWorkerName:c(t[`settings-context-enricher-escaped-worker-name`],`settings-context-enricher-escaped-worker-name`,`text`),workerTag:c(t[`settings-context-enricher-worker-tag`],`settings-context-enricher-worker-tag`,`text`)},cookieDomain:c(t[`settings-cookie-domain`],`settings-cookie-domain`,`text`),ecommerce:t[`settings-ecommerce`],eventsApiPath:c(t[`settings-events-api-path`],`settings-events-api-path`,`text`),hideExternalReferer:t[`settings-hide-external-referer`],hideIPAddress:t[`settings-hide-ipaddress`],hideQueryParams:t[`settings-hide-query-params`],hideUserAgent:t[`settings-hide-user-agent`],initPath:c(t[`settings-init-path`],`settings-init-path`,`text`),injectIframes:t[`settings-inject-iframes`],mcRootPath:c(t[`settings-mc-root-path`],`settings-mc-root-path`,`text`),scriptPath:c(t[`settings-script-path`],`settings-script-path`,`text`),trackPath:c(t[`settings-track-path`],`settings-track-path`,`text`)},zarazVersion:t[`zaraz-version`]});r(await a(`Updating`,async()=>u.zaraz.config.update({...f,zone_id:d})),{successLabel:`Updated`})}},h={command:`config`,describe:`Full Zaraz configuration including tools, triggers, and variables for the zone`,builder:e=>e.command(f).command(m).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function g(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _={command:`get`,describe:`Gets default Zaraz configuration for a zone.`,builder:g,handler:async t=>{if(t.dryRun){i({command:`cf zaraz default get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/default`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.default.get({zone_id:s})),{successLabel:`Loaded`})}},v={command:`default`,describe:`Default Zaraz configuration template used as a starting point for new zones`,builder:e=>e.command(_).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function y(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`get`,describe:`Exports full current published Zaraz configuration for a zone, secret variables included.`,builder:y,handler:async t=>{if(t.dryRun){i({command:`cf zaraz export get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/export`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.export.get({zone_id:s})),{successLabel:`Loaded`})}},x={command:`export`,describe:`Export the current Zaraz configuration as a portable JSON document`,builder:e=>e.command(b).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function S(e){return e.option(`ids`,{type:`string`,description:`Comma separated list of Zaraz configuration IDs.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const C={command:`get`,describe:`Gets a history of published Zaraz configurations by ID(s) for a zone.`,builder:u(S),handler:async t=>{let o={ids:t.ids};if(t.dryRun){i({command:`cf zaraz history configs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/history/configs`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},query:o,bodyKind:`none`});return}let s=await n(t),c=await e({zone:t.zone},s,{quiet:t.quiet});t.zoneId=c,r(await a(`Loading`,async()=>s.zaraz.history.configs.get({zone_id:c,...o})),{successLabel:`Loaded`})}},w={command:`configs`,describe:`Configuration version history — browse and restore previous Zaraz configurations`,builder:e=>e.command(C).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function T(e){return e.option(`offset`,{type:`number`,description:`Ordinal number to start listing the results with. Default value is 0.`}).option(`limit`,{type:`number`,description:`Maximum amount of results to list. Default value is 10.`}).option(`sort-field`,{type:`string`,description:`The field to sort by. Default is updated_at.`,choices:[`id`,`user_id`,`description`,`created_at`,`updated_at`]}).option(`sort-order`,{type:`string`,description:`Sorting order. Default is DESC.`,choices:[`DESC`,`ASC`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`list`,describe:`Lists a history of published Zaraz configuration records for a zone.`,builder:u(T),handler:async t=>{let o={offset:t.offset,limit:t.limit,sortField:t[`sort-field`],sortOrder:t[`sort-order`]};if(t.dryRun){i({command:`cf zaraz history list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/history`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},query:o,bodyKind:`none`});return}let s=await n(t),c=await e({zone:t.zone},s,{quiet:t.quiet});t.zoneId=c,r(await a(`Loading`,async()=>s.zaraz.history.list({zone_id:c,...o})),{successLabel:`Loaded`})}};function D(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`ID of the Zaraz configuration to restore.`})}const O={command:`update`,describe:`Restores a historical published Zaraz configuration by ID for a zone.`,builder:D,handler:async s=>{if(s.dryRun){i({command:`cf zaraz history update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${s.zone??s.zoneId??`<zone>`}/settings/zaraz/history`,pathParams:{"zone-id":String(s.zone??s[`zone-id`]??``)},bodyKind:`json`,body:s.body===void 0?void 0:o(s.body)});return}let c=await n(s),l=await e({zone:s.zone},c,{quiet:s.quiet});if(s.zoneId=l,s.body){let e=o(s.body);r(await a(`Updating`,async()=>c.zaraz.history.update({body:e,zone_id:l})),{successLabel:`Updated`});return}r(await a(`Updating`,async()=>t(c,`PUT`,`/zones/${s.zoneId}/settings/zaraz/history`)),{successLabel:`Updated`})}},k={command:`history`,describe:`Configuration version history — browse and restore previous Zaraz configurations`,builder:e=>e.command(E).command(O).command(w).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function A(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Zaraz configuration description.`})}const j={command:`create`,describe:`Publish current Zaraz preview configuration for a zone.`,builder:A,handler:async s=>{if(s.dryRun){i({command:`cf zaraz publish create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${s.zone??s.zoneId??`<zone>`}/settings/zaraz/publish`,pathParams:{"zone-id":String(s.zone??s[`zone-id`]??``)},bodyKind:`json`,body:s.body===void 0?void 0:o(s.body)});return}let c=await n(s),l=await e({zone:s.zone},c,{quiet:s.quiet});if(s.zoneId=l,s.body){let e=o(s.body);r(await a(`Creating`,async()=>c.zaraz.publish.create({body:e,zone_id:l})),{successLabel:`Created`});return}r(await a(`Creating`,async()=>t(c,`POST`,`/zones/${s.zoneId}/settings/zaraz/publish`)),{successLabel:`Created`})}},M={command:`publish`,describe:`Publish pending Zaraz configuration changes to make them live on the zone`,builder:e=>e.command(j).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function N(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Zaraz workflow.`})}const P={command:`update`,describe:`Updates Zaraz workflow for a zone.`,builder:N,handler:async t=>{if(t.dryRun){i({command:`cf zaraz update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/workflow`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`json`,body:t.body===void 0?void 0:o(t.body)});return}let s=await n(t),c=await e({zone:t.zone},s,{quiet:t.quiet});if(t.zoneId=c,t.body){let e=o(t.body);r(await a(`Updating`,async()=>s.zaraz.update({body:e,zone_id:c})),{successLabel:`Updated`});return}if(t.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function F(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const I={command:`get`,describe:`Gets Zaraz workflow for a zone.`,builder:F,handler:async t=>{if(t.dryRun){i({command:`cf zaraz workflow get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/settings/zaraz/workflow`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.zaraz.workflow.get({zone_id:s})),{successLabel:`Loaded`})}},L={command:`workflow`,describe:`Workflow state for Zaraz configuration changes (draft vs. published)`,builder:e=>e.command(I).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},R={command:`zaraz`,describe:`Server-side tag manager — load third-party tools (analytics, pixels, etc.) from Cloudflare's edge without client-side JS`,builder:e=>e.command(P).command(h).command(v).command(x).command(k).command(M).command(L).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{R as default};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{D as e,O as t,w as n}from"./oauth-DBJ5GSFk.mjs";import{i as r,n as i}from"./auth-CZ0E51rF.mjs";import{t as a}from"./output-B6fBFRqe.mjs";import{n as o,t as s}from"./progress-O88q63Bk.mjs";import{t as c}from"./local-C6TLPAT6.mjs";import{n as l,r as u,t as d}from"./body-parser-BO6mfo_W.mjs";import{n as f,t as p}from"./input-validation-BwUR9z8e.mjs";import{n as m,r as h,t as g}from"./prompt-DTAWiEm2.mjs";import{t as _}from"./cli-types-CFw6Xygp.mjs";import{n as v,t as ee}from"./raw-fetch-DgezeshQ.mjs";function te(e){return e.option(`allow-code-mode`,{type:`boolean`,description:"Deprecated: use `code_mode` for new integrations. `true` maps to any non-off Code Mode policy; `false` maps to `code_mode: off`. If both fields are sent, they must be consistent or the request returns a 400."}).option(`code-mode`,{type:`string`,description:"Code Mode policy for this portal. `off`: Code Mode is unavailable; query parameters are ignored. `opt_in`: Code Mode is off by default; clients turn it on with `?codemode=search_and_execute`. `default_on`: Code Mode is on by default; clients can opt out with `?codemode=off`. `enforced`: Code Mode is always on; query parameters are ignored. Defaults to `opt_in` when omitted on create. If both `code_mode` and `allow_code_mode` are sent, they must be consistent or the request returns a 400.",choices:[`off`,`opt_in`,`default_on`,`enforced`]}).option(`description`,{type:`string`,description:`Optional description of the MCP portal.`}).option(`hostname`,{type:`string`,description:`Hostname where the MCP portal is available.`}).option(`id`,{type:`string`,description:`Unique identifier for the MCP portal.`}).option(`name`,{type:`string`,description:`Display name for the MCP portal.`}).option(`secure-web-gateway`,{type:`boolean`,description:`Route outbound MCP traffic through Zero Trust Secure Web Gateway.`,default:!1}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const y={command:`create`,describe:`Creates a new MCP portal for managing AI tool access through Cloudflare Access.`,builder:te,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp portals create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/portals`,pathParams:{},bodyKind:`json`,body:e.body===void 0?d({allow_code_mode:e[`allow-code-mode`],code_mode:f(e[`code-mode`],`code-mode`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),id:f(e.id,`id`,`text`),name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]}):l(e.body)});return}let r=await i(e),u=e.local?c:await n();if(e.accountId=u,e.body){let t=l(e.body);a(await s(`Creating`,async()=>r.zeroTrust.access.aiControls.mcp.portals.create({...t,account_id:u})),{successLabel:`Created`});return}e.hostname===void 0&&(e.hostname=await h(`hostname`,`Hostname where the MCP portal is available.`)),e.id===void 0&&(e.id=await h(`id`,`Unique identifier for the MCP portal.`)),e.name===void 0&&(e.name=await h(`name`,`Display name for the MCP portal.`));let p=d({allow_code_mode:e[`allow-code-mode`],code_mode:f(e[`code-mode`],`code-mode`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),id:f(e.id,`id`,`text`),name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]});a(await s(`Creating`,async()=>r.zeroTrust.access.aiControls.mcp.portals.create({...p,account_id:u})),{successLabel:`Created`})}};function b(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP portal.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const x={command:`delete <id>`,describe:`Deletes an MCP portal from the account.`,builder:b,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp portals delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/portals/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}`,pathParams:{id:String(e.id??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();if(e.accountId=l,!await g({force:!!e.force,message:`This operation permanently deletes the MCP portal.`})){process.stderr.write(`Aborted.
2
+ import{D as e,O as t,w as n}from"./oauth-DC9g9uK_.mjs";import{i as r,n as i}from"./auth-B1CY5zpC.mjs";import{t as a}from"./output-B6fBFRqe.mjs";import{n as o,t as s}from"./progress-BLQ2xXwD.mjs";import{t as c}from"./local-C6TLPAT6.mjs";import{n as l,r as u,t as d}from"./body-parser-BO6mfo_W.mjs";import{n as f,t as p}from"./input-validation-BwUR9z8e.mjs";import{n as m,r as h,t as g}from"./prompt-DcfYBioA.mjs";import{t as _}from"./cli-types-CFw6Xygp.mjs";import{n as v,t as ee}from"./raw-fetch-CeW1mW_u.mjs";function te(e){return e.option(`allow-code-mode`,{type:`boolean`,description:"Deprecated: use `code_mode` for new integrations. `true` maps to any non-off Code Mode policy; `false` maps to `code_mode: off`. If both fields are sent, they must be consistent or the request returns a 400."}).option(`code-mode`,{type:`string`,description:"Code Mode policy for this portal. `off`: Code Mode is unavailable; query parameters are ignored. `opt_in`: Code Mode is off by default; clients turn it on with `?codemode=search_and_execute`. `default_on`: Code Mode is on by default; clients can opt out with `?codemode=off`. `enforced`: Code Mode is always on; query parameters are ignored. Defaults to `opt_in` when omitted on create. If both `code_mode` and `allow_code_mode` are sent, they must be consistent or the request returns a 400.",choices:[`off`,`opt_in`,`default_on`,`enforced`]}).option(`description`,{type:`string`,description:`Optional description of the MCP portal.`}).option(`hostname`,{type:`string`,description:`Hostname where the MCP portal is available.`}).option(`id`,{type:`string`,description:`Unique identifier for the MCP portal.`}).option(`name`,{type:`string`,description:`Display name for the MCP portal.`}).option(`secure-web-gateway`,{type:`boolean`,description:`Route outbound MCP traffic through Zero Trust Secure Web Gateway.`,default:!1}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const y={command:`create`,describe:`Creates a new MCP portal for managing AI tool access through Cloudflare Access.`,builder:te,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp portals create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/portals`,pathParams:{},bodyKind:`json`,body:e.body===void 0?d({allow_code_mode:e[`allow-code-mode`],code_mode:f(e[`code-mode`],`code-mode`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),id:f(e.id,`id`,`text`),name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]}):l(e.body)});return}let r=await i(e),u=e.local?c:await n();if(e.accountId=u,e.body){let t=l(e.body);a(await s(`Creating`,async()=>r.zeroTrust.access.aiControls.mcp.portals.create({...t,account_id:u})),{successLabel:`Created`});return}e.hostname===void 0&&(e.hostname=await h(`hostname`,`Hostname where the MCP portal is available.`)),e.id===void 0&&(e.id=await h(`id`,`Unique identifier for the MCP portal.`)),e.name===void 0&&(e.name=await h(`name`,`Display name for the MCP portal.`));let p=d({allow_code_mode:e[`allow-code-mode`],code_mode:f(e[`code-mode`],`code-mode`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),id:f(e.id,`id`,`text`),name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]});a(await s(`Creating`,async()=>r.zeroTrust.access.aiControls.mcp.portals.create({...p,account_id:u})),{successLabel:`Created`})}};function b(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP portal.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const x={command:`delete <id>`,describe:`Deletes an MCP portal from the account.`,builder:b,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp portals delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/portals/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}`,pathParams:{id:String(e.id??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();if(e.accountId=l,!await g({force:!!e.force,message:`This operation permanently deletes the MCP portal.`})){process.stderr.write(`Aborted.
3
3
  `);return}a(await s(`Deleting`,async()=>r.zeroTrust.access.aiControls.mcp.portals.delete({account_id:l,id:e.id})),{successLabel:`Deleted`})}};function S(e){return e.option(`page`,{type:`number`,description:`Page`}).option(`per-page`,{type:`number`,description:`Per page`}).option(`search`,{type:`string`,description:`Search by id, name, hostname`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const C={command:`list`,describe:`Lists all MCP portals configured for the account.`,builder:S,handler:async e=>{let r={page:e.page,per_page:e[`per-page`],search:e.search};if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp portals list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/portals`,pathParams:{},query:r,bodyKind:`none`});return}let l=await i(e),u=e.local?c:await n();e.accountId=u,a(await s(`Loading`,async()=>l.zeroTrust.access.aiControls.mcp.portals.list({account_id:u,...r})),{successLabel:`Loaded`})}};function w(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP portal.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const T={command:`read <id>`,describe:`Read the details of a single MCP Portal, including its configured servers.`,builder:w,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp portals read`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/portals/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}`,pathParams:{id:String(e.id??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();e.accountId=l,a(await s(`Loading`,async()=>r.zeroTrust.access.aiControls.mcp.portals.read({account_id:l,id:e.id})),{successLabel:`Loaded`})}};function E(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP portal.`,demandOption:!0}).option(`allow-code-mode`,{type:`boolean`,description:"Deprecated: use `code_mode` for new integrations. `true` maps to any non-off Code Mode policy; `false` maps to `code_mode: off`. If both fields are sent, they must be consistent or the request returns a 400."}).option(`code-mode`,{type:`string`,description:"Code Mode policy for this portal. `off`: Code Mode is unavailable; query parameters are ignored. `opt_in`: Code Mode is off by default; clients turn it on with `?codemode=search_and_execute`. `default_on`: Code Mode is on by default; clients can opt out with `?codemode=off`. `enforced`: Code Mode is always on; query parameters are ignored. Defaults to `opt_in` when omitted on create. If both `code_mode` and `allow_code_mode` are sent, they must be consistent or the request returns a 400.",choices:[`off`,`opt_in`,`default_on`,`enforced`]}).option(`description`,{type:`string`,description:`Optional description of the MCP portal.`}).option(`hostname`,{type:`string`,description:`Hostname where the MCP portal is available.`}).option(`name`,{type:`string`,description:`Display name for the MCP portal.`}).option(`secure-web-gateway`,{type:`boolean`,description:`Route outbound MCP traffic through Zero Trust Secure Web Gateway.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const D={command:`update <id>`,describe:`Updates an MCP portal configuration.`,builder:E,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp portals update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/portals/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}`,pathParams:{id:String(e.id??``)},bodyKind:`json`,body:e.body===void 0?d({allow_code_mode:e[`allow-code-mode`],code_mode:f(e[`code-mode`],`code-mode`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]}):l(e.body)});return}let r=await i(e),u=e.local?c:await n();if(e.accountId=u,e.body){let t=l(e.body);a(await s(`Updating`,async()=>r.zeroTrust.access.aiControls.mcp.portals.update({...t,account_id:u,id:e.id})),{successLabel:`Updated`});return}let p=d({allow_code_mode:e[`allow-code-mode`],code_mode:f(e[`code-mode`],`code-mode`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]});a(await s(`Updating`,async()=>r.zeroTrust.access.aiControls.mcp.portals.update({...p,account_id:u,id:e.id})),{successLabel:`Updated`})}},O={command:`portals`,describe:`Access applications, policies, certificates, service tokens, groups, bookmarks, tags, and custom pages`,builder:e=>e.command(y).command(x).command(C).command(T).command(D).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function k(e){return e.option(`auth-credentials`,{type:`string`,description:'Static credential for the upstream MCP server. For auth_type "bearer", either a raw token string (e.g. "sk-abc123"), which is wrapped server-side as `Authorization: Bearer <token>`, or a JSON-encoded object of the form `{"headers":{"Header-Name":"value",...}}` for custom or multiple static headers (e.g. Cloudflare Access service tokens: `{"headers":{"cf-access-client-id":"...","cf-access-client-secret":"..."}}`).'}).option(`auth-type`,{type:`string`,description:`Authentication method used to connect to the upstream MCP server.`,choices:[`oauth`,`bearer`,`unauthenticated`]}).option(`client-secret`,{type:`string`,description:`Pre-registered OAuth client_secret. Write-only - accepted on create/update when auth_credentials.auth_mode is 'manual'. Stored AES-GCM-encrypted in server_oauth_secrets; never returned by read endpoints.`}).option(`description`,{type:`string`,description:`Optional description of the MCP server.`}).option(`hostname`,{type:`string`,description:`URL of the upstream MCP endpoint.`}).option(`id`,{type:`string`,description:`Unique identifier for the MCP server.`}).option(`is-shared-oauth-callback-enabled`,{type:`boolean`,description:`When true, the gateway worker uses the shared Cloudflare-owned OAuth callback endpoint as the redirect_uri for upstream on-behalf OAuth, instead of the customer portal hostname. Defaults to false (off); opt in per server by setting true.`,default:!1}).option(`name`,{type:`string`,description:`Display name for the MCP server.`}).option(`secure-web-gateway`,{type:`boolean`,description:`Route outbound traffic to this MCP server through Zero Trust Secure Web Gateway.`,default:!1}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const A={command:`create`,describe:`Creates a new MCP server for connecting to an upstream MCP endpoint.`,builder:k,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp servers create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/servers`,pathParams:{},bodyKind:`json`,body:e.body===void 0?d({auth_credentials:f(e[`auth-credentials`],`auth-credentials`,`text`),auth_type:f(e[`auth-type`],`auth-type`,`text`),client_secret:f(e[`client-secret`],`client-secret`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),id:f(e.id,`id`,`text`),is_shared_oauth_callback_enabled:e[`is-shared-oauth-callback-enabled`],name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]}):l(e.body)});return}let r=await i(e),u=e.local?c:await n();if(e.accountId=u,e.body){let t=l(e.body);a(await s(`Creating`,async()=>r.zeroTrust.access.aiControls.mcp.servers.create({...t,account_id:u})),{successLabel:`Created`});return}e[`auth-type`]===void 0&&(e[`auth-type`]=await m(`auth-type`,`Authentication method used to connect to the upstream MCP server.`,[`oauth`,`bearer`,`unauthenticated`])),e.hostname===void 0&&(e.hostname=await h(`hostname`,`URL of the upstream MCP endpoint.`)),e.id===void 0&&(e.id=await h(`id`,`Unique identifier for the MCP server.`)),e.name===void 0&&(e.name=await h(`name`,`Display name for the MCP server.`));let p=d({auth_credentials:f(e[`auth-credentials`],`auth-credentials`,`text`),auth_type:f(e[`auth-type`],`auth-type`,`text`),client_secret:f(e[`client-secret`],`client-secret`,`text`),description:f(e.description,`description`,`text`),hostname:f(e.hostname,`hostname`,`text`),id:f(e.id,`id`,`text`),is_shared_oauth_callback_enabled:e[`is-shared-oauth-callback-enabled`],name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]});a(await s(`Creating`,async()=>r.zeroTrust.access.aiControls.mcp.servers.create({...p,account_id:u})),{successLabel:`Created`})}};function j(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP server.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const M={command:`delete <id>`,describe:`Deletes an MCP server from the account.`,builder:j,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp servers delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/servers/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}`,pathParams:{id:String(e.id??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();if(e.accountId=l,!await g({force:!!e.force,message:`This operation permanently deletes the MCP server, removes it from every portal, and deletes its stored OAuth secrets.`})){process.stderr.write(`Aborted.
4
4
  `);return}a(await s(`Deleting`,async()=>r.zeroTrust.access.aiControls.mcp.servers.delete({account_id:l,id:e.id})),{successLabel:`Deleted`})}};function N(e){return e.option(`page`,{type:`number`,description:`Page`}).option(`per-page`,{type:`number`,description:`Per page`}).option(`search`,{type:`string`,description:`Search by id, name`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const P={command:`list`,describe:`Lists all MCP servers configured for the account.`,builder:N,handler:async e=>{let r={page:e.page,per_page:e[`per-page`],search:e.search};if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp servers list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/servers`,pathParams:{},query:r,bodyKind:`none`});return}let l=await i(e),u=e.local?c:await n();e.accountId=u,a(await s(`Loading`,async()=>l.zeroTrust.access.aiControls.mcp.servers.list({account_id:u,...r})),{successLabel:`Loaded`})}};function F(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP server.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const I={command:`read <id>`,describe:`Retrieves an MCP server's configuration and capability sync state.`,builder:F,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp servers read`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/servers/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}`,pathParams:{id:String(e.id??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();e.accountId=l,a(await s(`Loading`,async()=>r.zeroTrust.access.aiControls.mcp.servers.read({account_id:l,id:e.id})),{successLabel:`Loaded`})}};function L(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP server.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const R={command:`sync <id>`,describe:`Syncs an MCP server's capabilities and returns the updated server state, including any connection errors.`,builder:L,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp servers sync`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/servers/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}/sync`,pathParams:{id:String(e.id??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();e.accountId=l,a(await s(`Creating`,async()=>r.zeroTrust.access.aiControls.mcp.servers.sync({account_id:l,id:e.id})),{successLabel:`Created`})}};function z(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the MCP server.`,demandOption:!0}).option(`auth-credentials`,{type:`string`,description:'Static credential for the upstream MCP server. For auth_type "bearer", either a raw token string (e.g. "sk-abc123"), which is wrapped server-side as `Authorization: Bearer <token>`, or a JSON-encoded object of the form `{"headers":{"Header-Name":"value",...}}` for custom or multiple static headers (e.g. Cloudflare Access service tokens: `{"headers":{"cf-access-client-id":"...","cf-access-client-secret":"..."}}`).'}).option(`client-secret`,{type:`string`,description:`Pre-registered OAuth client_secret. Write-only - accepted on create/update when auth_credentials.auth_mode is 'manual'. Stored AES-GCM-encrypted in server_oauth_secrets; never returned by read endpoints.`}).option(`description`,{type:`string`,description:`Optional description of the MCP server.`}).option(`is-shared-oauth-callback-enabled`,{type:`boolean`,description:`When true, the gateway worker uses the shared Cloudflare-owned OAuth callback endpoint as the redirect_uri for upstream on-behalf OAuth, instead of the customer portal hostname. Defaults to false (off); opt in per server by setting true.`}).option(`name`,{type:`string`,description:`Display name for the MCP server.`}).option(`secure-web-gateway`,{type:`boolean`,description:`Route outbound traffic to this MCP server through Zero Trust Secure Web Gateway.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const B={command:`update <id>`,describe:`Updates an MCP server's configuration and credentials.`,builder:z,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access ai-controls mcp servers update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/ai-controls/mcp/servers/${e.id==null?`<id>`:encodeURIComponent(String(e.id))}`,pathParams:{id:String(e.id??``)},bodyKind:`json`,body:e.body===void 0?d({auth_credentials:f(e[`auth-credentials`],`auth-credentials`,`text`),client_secret:f(e[`client-secret`],`client-secret`,`text`),description:f(e.description,`description`,`text`),is_shared_oauth_callback_enabled:e[`is-shared-oauth-callback-enabled`],name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]}):l(e.body)});return}let r=await i(e),u=e.local?c:await n();if(e.accountId=u,e.body){let t=l(e.body);a(await s(`Updating`,async()=>r.zeroTrust.access.aiControls.mcp.servers.update({...t,account_id:u,id:e.id})),{successLabel:`Updated`});return}let p=d({auth_credentials:f(e[`auth-credentials`],`auth-credentials`,`text`),client_secret:f(e[`client-secret`],`client-secret`,`text`),description:f(e.description,`description`,`text`),is_shared_oauth_callback_enabled:e[`is-shared-oauth-callback-enabled`],name:f(e.name,`name`,`text`),secure_web_gateway:e[`secure-web-gateway`]});a(await s(`Updating`,async()=>r.zeroTrust.access.aiControls.mcp.servers.update({...p,account_id:u,id:e.id})),{successLabel:`Updated`})}},V={command:`servers`,describe:`Access applications, policies, certificates, service tokens, groups, bookmarks, tags, and custom pages`,builder:e=>e.command(A).command(M).command(P).command(I).command(R).command(B).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},H={command:`mcp`,describe:`Operations for access.ai-controls.mcp`,builder:e=>e.command(O).command(V).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},U={command:`ai-controls`,describe:`Operations for access.ai-controls`,builder:e=>e.command(H).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function W(e){return e.positional(`app-id`,{type:`string`,description:`UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const G={command:`create <app-id>`,describe:`Generates a new short-lived certificate CA and public key.`,builder:W,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access applications cas create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/apps/${e[`app-id`]==null?`<app-id>`:encodeURIComponent(String(e[`app-id`]))}/ca`,pathParams:{"app-id":String(e[`app-id`]??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();e.accountId=l,a(await s(`Creating`,async()=>r.zeroTrust.access.applications.cas.create({account_id:l,app_id:e[`app-id`]})),{successLabel:`Created`})}};function K(e){return e.positional(`app-id`,{type:`string`,description:`UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const q={command:`delete <app-id>`,describe:`Deletes a short-lived certificate CA.`,builder:K,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access applications cas delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/apps/${e[`app-id`]==null?`<app-id>`:encodeURIComponent(String(e[`app-id`]))}/ca`,pathParams:{"app-id":String(e[`app-id`]??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();if(e.accountId=l,!await g({force:!!e.force})){process.stderr.write(`Aborted.
5
5
  `);return}a(await s(`Deleting`,async()=>r.zeroTrust.access.applications.cas.delete({account_id:l,app_id:e[`app-id`]})),{successLabel:`Deleted`})}};function J(e){return e.positional(`app-id`,{type:`string`,description:`UUID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Y={command:`get <app-id>`,describe:`Fetches a short-lived certificate CA and its public key.`,builder:J,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access applications cas get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/apps/${e[`app-id`]==null?`<app-id>`:encodeURIComponent(String(e[`app-id`]))}/ca`,pathParams:{"app-id":String(e[`app-id`]??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();e.accountId=l,a(await s(`Loading`,async()=>r.zeroTrust.access.applications.cas.get({account_id:l,app_id:e[`app-id`]})),{successLabel:`Loaded`})}};function X(e){return e.option(`page`,{type:`number`,description:`Page number of results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Z={command:`list`,describe:`Lists short-lived certificate CAs and their public keys.`,builder:X,handler:async e=>{let r={page:e.page,per_page:e[`per-page`]};if(e.dryRun){o({command:`cf zero-trust access applications cas list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/apps/ca`,pathParams:{},query:r,bodyKind:`none`});return}let l=await i(e),u=e.local?c:await n();e.accountId=u,a(await s(`Loading`,async()=>l.zeroTrust.access.applications.cas.list({account_id:u,...r})),{successLabel:`Loaded`})}},Q={command:`cas`,describe:`Operations for access.applications.cas`,builder:e=>e.command(G).command(q).command(Y).command(Z).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ne(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const re={command:`create`,describe:`Adds a new application to Access.`,builder:ne,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access applications create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/apps`,pathParams:{},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let r=await i(e),u=e.local?c:await n();if(e.accountId=u,e.body){let t=l(e.body);a(await s(`Creating`,async()=>r.zeroTrust.access.applications.create({body:t,account_id:u})),{successLabel:`Created`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function ie(e){return e.positional(`app-id`,{type:`string`,description:`Identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const ae={command:`delete <app-id>`,describe:`Deletes an application from Access.`,builder:ie,handler:async e=>{if(e.dryRun){o({command:`cf zero-trust access applications delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await t()??`<account-id>`}/access/apps/${e[`app-id`]==null?`<app-id>`:encodeURIComponent(String(e[`app-id`]))}`,pathParams:{"app-id":String(e[`app-id`]??``)},bodyKind:`none`});return}let r=await i(e),l=e.local?c:await n();if(e.accountId=l,!await g({force:!!e.force})){process.stderr.write(`Aborted.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{D as e}from"./oauth-DBJ5GSFk.mjs";import{n as t}from"./auth-CZ0E51rF.mjs";import{t as n}from"./output-B6fBFRqe.mjs";import{n as r,t as i}from"./progress-O88q63Bk.mjs";function a(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const o={command:`activate`,describe:`Triggeres a new activation check for a PENDING Zone. This can be triggered every 5 min for paygo/ent customers, every hour for FREE Zones.`,builder:a,handler:async a=>{if(a.dryRun){r({command:`cf zone activate`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/activation_check`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Updating`,async()=>o.zone.activate({zone_id:s})),{successLabel:`Updated`})}},s={command:`zone`,describe:`zone`,builder:e=>e.command(o).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{s as default};
2
+ import{D as e}from"./oauth-DC9g9uK_.mjs";import{n as t}from"./auth-B1CY5zpC.mjs";import{t as n}from"./output-B6fBFRqe.mjs";import{n as r,t as i}from"./progress-BLQ2xXwD.mjs";function a(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const o={command:`activate`,describe:`Triggeres a new activation check for a PENDING Zone. This can be triggered every 5 min for paygo/ent customers, every hour for FREE Zones.`,builder:a,handler:async a=>{if(a.dryRun){r({command:`cf zone activate`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/activation_check`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Updating`,async()=>o.zone.activate({zone_id:s})),{successLabel:`Updated`})}},s={command:`zone`,describe:`zone`,builder:e=>e.command(o).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{s as default};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{D as e}from"./oauth-DBJ5GSFk.mjs";import{n as t}from"./auth-CZ0E51rF.mjs";import{t as n}from"./output-B6fBFRqe.mjs";import{n as r,t as i}from"./progress-O88q63Bk.mjs";import{n as a,t as o}from"./body-parser-BO6mfo_W.mjs";import{n as s}from"./input-validation-BwUR9z8e.mjs";import{n as c,r as l,t as u}from"./prompt-DTAWiEm2.mjs";import{t as d}from"./cli-types-CFw6Xygp.mjs";function f(e){return e.option(`value-enabled`,{type:`boolean`,description:`Whether the feature is enabled or not.`}).option(`value-pool-id`,{type:`string`,description:`Egress pool id which refers to a grouping of dedicated egress IPs through which Cloudflare will connect to origin.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const ee={command:`edit`,describe:`Aegis provides dedicated egress IPs (from Cloudflare to your origin) for your layer 7 WAF and CDN services. The egress IPs are reserved exclusively for your account so that you can increase your origin security by only allowing traffic from a small list of IP addresses.`,builder:f,handler:async c=>{if(c.dryRun){r({command:`cf zones aegis edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${c.zone??c.zoneId??`<zone>`}/settings/aegis`,pathParams:{"zone-id":String(c.zone??c[`zone-id`]??``)},bodyKind:`json`,body:c.body===void 0?o({value:{enabled:c[`value-enabled`],pool_id:s(c[`value-pool-id`],`value-pool-id`,`text`)}}):a(c.body)});return}let l=await t(c),u=await e({zone:c.zone},l,{quiet:c.quiet});if(c.zoneId=u,c.body){let e=a(c.body);n(await i(`Updating`,async()=>l.zones.aegis.edit({...e,zone_id:u})),{successLabel:`Updated`});return}let d=o({value:{enabled:c[`value-enabled`],pool_id:s(c[`value-pool-id`],`value-pool-id`,`text`)}});n(await i(`Updating`,async()=>l.zones.aegis.edit({...d,zone_id:u})),{successLabel:`Updated`})}};function te(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const p={command:`get`,describe:`Aegis provides dedicated egress IPs (from Cloudflare to your origin) for your layer 7 WAF and CDN services. The egress IPs are reserved exclusively for your account so that you can increase your origin security by only allowing traffic from a small list of IP addresses.`,builder:te,handler:async a=>{if(a.dryRun){r({command:`cf zones aegis get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/settings/aegis`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.zones.aegis.get({zone_id:s})),{successLabel:`Loaded`})}},m={command:`aegis`,describe:`Aegis operations`,builder:e=>e.command(ee).command(p).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function h(e){return e.option(`account-id`,{type:`string`,description:`Identifier`}).option(`name`,{type:`string`,description:`The domain name. Per [RFC 1035](https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4) the overall zone name can be up to 253 characters, with each segment ("label") not exceeding 63 characters.`}).option(`type`,{type:`string`,description:`A full zone implies that DNS is hosted with Cloudflare. A partial zone is
2
+ import{D as e}from"./oauth-DC9g9uK_.mjs";import{n as t}from"./auth-B1CY5zpC.mjs";import{t as n}from"./output-B6fBFRqe.mjs";import{n as r,t as i}from"./progress-BLQ2xXwD.mjs";import{n as a,t as o}from"./body-parser-BO6mfo_W.mjs";import{n as s}from"./input-validation-BwUR9z8e.mjs";import{n as c,r as l,t as u}from"./prompt-DcfYBioA.mjs";import{t as d}from"./cli-types-CFw6Xygp.mjs";function f(e){return e.option(`value-enabled`,{type:`boolean`,description:`Whether the feature is enabled or not.`}).option(`value-pool-id`,{type:`string`,description:`Egress pool id which refers to a grouping of dedicated egress IPs through which Cloudflare will connect to origin.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const ee={command:`edit`,describe:`Aegis provides dedicated egress IPs (from Cloudflare to your origin) for your layer 7 WAF and CDN services. The egress IPs are reserved exclusively for your account so that you can increase your origin security by only allowing traffic from a small list of IP addresses.`,builder:f,handler:async c=>{if(c.dryRun){r({command:`cf zones aegis edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${c.zone??c.zoneId??`<zone>`}/settings/aegis`,pathParams:{"zone-id":String(c.zone??c[`zone-id`]??``)},bodyKind:`json`,body:c.body===void 0?o({value:{enabled:c[`value-enabled`],pool_id:s(c[`value-pool-id`],`value-pool-id`,`text`)}}):a(c.body)});return}let l=await t(c),u=await e({zone:c.zone},l,{quiet:c.quiet});if(c.zoneId=u,c.body){let e=a(c.body);n(await i(`Updating`,async()=>l.zones.aegis.edit({...e,zone_id:u})),{successLabel:`Updated`});return}let d=o({value:{enabled:c[`value-enabled`],pool_id:s(c[`value-pool-id`],`value-pool-id`,`text`)}});n(await i(`Updating`,async()=>l.zones.aegis.edit({...d,zone_id:u})),{successLabel:`Updated`})}};function te(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const p={command:`get`,describe:`Aegis provides dedicated egress IPs (from Cloudflare to your origin) for your layer 7 WAF and CDN services. The egress IPs are reserved exclusively for your account so that you can increase your origin security by only allowing traffic from a small list of IP addresses.`,builder:te,handler:async a=>{if(a.dryRun){r({command:`cf zones aegis get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/settings/aegis`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.zones.aegis.get({zone_id:s})),{successLabel:`Loaded`})}},m={command:`aegis`,describe:`Aegis operations`,builder:e=>e.command(ee).command(p).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function h(e){return e.option(`account-id`,{type:`string`,description:`Identifier`}).option(`name`,{type:`string`,description:`The domain name. Per [RFC 1035](https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4) the overall zone name can be up to 253 characters, with each segment ("label") not exceeding 63 characters.`}).option(`type`,{type:`string`,description:`A full zone implies that DNS is hosted with Cloudflare. A partial zone is
3
3
  typically a partner-hosted zone or a CNAME setup.
4
4
  `,choices:[`full`,`partial`,`secondary`,`internal`],default:`full`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const g={command:`create`,describe:`Creates a new zone (domain) in your Cloudflare account. The zone is created in a pending state and must be activated by updating your domain's nameservers to point to Cloudflare, or by completing the verification process for partial (CNAME) setups.`,builder:h,handler:async e=>{if(e.dryRun){r({command:`cf zones create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones`,pathParams:{},bodyKind:`json`,body:e.body===void 0?o({account:{id:s(e[`account-id`],`account-id`,`text`)},name:s(e.name,`name`,`text`),type:s(e.type,`type`,`text`)}):a(e.body)});return}let c=await t(e);if(e.body){let t=a(e.body);n(await i(`Creating`,async()=>c.zones.create({...t})),{successLabel:`Created`});return}e.name===void 0&&(e.name=await l(`name`,`The domain name. Per [RFC 1035](https://datatracker.ietf.org/doc/html/rfc1035#section-2.3.4) the overall zone name can be up to 253 characters, with each segment ("label") not exceeding 63 characters.`));let u=o({account:{id:s(e[`account-id`],`account-id`,`text`)},name:s(e.name,`name`,`text`),type:s(e.type,`type`,`text`)});n(await i(`Creating`,async()=>c.zones.create({...u})),{successLabel:`Created`})}};function _(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const v={command:`delete`,describe:`Deletes an existing zone.`,builder:_,handler:async a=>{if(a.dryRun){r({command:`cf zones delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});if(a.zoneId=s,!await u({force:!!a.force})){process.stderr.write(`Aborted.
5
5
  `);return}n(await i(`Deleting`,async()=>o.zones.delete({zone_id:s})),{successLabel:`Deleted`})}};function y(e){return e.option(`paused`,{type:`boolean`,description:`Indicates whether the zone is only using Cloudflare DNS services. A
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cf",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "The Cloudflare CLI",
5
5
  "keywords": [
6
6
  "ai",
@@ -32,6 +32,7 @@
32
32
  "type": "module",
33
33
  "main": "./dist/index.mjs",
34
34
  "imports": {
35
+ "#commands/*": "./src/commands/*",
35
36
  "#lib/*": "./src/lib/*",
36
37
  "#sdk": "./src/sdk/sdk/index.ts"
37
38
  },
@@ -44,12 +45,12 @@
44
45
  "@clack/prompts": "^1.2.0",
45
46
  "@cloudflare/build-output-utils": "^0.1.0",
46
47
  "@cloudflare/cli-shared-helpers": "^0.1.0",
47
- "@cloudflare/config": "^0.4.0",
48
- "@cloudflare/deploy-helpers": "file:../../vendor/cloudflare-deploy-helpers-0.4.0.tgz",
48
+ "@cloudflare/config": "^0.7.0",
49
+ "@cloudflare/deploy-helpers": "file:../../vendor/cloudflare-deploy-helpers-0.8.0.tgz",
49
50
  "@cloudflare/forge": "file:../../vendor/cloudflare-forge-0.1.0.tgz",
50
51
  "@cloudflare/forge-transformer-sdk-ts": "file:../../vendor/cloudflare-forge-transformer-sdk-ts-0.1.0.tgz",
51
52
  "@cloudflare/workers-auth": "file:../../vendor/cloudflare-workers-auth-0.4.2.tgz",
52
- "@cloudflare/workers-utils": "file:../../vendor/cloudflare-workers-utils-0.26.0.tgz",
53
+ "@cloudflare/workers-utils": "file:../../vendor/cloudflare-workers-utils-0.34.0.tgz",
53
54
  "@types/node": "25.3.5",
54
55
  "@types/yargs": "17.0.35",
55
56
  "am-i-vibing": "^0.1.1",