cf 0.2.0 → 0.3.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.
- package/dist/_meta/agent-context.json +63 -62
- package/dist/_meta/commands.json +12365 -9690
- package/dist/_meta/schemas.json +19206 -15404
- package/dist/abuse-reports-dMIfUJ8v.mjs +8 -0
- package/dist/accounts-Kx1epdA1.mjs +22 -0
- package/dist/acm-Utu252kC.mjs +3 -0
- package/dist/addressing-CBq7Z7Vq.mjs +12 -0
- package/dist/{agent-context-D26woB9J.mjs → agent-context-BGTU299M.mjs} +1 -1
- package/dist/ai-DOOKLPkG.mjs +2 -0
- package/dist/ai-gateway-Cj1T3avF.mjs +8 -0
- package/dist/ai-search-CQF_Sn7d.mjs +7 -0
- package/dist/ai_gateway-C3fH22C0.mjs +4 -0
- package/dist/alerting-CqmEIaKn.mjs +6 -0
- package/dist/analytics-Dv-X8x7D.mjs +20 -0
- package/dist/analytics_engine-DdXVR8z2.mjs +2 -0
- package/dist/api-gateway-CNv0IHTU.mjs +33 -0
- package/dist/argo-CX_A4kcn.mjs +2 -0
- package/dist/audit-logs-BfBf3oo-.mjs +2 -0
- package/dist/auth-SyWhMmPu.mjs +6 -0
- package/dist/auth-ffdf9yR0.mjs +135 -0
- package/dist/autorag-BuGhGTeZ.mjs +2 -0
- package/dist/billing-PoG81XaQ.mjs +2 -0
- package/dist/body-parser-DKa8Ipg1.mjs +2 -0
- package/dist/bot-management-CFvtVx62.mjs +5 -0
- package/dist/botnet-feed-B-M4Yu0W.mjs +3 -0
- package/dist/brand-protection-D05Eg-_6.mjs +3 -0
- package/dist/browser-rendering-xu8F_Rrv.mjs +4 -0
- package/dist/{build-5jmmOZhm.mjs → build-DYkGW4dh.mjs} +1 -1
- package/dist/cache-DsoW6Xwv.mjs +5 -0
- package/dist/calls-CZbO7TyR.mjs +4 -0
- package/dist/certificate-authorities-D2yr7_3t.mjs +2 -0
- package/dist/cli-types-CRIDdDw3.mjs +2 -0
- package/dist/client-certificates-MJcDsTId.mjs +3 -0
- package/dist/cloud-connector-DWOrN2eM.mjs +2 -0
- package/dist/cloudforce-one-2Bhz8YdW.mjs +21 -0
- package/dist/{completions-BKrxcfhN.mjs → completions-BwRpZQVn.mjs} +1 -1
- package/dist/connectivity-BX8C7tvK.mjs +3 -0
- package/dist/content-scanning-r6uzMO1r.mjs +4 -0
- package/dist/context-DGlHRGWM.mjs +2 -0
- package/dist/custom-certificates-aAiEguR7.mjs +5 -0
- package/dist/custom-hostnames-AG5yBHIi.mjs +5 -0
- package/dist/custom-nameservers-D1DtlRue.mjs +3 -0
- package/dist/custom-pages-DQCi2plU.mjs +4 -0
- package/dist/d1-DbnYhw45.mjs +4 -0
- package/dist/data-security-D_EtYBfo.mjs +6 -0
- package/dist/dcv-delegation-CHspSzTI.mjs +2 -0
- package/dist/{deploy-DbkiIzUr.mjs → deploy-CQial3kN.mjs} +1 -1
- package/dist/{dev-C6iSuQZm.mjs → dev-B38LfCTl.mjs} +1 -1
- package/dist/diagnostics-BJQGjVJn.mjs +3 -0
- package/dist/dispatch-namespaces-DmHvoBOg.mjs +7 -0
- package/dist/{dist-CnSubA1Z.mjs → dist-AIcZFk0U.mjs} +7 -7
- package/dist/dns-VMhQSr5n.mjs +29 -0
- package/dist/dns-firewall-B4DVXFBQ.mjs +57 -0
- package/dist/durable-objects-CTboySEo.mjs +2 -0
- package/dist/email-routing-tIR2SFu-.mjs +10 -0
- package/dist/email-security-Ca1id3rZ.mjs +8 -0
- package/dist/email-sending-DwWKc5jC.mjs +3 -0
- package/dist/filters-A4dg_a68.mjs +4 -0
- package/dist/firewall-DWPQgYd9.mjs +11 -0
- package/dist/fraud-BMkSsJGU.mjs +20 -0
- package/dist/google-tag-gateway-BGD49nRC.mjs +2 -0
- package/dist/healthchecks-CtIfrFql.mjs +4 -0
- package/dist/hostnames-BiomxukN.mjs +3 -0
- package/dist/hyperdrive-Da104VaQ.mjs +18 -0
- package/dist/iam-BIGKo0WW.mjs +6 -0
- package/dist/images-BO8FbDAa.mjs +5 -0
- package/dist/index.mjs +1 -1
- package/dist/intel-CY6_79v8.mjs +3 -0
- package/dist/{ips-B8fwxKZD.mjs → ips-K4bzaGqd.mjs} +1 -1
- package/dist/keyless-certificates-CZC-L8gM.mjs +3 -0
- package/dist/kv-8o27w_pY.mjs +5 -0
- package/dist/leaked-credential-checks-qLzRyu85.mjs +3 -0
- package/dist/load-balancers-DtG8nj25.mjs +6 -0
- package/dist/logpush-4L0njy1d.mjs +4 -0
- package/dist/logs-B_Yp95hv.mjs +3 -0
- package/dist/magic-cloud-networking-CSOM3EM-.mjs +5 -0
- package/dist/magic-network-monitoring-BnwvM4-I.mjs +4 -0
- package/dist/magic-transit-CXDyvhxq.mjs +90 -0
- package/dist/managed-transforms-D15yVbZx.mjs +3 -0
- package/dist/mtls-certificates-D8k0AXWK.mjs +3 -0
- package/dist/network-interconnects-rrr7red3.mjs +36 -0
- package/dist/observability-DWvpqnQJ.mjs +4 -0
- package/dist/organizations-T77D50Sq.mjs +41 -0
- package/dist/origin-ca-certificates-DXIvD8H5.mjs +3 -0
- package/dist/origin-post-quantum-encryption-C8oOczyV.mjs +2 -0
- package/dist/origin-tls-client-auth-CaVW1Ztp.mjs +4 -0
- package/dist/output-BJFNwj7b.mjs +2 -0
- package/dist/page-rules-CjZPTMQX.mjs +18 -0
- package/dist/page-shield-D5RRNJCY.mjs +37 -0
- package/dist/pages-CWJtJnL0.mjs +11 -0
- package/dist/pipelines-B0L_7j9e.mjs +6 -0
- package/dist/{progress-CjcQ6ato.mjs → progress-CrCGTq7N.mjs} +1 -1
- package/dist/queues-CN6DPhRR.mjs +6 -0
- package/dist/r2-DQIcyRtA.mjs +21 -0
- package/dist/r2-data-catalog-Bbo93TJx.mjs +14 -0
- package/dist/radar-Bxb0WX8V.mjs +2 -0
- package/dist/rate-limits-DcrQV6Ar.mjs +5 -0
- package/dist/raw-fetch-Dlccg0Tr.mjs +2 -0
- package/dist/realtime-kit-CaquuVOE.mjs +18 -0
- package/dist/registrar-Ko-xZemf.mjs +46 -0
- package/dist/request-tracers-DOW_reTJ.mjs +2 -0
- package/dist/{resolve-BuJRWSk0.mjs → resolve-4-OSeHlK.mjs} +1 -1
- package/dist/resource-sharing-D7TX0JV0.mjs +5 -0
- package/dist/resource-tagging-C3qtLzCz.mjs +16 -0
- package/dist/rules-BXRADHL5.mjs +4 -0
- package/dist/rulesets-CBgpeSvJ.mjs +8 -0
- package/dist/rum-BjPptTUP.mjs +4 -0
- package/dist/{schema-CHBfkARI.mjs → schema-D16TgWBg.mjs} +1 -1
- package/dist/schema-validation-Dgv_opM3.mjs +24 -0
- package/dist/scim-DdSEr4kZ.mjs +3 -0
- package/dist/secrets-store-7BfyvJLb.mjs +25 -0
- package/dist/security-center-DAy6AKtT.mjs +2 -0
- package/dist/security-txt-xAMb7K6Y.mjs +3 -0
- package/dist/session-COHHdS7A.mjs +5 -0
- package/dist/{shared-DEzmTsEC.mjs → shared-AGtpXwwL.mjs} +1 -1
- package/dist/smart-shield-TeWZFnH2.mjs +3 -0
- package/dist/snippets-CCSsCXVs.mjs +4 -0
- package/dist/{spawn-13QQ0IwO.mjs → spawn-DcppKGI5.mjs} +1 -1
- package/dist/spectrum-CTTZID8u.mjs +63 -0
- package/dist/speed-CuzTE0AL.mjs +4 -0
- package/dist/{src-B9cKsgsg.mjs → src-BW6vfAwE.mjs} +10 -10
- package/dist/ssl-BWA2LdwC.mjs +15 -0
- package/dist/stream-GFsIZ-pP.mjs +14 -0
- package/dist/tenants-Bd7NGQ_m.mjs +2 -0
- package/dist/token-validation-DAgtFOvs.mjs +10 -0
- package/dist/{tools-B7QiNu-d.mjs → tools-DXQmfFuE.mjs} +1 -1
- package/dist/turnstile-cfdaO4ca.mjs +23 -0
- package/dist/{ui-BXjU1dX1.mjs → ui-D4KtlMh9.mjs} +1 -1
- package/dist/url-normalization-B5RN4nLD.mjs +3 -0
- package/dist/url-scanner-BrZ1L9OC.mjs +2 -0
- package/dist/user-CAo-yCJA.mjs +10 -0
- package/dist/vectorize-C7_oQlaI.mjs +4 -0
- package/dist/{versions-DzyrlUAi.mjs → versions-CUwWJWmy.mjs} +1 -1
- package/dist/waiting-rooms-Dln5ICg5.mjs +11 -0
- package/dist/web3-HQJRm38W.mjs +4 -0
- package/dist/workers-Dg7ddG2Q.mjs +18 -0
- package/dist/workers-builds-AVfx8IyL.mjs +7 -0
- package/dist/workflows-VquuSh2J.mjs +4 -0
- package/dist/zaraz-xYSWIV4P.mjs +2 -0
- package/dist/zero-trust-CP96wnSh.mjs +118 -0
- package/dist/zones-BSgmZ9WC.mjs +21 -0
- package/package.json +4 -3
- package/dist/abuse-reports-KtfZhi6j.mjs +0 -8
- package/dist/accounts-BopMfODC.mjs +0 -21
- package/dist/acm-BT4vlnEJ.mjs +0 -3
- package/dist/addressing-B3uFxHst.mjs +0 -13
- package/dist/ai-DWHqwMap.mjs +0 -2
- package/dist/ai-gateway-CbKEO-3o.mjs +0 -8
- package/dist/ai-search-VnOQ5n--.mjs +0 -7
- package/dist/alerting-BmmgIlIO.mjs +0 -6
- package/dist/analytics-isY03taL.mjs +0 -20
- package/dist/api-gateway-DXurEbA-.mjs +0 -33
- package/dist/argo-B02BL_hp.mjs +0 -2
- package/dist/audit-logs-DcgR9xUc.mjs +0 -2
- package/dist/auth-CQcAgnOy.mjs +0 -135
- package/dist/auth-DenWm_X0.mjs +0 -6
- package/dist/autorag-CmrwnGVj.mjs +0 -2
- package/dist/billing-CaW1ZAB1.mjs +0 -2
- package/dist/body-parser-Br-BoYk-.mjs +0 -2
- package/dist/bot-management-CeBsFx68.mjs +0 -5
- package/dist/botnet-feed-B396vQeQ.mjs +0 -3
- package/dist/brand-protection-D4V1v5Kl.mjs +0 -3
- package/dist/browser-rendering-GF7rNtKI.mjs +0 -4
- package/dist/builds-C_ySULja.mjs +0 -2
- package/dist/cache-DmXizSMi.mjs +0 -5
- package/dist/calls-x4KQpTB4.mjs +0 -4
- package/dist/certificate-authorities-hC0SG-Ga.mjs +0 -2
- package/dist/client-certificates-BGVsDyeJ.mjs +0 -3
- package/dist/cloud-connector-BClQpEzI.mjs +0 -2
- package/dist/cloudforce-one-BfhFrO6M.mjs +0 -21
- package/dist/connectivity-G0NP6LtW.mjs +0 -3
- package/dist/content-scanning-DEtPJ7aF.mjs +0 -4
- package/dist/context-CC0Rhkhy.mjs +0 -2
- package/dist/custom-certificates-rJXFpUWu.mjs +0 -5
- package/dist/custom-hostnames-Be5mgLeF.mjs +0 -5
- package/dist/custom-nameservers-CoFdy6hD.mjs +0 -3
- package/dist/custom-pages-D-oErw57.mjs +0 -4
- package/dist/d1-C95ckPKI.mjs +0 -3
- package/dist/dcv-delegation-CWSkbGuc.mjs +0 -2
- package/dist/diagnostics-DEEhPnXj.mjs +0 -3
- package/dist/dispatch-namespaces-BzXeV7PH.mjs +0 -7
- package/dist/dns-firewall-BQXD_NxG.mjs +0 -57
- package/dist/dns-qW-3TZOT.mjs +0 -29
- package/dist/durable-objects-CgWFYEJJ.mjs +0 -2
- package/dist/email-routing-tdNJaCpJ.mjs +0 -10
- package/dist/email-security-DTVHNr2h.mjs +0 -60
- package/dist/email-sending-DsFTvE31.mjs +0 -3
- package/dist/filters-DO1Is_tI.mjs +0 -4
- package/dist/firewall-DbUhVTCg.mjs +0 -11
- package/dist/fraud-Bzr4njYb.mjs +0 -8
- package/dist/google-tag-gateway-BQxkA90M.mjs +0 -2
- package/dist/healthchecks-BBAs-lS_.mjs +0 -4
- package/dist/hostnames-Dz9PEUKS.mjs +0 -3
- package/dist/hyperdrive-B1iUJddG.mjs +0 -18
- package/dist/iam-CJM8gHpG.mjs +0 -6
- package/dist/images-DEoBmtFS.mjs +0 -5
- package/dist/intel-BM6xkZ0C.mjs +0 -3
- package/dist/keyless-certificates-DffYnd4b.mjs +0 -3
- package/dist/kv-BTceLtWZ.mjs +0 -5
- package/dist/leaked-credential-checks-CALfvoCo.mjs +0 -3
- package/dist/load-balancers-C1Ho1gCF.mjs +0 -6
- package/dist/logpush-CSYhgevA.mjs +0 -4
- package/dist/logs-DlIwmMpt.mjs +0 -3
- package/dist/magic-cloud-networking-Czu0pZ0a.mjs +0 -5
- package/dist/magic-network-monitoring-d7GJE5Yt.mjs +0 -4
- package/dist/magic-transit-qQmA-981.mjs +0 -89
- package/dist/managed-transforms-Dd6AnbWE.mjs +0 -3
- package/dist/mtls-certificates-C0rlCRGs.mjs +0 -3
- package/dist/network-interconnects-CxG2deY0.mjs +0 -36
- package/dist/organizations-DyEAiGiR.mjs +0 -41
- package/dist/origin-ca-certificates-S8RcoMF6.mjs +0 -3
- package/dist/origin-post-quantum-encryption-B8ZcpLu5.mjs +0 -2
- package/dist/origin-tls-client-auth-BlxMmQrE.mjs +0 -5
- package/dist/output-D7_yAFVR.mjs +0 -2
- package/dist/page-rules-DP-w6TAm.mjs +0 -18
- package/dist/page-shield-Bf7kFp8c.mjs +0 -37
- package/dist/pages-D0Y_XRqW.mjs +0 -10
- package/dist/pipelines-C-SPESAk.mjs +0 -6
- package/dist/queues-wv6CZsi8.mjs +0 -6
- package/dist/r2-DuXjp9n5.mjs +0 -21
- package/dist/r2-data-catalog-DQCMrmNO.mjs +0 -14
- package/dist/radar-BW_ZHP8X.mjs +0 -2
- package/dist/rate-limits-DLTkIvwr.mjs +0 -5
- package/dist/raw-fetch-hRv-6P3D.mjs +0 -2
- package/dist/realtime-kit-Ch7Vg3vj.mjs +0 -6
- package/dist/registrar-DIIv6fWd.mjs +0 -46
- package/dist/request-tracers-DMej0Drs.mjs +0 -2
- package/dist/resource-sharing-CYJ7cMWq.mjs +0 -5
- package/dist/resource-tagging-Dnz65MgH.mjs +0 -16
- package/dist/rules-DLJpOYbC.mjs +0 -4
- package/dist/rulesets-D9nqEJT5.mjs +0 -8
- package/dist/rum-DBVmdPkp.mjs +0 -4
- package/dist/schema-validation-MCd3xdtX.mjs +0 -4
- package/dist/scim-DZA3VXog.mjs +0 -3
- package/dist/scm-CilfPOue.mjs +0 -2
- package/dist/secrets-store-BrvcZSOM.mjs +0 -21
- package/dist/security-center-BU6f3Cm1.mjs +0 -2
- package/dist/security-txt-BPIbP3dG.mjs +0 -3
- package/dist/session-H7IV2BrM.mjs +0 -2
- package/dist/smart-shield-e8XFBkiF.mjs +0 -3
- package/dist/snippets-B4M3MMb8.mjs +0 -4
- package/dist/spectrum-B0adfSRI.mjs +0 -59
- package/dist/speed-BVcUtkAz.mjs +0 -4
- package/dist/ssl-BAa91gsc.mjs +0 -15
- package/dist/stream-D53sxKb3.mjs +0 -14
- package/dist/tenants-bH5pt3dJ.mjs +0 -2
- package/dist/token-validation-M61Vx_Tw.mjs +0 -4
- package/dist/turnstile-wAU0Gc2Z.mjs +0 -23
- package/dist/url-normalization-DZrWDgB5.mjs +0 -3
- package/dist/url-scanner-Zo49edNp.mjs +0 -2
- package/dist/user-DbXlVReB.mjs +0 -10
- package/dist/vectorize-CUnTM0DT.mjs +0 -4
- package/dist/vuln-scanner-Br_2lQp1.mjs +0 -2
- package/dist/waiting-rooms-BZW0X69-.mjs +0 -11
- package/dist/web3-DueyOQtx.mjs +0 -4
- package/dist/workers-builds-BM_aoeUR.mjs +0 -7
- package/dist/workers-nV_vBCfV.mjs +0 -16
- package/dist/workflows-CQITmo-s.mjs +0 -4
- package/dist/zaraz-DIbpF5Op.mjs +0 -2
- package/dist/zero-trust-CKp8j512.mjs +0 -119
- package/dist/zones-BZ5tZDbH.mjs +0 -28
- /package/dist/{metadata-DGdCpUxn.mjs → metadata-5VwHPW6C.mjs} +0 -0
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import{C as e,T as t,b as n,h as r,t as i,x as a}from"./auth-CQcAgnOy.mjs";import{n as o,t as s}from"./body-parser-Br-BoYk-.mjs";import{t as c}from"./output-D7_yAFVR.mjs";import{n as l,t as u}from"./progress-CjcQ6ato.mjs";import{n as d,t as f}from"./input-validation-zEO81MWN.mjs";import{t as p}from"./local-VJaJ3BZ1.mjs";import{n as m,t as ee}from"./raw-fetch-hRv-6P3D.mjs";function te(e){return e.positional(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,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 h={command:`delete <address-map-id>`,describe:`Remove an account as a member of a particular address map.`,builder:te,handler:async t=>{if(t.dryRun){let e=a();l({command:`cf addressing address-maps accounts delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${e??`<account-id>`}/addressing/address_maps/${t[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(t[`address-map-id`]))}/accounts/${e??`<account-id>`}`,pathParams:{"address-map-id":String(t[`address-map-id`]??``)},bodyKind:`json`,body:{body:t.body}});return}let n=await i(t),o=t.local?p:await r(n);if(t.accountId=o,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
3
|
-
`);return}if(t.body){let e=s(t.body);c(await u(`Deleting`,async()=>n.delete(`/accounts/${o}/addressing/address_maps/${encodeURIComponent(String(t[`address-map-id`]))}/accounts/${o}`,{body:e})),{successLabel:`Deleted`});return}c(await u(`Deleting`,async()=>n.addressing.addressMaps.accounts.delete(o,t[`address-map-id`])),{successLabel:`Deleted`})}};function g(e){return e.positional(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,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 _={command:`update <address-map-id>`,describe:`Add an account as a member of a particular address map.`,builder:g,handler:async e=>{if(e.dryRun){let t=a();l({command:`cf addressing address-maps accounts update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${t??`<account-id>`}/addressing/address_maps/${e[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(e[`address-map-id`]))}/accounts/${t??`<account-id>`}`,pathParams:{"address-map-id":String(e[`address-map-id`]??``)},bodyKind:`json`,body:{body:e.body}});return}let t=await i(e),n=e.local?p:await r(t);if(e.accountId=n,e.body){let r=s(e.body);c(await u(`Updating`,async()=>t.put(`/accounts/${n}/addressing/address_maps/${encodeURIComponent(String(e[`address-map-id`]))}/accounts/${n}`,{body:r})),{successLabel:`Updated`});return}c(await u(`Updating`,async()=>t.addressing.addressMaps.accounts.update(n,e[`address-map-id`])),{successLabel:`Updated`})}},v={command:`accounts`,describe:`Map Cloudflare IPs to specific zones or accounts for custom Anycast addressing`,builder:e=>e.command(h).command(_).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function y(e){return e.option(`description`,{type:`string`,description:`An optional description field which may be used to describe the types of IPs or zones on the map.`}).option(`enabled`,{type:`boolean`,description:`Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled.`,default:!1}).option(`ips`,{type:`string`,array:!0,description:`The ips 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 b={command:`create`,describe:`Create a new address map under the account.`,builder:y,handler:async e=>{if(e.dryRun){l({command:`cf addressing address-maps create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps`,pathParams:{},bodyKind:`json`,body:{description:e.description,enabled:e.enabled,ips:e.ips,body:e.body}});return}let t=await i(e),n=e.local?p:await r(t);if(e.accountId=n,e.body){let r=s(e.body);c(await u(`Creating`,async()=>t.post(`/accounts/${n}/addressing/address_maps`,{body:r})),{successLabel:`Created`});return}let f={};e.description!==void 0&&o(f,[`description`],d(e.description,`description`,`text`)),e.enabled!==void 0&&o(f,[`enabled`],e.enabled),e.ips!==void 0&&o(f,[`ips`],e.ips),c(await u(`Creating`,async()=>t.post(`/accounts/${n}/addressing/address_maps`,{body:Object.keys(f).length>0?f:void 0})),{successLabel:`Created`})}};function x(e){return e.positional(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,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 S={command:`delete <address-map-id>`,describe:`Delete a particular address map owned by the account. An Address Map must be disabled before it can be deleted.`,builder:x,handler:async t=>{if(t.dryRun){l({command:`cf addressing address-maps delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps/${t[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(t[`address-map-id`]))}`,pathParams:{"address-map-id":String(t[`address-map-id`]??``)},bodyKind:`json`,body:{body:t.body}});return}let n=await i(t),o=t.local?p:await r(n);if(t.accountId=o,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
4
|
-
`);return}if(t.body){let e=s(t.body);c(await u(`Deleting`,async()=>n.delete(`/accounts/${o}/addressing/address_maps/${encodeURIComponent(String(t[`address-map-id`]))}`,{body:e})),{successLabel:`Deleted`});return}c(await u(`Deleting`,async()=>n.addressing.addressMaps.delete(t[`address-map-id`],o)),{successLabel:`Deleted`})}};function C(e){return e.positional(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,demandOption:!0}).option(`default-sni`,{type:`string`,description:`If you have legacy TLS clients which do not send the TLS server name indicator, then you can specify one default SNI on the map. If Cloudflare receives a TLS handshake from a client without an SNI, it will respond with the default SNI on those IPs. The default SNI can be any valid zone or subdomain owned by the account.`}).option(`description`,{type:`string`,description:`An optional description field which may be used to describe the types of IPs or zones on the map.`}).option(`enabled`,{type:`boolean`,description:`Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled.`}).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 w={command:`edit <address-map-id>`,describe:`Modify properties of an address map owned by the account.`,builder:C,handler:async e=>{if(e.dryRun){l({command:`cf addressing address-maps edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps/${e[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(e[`address-map-id`]))}`,pathParams:{"address-map-id":String(e[`address-map-id`]??``)},bodyKind:`json`,body:{"default-sni":e[`default-sni`],description:e.description,enabled:e.enabled,body:e.body}});return}let t=await i(e),n=e.local?p:await r(t);if(e.accountId=n,e.body){let r=s(e.body);c(await u(`Updating`,async()=>t.patch(`/accounts/${n}/addressing/address_maps/${encodeURIComponent(String(e[`address-map-id`]))}`,{body:r})),{successLabel:`Updated`});return}let f={};e[`default-sni`]!==void 0&&o(f,[`default_sni`],d(e[`default-sni`],`default-sni`,`text`)),e.description!==void 0&&o(f,[`description`],d(e.description,`description`,`text`)),e.enabled!==void 0&&o(f,[`enabled`],e.enabled),c(await u(`Updating`,async()=>t.patch(`/accounts/${n}/addressing/address_maps/${encodeURIComponent(String(e[`address-map-id`]))}`,{body:Object.keys(f).length>0?f:void 0})),{successLabel:`Updated`})}};function T(e){return e.positional(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`get <address-map-id>`,describe:`Show a particular address map owned by the account.`,builder:T,handler:async e=>{if(e.dryRun){l({command:`cf addressing address-maps get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps/${e[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(e[`address-map-id`]))}`,pathParams:{"address-map-id":String(e[`address-map-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.addressMaps.get(e[`address-map-id`],n)),{successLabel:`Loaded`})}};function D(e){return e.positional(`ip-address`,{type:`string`,description:`An IPv4 or IPv6 address.`,demandOption:!0}).option(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,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 O={command:`delete <ip-address>`,describe:`Remove an IP from a particular address map.`,builder:D,handler:async t=>{if(t.dryRun){l({command:`cf addressing address-maps ips delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps/${t[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(t[`address-map-id`]))}/ips/${t[`ip-address`]==null?`<ip-address>`:encodeURIComponent(String(t[`ip-address`]))}`,pathParams:{"ip-address":String(t[`ip-address`]??``),"address-map-id":String(t[`address-map-id`]??``)},bodyKind:`json`,body:{body:t.body}});return}let n=await i(t),o=t.local?p:await r(n);if(t.accountId=o,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
5
|
-
`);return}if(t.body){let e=s(t.body);c(await u(`Deleting`,async()=>n.delete(`/accounts/${o}/addressing/address_maps/${encodeURIComponent(String(t[`address-map-id`]))}/ips/${encodeURIComponent(String(t[`ip-address`]))}`,{body:e})),{successLabel:`Deleted`});return}c(await u(`Deleting`,async()=>n.addressing.addressMaps.ips.delete(t[`ip-address`],t[`address-map-id`],o)),{successLabel:`Deleted`})}};function k(e){return e.positional(`ip-address`,{type:`string`,description:`An IPv4 or IPv6 address.`,demandOption:!0}).option(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,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 A={command:`update <ip-address>`,describe:`Add an IP from a prefix owned by the account to a particular address map.`,builder:k,handler:async e=>{if(e.dryRun){l({command:`cf addressing address-maps ips update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps/${e[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(e[`address-map-id`]))}/ips/${e[`ip-address`]==null?`<ip-address>`:encodeURIComponent(String(e[`ip-address`]))}`,pathParams:{"ip-address":String(e[`ip-address`]??``),"address-map-id":String(e[`address-map-id`]??``)},bodyKind:`json`,body:{body:e.body}});return}let t=await i(e),n=e.local?p:await r(t);if(e.accountId=n,e.body){let r=s(e.body);c(await u(`Updating`,async()=>t.put(`/accounts/${n}/addressing/address_maps/${encodeURIComponent(String(e[`address-map-id`]))}/ips/${encodeURIComponent(String(e[`ip-address`]))}`,{body:r})),{successLabel:`Updated`});return}c(await u(`Updating`,async()=>t.addressing.addressMaps.ips.update(e[`ip-address`],e[`address-map-id`],n)),{successLabel:`Updated`})}},j={command:`ips`,describe:`Map Cloudflare IPs to specific zones or accounts for custom Anycast addressing`,builder:e=>e.command(O).command(A).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function M(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const N={command:`list`,describe:`List all address maps owned by the account.`,builder:M,handler:async e=>{if(e.dryRun){l({command:`cf addressing address-maps list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps`,pathParams:{},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.addressMaps.list(n)),{successLabel:`Loaded`})}};function P(e){return e.option(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,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 F={command:`delete`,describe:`Remove a zone as a member of a particular address map.`,builder:P,handler:async t=>{if(t.dryRun){l({command:`cf addressing address-maps zones delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps/${t[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(t[`address-map-id`]))}/zones/${t.zone??t.zoneId??`<zone>`}`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``),"address-map-id":String(t[`address-map-id`]??``)},bodyKind:`json`,body:{body:t.body}});return}let o=await i(t),d=t.local?p:await r(o);t.accountId=d;let f=await n({zone:t.zone},o,{quiet:t.quiet});if(t.zoneId=f,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
6
|
-
`);return}if(t.body){let e=s(t.body);c(await u(`Deleting`,async()=>o.delete(`/accounts/${d}/addressing/address_maps/${encodeURIComponent(String(t[`address-map-id`]))}/zones/${t.zoneId}`,{body:e})),{successLabel:`Deleted`});return}c(await u(`Deleting`,async()=>o.addressing.addressMaps.zones.delete(f,t[`address-map-id`],d)),{successLabel:`Deleted`})}};function I(e){return e.option(`address-map-id`,{type:`string`,description:`Identifier of an Address Map.`,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 L={command:`update`,describe:`Add a zone as a member of a particular address map.`,builder:I,handler:async e=>{if(e.dryRun){l({command:`cf addressing address-maps zones update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/address_maps/${e[`address-map-id`]==null?`<address-map-id>`:encodeURIComponent(String(e[`address-map-id`]))}/zones/${e.zone??e.zoneId??`<zone>`}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"address-map-id":String(e[`address-map-id`]??``)},bodyKind:`json`,body:{body:e.body}});return}let t=await i(e),o=e.local?p:await r(t);e.accountId=o;let d=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=d,e.body){let n=s(e.body);c(await u(`Updating`,async()=>t.put(`/accounts/${o}/addressing/address_maps/${encodeURIComponent(String(e[`address-map-id`]))}/zones/${e.zoneId}`,{body:n})),{successLabel:`Updated`});return}c(await u(`Updating`,async()=>t.addressing.addressMaps.zones.update(d,e[`address-map-id`],o)),{successLabel:`Updated`})}},R={command:`zones`,describe:`Map Cloudflare IPs to specific zones or accounts for custom Anycast addressing`,builder:e=>e.command(F).command(L).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},z={command:`address-maps`,describe:`Map Cloudflare IPs to specific zones or accounts for custom Anycast addressing`,builder:e=>e.command(b).command(S).command(w).command(E).command(N).command(v).command(j).command(R).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function B(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const V={command:`list`,describe:`List all leases owned by the account.`,builder:B,handler:async e=>{if(e.dryRun){l({command:`cf addressing leases list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/leases`,pathParams:{},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.leases.list(n)),{successLabel:`Loaded`})}},H={command:`leases`,describe:`Leases operations`,builder:e=>e.command(V).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function U(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)`}).option(`file`,{type:`string`,description:`Path to a file to upload as the request body`}).option(`loa-document`,{type:`string`,description:`LOA document to upload.`})}const W={command:`create`,describe:`Submit LOA document (pdf format) under the account.`,builder:U,handler:async e=>{if(e.dryRun){l({command:`cf addressing loa-documents create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/loa_documents`,pathParams:{},bodyKind:`multipart`,body:{body:e.body,file:e.file,"loa-document":e[`loa-document`]}});return}let t=await i(e),n=e.local?p:await r(t);if(e.accountId=n,e.file!==void 0||e.body!==void 0||e[`loa-document`]!==void 0){let r=new FormData;if(e.file){let t=f(e.file);r.append(`file`,new Blob([t]),e.file.split(/[\\/]/).filter(Boolean).pop())}else e.body!==void 0&&r.append(`file`,e.body);e[`loa-document`]!==void 0&&r.append(`loa_document`,String(d(e[`loa-document`],`loa-document`,`text`)??``)),c(await u(`Creating`,async()=>t.post(`/accounts/${n}/addressing/loa_documents`,{body:r})),{successLabel:`Created`});return}if(e.body){let r=d(e.body,`body`,`binary`);c(await u(`Creating`,async()=>t.post(`/accounts/${n}/addressing/loa_documents`,{body:r,headers:{"Content-Type":`multipart/form-data`}})),{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 G(e){return e.positional(`loa-document-id`,{type:`string`,description:`Identifier for the uploaded LOA document.`,demandOption:!0}).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 K={command:`get <loa-document-id>`,describe:`Download specified LOA document under the account.`,builder:G,handler:async e=>{if(e.dryRun){l({command:`cf addressing loa-documents get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/loa_documents/${e[`loa-document-id`]==null?`<loa-document-id>`:encodeURIComponent(String(e[`loa-document-id`]))}/download`,pathParams:{"loa-document-id":String(e[`loa-document-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n;let o=await u(`Loading`,async()=>ee(`/accounts/${n}/addressing/loa_documents/${encodeURIComponent(String(e[`loa-document-id`]))}/download`,{method:`GET`,localEndpoint:e.local?e.localEndpoint:void 0}));m(e.text===!0?o.toString(`utf-8`):o)}},q={command:`loa-documents`,describe:`Letter of Authorization documents required to verify IP prefix ownership`,builder:e=>e.command(W).command(K).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function J(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`advertised`,{type:`boolean`,description:"Advertisement status of the prefix. If `true`, the BGP route for the prefix is advertised to the Internet. If \n`false`, the BGP route is withdrawn.\n"}).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:`edit <prefix-id>`,describe:`Advertise or withdraw the BGP route for a prefix. **Deprecated:** Prefer the BGP Prefixes endpoints, which additionally allow for advertising and withdrawing subnets of an IP prefix.`,builder:J,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes advertisement-status edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bgp/status`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`json`,body:{advertised:e.advertised,body:e.body}});return}let t=await i(e),n=e.local?p:await r(t);if(e.accountId=n,e.body){let r=s(e.body);c(await u(`Updating`,async()=>t.patch(`/accounts/${n}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bgp/status`,{body:r})),{successLabel:`Updated`});return}if(e.advertised===void 0)throw Error(`--advertised is required (or pass --body with this field set).`);let d={};e.advertised!==void 0&&o(d,[`advertised`],e.advertised),c(await u(`Updating`,async()=>t.patch(`/accounts/${n}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bgp/status`,{body:Object.keys(d).length>0?d:void 0})),{successLabel:`Updated`})}};function X(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Z={command:`get <prefix-id>`,describe:`View the current advertisement state for a prefix. **Deprecated:** Prefer the BGP Prefixes endpoints, which additionally allow for advertising and withdrawing subnets of an IP prefix.`,builder:X,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes advertisement-status get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bgp/status`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.advertisementStatus.get(e[`prefix-id`],n)),{successLabel:`Loaded`})}},Q={command:`advertisement-status`,describe:`BYOIP prefixes — onboard your own IP ranges, manage BGP announcements, service bindings, and delegations`,builder:e=>e.command(Y).command(Z).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ne(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`cidr`,{type:`string`,description:`IP Prefix in Classless Inter-Domain Routing format.`}).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 <prefix-id>`,describe:`Create a BGP prefix, controlling the BGP advertisement status of a specific subnet. When created, BGP prefixes are initially withdrawn, and can be advertised with the Update BGP Prefix API.`,builder:ne,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes bgp-prefixes create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`json`,body:{cidr:e.cidr,body:e.body}});return}let n=await i(e),f=e.local?p:await r(n);if(e.accountId=f,e.body){let t=s(e.body);c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes`,{body:t})),{successLabel:`Created`});return}e.cidr===void 0&&(e.cidr=await t(`cidr`,`IP Prefix in Classless Inter-Domain Routing format.`));let m={};e.cidr!==void 0&&o(m,[`cidr`],d(e.cidr,`cidr`,`text`)),c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes`,{body:Object.keys(m).length>0?m:void 0})),{successLabel:`Created`})}};function ie(e){return e.positional(`bgp-prefix-id`,{type:`string`,description:`Identifier of BGP Prefix.`,demandOption:!0}).option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,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 <bgp-prefix-id>`,describe:`Delete a BGP Prefix associated with the specified IP Prefix. A BGP Prefix must be withdrawn before it can be deleted.`,builder:ie,handler:async t=>{if(t.dryRun){l({command:`cf addressing prefixes bgp-prefixes delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${t[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(t[`prefix-id`]))}/bgp/prefixes/${t[`bgp-prefix-id`]==null?`<bgp-prefix-id>`:encodeURIComponent(String(t[`bgp-prefix-id`]))}`,pathParams:{"prefix-id":String(t[`prefix-id`]??``),"bgp-prefix-id":String(t[`bgp-prefix-id`]??``)},bodyKind:`none`});return}let n=await i(t),o=t.local?p:await r(n);if(t.accountId=o,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
7
|
-
`);return}c(await u(`Deleting`,async()=>n.addressing.prefixes.bgpPrefixes.delete(o,t[`prefix-id`],t[`bgp-prefix-id`])),{successLabel:`Deleted`})}};function oe(e){return e.positional(`bgp-prefix-id`,{type:`string`,description:`Identifier of BGP Prefix.`,demandOption:!0}).option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`asn-prepend-count`,{type:`number`,description:`Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute`}).option(`auto-advertise-withdraw`,{type:`boolean`,description:`Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route.`}).option(`on-demand-advertised`,{type:`boolean`,description:`The on_demand.advertised 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 se={command:`edit <bgp-prefix-id>`,describe:`Update the properties of a BGP Prefix, such as the on demand advertisement status (advertised or withdrawn).`,builder:oe,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes bgp-prefixes edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes/${e[`bgp-prefix-id`]==null?`<bgp-prefix-id>`:encodeURIComponent(String(e[`bgp-prefix-id`]))}`,pathParams:{"prefix-id":String(e[`prefix-id`]??``),"bgp-prefix-id":String(e[`bgp-prefix-id`]??``)},bodyKind:`json`,body:{"asn-prepend-count":e[`asn-prepend-count`],"auto-advertise-withdraw":e[`auto-advertise-withdraw`],"on-demand-advertised":e[`on-demand-advertised`],body:e.body}});return}let t=await i(e),n=e.local?p:await r(t);if(e.accountId=n,e.body){let r=s(e.body);c(await u(`Updating`,async()=>t.patch(`/accounts/${n}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes/${encodeURIComponent(String(e[`bgp-prefix-id`]))}`,{body:r})),{successLabel:`Updated`});return}let d={};e[`asn-prepend-count`]!==void 0&&o(d,[`asn_prepend_count`],e[`asn-prepend-count`]),e[`auto-advertise-withdraw`]!==void 0&&o(d,[`auto_advertise_withdraw`],e[`auto-advertise-withdraw`]),e[`on-demand-advertised`]!==void 0&&o(d,[`on_demand`,`advertised`],e[`on-demand-advertised`]),c(await u(`Updating`,async()=>t.patch(`/accounts/${n}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes/${encodeURIComponent(String(e[`bgp-prefix-id`]))}`,{body:Object.keys(d).length>0?d:void 0})),{successLabel:`Updated`})}};function ce(e){return e.positional(`bgp-prefix-id`,{type:`string`,description:`Identifier of BGP Prefix.`,demandOption:!0}).option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const le={command:`get <bgp-prefix-id>`,describe:`Retrieve a single BGP Prefix according to its identifier`,builder:ce,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes bgp-prefixes get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes/${e[`bgp-prefix-id`]==null?`<bgp-prefix-id>`:encodeURIComponent(String(e[`bgp-prefix-id`]))}`,pathParams:{"prefix-id":String(e[`prefix-id`]??``),"bgp-prefix-id":String(e[`bgp-prefix-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.bgpPrefixes.get(n,e[`prefix-id`],e[`bgp-prefix-id`])),{successLabel:`Loaded`})}};function ue(e){return e.option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const de={command:`list`,describe:`List all BGP Prefixes within the specified IP Prefix. BGP Prefixes are used to control which specific subnets are advertised to the Internet. It is possible to advertise subnets more specific than an IP Prefix by creating more specific BGP Prefixes.`,builder:ue,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes bgp-prefixes list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bgp/prefixes`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.bgpPrefixes.list(n,e[`prefix-id`])),{successLabel:`Loaded`})}},fe={command:`bgp-prefixes`,describe:`BYOIP prefixes — onboard your own IP ranges, manage BGP announcements, service bindings, and delegations`,builder:e=>e.command(re).command(ae).command(se).command(le).command(de).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function pe(e){return e.option(`asn`,{type:`number`,description:`Autonomous System Number (ASN) the prefix will be advertised under.`}).option(`cidr`,{type:`string`,description:`IP Prefix in Classless Inter-Domain Routing format.`}).option(`delegate-loa-creation`,{type:`boolean`,description:`Whether Cloudflare is allowed to generate the LOA document on behalf of the prefix owner.`,default:!1}).option(`description`,{type:`string`,description:`Description of the prefix.`}).option(`loa-document-id`,{type:`string`,description:`Identifier for the uploaded LOA document.`}).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 me={command:`create`,describe:`Add a new prefix under the account.`,builder:pe,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes`,pathParams:{},bodyKind:`json`,body:{asn:e.asn,cidr:e.cidr,"delegate-loa-creation":e[`delegate-loa-creation`],description:e.description,"loa-document-id":e[`loa-document-id`],body:e.body}});return}let n=await i(e),f=e.local?p:await r(n);if(e.accountId=f,e.body){let t=s(e.body);c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes`,{body:t})),{successLabel:`Created`});return}if(e.asn===void 0)throw Error(`--asn is required (or pass --body with this field set).`);e.cidr===void 0&&(e.cidr=await t(`cidr`,`IP Prefix in Classless Inter-Domain Routing format.`));let m={};e.asn!==void 0&&o(m,[`asn`],e.asn),e.cidr!==void 0&&o(m,[`cidr`],d(e.cidr,`cidr`,`text`)),e[`delegate-loa-creation`]!==void 0&&o(m,[`delegate_loa_creation`],e[`delegate-loa-creation`]),e.description!==void 0&&o(m,[`description`],d(e.description,`description`,`text`)),e[`loa-document-id`]!==void 0&&o(m,[`loa_document_id`],d(e[`loa-document-id`],`loa-document-id`,`text`)),c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes`,{body:Object.keys(m).length>0?m:void 0})),{successLabel:`Created`})}};function he(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`cidr`,{type:`string`,description:`IP Prefix in Classless Inter-Domain Routing format.`}).option(`delegated-account-id`,{type:`string`,description:`Account identifier for the account to which prefix is being delegated.`}).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 ge={command:`create <prefix-id>`,describe:`Create a new account delegation for a given IP prefix.`,builder:he,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes delegations create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/delegations`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`json`,body:{cidr:e.cidr,"delegated-account-id":e[`delegated-account-id`],body:e.body}});return}let n=await i(e),f=e.local?p:await r(n);if(e.accountId=f,e.body){let t=s(e.body);c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/delegations`,{body:t})),{successLabel:`Created`});return}e.cidr===void 0&&(e.cidr=await t(`cidr`,`IP Prefix in Classless Inter-Domain Routing format.`)),e[`delegated-account-id`]===void 0&&(e[`delegated-account-id`]=await t(`delegated-account-id`,`Account identifier for the account to which prefix is being delegated.`));let m={};e.cidr!==void 0&&o(m,[`cidr`],d(e.cidr,`cidr`,`text`)),e[`delegated-account-id`]!==void 0&&o(m,[`delegated_account_id`],d(e[`delegated-account-id`],`delegated-account-id`,`text`)),c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/delegations`,{body:Object.keys(m).length>0?m:void 0})),{successLabel:`Created`})}};function _e(e){return e.positional(`delegation-id`,{type:`string`,description:`Identifier of a Delegation.`,demandOption:!0}).option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,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 ve={command:`delete <delegation-id>`,describe:`Delete an account delegation for a given IP prefix.`,builder:_e,handler:async t=>{if(t.dryRun){l({command:`cf addressing prefixes delegations delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${t[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(t[`prefix-id`]))}/delegations/${t[`delegation-id`]==null?`<delegation-id>`:encodeURIComponent(String(t[`delegation-id`]))}`,pathParams:{"delegation-id":String(t[`delegation-id`]??``),"prefix-id":String(t[`prefix-id`]??``)},bodyKind:`json`,body:{body:t.body}});return}let n=await i(t),o=t.local?p:await r(n);if(t.accountId=o,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
8
|
-
`);return}if(t.body){let e=s(t.body);c(await u(`Deleting`,async()=>n.delete(`/accounts/${o}/addressing/prefixes/${encodeURIComponent(String(t[`prefix-id`]))}/delegations/${encodeURIComponent(String(t[`delegation-id`]))}`,{body:e})),{successLabel:`Deleted`});return}c(await u(`Deleting`,async()=>n.addressing.prefixes.delegations.delete(t[`delegation-id`],t[`prefix-id`],o)),{successLabel:`Deleted`})}};function ye(e){return e.option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const be={command:`list`,describe:`List all delegations for a given account IP prefix.`,builder:ye,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes delegations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/delegations`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.delegations.list(e[`prefix-id`],n)),{successLabel:`Loaded`})}},xe={command:`delegations`,describe:`BYOIP prefixes — onboard your own IP ranges, manage BGP announcements, service bindings, and delegations`,builder:e=>e.command(ge).command(ve).command(be).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Se(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,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 Ce={command:`delete <prefix-id>`,describe:`Delete an unapproved prefix owned by the account.`,builder:Se,handler:async t=>{if(t.dryRun){l({command:`cf addressing prefixes delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${t[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(t[`prefix-id`]))}`,pathParams:{"prefix-id":String(t[`prefix-id`]??``)},bodyKind:`json`,body:{body:t.body}});return}let n=await i(t),o=t.local?p:await r(n);if(t.accountId=o,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
9
|
-
`);return}if(t.body){let e=s(t.body);c(await u(`Deleting`,async()=>n.delete(`/accounts/${o}/addressing/prefixes/${encodeURIComponent(String(t[`prefix-id`]))}`,{body:e})),{successLabel:`Deleted`});return}c(await u(`Deleting`,async()=>n.addressing.prefixes.delete(t[`prefix-id`],o)),{successLabel:`Deleted`})}};function we(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`description`,{type:`string`,description:`Description of the prefix.`}).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 Te={command:`edit <prefix-id>`,describe:`Modify the description for a prefix owned by the account.`,builder:we,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`json`,body:{description:e.description,body:e.body}});return}let n=await i(e),f=e.local?p:await r(n);if(e.accountId=f,e.body){let t=s(e.body);c(await u(`Updating`,async()=>n.patch(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}`,{body:t})),{successLabel:`Updated`});return}e.description===void 0&&(e.description=await t(`description`,`Description of the prefix.`));let m={};e.description!==void 0&&o(m,[`description`],d(e.description,`description`,`text`)),c(await u(`Updating`,async()=>n.patch(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}`,{body:Object.keys(m).length>0?m:void 0})),{successLabel:`Updated`})}};function Ee(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const De={command:`get <prefix-id>`,describe:`List a particular prefix owned by the account.`,builder:Ee,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.get(e[`prefix-id`],n)),{successLabel:`Loaded`})}};function Oe(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ke={command:`list`,describe:`List all prefixes owned by the account.`,builder:Oe,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes`,pathParams:{},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.list(n)),{successLabel:`Loaded`})}};function Ae(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`cidr`,{type:`string`,description:`IP Prefix in Classless Inter-Domain Routing format.`}).option(`service-id`,{type:`string`,description:`Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the
|
|
10
|
-
**List Services** endpoint.
|
|
11
|
-
`}).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 je={command:`create <prefix-id>`,describe:`Creates a new Service Binding, routing traffic to IPs within the given CIDR to a service running on Cloudflare's network. **NOTE:** The first Service Binding created for an IP Prefix must exactly match the IP Prefix's CIDR. Subsequent Service Bindings may be created with a more-specific CIDR. Refer to the [Service Bindings Documentation](https://developers.cloudflare.com/byoip/service-bindings/) for compatibility details.`,builder:Ae,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes service-bindings create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bindings`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`json`,body:{cidr:e.cidr,"service-id":e[`service-id`],body:e.body}});return}let n=await i(e),f=e.local?p:await r(n);if(e.accountId=f,e.body){let t=s(e.body);c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bindings`,{body:t})),{successLabel:`Created`});return}e.cidr===void 0&&(e.cidr=await t(`cidr`,`IP Prefix in Classless Inter-Domain Routing format.`)),e[`service-id`]===void 0&&(e[`service-id`]=await t(`service-id`,`Identifier of a Service on the Cloudflare network. Available services and their IDs may be found in the **List Services** endpoint. `));let m={};e.cidr!==void 0&&o(m,[`cidr`],d(e.cidr,`cidr`,`text`)),e[`service-id`]!==void 0&&o(m,[`service_id`],d(e[`service-id`],`service-id`,`text`)),c(await u(`Creating`,async()=>n.post(`/accounts/${f}/addressing/prefixes/${encodeURIComponent(String(e[`prefix-id`]))}/bindings`,{body:Object.keys(m).length>0?m:void 0})),{successLabel:`Created`})}};function Me(e){return e.positional(`binding-id`,{type:`string`,description:`Identifier of a Service Binding.`,demandOption:!0}).option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,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 Ne={command:`delete <binding-id>`,describe:`Delete a Service Binding`,builder:Me,handler:async t=>{if(t.dryRun){l({command:`cf addressing prefixes service-bindings delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${t[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(t[`prefix-id`]))}/bindings/${t[`binding-id`]==null?`<binding-id>`:encodeURIComponent(String(t[`binding-id`]))}`,pathParams:{"prefix-id":String(t[`prefix-id`]??``),"binding-id":String(t[`binding-id`]??``)},bodyKind:`none`});return}let n=await i(t),o=t.local?p:await r(n);if(t.accountId=o,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
12
|
-
`);return}c(await u(`Deleting`,async()=>n.addressing.prefixes.serviceBindings.delete(o,t[`prefix-id`],t[`binding-id`])),{successLabel:`Deleted`})}};function Pe(e){return e.positional(`binding-id`,{type:`string`,description:`Identifier of a Service Binding.`,demandOption:!0}).option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Fe={command:`get <binding-id>`,describe:`Fetch a single Service Binding`,builder:Pe,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes service-bindings get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bindings/${e[`binding-id`]==null?`<binding-id>`:encodeURIComponent(String(e[`binding-id`]))}`,pathParams:{"prefix-id":String(e[`prefix-id`]??``),"binding-id":String(e[`binding-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.serviceBindings.get(n,e[`prefix-id`],e[`binding-id`])),{successLabel:`Loaded`})}};function Ie(e){return e.option(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Le={command:`list`,describe:"List the Cloudflare services this prefix is currently bound to. Traffic sent to an address within an IP prefix will be routed to the Cloudflare service of the most-specific Service Binding matching the address. **Example:** binding `192.0.2.0/24` to Cloudflare Magic Transit and `192.0.2.1/32` to the Cloudflare CDN would route traffic for `192.0.2.1` to the CDN, and traffic for all other IPs in the prefix to Cloudflare Magic Transit.",builder:Ie,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes service-bindings list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/bindings`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.prefixes.serviceBindings.list(n,e[`prefix-id`])),{successLabel:`Loaded`})}},Re={command:`service-bindings`,describe:`BYOIP prefixes — onboard your own IP ranges, manage BGP announcements, service bindings, and delegations`,builder:e=>e.command(je).command(Ne).command(Fe).command(Le).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ze(e){return e.positional(`prefix-id`,{type:`string`,description:`Identifier of an IP Prefix.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Be={command:`create <prefix-id>`,describe:`Triggers a new prefix validation. The checks are run asynchronously and include IRR, RPKI, and prefix ownership.`,builder:ze,handler:async e=>{if(e.dryRun){l({command:`cf addressing prefixes validate create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/prefixes/${e[`prefix-id`]==null?`<prefix-id>`:encodeURIComponent(String(e[`prefix-id`]))}/validate`,pathParams:{"prefix-id":String(e[`prefix-id`]??``)},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Creating`,async()=>t.addressing.prefixes.validate.create(e[`prefix-id`],n)),{successLabel:`Created`})}},Ve={command:`validate`,describe:`Additional IP prefix operations — BGP prefix deletion and prefix validation`,builder:e=>e.command(Be).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},He={command:`prefixes`,describe:`BYOIP prefixes — onboard your own IP ranges, manage BGP announcements, service bindings, and delegations`,builder:e=>e.command(me).command(Ce).command(Te).command(De).command(ke).command(Q).command(fe).command(xe).command(Re).command(Ve).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ue(e){return e.option(`hostname`,{type:`string`,description:"DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com`"}).option(`region-key`,{type:`string`,description:`Identifying key for the region`}).option(`routing`,{type:`string`,description:`Configure which routing method to use for the regional hostname`,default:`dns`}).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 We={command:`create`,describe:`Create a new Regional Hostname entry. Cloudflare will only use data centers that are physically located within the chosen region to decrypt and service HTTPS traffic. Learn more about [Regional Services](https://developers.cloudflare.com/data-localization/regional-services/get-started/).`,builder:Ue,handler:async e=>{if(e.dryRun){l({command:`cf addressing regional-hostnames create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/addressing/regional_hostnames`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:{hostname:e.hostname,"region-key":e[`region-key`],routing:e.routing,body:e.body}});return}let r=await i(e);if(e.zoneId=await n({zone:e.zone},r,{quiet:e.quiet}),e.body){let t=s(e.body);c(await u(`Creating`,async()=>r.post(`/zones/${e.zoneId}/addressing/regional_hostnames`,{body:t})),{successLabel:`Created`});return}e.hostname===void 0&&(e.hostname=await t(`hostname`,"DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com`")),e[`region-key`]===void 0&&(e[`region-key`]=await t(`region-key`,`Identifying key for the region`));let a={};e.hostname!==void 0&&o(a,[`hostname`],d(e.hostname,`hostname`,`text`)),e[`region-key`]!==void 0&&o(a,[`region_key`],d(e[`region-key`],`region-key`,`text`)),e.routing!==void 0&&o(a,[`routing`],d(e.routing,`routing`,`text`)),c(await u(`Creating`,async()=>r.post(`/zones/${e.zoneId}/addressing/regional_hostnames`,{body:Object.keys(a).length>0?a:void 0})),{successLabel:`Created`})}};function Ge(e){return e.positional(`hostname`,{type:`string`,description:"DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com`",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 Ke={command:`delete <hostname>`,describe:`Delete the region configuration for a specific Regional Hostname.`,builder:Ge,handler:async t=>{if(t.dryRun){l({command:`cf addressing regional-hostnames delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/addressing/regional_hostnames/${t.hostname==null?`<hostname>`:encodeURIComponent(String(t.hostname))}`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``),hostname:String(t.hostname??``)},bodyKind:`none`});return}let r=await i(t),a=await n({zone:t.zone},r,{quiet:t.quiet});if(t.zoneId=a,!await e({force:!!t.force})){process.stderr.write(`Aborted.
|
|
13
|
-
`);return}c(await u(`Deleting`,async()=>r.addressing.regionalHostnames.delete(a,t.hostname)),{successLabel:`Deleted`})}};function qe(e){return e.positional(`hostname`,{type:`string`,description:"DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com`",demandOption:!0}).option(`region-key`,{type:`string`,description:`Identifying key for the region`}).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 Je={command:`edit <hostname>`,describe:`Update the configuration for a specific Regional Hostname. Only the region_key of a hostname is mutable.`,builder:qe,handler:async e=>{if(e.dryRun){l({command:`cf addressing regional-hostnames edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/addressing/regional_hostnames/${e.hostname==null?`<hostname>`:encodeURIComponent(String(e.hostname))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),hostname:String(e.hostname??``)},bodyKind:`json`,body:{"region-key":e[`region-key`],body:e.body}});return}let r=await i(e);if(e.zoneId=await n({zone:e.zone},r,{quiet:e.quiet}),e.body){let t=s(e.body);c(await u(`Updating`,async()=>r.patch(`/zones/${e.zoneId}/addressing/regional_hostnames/${encodeURIComponent(String(e.hostname))}`,{body:t})),{successLabel:`Updated`});return}e[`region-key`]===void 0&&(e[`region-key`]=await t(`region-key`,`Identifying key for the region`));let a={};e[`region-key`]!==void 0&&o(a,[`region_key`],d(e[`region-key`],`region-key`,`text`)),c(await u(`Updating`,async()=>r.patch(`/zones/${e.zoneId}/addressing/regional_hostnames/${encodeURIComponent(String(e.hostname))}`,{body:Object.keys(a).length>0?a:void 0})),{successLabel:`Updated`})}};function $(e){return e.positional(`hostname`,{type:`string`,description:"DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com`",demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ye={command:`get <hostname>`,describe:`Fetch the configuration for a specific Regional Hostname, within a zone.`,builder:$,handler:async e=>{if(e.dryRun){l({command:`cf addressing regional-hostnames get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/addressing/regional_hostnames/${e.hostname==null?`<hostname>`:encodeURIComponent(String(e.hostname))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),hostname:String(e.hostname??``)},bodyKind:`none`});return}let t=await i(e),r=await n({zone:e.zone},t,{quiet:e.quiet});e.zoneId=r,c(await u(`Loading`,async()=>t.addressing.regionalHostnames.get(r,e.hostname)),{successLabel:`Loaded`})}};function Xe(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ze={command:`list`,describe:`List all Regional Hostnames within a zone.`,builder:Xe,handler:async e=>{if(e.dryRun){l({command:`cf addressing regional-hostnames list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/addressing/regional_hostnames`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let t=await i(e),r=await n({zone:e.zone},t,{quiet:e.quiet});e.zoneId=r,c(await u(`Loading`,async()=>t.addressing.regionalHostnames.list(r)),{successLabel:`Loaded`})}};function Qe(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const $e={command:`list`,describe:`List all Regional Services regions available for use by this account.`,builder:Qe,handler:async e=>{if(e.dryRun){l({command:`cf addressing regional-hostnames regions list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/regional_hostnames/regions`,pathParams:{},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.regionalHostnames.regions.list(n)),{successLabel:`Loaded`})}},et={command:`regions`,describe:`Pin hostnames to specific geographic regions for data locality compliance`,builder:e=>e.command($e).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},tt={command:`regional-hostnames`,describe:`Pin hostnames to specific geographic regions for data locality compliance`,builder:e=>e.command(We).command(Ke).command(Je).command(Ye).command(Ze).command(et).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function nt(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const rt={command:`list`,describe:`Bring-Your-Own IP (BYOIP) prefixes onboarded to Cloudflare must be bound to a service running on the Cloudflare network to enable a Cloudflare product on the IP addresses. This endpoint can be used as a reference of available services on the Cloudflare network, and their service IDs.`,builder:nt,handler:async e=>{if(e.dryRun){l({command:`cf addressing services list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${a()??`<account-id>`}/addressing/services`,pathParams:{},bodyKind:`none`});return}let t=await i(e),n=e.local?p:await r(t);e.accountId=n,c(await u(`Loading`,async()=>t.addressing.services.list(n)),{successLabel:`Loaded`})}},it={command:`services`,describe:`Cloudflare services (CDN, Spectrum, Magic Transit) that IP prefixes can be bound to`,builder:e=>e.command(rt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},at={command:`addressing`,describe:`IP address management — BYOIP prefixes, address maps, regional hostnames, and BGP advertisement control`,builder:e=>e.command(z).command(H).command(q).command(He).command(tt).command(it).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{at as default};
|