cf 0.3.0 → 0.4.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 (171) hide show
  1. package/dist/_meta/agent-context.json +26 -21
  2. package/dist/_meta/commands.json +7696 -18100
  3. package/dist/_meta/schemas.json +6411 -13925
  4. package/dist/{abuse-reports-dMIfUJ8v.mjs → abuse-reports-Dy76QPNP.mjs} +1 -1
  5. package/dist/{accounts-Kx1epdA1.mjs → accounts-CjtZ8x1z.mjs} +2 -2
  6. package/dist/{acm-Utu252kC.mjs → acm-C2lYIWs1.mjs} +1 -1
  7. package/dist/{addressing-CBq7Z7Vq.mjs → addressing-CHFK6uxW.mjs} +1 -1
  8. package/dist/{agent-context-BGTU299M.mjs → agent-context-CgGCT0xU.mjs} +1 -1
  9. package/dist/{ai-DOOKLPkG.mjs → ai-DS3i-I1a.mjs} +1 -1
  10. package/dist/{ai-gateway-Cj1T3avF.mjs → ai-gateway-RIsegO2x.mjs} +1 -1
  11. package/dist/ai-search-Dcj4BauG.mjs +7 -0
  12. package/dist/{ai_gateway-C3fH22C0.mjs → ai_gateway-w7YwfcPE.mjs} +1 -1
  13. package/dist/{alerting-CqmEIaKn.mjs → alerting-Bk85NNf5.mjs} +1 -1
  14. package/dist/{analytics-Dv-X8x7D.mjs → analytics-CkhhhZWZ.mjs} +1 -1
  15. package/dist/{analytics_engine-DdXVR8z2.mjs → analytics_engine-B7qgDJCA.mjs} +1 -1
  16. package/dist/{api-gateway-CNv0IHTU.mjs → api-gateway-CWdR4Ne7.mjs} +1 -1
  17. package/dist/{argo-CX_A4kcn.mjs → argo-DnJRVnGX.mjs} +1 -1
  18. package/dist/artifacts-BVWKiJUl.mjs +4 -0
  19. package/dist/{audit-logs-BfBf3oo-.mjs → audit-logs-DjTstbzL.mjs} +1 -1
  20. package/dist/auth-BqDOIrKX.mjs +150 -0
  21. package/dist/auth-DKkSwnxh.mjs +5 -0
  22. package/dist/billing-3rEqF83h.mjs +2 -0
  23. package/dist/{bot-management-CFvtVx62.mjs → bot-management-CJxD1pqi.mjs} +1 -1
  24. package/dist/{botnet-feed-B-M4Yu0W.mjs → botnet-feed-MG91D7BR.mjs} +1 -1
  25. package/dist/{brand-protection-D05Eg-_6.mjs → brand-protection-CK7gJi06.mjs} +1 -1
  26. package/dist/browser-rendering-Rae0AUt0.mjs +4 -0
  27. package/dist/{build-DYkGW4dh.mjs → build-BE4o4imx.mjs} +131 -131
  28. package/dist/{cache-DsoW6Xwv.mjs → cache-B7pRbpTy.mjs} +1 -1
  29. package/dist/{calls-CZbO7TyR.mjs → calls-DXRWsZ8n.mjs} +3 -3
  30. package/dist/{certificate-authorities-D2yr7_3t.mjs → certificate-authorities-BR3gXBLs.mjs} +1 -1
  31. package/dist/chunk-6IEM75FG-U3L9fKgi.mjs +2 -0
  32. package/dist/{client-certificates-MJcDsTId.mjs → client-certificates-B0ebLJdk.mjs} +1 -1
  33. package/dist/{cloud-connector-DWOrN2eM.mjs → cloud-connector-BOjaggJk.mjs} +1 -1
  34. package/dist/{cloudforce-one-2Bhz8YdW.mjs → cloudforce-one-B6HYfk5Z.mjs} +1 -1
  35. package/dist/{completions-BwRpZQVn.mjs → completions-D_9WsLG7.mjs} +1 -1
  36. package/dist/config-7CBz8Xm0.mjs +2 -0
  37. package/dist/{connectivity-BX8C7tvK.mjs → connectivity-welFvZ7X.mjs} +1 -1
  38. package/dist/connector-interrupts-DTV3F-50.mjs +2 -0
  39. package/dist/connector-telemetry-events-kDqb_AGm.mjs +2 -0
  40. package/dist/connector-telemetry-snapshots-DC-wD75E.mjs +2 -0
  41. package/dist/connectors-3vjrdFLB.mjs +3 -0
  42. package/dist/content-scanning-CnW2A0pv.mjs +4 -0
  43. package/dist/{context-DGlHRGWM.mjs → context-CONbNKO-.mjs} +1 -1
  44. package/dist/{custom-certificates-aAiEguR7.mjs → custom-certificates-CnYh6Yi-.mjs} +1 -1
  45. package/dist/{custom-hostnames-AG5yBHIi.mjs → custom-hostnames-C2upqZso.mjs} +1 -1
  46. package/dist/{custom-nameservers-D1DtlRue.mjs → custom-nameservers-BGkAD_PZ.mjs} +1 -1
  47. package/dist/{custom-pages-DQCi2plU.mjs → custom-pages-5fCSP8in.mjs} +1 -1
  48. package/dist/{d1-DbnYhw45.mjs → d1-CyiRbZZn.mjs} +1 -1
  49. package/dist/data-security-Casx4OS_.mjs +6 -0
  50. package/dist/{dcv-delegation-CHspSzTI.mjs → dcv-delegation-DVYO10oA.mjs} +1 -1
  51. package/dist/{deploy-CQial3kN.mjs → deploy-KBRFIatG.mjs} +1 -1
  52. package/dist/{dev-B38LfCTl.mjs → dev-pPazzZvt.mjs} +1 -1
  53. package/dist/{diagnostics-BJQGjVJn.mjs → diagnostics-BqYDoDfw.mjs} +1 -1
  54. package/dist/{dispatch-namespaces-DmHvoBOg.mjs → dispatch-namespaces-Cz2rajnP.mjs} +1 -1
  55. package/dist/{dist-AIcZFk0U.mjs → dist-DA54ZQu0.mjs} +7 -7
  56. package/dist/dist-DpDjsWWn.mjs +306 -0
  57. package/dist/{dns-VMhQSr5n.mjs → dns-62t95Xif.mjs} +1 -1
  58. package/dist/{dns-firewall-B4DVXFBQ.mjs → dns-firewall-Coy8d47t.mjs} +1 -1
  59. package/dist/{durable-objects-CTboySEo.mjs → durable-objects-BSuRERkw.mjs} +1 -1
  60. package/dist/{email-routing-tIR2SFu-.mjs → email-routing-BDUYYeV3.mjs} +1 -1
  61. package/dist/{email-security-Ca1id3rZ.mjs → email-security-ChHA6eqQ.mjs} +1 -1
  62. package/dist/{email-sending-DwWKc5jC.mjs → email-sending-CVrRqn6S.mjs} +1 -1
  63. package/dist/{filters-A4dg_a68.mjs → filters-qJpU9uAS.mjs} +1 -1
  64. package/dist/{firewall-DWPQgYd9.mjs → firewall-C3DDwfwh.mjs} +1 -1
  65. package/dist/{fraud-BMkSsJGU.mjs → fraud-DY3YXFVf.mjs} +1 -1
  66. package/dist/{google-tag-gateway-BGD49nRC.mjs → google-tag-gateway-B00MHDfB.mjs} +1 -1
  67. package/dist/{healthchecks-CtIfrFql.mjs → healthchecks-Drvb79v0.mjs} +1 -1
  68. package/dist/{hostnames-BiomxukN.mjs → hostnames-BdAQo1Mr.mjs} +1 -1
  69. package/dist/{hyperdrive-Da104VaQ.mjs → hyperdrive-99OJV9nl.mjs} +1 -1
  70. package/dist/{iam-BIGKo0WW.mjs → iam-BRbpg3lN.mjs} +1 -1
  71. package/dist/images-D1jI3r3O.mjs +7 -0
  72. package/dist/index.mjs +1 -1
  73. package/dist/{intel-CY6_79v8.mjs → intel-C3ajLpXd.mjs} +1 -1
  74. package/dist/{ips-K4bzaGqd.mjs → ips-B6JETVOY.mjs} +1 -1
  75. package/dist/{keyless-certificates-CZC-L8gM.mjs → keyless-certificates-C4MZ4xnf.mjs} +1 -1
  76. package/dist/{kv-8o27w_pY.mjs → kv-CSWoD9ks.mjs} +1 -1
  77. package/dist/{leaked-credential-checks-qLzRyu85.mjs → leaked-credential-checks-Dgs2oKm9.mjs} +2 -2
  78. package/dist/{load-balancers-DtG8nj25.mjs → load-balancers-Du1tNuUt.mjs} +1 -1
  79. package/dist/{logpush-4L0njy1d.mjs → logpush-SuJyO-uX.mjs} +1 -1
  80. package/dist/{logs-B_Yp95hv.mjs → logs-DcDNRPRl.mjs} +1 -1
  81. package/dist/{magic-cloud-networking-CSOM3EM-.mjs → magic-cloud-networking-D-T0RCvi.mjs} +1 -1
  82. package/dist/{magic-network-monitoring-BnwvM4-I.mjs → magic-network-monitoring-CqtvOePQ.mjs} +1 -1
  83. package/dist/{magic-transit-CXDyvhxq.mjs → magic-transit-BTbkhBtF.mjs} +32 -33
  84. package/dist/{managed-transforms-D15yVbZx.mjs → managed-transforms-CfUBSz9p.mjs} +1 -1
  85. package/dist/{mtls-certificates-D8k0AXWK.mjs → mtls-certificates-Cf1O8c2E.mjs} +1 -1
  86. package/dist/{network-interconnects-rrr7red3.mjs → network-interconnects-DsiNytOU.mjs} +1 -1
  87. package/dist/{observability-DWvpqnQJ.mjs → observability-CLqZ7OSi.mjs} +1 -1
  88. package/dist/open-YWOUIZ5Y-BpqIuBsR.mjs +4 -0
  89. package/dist/{organizations-T77D50Sq.mjs → organizations-aRi1bhFC.mjs} +2 -2
  90. package/dist/{origin-ca-certificates-DXIvD8H5.mjs → origin-ca-certificates-BB4H89a_.mjs} +1 -1
  91. package/dist/{origin-post-quantum-encryption-C8oOczyV.mjs → origin-post-quantum-encryption-DurP3PXG.mjs} +1 -1
  92. package/dist/{origin-tls-client-auth-CaVW1Ztp.mjs → origin-tls-client-auth-CnQNy9-l.mjs} +1 -1
  93. package/dist/{output-BJFNwj7b.mjs → output-CUxZRM5A.mjs} +1 -1
  94. package/dist/{page-rules-CjZPTMQX.mjs → page-rules-CYqtPU1p.mjs} +1 -1
  95. package/dist/{page-shield-D5RRNJCY.mjs → page-shield-D8l9ZMUl.mjs} +1 -1
  96. package/dist/{pages-CWJtJnL0.mjs → pages-ChurJ2H7.mjs} +1 -1
  97. package/dist/{pipelines-B0L_7j9e.mjs → pipelines-CeyujvRf.mjs} +1 -1
  98. package/dist/{progress-CrCGTq7N.mjs → progress-Cent9Lsg.mjs} +1 -1
  99. package/dist/{queues-CN6DPhRR.mjs → queues-Rf_n11Cx.mjs} +1 -1
  100. package/dist/{r2-DQIcyRtA.mjs → r2-BtuTO3vQ.mjs} +1 -1
  101. package/dist/{r2-data-catalog-Bbo93TJx.mjs → r2-data-catalog-Debz38kv.mjs} +1 -1
  102. package/dist/radar-CzGM92uM.mjs +2 -0
  103. package/dist/{rate-limits-DcrQV6Ar.mjs → rate-limits-Bbk7HxP7.mjs} +1 -1
  104. package/dist/{raw-fetch-Dlccg0Tr.mjs → raw-fetch-DnbAMFBp.mjs} +1 -1
  105. package/dist/{realtime-kit-CaquuVOE.mjs → realtime-kit-CivLpkpg.mjs} +1 -1
  106. package/dist/{registrar-Ko-xZemf.mjs → registrar-8IeA5DKd.mjs} +1 -1
  107. package/dist/{request-tracers-DOW_reTJ.mjs → request-tracers-D1aH4NmL.mjs} +1 -1
  108. package/dist/{resource-sharing-D7TX0JV0.mjs → resource-sharing-B-Pcto7-.mjs} +3 -3
  109. package/dist/{resource-tagging-C3qtLzCz.mjs → resource-tagging-Bpb6Qq1M.mjs} +1 -1
  110. package/dist/{rules-BXRADHL5.mjs → rules-B10XWY10.mjs} +1 -1
  111. package/dist/{rulesets-CBgpeSvJ.mjs → rulesets-lYczEcJp.mjs} +1 -1
  112. package/dist/{rum-BjPptTUP.mjs → rum-B5GUKa4I.mjs} +3 -3
  113. package/dist/{schema-D16TgWBg.mjs → schema-hefO-tzo.mjs} +1 -1
  114. package/dist/{schema-validation-Dgv_opM3.mjs → schema-validation-DTq517Em.mjs} +1 -1
  115. package/dist/{scim-DdSEr4kZ.mjs → scim-BiLfOQ89.mjs} +1 -1
  116. package/dist/{secrets-store-7BfyvJLb.mjs → secrets-store-CBX0dvHL.mjs} +1 -1
  117. package/dist/{security-center-DAy6AKtT.mjs → security-center-AVpTOBK3.mjs} +1 -1
  118. package/dist/{security-txt-xAMb7K6Y.mjs → security-txt-DVlh8y9l.mjs} +1 -1
  119. package/dist/{session-COHHdS7A.mjs → session-CsvPYFj8.mjs} +2 -2
  120. package/dist/shared-0bwWVDLo.mjs +2 -0
  121. package/dist/{smart-shield-TeWZFnH2.mjs → smart-shield-DblHIce0.mjs} +1 -1
  122. package/dist/{snippets-CCSsCXVs.mjs → snippets-DrpqSXYC.mjs} +1 -1
  123. package/dist/{spawn-DcppKGI5.mjs → spawn-DK7pott_.mjs} +1 -1
  124. package/dist/{spectrum-CTTZID8u.mjs → spectrum-CnrG0jIC.mjs} +2 -2
  125. package/dist/speed-BzRY3Xlh.mjs +4 -0
  126. package/dist/{src-BW6vfAwE.mjs → src-D9_Gq68b.mjs} +10 -10
  127. package/dist/{ssl-BWA2LdwC.mjs → ssl-Cp6tQkZH.mjs} +1 -1
  128. package/dist/stream-CGTRN4ZN.mjs +14 -0
  129. package/dist/{tenants-Bd7NGQ_m.mjs → tenants-o_M62Y1n.mjs} +1 -1
  130. package/dist/{token-validation-DAgtFOvs.mjs → token-validation-Ca5AGEns.mjs} +1 -1
  131. package/dist/{tools-DXQmfFuE.mjs → tools-DtNNmO6l.mjs} +1 -1
  132. package/dist/{turnstile-cfdaO4ca.mjs → turnstile-l7mo9BWL.mjs} +2 -2
  133. package/dist/{ui-D4KtlMh9.mjs → ui-B97lRnOv.mjs} +1 -1
  134. package/dist/{url-normalization-B5RN4nLD.mjs → url-normalization-D1CogSIG.mjs} +1 -1
  135. package/dist/{url-scanner-BrZ1L9OC.mjs → url-scanner-BnJHJqcz.mjs} +1 -1
  136. package/dist/{user-CAo-yCJA.mjs → user-CiyYZ69X.mjs} +2 -2
  137. package/dist/{vectorize-C7_oQlaI.mjs → vectorize-D3LgMLOn.mjs} +1 -1
  138. package/dist/{versions-CUwWJWmy.mjs → versions-B6E8WQyA.mjs} +1 -1
  139. package/dist/{waiting-rooms-Dln5ICg5.mjs → waiting-rooms-Bhy_nuV3.mjs} +1 -1
  140. package/dist/{web3-HQJRm38W.mjs → web3-DlHE0CZc.mjs} +1 -1
  141. package/dist/{workers-Dg7ddG2Q.mjs → workers-DRAkU6YR.mjs} +1 -1
  142. package/dist/{workers-builds-AVfx8IyL.mjs → workers-builds-BmNjiHDZ.mjs} +1 -1
  143. package/dist/{workflows-VquuSh2J.mjs → workflows-z6oapEJs.mjs} +1 -1
  144. package/dist/{zaraz-xYSWIV4P.mjs → zaraz-CyzfYOEU.mjs} +1 -1
  145. package/dist/{zero-trust-CP96wnSh.mjs → zero-trust-fyyIelWx.mjs} +44 -44
  146. package/dist/zero_trust-BAhlNkjo.mjs +3 -0
  147. package/dist/{zones-BSgmZ9WC.mjs → zones-MSULnDwW.mjs} +4 -4
  148. package/package.json +4 -4
  149. package/dist/ai-search-CQF_Sn7d.mjs +0 -7
  150. package/dist/auth-SyWhMmPu.mjs +0 -6
  151. package/dist/auth-ffdf9yR0.mjs +0 -135
  152. package/dist/autorag-BuGhGTeZ.mjs +0 -2
  153. package/dist/billing-PoG81XaQ.mjs +0 -2
  154. package/dist/browser-rendering-xu8F_Rrv.mjs +0 -4
  155. package/dist/config-DYzlVxcB.mjs +0 -2
  156. package/dist/content-scanning-r6uzMO1r.mjs +0 -4
  157. package/dist/data-security-D_EtYBfo.mjs +0 -6
  158. package/dist/dist-DNBSHor6.mjs +0 -301
  159. package/dist/images-BO8FbDAa.mjs +0 -5
  160. package/dist/radar-Bxb0WX8V.mjs +0 -2
  161. package/dist/shared-AGtpXwwL.mjs +0 -2
  162. package/dist/speed-CuzTE0AL.mjs +0 -4
  163. package/dist/stream-GFsIZ-pP.mjs +0 -14
  164. /package/dist/{body-parser-DKa8Ipg1.mjs → body-parser-CBpeIUns.mjs} +0 -0
  165. /package/dist/{cli-types-CRIDdDw3.mjs → cli-types-CMNMD1V7.mjs} +0 -0
  166. /package/dist/{input-validation-zEO81MWN.mjs → input-validation-CTqtyiY9.mjs} +0 -0
  167. /package/dist/{lib-Eu1wXxuh.mjs → lib-B6xvCJjc.mjs} +0 -0
  168. /package/dist/{local-VJaJ3BZ1.mjs → local-D8bhHUMK.mjs} +0 -0
  169. /package/dist/{metadata-5VwHPW6C.mjs → metadata-jh2EIan8.mjs} +0 -0
  170. /package/dist/{resolve-4-OSeHlK.mjs → resolve-D1mG0REg.mjs} +0 -0
  171. /package/dist/{theme-BklJDrb2.mjs → theme-CFHr0Dh9.mjs} +0 -0
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- import{a as e}from"./theme-BklJDrb2.mjs";import{i as t,n,r,t as i}from"./ui-D4KtlMh9.mjs";import{c as a,d as o,l as s,o as c,r as l,s as u,t as d,u as f}from"./auth-ffdf9yR0.mjs";import{t as p}from"./output-BJFNwj7b.mjs";const m={command:`login`,describe:`Authenticate with Cloudflare`,builder:e=>e.option(`force`,{type:`boolean`,alias:`f`,description:`Force re-authentication even if already logged in`,default:!1}),handler:async o=>{if(!o.force&&a()){if(await u()){let t=s();console.log(n(`You are already logged in.`)),console.log(`${e.info(`Config file:`)} ${e.muted(c())}`),t.accessToken&&console.log(`${e.info(`Token expires:`)} ${new Date(t.accessToken.expiry).toLocaleString()}`),console.log(i(`Run ${e.code(`cf auth login --force`)} to re-authenticate, or ${e.code(`cf auth logout`)} to log out.`));return}console.log(t(`Existing tokens are invalid or expired. Starting fresh login...
3
- `))}else o.force&&a()&&console.log(n(`Re-authenticating...
4
- `));if(console.log(n(`Starting OAuth login flow...
5
- `)),!await f()){console.log(t(`CLOUDFLARE_API_TOKEN is set and takes precedence. Unset it to log in via OAuth.`));return}let l=s();console.log(`
6
- `+r(`Successfully authenticated!`)),console.log(`${e.info(`Config file:`)} ${e.muted(c())}`),l.scopes&&console.log(`${e.info(`Scopes:`)} ${l.scopes.join(`, `)}`),l.accessToken&&console.log(`${e.info(`Token expires:`)} ${new Date(l.accessToken.expiry).toLocaleString()}`)}},h={command:`logout`,describe:`Log out and remove stored credentials`,handler:async()=>{let s=a(),l=!!process.env.CLOUDFLARE_API_TOKEN;if(!s){l?(console.log(n(`No cf OAuth credentials found, but CLOUDFLARE_API_TOKEN environment variable is set.`)),console.log(n(`Unset it with: unset CLOUDFLARE_API_TOKEN`))):(console.log(n(`You are not currently logged in.`)),console.log(i(`Run ${e.code(`cf auth login`)} to authenticate.`)));return}console.log(n(`Logging out...`)),await o(),console.log(r(`Successfully logged out.`)),console.log(`${e.info(`Removed:`)} OAuth tokens from ${e.muted(c())}`),l&&(console.log(``),console.log(t(`CLOUDFLARE_API_TOKEN environment variable is still set.`)),console.log(n(`You will remain authenticated via the env var. Unset it with: unset CLOUDFLARE_API_TOKEN`)))}},g={command:`whoami`,describe:`Show current user and authentication status`,builder:e=>e,handler:async e=>{let t=process.env.CLOUDFLARE_API_TOKEN,n=s(),r;r=t?`CLOUDFLARE_API_TOKEN environment variable`:n.accessToken?`OAuth token from ${c()}`:`none`;let i;try{i=await l()}catch{p({authenticated:!1,error:`Not logged in`});return}let a=d({apiToken:i}),o=!1,u;try{let e=await a.user.get();o=!0,e&&`email`in e&&typeof e.email==`string`&&(u=e.email)}catch(e){o=!1,process.env.DEBUG&&console.error(`Token verification error:`,e)}let f={authenticated:!0,authSource:r,tokenValid:o,...u&&{email:u}};n.accessToken&&(f.scopes=n.scopes,f.expiresAt=n.accessToken.expiry),p(f)}},_={command:`auth`,describe:`Authentication commands (login, logout, whoami)`,builder:e=>e.command(m).command(h).command(g).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{_ as default};
@@ -1,135 +0,0 @@
1
- #!/usr/bin/env node
2
- import{o as e}from"./chunk-DH-VkVmc.mjs";import{a as t,i as n,o as r,r as i,t as a}from"./session-COHHdS7A.mjs";import{A as o,G as s,H as c,L as l,N as u,b as d,f,g as ee,h as p,m as te,q as m,t as ne}from"./dist-DNBSHor6.mjs";import{n as re,t as h}from"./theme-BklJDrb2.mjs";import{a as ie,i as g,n as ae,r as oe}from"./config-DYzlVxcB.mjs";import{c as se,f as ce,h as _,i as le,m as v,o as ue,r as de,s as fe,t as pe}from"./dist-AIcZFk0U.mjs";import{n as me,t as he}from"./resolve-4-OSeHlK.mjs";import{createRequire as ge}from"node:module";import{chmodSync as _e,existsSync as y,mkdirSync as ve,readFileSync as ye,rmSync as b,unlinkSync as be,writeFileSync as x}from"node:fs";import xe from"node:assert";import{platform as Se}from"node:os";import S,{dirname as C,join as w}from"node:path";import{exec as Ce,spawnSync as we}from"node:child_process";import{createCipheriv as Te,createDecipheriv as Ee,createHash as De,randomBytes as Oe,webcrypto as ke}from"node:crypto";import Ae from"node:http";import{TextEncoder as je}from"node:util";import Me from"node:url";import"node:process";import{execSync as Ne}from"child_process";import Pe from"os";var Fe=Object.defineProperty,T=(e,t)=>Fe(e,`name`,{value:t,configurable:!0}),E=o(),Ie=!1;function D(e){let{configOverride:t,warningLogger:n,storage:r}=e,{oauth_token:i,refresh_token:a,expiration_time:o,scopes:s,api_token:c}=t??r.read()??{};return i?{accessToken:{value:i,expiry:o??`2000-01-01:00:00:00+00:00`},refreshToken:{value:a??``},scopes:s}:c?(!Ie&&n&&(Ie=!0,n.warn(`It looks like you have used Wrangler v1's \`config\` command to login with an API token
3
- from ${t===void 0?r.path():`in-memory config`}.
4
- This is no longer supported in the current version of Wrangler.
5
- If you wish to authenticate via an API token then please set the \`CLOUDFLARE_API_TOKEN\` environment variable.`)),{deprecatedApiToken:c}):{}}T(D,`readStoredAuthState`);var Le=d({variableName:`CLOUDFLARE_API_TOKEN`,deprecatedName:`CF_API_TOKEN`}),Re=d({variableName:`CLOUDFLARE_API_KEY`,deprecatedName:`CF_API_KEY`}),ze=d({variableName:`CLOUDFLARE_EMAIL`,deprecatedName:`CF_EMAIL`});function Be(e){if(e?.allowGlobalAuthKey??!0){let e=Re(),t=ze();if(e&&t)return{authKey:e,authEmail:t}}let t=Le();if(t)return{apiToken:t}}T(Be,`getAuthFromEnv`);function Ve(e){let t=Be(e);if(t)return t;let n=D({storage:e.storage,warningLogger:e.warningLogger});if(n.deprecatedApiToken)return{apiToken:n.deprecatedApiToken};if(n.accessToken?.value)return{apiToken:n.accessToken.value}}T(Ve,`getAPIToken`);function He(e){let t=Ve(e);if(!t)throw new l(`No API token found.`,{telemetryMessage:`user auth missing api token`});return t}T(He,`requireApiToken`);var O=d({variableName:`WRANGLER_AUTH_DOMAIN`,defaultValue:T(()=>p()===`staging`?`dash.staging.cloudflare.com`:`dash.cloudflare.com`,`defaultValue`)}),Ue=d({variableName:`WRANGLER_AUTH_URL`,defaultValue:T(()=>`https://${O()}/oauth2/auth`,`defaultValue`)}),We=d({variableName:`WRANGLER_TOKEN_URL`,defaultValue:T(()=>`https://${O()}/oauth2/token`,`defaultValue`)}),Ge=d({variableName:`WRANGLER_REVOKE_URL`,defaultValue:T(()=>`https://${O()}/oauth2/revoke`,`defaultValue`)}),Ke=d({variableName:`CLOUDFLARE_ACCESS_CLIENT_ID`}),qe=d({variableName:`CLOUDFLARE_ACCESS_CLIENT_SECRET`}),Je=d({variableName:`WRANGLER_CF_AUTHORIZATION_TOKEN`}),Ye=f({variableName:`CLOUDFLARE_AUTH_USE_KEYRING`}),k={},A=new Map;function Xe(){for(let e of Object.keys(k))delete k[e];A.clear()}T(Xe,`clearAccessCaches`);async function Ze(e,t){if(t.debug(`Checking if domain has Access enabled:`,e),A.has(e))return t.debug(`Using cached Access switch for:`,e,A.get(e)),A.get(e)??!1;t.debug(`Access switch not cached for:`,e);try{let n=new AbortController,r=setTimeout(()=>{n.abort()},1e3),i=await(0,E.fetch)(`https://${e}`,{redirect:`manual`,signal:n.signal});clearTimeout(r);let a=!!(i.status===302&&i.headers.get(`location`)?.includes(`cloudflareaccess.com`));return t.debug(`Caching access switch for:`,e),A.set(e,a),a}catch{return A.set(e,!1),!1}}T(Ze,`domainUsesAccess`);async function Qe(e,t){let n=t.logger,r=t.isNonInteractiveOrCI,i=Ke(),a=qe();if(i&&a){n.debug(`Using Access Service Token headers for domain:`,e);let t={"CF-Access-Client-Id":i,"CF-Access-Client-Secret":a};return k[e]=t,t}if((i!==void 0||a!==void 0)&&n.warn(`Both CLOUDFLARE_ACCESS_CLIENT_ID and CLOUDFLARE_ACCESS_CLIENT_SECRET must be set to use Access Service Token authentication. Only ${i===void 0?`CLOUDFLARE_ACCESS_CLIENT_SECRET`:`CLOUDFLARE_ACCESS_CLIENT_ID`} was found.`),!await Ze(e,n))return{};if(n.debug(`Getting Access headers for domain:`,e),k[e])return n.debug(`Using cached Access headers for domain:`,e),k[e];if(r())throw new l(`The domain "${e}" is behind Cloudflare Access, but no Access Service Token credentials were found and the current environment is non-interactive.
6
- Set the CLOUDFLARE_ACCESS_CLIENT_ID and CLOUDFLARE_ACCESS_CLIENT_SECRET environment variables to authenticate with an Access Service Token.
7
- See https://developers.cloudflare.com/cloudflare-one/access-controls/service-credentials/service-tokens/`,{telemetryMessage:`user access missing service token non interactive`});n.debug(`Spawning cloudflared to get Access token for domain:`);let o=we(`cloudflared`,[`access`,`login`,e]);if(o.error)throw new l("To use Wrangler with Cloudflare Access, please install `cloudflared` from https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation",{telemetryMessage:`user access missing cloudflared`});let s=o.stdout.toString();n.debug(`cloudflared output:`,s);let c=s.match(/fetched your token:\n\n(.*)/m);if(c&&c.length>=2){let t={Cookie:`CF_Authorization=${c[1]}`};return k[e]=t,n.debug(`Caching Access headers for domain:`,e),t}throw Error(`Failed to authenticate with Cloudflare Access`)}T(Qe,`getAccessHeaders`);async function $e(e){let t=Je();return t===void 0?Qe(O(),e):(e.logger.debug(`Using WRANGLER_CF_AUTHORIZATION_TOKEN from environment`),{Cookie:`CF_Authorization=${t}`})}T($e,`getCloudflareAccessHeaders`);function et(e){var t=[...arguments].slice(1),n=Array.from(typeof e==`string`?[e]:e);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,``);var r=n.reduce(function(e,t){var n=t.match(/\n([\t ]+|(?!\s).)/g);return n?e.concat(n.map(function(e){return e.match(/[\t ]/g)?.length??0})):e},[]);if(r.length){var i=RegExp(`
8
- [ ]{`+Math.min.apply(Math,r)+`}`,`g`);n=n.map(function(e){return e.replace(i,`
9
- `)})}n[0]=n[0].replace(/^\r?\n/,``);var a=n[0];return t.forEach(function(e,t){var r=a.match(/(?:^|\n)( *)$/),i=r?r[1]:``,o=e;typeof e==`string`&&e.includes(`
10
- `)&&(o=String(e).split(`
11
- `).map(function(e,t){return t===0?e:``+i+e}).join(`
12
- `)),a+=o+n[t+1]}),a}T(et,`dedent`);var tt=et,j=class extends l{static{T(this,`ErrorOAuth2`)}code;description;uri;toString(){return`ErrorOAuth2`}},nt=class extends j{static{T(this,`ErrorUnknown`)}toString(){return`ErrorUnknown`}},rt=class extends j{static{T(this,`ErrorNoAuthCode`)}toString(){return`ErrorNoAuthCode`}},it=class extends j{static{T(this,`ErrorInvalidReturnedStateParam`)}toString(){return`ErrorInvalidReturnedStateParam`}},at=class extends j{static{T(this,`ErrorInvalidJson`)}toString(){return`ErrorInvalidJson`}},ot=class extends j{static{T(this,`ErrorInvalidScope`)}toString(){return`ErrorInvalidScope`}},st=class extends j{static{T(this,`ErrorInvalidRequest`)}toString(){return`ErrorInvalidRequest`}},ct=class extends j{static{T(this,`ErrorInvalidToken`)}toString(){return`ErrorInvalidToken`}},M=class extends j{static{T(this,`ErrorAuthenticationGrant`)}toString(){return`ErrorAuthenticationGrant`}},lt=class extends M{static{T(this,`ErrorUnauthorizedClient`)}toString(){return`ErrorUnauthorizedClient`}},ut=class extends M{static{T(this,`ErrorAccessDenied`)}toString(){return`ErrorAccessDenied`}},dt=class extends M{static{T(this,`ErrorUnsupportedResponseType`)}toString(){return`ErrorUnsupportedResponseType`}},ft=class extends M{static{T(this,`ErrorServerError`)}toString(){return`ErrorServerError`}},pt=class extends M{static{T(this,`ErrorTemporarilyUnavailable`)}toString(){return`ErrorTemporarilyUnavailable`}},mt=class extends j{static{T(this,`ErrorAccessTokenResponse`)}toString(){return`ErrorAccessTokenResponse`}},ht=class extends mt{static{T(this,`ErrorInvalidClient`)}toString(){return`ErrorInvalidClient`}},gt=class extends mt{static{T(this,`ErrorInvalidGrant`)}toString(){return`ErrorInvalidGrant`}},_t=class extends mt{static{T(this,`ErrorUnsupportedGrantType`)}toString(){return`ErrorUnsupportedGrantType`}};function vt(e,t,n){let r=`OAuth error: ${e}`;return t&&(r+=`
13
- ${t}`),n&&(r+=`
14
- See: ${n}`),r}T(vt,`formatOAuthErrorMessage`);function N(e,t,n){let r=vt(e,t,n),i;switch(e){case`invalid_request`:i=new st(r,{telemetryMessage:`user oauth invalid request`});break;case`invalid_grant`:i=new gt(r,{telemetryMessage:`user oauth invalid grant`});break;case`unauthorized_client`:i=new lt(r,{telemetryMessage:`user oauth unauthorized client`});break;case`access_denied`:i=new ut(r,{telemetryMessage:`user oauth access denied`});break;case`unsupported_response_type`:i=new dt(r,{telemetryMessage:`user oauth unsupported response type`});break;case`invalid_scope`:i=new ot(r,{telemetryMessage:`user oauth invalid scope`});break;case`server_error`:i=new ft(r,{telemetryMessage:`user oauth server error`});break;case`temporarily_unavailable`:i=new pt(r,{telemetryMessage:`user oauth temporarily unavailable`});break;case`invalid_client`:i=new ht(r,{telemetryMessage:`user oauth invalid client`});break;case`unsupported_grant_type`:i=new _t(r,{telemetryMessage:`user oauth unsupported grant type`});break;case`invalid_json`:i=new at(r,{telemetryMessage:`user oauth invalid json`});break;case`invalid_token`:i=new ct(r,{telemetryMessage:`user oauth invalid token`});break;default:i=new nt(r,{telemetryMessage:`user oauth unknown error`});break}return i.code=e,i.description=t,i.uri=n,i}T(N,`toErrorClass`);var yt=96,bt=32,P=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~`;function xt(e){let t=btoa(e);return t=t.replace(/\+/g,`-`),t=t.replace(/\//g,`_`),t=t.replace(/=/g,``),t}T(xt,`base64urlEncode`);async function St(){let e=new Uint32Array(yt);ke.getRandomValues(e);let t=xt(Array.from(e).map(e=>P[e%P.length]).join(``)),n=await ke.subtle.digest(`SHA-256`,new je().encode(t)),r=new Uint8Array(n),i=``,a=r.byteLength;for(let e=0;e<a;e++)i+=String.fromCharCode(r[e]);return{codeChallenge:xt(i),codeVerifier:t}}T(St,`generatePKCECodes`);function Ct(e,t,n){if(e.error)throw N(Array.isArray(e.error)?e.error[0]:e.error,Array.isArray(e.error_description)?e.error_description[0]:e.error_description,Array.isArray(e.error_uri)?e.error_uri[0]:e.error_uri);let r=e.code;if(!r)return!1;if(e.state!==t.stateQueryParam)throw n.warn(`Received query string parameter doesn't match the one sent! Possible malicious activity somewhere.`),new it(``,{telemetryMessage:`user oauth invalid returned state`});return xe(!Array.isArray(r)),t.authorizationCode=r,t.hasAuthCodeBeenExchangedForAccessToken=!1,!0}T(Ct,`isReturningFromAuthServer`);async function wt(e,t,n,r,i){let{codeChallenge:a,codeVerifier:o}=await St(),s=i.generateRandomState(bt);return Object.assign(r,{codeChallenge:a,codeVerifier:o,stateQueryParam:s}),i.generateAuthUrl({authUrl:Ue(),clientId:t,scopes:e,stateQueryParam:s,codeChallenge:a,redirectUri:n})}T(wt,`getAuthURL`);async function Tt(e,t,n,r){let i=D({warningLogger:e,storage:r}).refreshToken;i||e.warn(`No refresh token is present.`);let a=await Dt(new URLSearchParams({grant_type:`refresh_token`,refresh_token:i?.value??``,client_id:n}),e,t);if(a.status>=400){let t;try{t=await F(a,e)}catch(t){e.error(t)}throw t===void 0?new nt(`Failed to parse Error from exchangeRefreshTokenForAccessToken`,{telemetryMessage:`user oauth refresh token exchange parse error`}):typeof t==`string`?Error(t):t}else try{let t=await F(a,e);if(`error`in t)throw t.error;let{access_token:n,expires_in:r,refresh_token:o,scope:s}=t;return{token:{value:n,expiry:new Date(Date.now()+r*1e3).toISOString()},scopes:s?s.split(` `):[],refreshToken:o?{value:o}:i}}catch(e){throw typeof e==`string`?N(e):e}}T(Tt,`exchangeRefreshTokenForAccessToken`);async function Et(e,t,n,r,i){let{authorizationCode:a,codeVerifier:o=``}=e;o?a||t.warn(`No authorization grant code is being passed.`):t.warn(`No code verifier is being sent.`);let s=await Dt(new URLSearchParams({grant_type:`authorization_code`,code:a??``,redirect_uri:i,client_id:r,code_verifier:o}),t,n);if(!s.ok){let{error:e}=await F(s,t);throw e===`invalid_grant`&&t.log(`Expired! Auth code or refresh token needs to be renewed.`),N(e)}let c=await F(s,t);if(`error`in c)throw N(c.error);let{access_token:l,expires_in:u,refresh_token:d,scope:f}=c;return e.hasAuthCodeBeenExchangedForAccessToken=!0,{token:{value:l,expiry:new Date(Date.now()+u*1e3).toISOString()},scopes:f?f.split(` `):[],refreshToken:d?{value:d}:void 0}}T(Et,`exchangeAuthCodeForAccessToken`);async function Dt(e,t,n){let r={"Content-Type":`application/x-www-form-urlencoded`};if(t.debug(`fetching auth token`,`grant_type=${e.get(`grant_type`)??`<unknown>`}`),await Ze(O(),t)){t.debug(`Using Cloudflare Access to get an access token for the auth request`);let e=await $e({logger:t,isNonInteractiveOrCI:n});Object.assign(r,e)}t.debug(`Fetching auth token from`,We());try{let n=await(0,E.fetch)(We(),{method:`POST`,body:e.toString(),headers:r});return n.ok||t.debug(`Failed to fetch auth token:`,n.status,n.statusText),n}catch(e){throw t.debug(`Failed to fetch auth token:`,e),e}}T(Dt,`fetchAuthToken`);async function F(e,t){let n=await e.text();try{return JSON.parse(n)}catch(r){throw n.match(/<!DOCTYPE html>/)&&(t.error(`The body of the response was HTML rather than JSON. Check the debug logs to see the full body of the response.`),n.match(/challenge-platform/)&&t.error(`It looks like you might have hit a bot challenge page. This may be transient but if not, please contact Cloudflare to find out what can be done. When you contact Cloudflare, please provide your Ray ID: ${e.headers.get(`cf-ray`)}`)),t.debug(`Full body of response
15
-
16
- `,n),Error(`Invalid JSON in response: status: ${e.status} ${e.statusText}`,{cause:r})}}T(F,`getJSONFromResponse`);async function Ot(e,t,n,r){let i=await wt(e.scopes,e.clientId,e.redirectUri,t,r),a=new URL(e.redirectUri).pathname,o,s,c=new Promise((e,t)=>{s=setTimeout(()=>{o.close(),clearTimeout(s),t(new l(`Timed out waiting for authorization code, please try again.`,{telemetryMessage:`user oauth authorization timeout`}))},12e4)}),u=new Promise((r,i)=>{o=Ae.createServer(async(c,u)=>{function d(e,t){clearTimeout(s),u.writableEnded||u.end(),o.close(n=>{t||n?i(t||n):(xe(e),r(e))})}T(d,`finish`);function f(e){let t=T(e=>e.replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e]),`escape`),n=`<!doctype html>
17
- <html lang="en">
18
- <head>
19
- <meta charset="utf-8" />
20
- <title>Wrangler login failed</title>
21
- <style>
22
- body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; max-width: 720px; margin: 4rem auto; padding: 0 1rem; color: #1f2933; line-height: 1.5; }
23
- h1 { color: #c12d3f; }
24
- code { background: #f5f7fa; padding: 0.15em 0.3em; border-radius: 3px; }
25
- p.detail { background: #f5f7fa; padding: 1rem; border-radius: 4px; white-space: pre-wrap; }
26
- </style>
27
- </head>
28
- <body>
29
- <h1>Wrangler login failed</h1>
30
- <p>The Cloudflare OAuth provider returned an error.</p>
31
- ${e.code?`<p>Code: <code>${t(e.code)}</code></p>`:``}
32
- ${e.description?`<p class="detail">${t(e.description)}</p>`:``}
33
- <p>You can close this tab and return to your terminal for more details.</p>
34
- </body>
35
- </html>`;u.writeHead(400,{"Content-Type":`text/html; charset=utf-8`}),u.end(n)}T(f,`renderErrorPage`),xe(c.url,`This request doesn't have a URL`);let{pathname:ee,query:p}=Me.parse(c.url,!0);if(c.method!==`GET`)return u.end(`OK`);switch(ee){case a:{let r=!1;try{r=Ct(p,t,n.logger)}catch(t){if(t instanceof ut){u.writeHead(307,{Location:e.denied.url}),u.end(()=>{d(null,new l(e.denied.error,{telemetryMessage:`user oauth consent denied`}))});return}let n=t;f({code:n.code,description:n.description??n.message}),d(null,n);return}if(!r){let e=`The Cloudflare OAuth provider did not return an authorisation code.`;f({description:e}),d(null,new rt(e,{telemetryMessage:`user oauth missing auth code`}));return}try{let r=await Et(t,n.logger,n.isNonInteractiveOrCI,e.clientId,e.redirectUri);u.writeHead(307,{Location:e.granted.url}),u.end(()=>{d(r)})}catch(e){let t=e,n=t instanceof j;f({code:n?t.code:void 0,description:(n?t.description:void 0)??t.message??`Failed to exchange the authorisation code for an access token.`}),d(null,t)}return}}});let c=new URL(e.redirectUri),u=Number(c.port||(c.protocol===`https:`?443:80));(c.hostname!==e.callbackHost||u!==e.callbackPort)&&(n.logger.log(`Temporary login server listening on ${e.callbackHost}:${e.callbackPort}`),n.logger.log(`Note that the OAuth login page will always redirect to \`${e.redirectUri}\`.
36
- If you have changed the callback host or port because you are running in a container, then ensure that you have port forwarding set up correctly.`)),o.once(`error`,t=>{clearTimeout(s),t.code===`EADDRINUSE`?i(new l(`The OAuth callback server could not bind to ${e.callbackHost}:${e.callbackPort} because the port is already in use. Stop the process using that port or pass a different \`--callback-port\`.`,{telemetryMessage:`user oauth callback port in use`})):i(t)}),o.listen(e.callbackPort,e.callbackHost)});return e.browser?(n.logger.log(`Opening a link in your default browser: ${i}`),await n.openInBrowser(i)):n.logger.log(`Visit this link to authenticate: ${i}`),Promise.race([c,u])}T(Ot,`getOauthToken`);var kt=T(({authUrl:e,clientId:t,scopes:n,stateQueryParam:r,codeChallenge:i,redirectUri:a})=>e+`?response_type=code&client_id=${encodeURIComponent(t)}&redirect_uri=${encodeURIComponent(a)}&scope=${encodeURIComponent([...n,`offline_access`].join(` `))}&state=${r}&code_challenge=${encodeURIComponent(i)}&code_challenge_method=S256`,`generateAuthUrl`);function At(e){let t=new Uint32Array(e);return ke.getRandomValues(t),Array.from(t).map(e=>P[e%P.length]).join(``)}T(At,`generateRandomState`);var jt=64e6;function Mt(e,t,n){let r=Array(t+1),i=De(`sha256`).update(e).digest();r[0]=i;for(let e=0;e<t;e++){for(let e=0;e<n;e++)i=De(`sha256`).update(i).digest();r[e+1]=i}return r}T(Mt,`solvePow`);function Nt(e){return Buffer.concat(e).toString(`base64`)}T(Nt,`encodeCheckpoints`);function Pt(e){let t=Mt(Buffer.from(e.seed,`base64url`),e.k,e.g);return{challengeToken:e.challengeToken,solution:{checkpoints:Nt(t)}}}T(Pt,`solveChallenge`);var I={termsOfService:`https://www.cloudflare.com/terms/`,privacyPolicy:`https://www.cloudflare.com/privacypolicy/`},Ft=`You must accept Cloudflare's Terms of Service (${I.termsOfService}) and Privacy Policy (${I.privacyPolicy}) in order to continue. By typing "yes", you agree to these terms. Type "yes" to continue.`,It=`Continuing means you accept Cloudflare's Terms of Service (${I.termsOfService}) and Privacy Policy (${I.privacyPolicy}).`,Lt=`You must accept Cloudflare's Terms of Service (${I.termsOfService}) and Privacy Policy (${I.privacyPolicy}) to use --temporary.`;function Rt(){return`${te(ne)}/provisioning/previews`}T(Rt,`getTemporaryPreviewUrl`);function zt(){return`${Rt()}/challenge`}T(zt,`getTemporaryPreviewChallengeUrl`);function Bt(e){let t=Date.parse(e);return!Number.isNaN(t)&&t>Date.now()}T(Bt,`isFutureTimestamp`);function Vt(e){let t=e.read();if(t&&!(!t.account?.id||!t.account?.apiToken||!t.account?.name||!t.claim?.url||!Bt(t.account?.expiresAt??``)||!Bt(t.claim?.expiresAt??``)))return t}T(Vt,`getCachedTemporaryPreviewAccount`);async function Ht(e){let t=await(0,E.fetch)(zt(),{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok)throw new u(`Failed to request a proof-of-work challenge (${t.status} ${t.statusText}).`,{telemetryMessage:`deploy temporary account challenge failed`});let n;try{n=await t.json()}catch{throw new u(`Failed to request a proof-of-work challenge. Received an invalid response (${t.status} ${t.statusText}).`,{telemetryMessage:`deploy temporary account challenge invalid response`})}let{challengeToken:r,seed:i,k:a,g:o}=n.result??{};if(r===void 0||i===void 0||a===void 0||o===void 0)throw new u(`Failed to request a proof-of-work challenge because the response was missing required fields.`,{telemetryMessage:`deploy temporary account challenge incomplete`});if(!Number.isInteger(a)||!Number.isInteger(o)||a<=0||o<=0||a*o>jt||Buffer.from(i,`base64url`).length!==32)throw new u(`The proof-of-work challenge is not supported by this version of Wrangler.`,{telemetryMessage:`deploy temporary account challenge difficulty unsupported`});return e.log(`Solving proof-of-work challenge…`),Pt({challengeToken:r,seed:i,k:a,g:o})}T(Ht,`requestPowSolution`);async function Ut(e){let t=await Ht(e),n=await(0,E.fetch)(Rt(),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({termsOfService:I.termsOfService,privacyPolicy:I.privacyPolicy,acceptTermsOfService:`yes`,challengeToken:t.challengeToken,solution:t.solution})});if(!n.ok)throw new u(`Failed to create a temporary preview account (${n.status} ${n.statusText}).`,{telemetryMessage:`deploy temporary account create failed`});let r;try{r=await n.json()}catch{throw new u(`Failed to create a temporary preview account. Received an invalid response (${n.status} ${n.statusText}).`,{telemetryMessage:`deploy temporary account invalid response`})}let i=r.result,a=i?.account?.id,o=i?.account?.name,s=i?.account?.apiToken,c=i?.account?.expiresAt,l=i?.claim?.url,d=i?.claim?.expiresAt;if(a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||d===void 0)throw new u(`Failed to create a temporary preview account because the response was missing required fields.`,{telemetryMessage:`deploy temporary account response incomplete`});return{account:{id:a,name:o,apiToken:s,expiresAt:c},claim:{url:l,expiresAt:d}}}T(Ut,`createTemporaryPreviewAccount`);async function Wt(e){let t=Vt(e.storage);if(t)return{account:t,cached:!0};if(!await e.prompt(Ft,It))throw new l(Lt,{telemetryMessage:`user temporary terms not accepted`});let n=await Ut(e.logger);return e.storage.write(n),{account:n,cached:!1}}T(Wt,`getOrCreateTemporaryPreviewAccount`);function Gt(e){let t={},n={generateAuthUrl:e.generateAuthUrl??kt,generateRandomState:e.generateRandomState??At},r=`default`;function i(t){return e.storageFactory(t??r)}T(i,`getStorage`);let a=T(()=>typeof e.clientId==`function`?e.clientId():e.clientId,`getClientId`),o=e.consent,s=!1,c,u=new URL(e.redirectUri),d=u.hostname,f=Number(u.port);async function p(r){if(e.hasEnvCredentials())return e.logger.error(`You are logged in with an API Token. Unset the CLOUDFLARE_API_TOKEN in the environment to log in via OAuth.`),!1;let s=ee(r.complianceConfig);if(s===`fedramp_high`)throw new l(tt`
37
- OAuth login is not supported in the \`${s}\` compliance region.
38
- Please use a Cloudflare API token (\`CLOUDFLARE_API_TOKEN\` environment variable) or remove the ${r.complianceConfig?.compliance_region?"`compliance_region` configuration property":"`CLOUDFLARE_API_ENVIRONMENT` environment variable"}.
39
- `,{telemetryMessage:`user login unsupported compliance region`});e.logger.log(`Attempting to login via OAuth...`);let c=await Ot({browser:r.browser??!0,scopes:r.scopes,clientId:a(),redirectUri:e.redirectUri,denied:o.denied,granted:o.granted,callbackHost:r.callbackHost??d,callbackPort:r.callbackPort??f},t,e,n);return i(r.profile).write({oauth_token:c.token?.value??``,expiration_time:c.token?.expiry,refresh_token:c.refreshToken?.value,scopes:c.scopes}),e.logger.log(`Successfully logged in.`),_(),e.purgeOnLoginOrLogout?.(),!0}T(p,`login`);function te(t){if(e.hasEnvCredentials())return!1;let{accessToken:n}=D({warningLogger:e.logger,storage:i(t)});return!!(n&&new Date>=new Date(n.expiry))}T(te,`isRefreshNeeded`);async function m(t){let n=i(t);try{let{token:{value:t,expiry:r}={value:``,expiry:``},refreshToken:{value:i}={},scopes:o}=await Tt(e.logger,e.isNonInteractiveOrCI,a(),n);return n.write({oauth_token:t,expiration_time:r,refresh_token:i,scopes:o}),!0}catch(t){return e.logger.debug(`Token refresh failed: ${t instanceof Error?t.message:String(t)}`),!1}}T(m,`refreshToken`);async function ne(t){if(e.hasEnvCredentials())return{loggedIn:!0};let n=D({warningLogger:e.logger,storage:i(t.profile)});return!n.accessToken&&!n.deprecatedApiToken?e.isNonInteractiveOrCI()?{loggedIn:!1,reason:`no-credentials-non-interactive`}:await p(t)?{loggedIn:!0}:{loggedIn:!1,reason:`no-credentials-login-failed`}:te(t.profile)?await m(t.profile)?{loggedIn:!0}:e.isNonInteractiveOrCI()?{loggedIn:!1,reason:`token-expired-non-interactive`}:await p(t)?{loggedIn:!0}:{loggedIn:!1,reason:`token-expired-login-failed`}:{loggedIn:!0}}T(ne,`loginOrRefreshIfRequired`);async function re(t){let n=_();if(e.hasEnvCredentials()){e.logger.log(`You are logged in with an API Token. Unset the CLOUDFLARE_API_TOKEN in the environment to log out.`);return}let r=D({warningLogger:e.logger,storage:i(t)}).refreshToken;if(!r){e.logger.log(n?`Cleared temporary preview account.`:`Not logged in, exiting...`);return}let o=`client_id=${encodeURIComponent(a())}&token_type_hint=refresh_token&token=${encodeURIComponent(r.value||``)}`;await(await(0,E.fetch)(Ge(),{method:`POST`,body:o,headers:{"Content-Type":`application/x-www-form-urlencoded`}})).text(),i(t).clear(),e.logger.log(`Successfully logged out.`),e.purgeOnLoginOrLogout?.()}T(re,`logout`);async function h(){let t=D({warningLogger:e.logger,storage:i()});if(t.accessToken){if(t.accessToken&&new Date>=new Date(t.accessToken.expiry)){if(!await m())return;t=D({warningLogger:e.logger,storage:i()})}return t.accessToken?.value}}T(h,`getOAuthTokenFromLocalState`);function ie(){return c?{apiToken:c.account.apiToken}:Ve({storage:i(),warningLogger:e.logger,allowGlobalAuthKey:e.allowGlobalAuthKey})}T(ie,`getAPITokenInternal`);function g(){return c?{apiToken:c.account.apiToken}:He({storage:i(),warningLogger:e.logger,allowGlobalAuthKey:e.allowGlobalAuthKey})}T(g,`requireApiTokenInternal`);function ae(t){s=t&&e.temporary!==void 0,c=void 0}T(ae,`setTemporaryAllowed`);function oe(){return s}T(oe,`isTemporaryAllowed`);function se(){return c}T(se,`getActiveTemporaryAccount`);async function ce(){if(!e.temporary)throw new l(`Temporary preview accounts are not supported by this CLI.`,{telemetryMessage:`user temporary account unsupported`});let t=await Wt({...e.temporary,logger:e.logger});return c=t.account,t}T(ce,`activateTemporaryAccount`);function _(){return c=void 0,e.temporary?.storage.clear()??!1}T(_,`clearTemporaryAccount`);function le(e){r=e}T(le,`setProfile`);function v(){return r}T(v,`getActiveProfile`);function ue(){return D({warningLogger:e.logger,storage:i()}).scopes}return T(ue,`getScopes`),{setProfile:le,getActiveProfile:v,login:p,logout:re,loginOrRefreshIfRequired:ne,getOAuthTokenFromLocalState:h,getAPIToken:ie,requireApiToken:g,getScopes:ue,setTemporaryAllowed:ae,isTemporaryAllowed:oe,getActiveTemporaryAccount:se,activateTemporaryAccount:ce}}T(Gt,`createOAuthFlow`);var Kt=[`default`,`staging`];function qt(e){let t={read(){return e.bindings.read()},write(t){e.bindings.write(t)},activate(t,n){let r=S.resolve(n),i=e.bindings.read();i[r]=t,e.bindings.write(i)},deactivate(t){let n=S.resolve(t),r=e.bindings.read(),i=r[n];if(i===void 0){let e=R(n,r);throw e?new l(`No profile is directly bound to "${L(n)}". The active profile "${e.profile}" is bound at "${L(e.dir)}". Run \`wrangler auth deactivate\` from that directory instead.`,{telemetryMessage:`auth deactivate wrong directory`}):new l(`No profile is bound to "${L(n)}". Nothing to deactivate.`,{telemetryMessage:`auth deactivate no binding`})}delete r[n],e.bindings.write(r);let a=R(n,r);return a?{removedProfile:i,newResolution:{profile:a.profile,source:`inherited from ${a.dir}`}}:e.configs.exists(`default`)?{removedProfile:i,newResolution:{profile:`default`,source:`default profile`}}:{removedProfile:i,newResolution:{profile:void 0,source:`no profile`}}},getProfileForDirectory(t){return R(t,e.bindings.read())?.profile},getBindingsForProfile(t){return Object.entries(e.bindings.read()).filter(([,e])=>e===t).map(([e])=>e)},removeAllBindingsForProfile(t){let n=e.bindings.read(),r=[];for(let[e,i]of Object.entries(n))i===t&&(r.push(e),delete n[e]);return r.length>0&&e.bindings.write(n),r}};return{configs:e.configs,bindings:t,resolve(e){return e.profile?e.profile===`default`?`default`:(Jt(e.profile),e.profile):t.getProfileForDirectory(e.cwd)||`default`}}}T(qt,`createProfileStore`);function Jt(e){if(Kt.includes(e.toLowerCase()))throw new l(`"${e}" is a reserved profile name. Use \`wrangler login\` and \`wrangler logout\` to manage the default profile, which applies as a global fallback.`,{telemetryMessage:`auth profile reserved name`});if(!/^[a-zA-Z0-9_-]+$/.test(e))throw new l(`Invalid profile name "${e}". Profile names may only contain alphanumeric characters, hyphens, and underscores.`,{telemetryMessage:`auth profile invalid name`})}T(Jt,`validateProfileName`);function L(e){return S.relative(process.cwd(),e)||`.`}T(L,`formatDirectoryForUserError`);function R(e,t){let n=S.resolve(e),r=Object.entries(t).sort(([e],[t])=>t.length-e.length);for(let[e,t]of r)if(n===e||n.startsWith(e)&&n[e.length]===S.sep)return{profile:t,dir:e}}T(R,`getProfileForDirectoryFromBindings`);function Yt(e,t){let n=e.slice(0,t).split(/\r\n|\n|\r/g);return[n.length,n.pop().length+1]}T(Yt,`getLineColFromPtr`);function Xt(e,t,n){let r=e.split(/\r\n|\n|\r/g),i=``,a=(Math.log10(t+1)|0)+1;for(let e=t-1;e<=t+1;e++){let o=r[e-1];o&&(i+=e.toString().padEnd(a,` `),i+=`: `,i+=o,i+=`
40
- `,e===t&&(i+=` `.repeat(a+n+2),i+=`^
41
- `))}return i}T(Xt,`makeCodeBlock`);var z=class extends Error{static{T(this,`TomlError`)}line;column;codeblock;constructor(e,t){let[n,r]=Yt(t.toml,t.ptr),i=Xt(t.toml,n,r);super(`Invalid TOML document: ${e}
42
-
43
- ${i}`,t),this.line=n,this.column=r,this.codeblock=i}};function Zt(e,t){let n=0;for(;e[t-++n]===`\\`;);return--n&&n%2}T(Zt,`isEscaped`);function B(e,t=0,n=e.length){let r=e.indexOf(`
44
- `,t);return e[r-1]===`\r`&&r--,r<=n?r:-1}T(B,`indexOfNewline`);function Qt(e,t){for(let n=t;n<e.length;n++){let r=e[n];if(r===`
45
- `)return n;if(r===`\r`&&e[n+1]===`
46
- `)return n+1;if(r<` `&&r!==` `||r===``)throw new z(`control characters are not allowed in comments`,{toml:e,ptr:t})}return e.length}T(Qt,`skipComment`);function V(e,t,n,r){let i;for(;(i=e[t])===` `||i===` `||!n&&(i===`
47
- `||i===`\r`&&e[t+1]===`
48
- `);)t++;return r||i!==`#`?t:V(e,Qt(e,t),n)}T(V,`skipVoid`);function $t(e,t,n,r,i=!1){if(!r)return t=B(e,t),t<0?e.length:t;for(let a=t;a<e.length;a++){let t=e[a];if(t===`#`)a=B(e,a);else if(t===n)return a+1;else if(t===r||i&&(t===`
49
- `||t===`\r`&&e[a+1]===`
50
- `))return a}throw new z(`cannot find end of structure`,{toml:e,ptr:t})}T($t,`skipUntil`);function en(e,t){let n=e[t],r=n===e[t+1]&&e[t+1]===e[t+2]?e.slice(t,t+3):n;t+=r.length-1;do t=e.indexOf(r,++t);while(t>-1&&n!==`'`&&Zt(e,t));return t>-1&&(t+=r.length,r.length>1&&(e[t]===n&&t++,e[t]===n&&t++)),t}T(en,`getStringEnd`);var tn=/^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}:\d{2}(?:\.\d+)?)?(Z|[-+]\d{2}:\d{2})?$/i,nn=class e extends Date{static{T(this,`TomlDate`)}#e=!1;#t=!1;#n=null;constructor(e){let t=!0,n=!0,r=`Z`;if(typeof e==`string`){let i=e.match(tn);i?(i[1]||(t=!1,e=`0000-01-01T${e}`),n=!!i[2],n&&e[10]===` `&&(e=e.replace(` `,`T`)),i[2]&&+i[2]>23?e=``:(r=i[3]||null,e=e.toUpperCase(),!r&&n&&(e+=`Z`))):e=``}super(e),isNaN(this.getTime())||(this.#e=t,this.#t=n,this.#n=r)}isDateTime(){return this.#e&&this.#t}isLocal(){return!this.#e||!this.#t||!this.#n}isDate(){return this.#e&&!this.#t}isTime(){return this.#t&&!this.#e}isValid(){return this.#e||this.#t}toISOString(){let e=super.toISOString();if(this.isDate())return e.slice(0,10);if(this.isTime())return e.slice(11,23);if(this.#n===null)return e.slice(0,-1);if(this.#n===`Z`)return e;let t=this.#n.slice(1,3)*60+ +this.#n.slice(4,6);return t=this.#n[0]===`-`?t:-t,new Date(this.getTime()-t*6e4).toISOString().slice(0,-1)+this.#n}static wrapAsOffsetDateTime(t,n=`Z`){let r=new e(t);return r.#n=n,r}static wrapAsLocalDateTime(t){let n=new e(t);return n.#n=null,n}static wrapAsLocalDate(t){let n=new e(t);return n.#t=!1,n.#n=null,n}static wrapAsLocalTime(t){let n=new e(t);return n.#e=!1,n.#n=null,n}},rn=/^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/,an=/^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/,on=/^[+-]?0[0-9_]/,sn=/^[0-9a-f]{4,8}$/i,cn={b:`\b`,t:` `,n:`
51
- `,f:`\f`,r:`\r`,'"':`"`,"\\":`\\`};function ln(e,t=0,n=e.length){let r=e[t]===`'`,i=e[t++]===e[t]&&e[t]===e[t+1];i&&(n-=2,e[t+=2]===`\r`&&t++,e[t]===`
52
- `&&t++);let a=0,o,s=``,c=t;for(;t<n-1;){let n=e[t++];if(n===`
53
- `||n===`\r`&&e[t]===`
54
- `){if(!i)throw new z(`newlines are not allowed in strings`,{toml:e,ptr:t-1})}else if(n<` `&&n!==` `||n===``)throw new z(`control characters are not allowed in strings`,{toml:e,ptr:t-1});if(o){if(o=!1,n===`u`||n===`U`){let r=e.slice(t,t+=n===`u`?4:8);if(!sn.test(r))throw new z(`invalid unicode escape`,{toml:e,ptr:a});try{s+=String.fromCodePoint(parseInt(r,16))}catch{throw new z(`invalid unicode escape`,{toml:e,ptr:a})}}else if(i&&(n===`
55
- `||n===` `||n===` `||n===`\r`)){if(t=V(e,t-1,!0),e[t]!==`
56
- `&&e[t]!==`\r`)throw new z(`invalid escape: only line-ending whitespace may be escaped`,{toml:e,ptr:a});t=V(e,t)}else if(n in cn)s+=cn[n];else throw new z(`unrecognized escape sequence`,{toml:e,ptr:a});c=t}else !r&&n===`\\`&&(a=t-1,o=!0,s+=e.slice(c,a))}return s+e.slice(c,n-1)}T(ln,`parseString`);function un(e,t,n,r){if(e===`true`)return!0;if(e===`false`)return!1;if(e===`-inf`)return-1/0;if(e===`inf`||e===`+inf`)return 1/0;if(e===`nan`||e===`+nan`||e===`-nan`)return NaN;if(e===`-0`)return r?0n:0;let i=rn.test(e);if(i||an.test(e)){if(on.test(e))throw new z(`leading zeroes are not allowed`,{toml:t,ptr:n});e=e.replace(/_/g,``);let a=+e;if(isNaN(a))throw new z(`invalid number`,{toml:t,ptr:n});if(i){if((i=!Number.isSafeInteger(a))&&!r)throw new z(`integer value cannot be represented losslessly`,{toml:t,ptr:n});(i||r===!0)&&(a=BigInt(e))}return a}let a=new nn(e);if(!a.isValid())throw new z(`invalid value`,{toml:t,ptr:n});return a}T(un,`parseValue`);function dn(e,t,n,r){let i=e.slice(t,n),a=i.indexOf(`#`);a>-1&&(Qt(e,a),i=i.slice(0,a));let o=i.trimEnd();if(!r){let n=i.indexOf(`
57
- `,o.length);if(n>-1)throw new z(`newlines are not allowed in inline tables`,{toml:e,ptr:t+n})}return[o,a]}T(dn,`sliceAndTrimEndOf`);function fn(e,t,n,r,i){if(r===0)throw new z(`document contains excessively nested structures. aborting.`,{toml:e,ptr:t});let a=e[t];if(a===`[`||a===`{`){let[o,s]=a===`[`?gn(e,t,r,i):hn(e,t,r,i),c=n?$t(e,s,`,`,n):s;if(s-c&&n===`}`){let t=B(e,s,c);if(t>-1)throw new z(`newlines are not allowed in inline tables`,{toml:e,ptr:t})}return[o,c]}let o;if(a===`"`||a===`'`){o=en(e,t);let r=ln(e,t,o);if(n){if(o=V(e,o,n!==`]`),e[o]&&e[o]!==`,`&&e[o]!==n&&e[o]!==`
58
- `&&e[o]!==`\r`)throw new z(`unexpected character encountered`,{toml:e,ptr:o});o+=+(e[o]===`,`)}return[r,o]}o=$t(e,t,`,`,n);let s=dn(e,t,o-+(e[o-1]===`,`),n===`]`);if(!s[0])throw new z(`incomplete key-value declaration: no value specified`,{toml:e,ptr:t});return n&&s[1]>-1&&(o=V(e,t+s[1]),o+=+(e[o]===`,`)),[un(s[0],e,t,i),o]}T(fn,`extractValue`);var pn=/^[a-zA-Z0-9-_]+[ \t]*$/;function mn(e,t,n=`=`){let r=t-1,i=[],a=e.indexOf(n,t);if(a<0)throw new z(`incomplete key-value: cannot find end of key`,{toml:e,ptr:t});do{let o=e[t=++r];if(o!==` `&&o!==` `)if(o===`"`||o===`'`){if(o===e[t+1]&&o===e[t+2])throw new z(`multiline strings are not allowed in keys`,{toml:e,ptr:t});let s=en(e,t);if(s<0)throw new z(`unfinished string encountered`,{toml:e,ptr:t});r=e.indexOf(`.`,s);let c=e.slice(s,r<0||r>a?a:r),l=B(c);if(l>-1)throw new z(`newlines are not allowed in keys`,{toml:e,ptr:t+r+l});if(c.trimStart())throw new z(`found extra tokens after the string part`,{toml:e,ptr:s});if(a<s&&(a=e.indexOf(n,s),a<0))throw new z(`incomplete key-value: cannot find end of key`,{toml:e,ptr:t});i.push(ln(e,t,s))}else{r=e.indexOf(`.`,t);let n=e.slice(t,r<0||r>a?a:r);if(!pn.test(n))throw new z(`only letter, numbers, dashes and underscores are allowed in keys`,{toml:e,ptr:t});i.push(n.trimEnd())}}while(r+1&&r<a);return[i,V(e,a+1,!0,!0)]}T(mn,`parseKey`);function hn(e,t,n,r){let i={},a=new Set,o,s=0;for(t++;(o=e[t++])!==`}`&&o;){let c={toml:e,ptr:t-1};if(o===`
59
- `)throw new z(`newlines are not allowed in inline tables`,c);if(o===`#`)throw new z(`inline tables cannot contain comments`,c);if(o===`,`)throw new z(`expected key-value, found comma`,c);if(o!==` `&&o!==` `){let o,c=i,l=!1,[u,d]=mn(e,t-1);for(let n=0;n<u.length;n++){if(n&&(c=l?c[o]:c[o]={}),o=u[n],(l=Object.hasOwn(c,o))&&(typeof c[o]!=`object`||a.has(c[o])))throw new z(`trying to redefine an already defined value`,{toml:e,ptr:t});!l&&o===`__proto__`&&Object.defineProperty(c,o,{enumerable:!0,configurable:!0,writable:!0})}if(l)throw new z(`trying to redefine an already defined value`,{toml:e,ptr:t});let[f,ee]=fn(e,d,`}`,n-1,r);a.add(f),c[o]=f,t=ee,s=e[t-1]===`,`?t-1:0}}if(s)throw new z(`trailing commas are not allowed in inline tables`,{toml:e,ptr:s});if(!o)throw new z(`unfinished table encountered`,{toml:e,ptr:t});return[i,t]}T(hn,`parseInlineTable`);function gn(e,t,n,r){let i=[],a;for(t++;(a=e[t++])!==`]`&&a;)if(a===`,`)throw new z(`expected value, found comma`,{toml:e,ptr:t-1});else if(a===`#`)t=Qt(e,t);else if(a!==` `&&a!==` `&&a!==`
60
- `&&a!==`\r`){let a=fn(e,t-1,`]`,n-1,r);i.push(a[0]),t=a[1]}if(!a)throw new z(`unfinished array encountered`,{toml:e,ptr:t});return[i,t]}T(gn,`parseArray`);function _n(e,t,n,r){let i=t,a=n,o,s=!1,c;for(let t=0;t<e.length;t++){if(t){if(i=s?i[o]:i[o]={},a=(c=a[o]).c,r===0&&(c.t===1||c.t===2))return null;if(c.t===2){let e=i.length-1;i=i[e],a=a[e].c}}if(o=e[t],(s=Object.hasOwn(i,o))&&a[o]?.t===0&&a[o]?.d)return null;s||(o===`__proto__`&&(Object.defineProperty(i,o,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(a,o,{enumerable:!0,configurable:!0,writable:!0})),a[o]={t:t<e.length-1&&r===2?3:r,d:!1,i:0,c:{}})}if(c=a[o],c.t!==r&&!(r===1&&c.t===3)||(r===2&&(c.d||(c.d=!0,i[o]=[]),i[o].push(i={}),c.c[c.i++]=c={t:1,d:!1,i:0,c:{}}),c.d))return null;if(c.d=!0,r===1)i=s?i[o]:i[o]={};else if(r===0&&s)return null;return[o,i,c.c]}T(_n,`peekTable`);function vn(e,{maxDepth:t=1e3,integersAsBigInt:n}={}){let r={},i={},a=r,o=i;for(let s=V(e,0);s<e.length;){if(e[s]===`[`){let t=e[++s]===`[`,n=mn(e,s+=+t,`]`);if(t){if(e[n[1]-1]!==`]`)throw new z(`expected end of table declaration`,{toml:e,ptr:n[1]-1});n[1]++}let c=_n(n[0],r,i,t?2:1);if(!c)throw new z(`trying to redefine an already defined table or value`,{toml:e,ptr:s});o=c[2],a=c[1],s=n[1]}else{let r=mn(e,s),i=_n(r[0],a,o,0);if(!i)throw new z(`trying to redefine an already defined table or value`,{toml:e,ptr:s});let c=fn(e,r[1],void 0,t,n);i[1][i[0]]=c[0],s=c[1]}if(s=V(e,s,!0),e[s]&&e[s]!==`
61
- `&&e[s]!==`\r`)throw new z(`each key-value declaration must be followed by an end-of-line`,{toml:e,ptr:s});s=V(e,s)}return r}T(vn,`parse`);var yn=/^[a-z0-9-_]+$/i;function H(e){let t=typeof e;if(t===`object`){if(Array.isArray(e))return`array`;if(e instanceof Date)return`date`}return t}T(H,`extendedTypeOf`);function bn(e){for(let t=0;t<e.length;t++)if(H(e[t])!==`object`)return!1;return e.length!=0}T(bn,`isArrayOfTables`);function U(e){return JSON.stringify(e).replace(/\x7f/g,`\\u007f`)}T(U,`formatString`);function xn(e,t,n,r){if(n===0)throw Error(`Could not stringify the object: maximum object depth exceeded`);if(t===`number`)return isNaN(e)?`nan`:e===1/0?`inf`:e===-1/0?`-inf`:r&&Number.isInteger(e)?e.toFixed(1):e.toString();if(t===`bigint`||t===`boolean`)return e.toString();if(t===`string`)return U(e);if(t===`date`){if(isNaN(e.getTime()))throw TypeError(`cannot serialize invalid date`);return e.toISOString()}if(t===`object`)return Sn(e,n,r);if(t===`array`)return Cn(e,n,r)}T(xn,`stringifyValue`);function Sn(e,t,n){let r=Object.keys(e);if(r.length===0)return`{}`;let i=`{ `;for(let a=0;a<r.length;a++){let o=r[a];a&&(i+=`, `),i+=yn.test(o)?o:U(o),i+=` = `,i+=xn(e[o],H(e[o]),t-1,n)}return i+` }`}T(Sn,`stringifyInlineTable`);function Cn(e,t,n){if(e.length===0)return`[]`;let r=`[ `;for(let i=0;i<e.length;i++){if(i&&(r+=`, `),e[i]===null||e[i]===void 0)throw TypeError(`arrays cannot contain null or undefined values`);r+=xn(e[i],H(e[i]),t-1,n)}return r+` ]`}T(Cn,`stringifyArray`);function wn(e,t,n,r){if(n===0)throw Error(`Could not stringify the object: maximum object depth exceeded`);let i=``;for(let a=0;a<e.length;a++)i+=`${i&&`
62
- `}[[${t}]]
63
- `,i+=Tn(0,e[a],t,n,r);return i}T(wn,`stringifyArrayTable`);function Tn(e,t,n,r,i){if(r===0)throw Error(`Could not stringify the object: maximum object depth exceeded`);let a=``,o=``,s=Object.keys(t);for(let e=0;e<s.length;e++){let c=s[e];if(t[c]!==null&&t[c]!==void 0){let e=H(t[c]);if(e===`symbol`||e===`function`)throw TypeError(`cannot serialize values of type '${e}'`);let s=yn.test(c)?c:U(c);if(e===`array`&&bn(t[c]))o+=(o&&`
64
- `)+wn(t[c],n?`${n}.${s}`:s,r-1,i);else if(e===`object`){let e=n?`${n}.${s}`:s;o+=(o&&`
65
- `)+Tn(e,t[c],e,r-1,i)}else a+=s,a+=` = `,a+=xn(t[c],e,r,i),a+=`
66
- `}}return e&&(a||!o)&&(a=a?`[${e}]
67
- ${a}`:`[${e}]`),a&&o?`${a}
68
- ${o}`:a||o}T(Tn,`stringifyTable`);function En(e,{maxDepth:t=1e3,numbersAsFloat:n=!1}={}){if(H(e)!==`object`)throw TypeError(`stringify can only be called with an object`);let r=Tn(0,e,``,t,n);return r[r.length-1]===`
69
- `?r:r+`
70
- `}T(En,`stringify`);var Dn={parse:vn,stringify:En,TomlDate:nn,TomlError:z},On=`config`;function kn(e){if(e===void 0||e===`default`){let e=p();return e===`production`?`default`:e}return Jt(e),e}T(kn,`resolveAuthProfileBaseName`);function W(e,t){return S.join(e,On,`${kn(t)}.toml`)}T(W,`getAuthConfigFilePath`);var An=class{constructor(e,t){this.configPath=e,this.profile=t}static{T(this,`FileCredentialStore`)}kind=`file`;read(){let e=W(this.configPath,this.profile);if(y(e))return s(m(e))}write(e){let t=W(this.configPath,this.profile);ve(S.dirname(t),{recursive:!0}),x(t,Dn.stringify(e),{encoding:`utf-8`,mode:384}),_e(t,384)}clear(){let e=W(this.configPath,this.profile),t=y(e);return t&&b(e),t}path(){return W(this.configPath,this.profile)}describe(){return W(this.configPath,this.profile)}},G=32,jn=12,Mn=16,Nn=`AES-256-GCM`,Pn=`aes-256-gcm`;function Fn(){return new Uint8Array(Oe(G))}T(Fn,`generateKey`);function In(e,t){if(t.length!==G)throw Error(`AES-256-GCM requires a ${G}-byte key (got ${t.length} bytes).`);let n=Oe(jn),r=Te(Pn,t,n),i=Buffer.concat([r.update(e,`utf-8`),r.final()]),a=r.getAuthTag();return{v:1,alg:Nn,iv:n.toString(`base64`),tag:a.toString(`base64`),ciphertext:i.toString(`base64`)}}T(In,`encryptString`);function Ln(e,t){if(t.length!==G)throw Error(`AES-256-GCM requires a ${G}-byte key (got ${t.length} bytes).`);if(e.v!==1)throw Error(`Unsupported encrypted envelope version: ${e.v}.`);let n=Buffer.from(e.iv,`base64`),r=Buffer.from(e.tag,`base64`),i=Buffer.from(e.ciphertext,`base64`);if(n.length!==jn)throw Error(`Expected ${jn}-byte IV in envelope (got ${n.length} bytes).`);if(r.length!==Mn)throw Error(`Expected ${Mn}-byte auth tag in envelope (got ${r.length} bytes).`);let a=Ee(Pn,t,n);return a.setAuthTag(r),Buffer.concat([a.update(i),a.final()]).toString(`utf-8`)}T(Ln,`decryptString`);function Rn(e){if(typeof e!=`object`||!e)return;let t=e;if(!(t.v!==1||t.alg!==Nn||typeof t.iv!=`string`||typeof t.tag!=`string`||typeof t.ciphertext!=`string`))return t}T(Rn,`parseEncryptedEnvelope`);function K(e,t){return S.join(e,`config`,`${kn(t)}.enc`)}T(K,`getEncryptedAuthConfigFilePath`);var zn=class{constructor(e,t,n,r){this.configPath=e,this.keyProvider=t,this.onPlaintextMigration=n,this.profile=r}static{T(this,`EncryptedFileCredentialStore`)}kind=`encrypted-file`;read(){let e=K(this.configPath,this.profile);if(y(e))return this.readEncryptedFile(e);let t=W(this.configPath,this.profile);if(y(t))return this.migrateFromPlaintext(t,e)}write(e){let t=this.ensureKey(),n=In(Dn.stringify(e),t),r=K(this.configPath,this.profile);ve(S.dirname(r),{recursive:!0}),x(r,JSON.stringify(n,null,` `),{encoding:`utf-8`,mode:384}),_e(r,384);let i=W(this.configPath,this.profile);y(i)&&b(i)}clear(){let e=K(this.configPath,this.profile),t=W(this.configPath,this.profile),n=!1;y(e)&&(b(e),n=!0),y(t)&&(b(t),n=!0);try{this.keyProvider.deleteKey()}catch{}return n}path(){return K(this.configPath,this.profile)}describe(){return`Encrypted file (${K(this.configPath,this.profile)}) with key in ${this.keyProvider.describe()}`}readEncryptedFile(e){let t=this.keyProvider.getKey();if(t===void 0)return;let n=m(e),r;try{r=Rn(JSON.parse(n))}catch{return}if(r===void 0)return;let i;try{i=Ln(r,t)}catch{return}try{return Dn.parse(i)}catch{return}}migrateFromPlaintext(e,t){let n=m(e),r;try{r=Dn.parse(n)}catch{return}return this.write(r),this.onPlaintextMigration?.({plaintextPath:e,encryptedPath:t,keyProviderDescription:this.keyProvider.describe()}),r}ensureKey(){let e=this.keyProvider.getKey();if(e!==void 0)return e;let t=Fn();return this.keyProvider.setKey(t),t}},Bn=`1.3.0`;function Vn(e){return we(`npm`,e,{encoding:`utf-8`,stdio:[`ignore`,`pipe`,`pipe`],shell:process.platform===`win32`})}T(Vn,`defaultNpmRunner`);var Hn=Vn,q=new Map;function Un(e){Hn=e??Vn,q.clear()}T(Un,`setNpmRunner`);function Wn(e){return S.join(e,`native`,`keyring`)}T(Wn,`getKeyringInstallDir`);function Gn(e){return S.join(e,`node_modules`,`@napi-rs`,`keyring`)}T(Gn,`getInstalledBindingPath`);function Kn(e){let t=q.get(e);if(t!==void 0)return t;let n=Gn(e);if(y(S.join(n,`index.js`)))return q.set(e,n),n;try{let t=Hn([`root`,`-g`]);if(t.status===0){let n=S.join(t.stdout.trim(),`@napi-rs`,`keyring`);if(y(S.join(n,`index.js`)))return q.set(e,n),n}}catch{}return q.set(e,null),null}T(Kn,`findKeyringBinding`);function qn(e){let t=e;ve(t,{recursive:!0});let n=S.join(t,`package.json`);y(n)||x(n,JSON.stringify({private:!0,name:`cloudflare-auth-keyring-host`},null,` `),`utf-8`);let r;try{r=Hn([`install`,`@napi-rs/keyring@${Bn}`,`--prefix`,t,`--no-save`,`--no-audit`,`--no-fund`,`--no-package-lock`,`--loglevel=error`])}catch(e){throw new l(`Failed to spawn \`npm\` to install the keyring backend: ${e instanceof Error?e.message:String(e)}
71
-
72
- Install \`npm\` and retry, or install the binding globally:
73
- npm install -g @napi-rs/keyring@${Bn}`,{telemetryMessage:`workers-auth keyring npm spawn failed`})}if(r.status!==0)throw new l(`Failed to install \`@napi-rs/keyring\` (npm exited ${r.status}):
74
- ${r.stderr?.trim()??`(no stderr)`}
75
-
76
- Retry once the underlying issue is fixed, or install the binding globally:
77
- npm install -g @napi-rs/keyring@${Bn}`,{telemetryMessage:`workers-auth keyring npm install failed`});q.delete(e)}T(qn,`installKeyringBindingSync`);var Jn;function Yn(e){Jn=e}T(Yn,`setKeyringEntryFactory`);var Xn=ge(import.meta.url);function Zn(e){if(Jn!==void 0)return Jn;let t=Kn(e);if(t===null)throw Error("`@napi-rs/keyring` binding not found. Call `installKeyringBindingSync()` first.");let n=Xn(t);return(e,t)=>new n.Entry(e,t)}T(Zn,`resolveKeyringEntryFactory`);function J(e){return kn(e)}T(J,`getKeyringAccountName`);function Qn(e){let t={v:1,key:Buffer.from(e).toString(`base64`),created:new Date().toISOString()};return JSON.stringify(t)}T(Qn,`encodeKeyEnvelope`);function $n(e){if(e===``)return;let t;try{t=JSON.parse(e)}catch{return}if(!(typeof t!=`object`||!t||t.v!==1||typeof t.key!=`string`))try{let e=Buffer.from(t.key,`base64`);return e.length===32?new Uint8Array(e):void 0}catch{return}}T($n,`decodeKeyEnvelope`);function er(e,t={}){return we(`secret-tool`,e,{encoding:`utf-8`,input:t.input})}T(er,`defaultRunner`);var Y=er,tr=void 0;function nr(e){Y=e??er,tr=void 0}T(nr,`setLinuxSecretToolRunner`);function rr(){if(tr!==void 0)return tr;let e;try{e=Y([`--version`]).status===0}catch{e=!1}return tr=e,e}T(rr,`probeSecretTool`);var ir=class{constructor(e,t){this.serviceName=e,this.profile=t}static{T(this,`LinuxSecretToolKeyProvider`)}getKey(){let e=Y([`lookup`,`service`,this.serviceName,`account`,J(this.profile)]);if(e.status!==1){if(e.status!==0)throw Error(`Failed to read key via secret-tool (exit ${e.status}): ${e.stderr?.trim()??`(no stderr)`}`);return $n(e.stdout.trim())}}setKey(e){let t=Y([`store`,`--label=Cloudflare credentials key`,`service`,this.serviceName,`account`,J(this.profile)],{input:Qn(e)});if(t.status!==0)throw Error(`Failed to write key via secret-tool (exit ${t.status}): ${t.stderr?.trim()??`(no stderr)`}`)}deleteKey(){let e=Y([`clear`,`service`,this.serviceName,`account`,J(this.profile)]);if(e.status!==0)throw Error(`Failed to delete key via secret-tool (exit ${e.status}): ${e.stderr?.trim()??`(no stderr)`}`)}describe(){return`Linux secret-tool (service=${this.serviceName}, account=${J(this.profile)})`}},ar=44;function or(e,t={}){return we(`/usr/bin/security`,e,{encoding:`utf-8`,input:t.input})}T(or,`defaultRunner`);var sr=or;function cr(e){sr=e??or}T(cr,`setMacSecurityCommandRunner`);var lr=class{constructor(e,t){this.serviceName=e,this.profile=t}static{T(this,`MacSecurityKeyProvider`)}getKey(){let e=sr([`find-generic-password`,`-s`,this.serviceName,`-a`,J(this.profile),`-w`]);if(e.status!==ar){if(e.status!==0)throw Error(`Failed to read key from macOS Keychain (exit ${e.status}): ${e.stderr?.trim()??`(no stderr)`}`);return $n(e.stdout.trim())}}setKey(e){let t=sr([`add-generic-password`,`-s`,this.serviceName,`-a`,J(this.profile),`-w`,Qn(e),`-U`]);if(t.status!==0)throw Error(`Failed to write key to macOS Keychain (exit ${t.status}): ${t.stderr?.trim()??`(no stderr)`}`)}deleteKey(){let e=sr([`delete-generic-password`,`-s`,this.serviceName,`-a`,J(this.profile)]);if(!(e.status===0||e.status===ar))throw Error(`Failed to delete key from macOS Keychain (exit ${e.status}): ${e.stderr?.trim()??`(no stderr)`}`)}describe(){return`macOS Keychain (service=${this.serviceName}, account=${J(this.profile)})`}},ur=class{constructor(e,t,n){this.serviceName=e,this.installDir=t,this.profile=n}static{T(this,`NapiKeyringKeyProvider`)}entry(){return Zn(this.installDir)(this.serviceName,J(this.profile))}getKey(){let e=this.entry().getPassword();if(!(e===null||e===``))return $n(e)}setKey(e){this.entry().setPassword(Qn(e))}deleteKey(){try{this.entry().deletePassword()}catch{}}describe(){return`${process.platform===`win32`?`Windows Credential Manager`:`OS keyring`} via @napi-rs/keyring (service=${this.serviceName}, account=${J(this.profile)})`}},dr;function fr(e){dr=e}T(fr,`setKeyProviderFactoryForTesting`);function pr(e,t,n){if(dr!==void 0)return{kind:`available`,provider:dr(e,t)};switch(process.platform){case`darwin`:return{kind:`available`,provider:new lr(e,t)};case`linux`:return rr()?{kind:`available`,provider:new ir(e,t)}:{kind:`unsupported`};case`win32`:{let r=Wn(n);return Kn(r)===null?{kind:`needs-install`,install:T(()=>qn(r),`install`),afterInstall:T(()=>new ur(e,r,t),`afterInstall`)}:{kind:`available`,provider:new ur(e,r,t)}}default:return{kind:`unsupported`}}}T(pr,`resolveKeyProvider`);var mr={installFailedThisSession:!1,hasWarnedAboutKeyringFallback:!1,hasWarnedAboutSecretToolMissing:!1};function hr(){return mr}T(hr,`getResolverSessionFlags`);function gr(){mr.installFailedThisSession=!1,mr.hasWarnedAboutKeyringFallback=!1,mr.hasWarnedAboutSecretToolMissing=!1}T(gr,`resetCredentialStorageState`);function _r(e){let t={...e,cliName:e.cliName??`your CLI`};function n(e){return vr(t,e)}T(n,`getActiveStore`);function r(e){return{read:T(()=>n(e).read(),`read`),write:T(t=>n(e).write(t),`write`),clear:T(()=>n(e).clear(),`clear`),path:T(()=>n(e).path(),`path`)}}return T(r,`storageFactory`),{storageFactory:r,getActiveStore:n}}T(_r,`createCredentialStorageContext`);function vr(e,t){let n=Ye(),r=e.getConfigPath();if(n===!1)return new An(r,t);let i=n===!0;if(!(n??e.isKeyringEnabled()??!1))return new An(r,t);let a=pr(e.serviceName,t,r);switch(a.kind){case`available`:return new zn(r,a.provider,yr(e),t);case`needs-install`:return br(a,i,e,t);case`unsupported`:return xr(i,e,t)}}T(vr,`resolveActiveCredentialStore`);function yr(e){return t=>{e.logger.warn(`Migrated credentials from ${t.plaintextPath} into ${t.encryptedPath} (key in ${t.keyProviderDescription}). The plaintext file has been deleted.`)}}T(yr,`buildMigrationLogger`);function br(e,t,n,r){let i=hr();if(i.installFailedThisSession){if(t)throw new l(`CLOUDFLARE_AUTH_USE_KEYRING is set but the keyring backend could not be installed earlier this session.`,{telemetryMessage:`workers-auth keyring install previously failed`});return Sr(`The keyring backend could not be installed earlier this session; using the plaintext credentials file.`,n,r)}if(n.isNonInteractiveOrCI())throw new l(wr(n.cliName),{telemetryMessage:`workers-auth keyring binding not installed`});try{n.logger.log(`🔐 Installing keyring backend (one-time, ~2 MB)…`),e.install()}catch(e){if(i.installFailedThisSession=!0,t)throw e instanceof l?e:new l(`Failed to install the keyring backend: ${e instanceof Error?e.message:String(e)}`,{telemetryMessage:`workers-auth keyring install threw`});return Sr(`Failed to install the keyring backend (${e instanceof Error?e.message:String(e)}); falling back to the plaintext credentials file.`,n,r)}return new zn(n.getConfigPath(),e.afterInstall(),yr(n),r)}T(br,`handleNeedsInstall`);function xr(e,t,n){let r=process.platform,i=r===`linux`,a=i?Cr(t.cliName):`OS keyring storage is not supported on \`${r}\`; falling back to the plaintext credentials file.`;if(e)throw new l(i?`CLOUDFLARE_AUTH_USE_KEYRING is set but ${a}`:`CLOUDFLARE_AUTH_USE_KEYRING is set but no keyring backend is available on \`${r}\`.`,{telemetryMessage:i?`workers-auth keyring secret tool missing`:`workers-auth keyring unsupported platform`});if(i&&t.isNonInteractiveOrCI())throw new l(a,{telemetryMessage:`workers-auth keyring secret tool missing`});let o=hr();return i?(o.hasWarnedAboutSecretToolMissing||(o.hasWarnedAboutSecretToolMissing=!0,t.logger.warn(`${a}
78
-
79
- Falling back to the plaintext credentials file for this session.`)),new An(t.getConfigPath(),n)):Sr(a,t,n)}T(xr,`handleUnsupported`);function Sr(e,t,n){let r=hr();return r.hasWarnedAboutKeyringFallback||(r.hasWarnedAboutKeyringFallback=!0,t.logger.warn(e)),new An(t.getConfigPath(),n)}T(Sr,`fallbackToFileWithWarning`);function Cr(e){return`\`secret-tool\` is required for OS keyring storage on Linux but is not installed.
80
-
81
- Install it via your package manager:
82
- Debian/Ubuntu: sudo apt-get install libsecret-tools
83
- Fedora/RHEL: sudo dnf install libsecret
84
- Arch: sudo pacman -S libsecret
85
- Alpine: apk add libsecret
86
-
87
- Or disable keyring storage: \`${e} login --no-use-keyring\`.`}T(Cr,`secretToolMissingMessage`);function wr(e){return`\`@napi-rs/keyring\` is required for OS keyring storage on Windows but is not installed.
88
-
89
- Run \`${e} login --use-keyring\` interactively to install it automatically, or install it globally for CI:
90
-
91
- npm install -g @napi-rs/keyring@${Bn}
92
-
93
- Or disable keyring storage: \`${e} login --no-use-keyring\`.`}T(wr,`windowsBindingMissingMessage`);function Tr(e){let t=K(e.configPath,e.profile),n=y(t),r=pr(e.serviceName,e.profile,e.configPath);return r.kind===`available`?(new zn(e.configPath,r.provider,void 0,e.profile).clear(),{backendAvailable:!0,encryptedFileExisted:n}):(n&&b(t),{backendAvailable:!1,encryptedFileExisted:n})}T(Tr,`scrubEncryptedCredentials`);const{white:Er,gray:Dr,dim:Or,hidden:kr,bold:Ar,cyanBright:jr,bgCyan:Mr}=_;_.hex(`#BD5B08`);const Nr=_.hex(`#111`);_.hex(`#0E838F`);const Pr=Nr.bgHex(`#0E838F`);_.hex(`#AB2526`);const Fr=Nr.bgHex(`#AB2526`);_.hex(`#218529`);const Ir=Nr.bgHex(`#218529`);_.hex(`#7F7322`);const Lr=Nr.bgHex(`#7F7322`),Rr=process.stdout;process.stderr;var zr=e(se(),1);const Br={diamond:`◇`,dash:`─`,radioInactive:`○`,radioActive:`●`,backActive:`◀`,backInactive:`◁`,bar:`│`,leftT:`├`,rigthT:`┤`,arrows:{left:`‹`,right:`›`},corners:{tl:`╭`,bl:`╰`,tr:`╮`,br:`╯`}};Fr(` ERROR `),Lr(` WARNING `),Pr(` INFO `),Ir(` SUCCESS `),Er.bgRed(` X `),fe(Rr),Dr(Br.bar),Dr(Br.corners.bl),Dr(Br.leftT);function Vr(){try{return!!(process.stdin.isTTY&&process.stdout.isTTY)}catch{return!1}}function X(){return!Vr()||zr.isCI}const Hr=zr.isCI;function Ur(){a(i)}async function Wr(e){let t=re(),n=e.map(e=>({value:e,label:e.name})),r=await new ce({options:n,initialValue:n[0]?.value,render(){let e=t.bold(`Select an account`),n=this.options.map((e,n)=>{let r=n===this.cursor,i=e.value,a=t.hex(h.muted)(`${i.id.slice(0,12)}...`);return r?` ${t.hex(h.orange)(`>`)} ${t.bold(i.name)} ${a}`:` ${t.dim(i.name)} ${a}`});return`${e} ${t.dim(`(use arrow keys, enter to confirm)`)}\n${n.join(`
94
- `)}`}}).prompt();return v(r)||!r?null:r}async function Gr(){let e=[];for await(let t of process.stdin)e.push(Buffer.from(t));let t=Buffer.concat(e).toString(`utf-8`);return t.endsWith(`
95
- `)?t.slice(0,-1):t}async function Kr(e,t,n){let r=n?.kind??`text`;if(X()){if(r===`secret`){let t=await Gr();if(t.length>0)return t;throw Error(`--${e} is required. Pipe the value via stdin, pass --${e} <value>, or run interactively.`)}throw Error(`--${e} is required. Pass --${e} <value> or run interactively.`)}let i=`Enter value for --${e}`,a=t||n?.question||i;Ur();let o=r===`secret`?await de({message:a,mask:`•`,validate:e=>e&&e.length>0?void 0:`Value cannot be empty`}):await ue({message:a,validate:e=>e&&e.length>0?void 0:`Value cannot be empty`});return(v(o)||typeof o!=`string`)&&process.exit(130),o}async function qr(e,t,n){if(X())throw Error(`--${e} is required (one of: ${n.join(`, `)}). Pass --${e} <value> or run interactively.`);let r=`Select value for --${e}`,i=t||r;Ur();let a=await le({message:i,options:n.map(e=>({value:e,label:e}))});return(v(a)||typeof a!=`string`)&&process.exit(130),a}async function Jr(e={}){if(e.force===!0)return!0;let t=e.message?`${e.message} Continue?`:`This permanently deletes the resource. Continue?`;if(X()){let e=re();return process.stderr.write(`${e.hex(h.warning)(`?`)} ${t}\n ${e.dim(`(non-interactive; pass --force to confirm)`)}\n`),!1}Ur();let n=await pe({message:t,initialValue:!1});return v(n)&&process.exit(130),n===!0}const Z=`.cfrc`;function Yr(e){let t=e||process.cwd(),n=C(t);for(;t!==n;){let e=w(t,Z);if(y(e))try{let t=ye(e,`utf-8`).replace(/^\s*\/\/.*$/gm,``);return{config:JSON.parse(t),path:e}}catch{}t=C(t)}let r=w(t,Z);if(y(r))try{let e=ye(r,`utf-8`).replace(/^\s*\/\/.*$/gm,``);return{config:JSON.parse(e),path:r}}catch{}return null}function Xr(e,t){x(w(t||process.cwd(),Z),JSON.stringify(e,null,2)+`
96
- `,{mode:384})}function Zr(e){let t=w(e||process.cwd(),Z);return y(t)?(be(t),!0):!1}async function Qr(e){let t={},n=Q(`accountId`,`CLOUDFLARE_ACCOUNT_ID`);n&&(t.accountId=n);let r=Q(`zone`,`CLOUDFLARE_ZONE_ID`,e?.zone);r&&(t.zone=r);let i=Q(`complianceRegion`,`CLOUDFLARE_COMPLIANCE_REGION`);return i&&(t.complianceRegion=i),t}function Q(e,t,n){if(n)return{value:n,source:`flag`};let r=process.env[t];if(r)return{value:r,source:`env`};let i=Yr(),a=i?.config[e];if(a)return{value:a,source:`project`,path:i.path};let o=g().defaults?.[e];if(o)return{value:o,source:`config`,path:oe()}}function $r(){return Q(`accountId`,`CLOUDFLARE_ACCOUNT_ID`)?.value}async function ei(e){let t=Q(`accountId`,`CLOUDFLARE_ACCOUNT_ID`);if(t)return ti(t.value,di(t,`accountId`)),t.value;if(e){let t=await ni(e);if(t)return t}throw Error(`No account ID found.
97
-
98
- Please provide one of the following:
99
- 1. CLOUDFLARE_ACCOUNT_ID environment variable
100
- 2. Run 'cf context set account-id <id>' to set a default
101
- 3. Create a .cfrc file in your project
102
-
103
- You can find your account ID in the Cloudflare dashboard URL:
104
- https://dash.cloudflare.com/<account-id>/...`)}function ti(e,t){if(!process.env.DEBUG)return;let n=e.length>12?e.slice(0,12)+`…`:e;process.stderr.write(`Using account: ${n} (${t})\n`)}async function ni(e){let t;try{t=await mi(e)}catch{return}if(t.length===0)return;if(t.length===1&&t[0]){let n=t[0],{displayName:r}=await fi(`accountId`,n.id,`user`,e);return ti(n.id,`auto-selected from token — ${r}`),n.id}if(X()){let e=t.map(e=>` ${e.id} ${e.name}`).join(`
105
- `);throw Error(`Multiple accounts available but running non-interactively.
106
-
107
- Available accounts:
108
- ${e}
109
-
110
- Set one with CLOUDFLARE_ACCOUNT_ID or 'cf context set account-id'.`)}let n=await Wr(t);n||process.exit(130);let{displayName:r}=await fi(`accountId`,n.id,`user`,e);return ti(n.id,`selected interactively — ${r}`),n.id}async function ri(e,t,n){if(e?.zoneId)return ii(e.zoneId,t);let r=Q(`zone`,`CLOUDFLARE_ZONE_ID`,e?.zone);if(r){if(!n?.quiet&&r.source!==`flag`){let e=di(r);console.error(`Using zone: ${r.value} (from ${e})`)}return ii(r.value,t)}throw Error(`No zone specified.
111
-
112
- Please provide one of the following:
113
- 1. Zone as a positional argument: cf dns records list <zone>
114
- 2. --zone flag (or -z): cf dns records list --zone example.com
115
- 3. CLOUDFLARE_ZONE_ID environment variable
116
- 4. Run 'cf context set zone <zone>' to set a default
117
- 5. Create a .cfrc file in your project with {"zone": "example.com"}`)}async function ii(e,t){if(he(e)||!t)return e;let{resolveZoneId:n}=await import(`./resolve-4-OSeHlK.mjs`).then(e=>e.r);return n(t,await ei(),e)}function ai(e){if(e?.scriptName)return e.scriptName;throw Error("Required Worker name missing. Please specify the Worker name with `--worker <name>`.")}const oi=[`public`,`fedramp_high`],si={"account-id":`accountId`,zone:`zone`,"compliance-region":`complianceRegion`},ci=Object.keys(si);function li(e){return oi.includes(e)}function ui(){let e=Q(`complianceRegion`,`CLOUDFLARE_COMPLIANCE_REGION`);if(!e)return`public`;if(!li(e.value))throw Error(`Invalid compliance region "${e.value}". Must be one of: ${oi.join(`, `)}`);return e.value}function di(e,t=`zone`){switch(e.source){case`flag`:return t===`zone`?`--zone flag`:`(flag)`;case`env`:return{accountId:`CLOUDFLARE_ACCOUNT_ID`,zone:`CLOUDFLARE_ZONE_ID`,complianceRegion:`CLOUDFLARE_COMPLIANCE_REGION`}[t];case`project`:return`.cfrc`;case`config`:return`~/.config/cf/config.json`}}async function fi(e,t,n,r){let i=t,a=t;if(e===`accountId`){if(!r)throw Error(`Authentication required to validate account ID`);let{id:e,name:n}=await hi(t,r);i=e,a=n?`${e.slice(0,12)}... (${n})`:e}else if(e===`zone`){if(!r)throw Error(`Authentication required to validate zone`);let e=await gi(t,r);i=t,a=e.name}else e===`complianceRegion`&&(i=t,a=t);if(n===`project`){let t=Yr()?.config||{};t[e]=i,Xr(t)}else{let t=g();t.defaults||={},t.defaults[e]=i,ie(t)}return{resolvedValue:i,displayName:a}}function pi(e,t){if(t===`project`)if(e===`all`)Zr();else{let t=Yr();t&&(delete t.config[e],Object.keys(t.config).length===0?Zr(C(t.path)):Xr(t.config,C(t.path)))}else{let t=g();t.defaults&&(e===`all`?delete t.defaults:(delete t.defaults[e],Object.keys(t.defaults).length===0&&delete t.defaults),ie(t))}}async function mi(e){return(await e.accounts.list({})).result}async function hi(e,t){let n=await mi(t),r=n.find(t=>t.id===e);if(r)return{id:r.id,name:r.name};let i=n.find(t=>t.name.toLowerCase()===e.toLowerCase());if(i)return{id:i.id,name:i.name};if(he(e))return{id:e};throw Error(`Account not found: "${e}"
118
-
119
- Available accounts:
120
- ${n.map(e=>` ${e.id.slice(0,12)}... ${e.name}`).join(`
121
- `)}`)}async function gi(e,t){let n=(await t.zones.list({})).result,r=n.find(t=>t.id===e);if(r)return{id:r.id,name:r.name};let i=n.find(t=>t.name.toLowerCase()===e.toLowerCase());if(i)return{id:i.id,name:i.name};throw me(e)?Error(`Zone not found: "${e}"
122
-
123
- This zone either doesn't exist or you don't have access to it.
124
- Run 'cf zones list' to see available zones.`):Error(`Invalid zone: "${e}"
125
-
126
- Please provide a zone ID or domain name.
127
- Run 'cf zones list' to see available zones.`)}function _i(){return w(process.cwd(),Z)}const vi=`openid.offline.user:read.account:read.access:read.access:write.agw:read.agw:run.agw:write.ai:read.ai:write.ai-search:read.ai-search:run.ai-search:write.aiaudit:read.aiaudit:write.aig:read.aig:write.auditlogs:read.browser:read.browser:write.cfone:read.cfone:write.cloudchamber:write.connectivity:admin.connectivity:bind.connectivity:read.constellation:write.containers:write.d1:write.dex:read.dex:write.dns_analytics:read.dns_records:edit.dns_records:read.dns_settings:read.firstpartytags:write.images:read.images:write.lb:edit.lb:read.logpush:read.logpush:write.mcp_portals:read.mcp_portals:write.notebook-examples:read.notification:read.notification:write.pages:read.pages:write.pipelines:read.pipelines:setup.pipelines:write.query_cache:write.queues:write.r2_catalog:write.radar:read.rag:read.rag:write.registrar:read.registrar:write.secrets_store:read.secrets_store:write.sso-connector:read.sso-connector:write.ssl_certs:write.teams:pii.teams:read.teams:secure_location.teams:write.url_scanner:read.url_scanner:write.vectorize:write.workers:read.workers:write.workers_builds:read.workers_builds:write.workers_deployments:read.workers_kv:write.workers_observability:read.workers_observability:write.workers_observability_telemetry:write.workers_routes:write.workers_scripts:write.workers_tail:read.zone:read`.split(`.`);function yi(){return w(ae(),`auth.jsonc`)}function bi(){return{read(){let e=yi(),t;try{t=ye(e,`utf-8`)}catch(e){if(e.code===`ENOENT`)return;throw e}try{return c(t,e)}catch{return}},write(e){let t=yi();ve(C(t),{recursive:!0,mode:448}),x(t,JSON.stringify(e,null,2)+`
128
- `,{encoding:`utf-8`,mode:384}),_e(t,384)},clear(){let e=yi(),t=y(e);return b(e,{force:!0}),t},path(){return yi()}}}const xi=8877,Si=`localhost`,Ci=`http://${Si}:${xi}/oauth/callback`,wi={granted:{url:`https://welcome.developers.workers.dev/cf-oauth-consent-granted`},denied:{url:`https://welcome.developers.workers.dev/cf-oauth-consent-denied`,error:"Error: Consent denied. You must grant consent to cf in order to login.\nIf you don't want to do this consider passing an API token via the `CLOUDFLARE_API_TOKEN` environment variable"}},Ti=bi();function Ei(){return Be({allowGlobalAuthKey:!1})!==void 0}const Di={debug:(...e)=>{process.env.DEBUG&&console.error(...e)},info:(...e)=>console.error(...e),log:(...e)=>console.error(...e),warn:(...e)=>console.error(...e),error:(...e)=>console.error(...e)};function Oi(e){return new Promise((t,n)=>{let r=Se(),i;switch(r){case`darwin`:i=`open "${e}"`;break;case`win32`:i=`start "" "${e}"`;break;default:i=`xdg-open "${e}"`}Ce(i,e=>{e?n(Error(`Failed to open browser: ${e.message}`)):t()})})}const ki=Gt({logger:Di,isNonInteractiveOrCI:X,openInBrowser:Oi,hasEnvCredentials:Ei,clientId:`cbca97e7-c331-4cdd-8fd8-e25a451b98bf`,consent:wi,redirectUri:Ci,storageFactory:()=>Ti,allowGlobalAuthKey:!1,temporary:void 0});function Ai(e){return ki.login({complianceConfig:ne,scopes:[...vi],browser:e?.browser??!0,callbackHost:Si,callbackPort:xi})}function ji(){return ki.logout()}function Mi(){return ki.getOAuthTokenFromLocalState()}function Ni(){return D({storage:Ti}).accessToken!==void 0}function Pi(){return D({storage:Ti})}function Fi(){return Ti.path()}function Ii(e){try{let t=Ne(`ps -p ${e} -o pid=,ppid=,command=`,{encoding:`utf8`,timeout:5e3}).trim();if(!t)return null;let[n,r,...i]=t.split(/\s+/),a=n?parseInt(n,10):NaN,o=r?parseInt(r,10):NaN;return isNaN(a)||isNaN(o)?null:{pid:a,ppid:o,command:i.join(` `)||void 0}}catch(t){return t instanceof Error&&t.message.includes(`timeout`)&&console.warn(`Process lookup timed out for PID ${e}`),null}}function Li(e){let t=[],n=new Set,r=e,i=1e3;for(;r&&i>0;){if(n.has(r)){console.warn(`Detected cycle in process tree at PID ${r}`);break}n.add(r);let e=Ii(r);if(!e||e.ppid===0||e.ppid===1)break;t.push(e),r=e.ppid,i--}return i===0&&console.warn(`Reached maximum depth limit while traversing process tree from PID ${e}`),t}function Ri(e){try{let t=Ne(`wmic process where (ProcessId=${e}) get ProcessId,ParentProcessId,CommandLine /format:csv`,{encoding:`utf8`,timeout:1e4});if(!t)return null;let n=t.split(`
129
- `).filter(e=>e.trim()&&!e.startsWith(`Node`)).pop()?.split(`,`);if(!n||n.length<4)return null;let[r,i,a,o]=n,s=o?parseInt(o.trim(),10):NaN,c=a?parseInt(a.trim(),10):NaN;return isNaN(s)||isNaN(c)?null:{pid:s,ppid:c,command:i?.trim()||void 0}}catch(t){return t instanceof Error&&t.message.includes(`timeout`)&&console.warn(`Process lookup timed out for PID ${e}`),null}}function zi(e){let t=[],n=new Set,r=e,i=1e3;for(;r&&i>0;){if(n.has(r)){console.warn(`Detected cycle in process tree at PID ${r}`);break}n.add(r);let e=Ri(r);if(!e||e.ppid===0||e.ppid===4)break;t.push(e),r=e.ppid,i--}return i===0&&console.warn(`Reached maximum depth limit while traversing process tree from PID ${e}`),t}function Bi(e=process.pid){if(typeof e!=`number`||!Number.isInteger(e)||e<=0)throw Error(`PID must be a positive integer`);return Pe.platform()===`win32`?zi(e):Li(e)}const Vi=[{id:`opencode`,name:`OpenCode`,type:`agent`,envVars:[{any:[`OPENCODE`,`OPENCODE_BIN_PATH`,`OPENCODE_SERVER`,`OPENCODE_APP_INFO`,`OPENCODE_MODES`]}]},{id:`jules`,name:`Jules`,type:`agent`,envVars:[{all:[[`HOME`,`/home/jules`],[`USER`,`swebot`]]}]},{id:`claude-code`,name:`Claude Code`,type:`agent`,envVars:[`CLAUDECODE`]},{id:`cursor-agent`,name:`Cursor Agent`,type:`agent`,envVars:[{all:[`CURSOR_TRACE_ID`,[`PAGER`,`head -n 10000 | cat`]]}]},{id:`cursor`,name:`Cursor`,type:`interactive`,envVars:[`CURSOR_TRACE_ID`]},{id:`gemini-agent`,name:`Gemini Agent`,type:`agent`,processChecks:[`gemini`]},{id:`codex`,name:`OpenAI Codex`,type:`agent`,processChecks:[`codex`]},{id:`replit`,name:`Replit`,type:`agent`,envVars:[`REPL_ID`]},{id:`aider`,name:`Aider`,type:`agent`,envVars:[`AIDER_API_KEY`],processChecks:[`aider`]},{id:`bolt-agent`,name:`Bolt.new Agent`,type:`agent`,envVars:[{all:[[`SHELL`,`/bin/jsh`],`npm_config_yes`]}]},{id:`bolt`,name:`Bolt.new`,type:`interactive`,envVars:[{all:[[`SHELL`,`/bin/jsh`]],none:[`npm_config_yes`]}]},{id:`zed-agent`,name:`Zed Agent`,type:`agent`,envVars:[{all:[[`TERM_PROGRAM`,`zed`],[`PAGER`,`cat`]]}]},{id:`zed`,name:`Zed`,type:`interactive`,envVars:[{all:[[`TERM_PROGRAM`,`zed`]],none:[[`PAGER`,`cat`]]}]},{id:`replit-assistant`,name:`Replit Assistant`,type:`agent`,envVars:[{all:[`REPL_ID`,[`REPLIT_MODE`,`assistant`]]}]},{id:`replit`,name:`Replit`,type:`interactive`,envVars:[{all:[`REPL_ID`],none:[[`REPLIT_MODE`,`assistant`]]}]},{id:`windsurf`,name:`Windsurf`,type:`agent`,envVars:[`CODEIUM_EDITOR_APP_ROOT`]},{id:`crush`,name:`Crush`,type:`agent`,processChecks:[`crush`]},{id:`vscode-copilot-agent`,name:`GitHub Copilot in VS Code`,type:`agent`,envVars:[{all:[[`TERM_PROGRAM`,`vscode`],[`GIT_PAGER`,`cat`]]}]},{id:`warp`,name:`Warp Terminal`,type:`hybrid`,envVars:[{all:[[`TERM_PROGRAM`,`WarpTerminal`]]}]},{id:`octofriend`,name:`Octofriend`,type:`agent`,processChecks:[`octofriend`]}];function $(e,t=process.env){let[n,r]=typeof e==`string`?[e,void 0]:e,i=t[n];return!!(i&&(!r||i===r))}function Hi(e,t){try{let n=t??Bi();for(let t of n)if(t.command?.includes(e))return!0}catch{}return!1}function Ui(e,t=process.env){if(typeof e==`string`||Array.isArray(e))return $(e,t);let{any:n,all:r,none:i}=e,a=!n?.length||n.some(e=>$(e,t)),o=!r?.length||r.every(e=>$(e,t)),s=!i?.length||!i.some(e=>$(e,t));return a&&o&&s}function Wi(e){return e.customDetectors?.some(e=>{try{return e()}catch{return!1}})??!1}function Gi(e){return{isAgentic:!0,id:e.id,name:e.name,type:e.type}}function Ki(e=process.env,t){for(let t of Vi)if(t.envVars?.some(t=>Ui(t,e)))return Gi(t);let n=t,r=()=>{if(n===void 0)try{n=Bi()}catch{n=[]}return n};for(let e of Vi)if(e.processChecks?.some(e=>Hi(e,r())))return Gi(e);for(let e of Vi)if(Wi(e))return Gi(e);return{isAgentic:!1,id:null,name:null,type:null}}function qi(){return Hr?`ci`:Vr()?`interactive`:`non-interactive`}function Ji(){let e=Ki(),t=e.isAgentic&&e.id!==null?{"X-CF-CLI-Agent":e.id}:{};return{"User-Agent":`cf/${i}`,"X-CF-CLI-Mode":qi(),...t}}const Yi=3e4,Xi=t.Default;function Zi(e){return e instanceof FormData||e instanceof Blob||e instanceof ArrayBuffer||ArrayBuffer.isView(e)||e instanceof ReadableStream||e instanceof URLSearchParams}function Qi(e){return Object.keys(e).some(e=>e.toLowerCase()===`content-type`)}async function $i(e){let t=e.headers.get(`content-type`)??``;try{return t.includes(`application/json`)?await e.json():await e.text()}catch{return null}}function ea(e,t,n){if(!(n==null||n===``)){if(Array.isArray(n)){for(let r of n)ea(e,t,r);return}e.append(t,String(n))}}function ta(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))ea(t,n,r);return t.toString()}function na(e,t,n){let r=new URL(t.endsWith(`/`)?t:`${t}/`),i=new URL(e.startsWith(`/`)?e.slice(1):e,r);if(i.origin!==r.origin)throw Error(`Refusing to send an authenticated request to ${i.origin} (expected ${r.origin})`);let a=ta(n??{});return a&&(i.search=a),i.toString()}const ra=new WeakMap;async function ia(e,t,n,i={}){let a=na(n,ra.get(e)??Xi,i.query),o={...i.headers},s;i.body!==void 0&&(Zi(i.body)||typeof i.body==`string`&&Qi(o)?s=i.body:(o[`Content-Type`]??=`application/json`,s=JSON.stringify(i.body)));let c;try{c=await e.fetch(a,{method:t,headers:o,body:s,signal:i.signal},{timeoutInSeconds:i.timeout?i.timeout/1e3:void 0,abortSignal:i.signal})}catch(e){throw i.signal?.aborted?Error(`Request aborted`):e instanceof Error&&e.name===`AbortError`?Error(`Request timed out after ${i.timeout??Yi}ms`):e instanceof Error?Error(`Request failed: ${e.message}`):e}if(!c.ok)throw new r({statusCode:c.status,body:await $i(c),rawResponse:{status:c.status,statusText:c.statusText,url:c.url||a,headers:c.headers,redirected:c.redirected,type:c.type}});if(c.status===204)return null;let l=await c.text();if(l===``)return null;if(!(c.headers.get(`content-type`)??``).includes(`application/json`))return l;let u=JSON.parse(l);if(u.success===!1)throw new r({message:`API error: ${u.errors?.map(e=>e.message).filter(Boolean).join(`, `)||`unknown error`}`,statusCode:c.status,body:u});return`result`in u?u.result:u}function aa(e){let t=e.baseURL??Xi,r=new n({baseUrl:t,auth:async()=>({headers:{Authorization:`Bearer ${e.apiToken}`}}),headers:e.defaultHeaders,timeoutInSeconds:(e.timeout??Yi)/1e3,maxRetries:0,fetch:e.fetch??globalThis.fetch});return ra.set(r,t),r}async function oa(){let e=Be({allowGlobalAuthKey:!1});if(e&&`apiToken`in e)return e.apiToken;let t=await Mi();if(t)return t;throw Error(`No authentication token found.
130
-
131
- Please set one of the following:
132
- 1. Set the CLOUDFLARE_API_TOKEN environment variable
133
- 2. Run 'cf auth login' to authenticate via OAuth
134
-
135
- For API tokens, visit: https://dash.cloudflare.com/profile/api-tokens`)}async function sa(e){let t=te({compliance_region:ui()});if(e.local){if(!e.localEndpoint)throw Error(`--local requires --local-endpoint <url>; this should have been caught by the global middleware.`);let{createLocalFetch:n}=await import(`./local-VJaJ3BZ1.mjs`).then(e=>e.r);return aa({apiToken:`cf-local-mode-no-auth`,baseURL:t,defaultHeaders:Ji(),fetch:n({endpoint:e.localEndpoint})})}return aa({apiToken:await oa(),baseURL:t,defaultHeaders:Ji()})}export{$r as C,Kr as D,qr as E,X as O,ri as S,Jr as T,ei as _,Ji as a,_i as b,Ni as c,ji as d,ci as f,Yr as g,pi as h,ia as i,Pi as l,oi as m,sa as n,Fi as o,si as p,oa as r,Mi as s,aa as t,Ai as u,ui as v,fi as w,ai as x,Qr as y};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import{C as e,D as t,_ as n,n as r}from"./auth-ffdf9yR0.mjs";import{n as i,t as a}from"./body-parser-DKa8Ipg1.mjs";import{t as o}from"./output-BJFNwj7b.mjs";import{n as s,t as c}from"./progress-CrCGTq7N.mjs";import{n as l}from"./input-validation-zEO81MWN.mjs";import{t as u}from"./local-VJaJ3BZ1.mjs";import{t as d}from"./cli-types-CRIDdDw3.mjs";function f(e){return e.positional(`id`,{type:`string`,description:`rag id`,demandOption:!0}).option(`max-num-results`,{type:`number`,description:`The max_num_results field`,default:10}).option(`query`,{type:`string`,description:`The query field`}).option(`ranking-options-ranker`,{type:`string`,description:`The ranking_options.ranker field`}).option(`ranking-options-score-threshold`,{type:`number`,description:`The ranking_options.score_threshold field`,default:.4}).option(`reranking-enabled`,{type:`boolean`,description:`The reranking.enabled field`,default:!1}).option(`rewrite-query`,{type:`boolean`,description:`The rewrite_query field`,default:!1}).option(`stream`,{type:`boolean`,description:`The stream field`,default:!1}).option(`system-prompt`,{type:`string`,description:`The system_prompt 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 p={command:`ai-search <id>`,describe:`AI Search`,builder:f,handler:async d=>{if(d.dryRun){s({command:`cf autorag ai-search`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/autorag/rags/${d.id==null?`<id>`:encodeURIComponent(String(d.id))}/ai-search`,pathParams:{id:String(d.id??``)},bodyKind:`json`,body:d.body===void 0?a({max_num_results:d[`max-num-results`],query:l(d.query,`query`,`text`),ranking_options:{ranker:l(d[`ranking-options-ranker`],`ranking-options-ranker`,`text`),score_threshold:d[`ranking-options-score-threshold`]},reranking:{enabled:d[`reranking-enabled`]},rewrite_query:d[`rewrite-query`],stream:d.stream,system_prompt:l(d[`system-prompt`],`system-prompt`,`text`)}):i(d.body)});return}let f=await r(d),p=d.local?u:await n(f);if(d.accountId=p,d.body){let e=i(d.body);o(await c(`Creating`,async()=>f.autorag.aiSearch({...e,account_id:p,id:d.id})),{successLabel:`Created`});return}d.query===void 0&&(d.query=await t(`query`,`The query field`));let m=a({max_num_results:d[`max-num-results`],query:l(d.query,`query`,`text`),ranking_options:{ranker:l(d[`ranking-options-ranker`],`ranking-options-ranker`,`text`),score_threshold:d[`ranking-options-score-threshold`]},reranking:{enabled:d[`reranking-enabled`]},rewrite_query:d[`rewrite-query`],stream:d.stream,system_prompt:l(d[`system-prompt`],`system-prompt`,`text`)});o(await c(`Creating`,async()=>f.autorag.aiSearch({...m,account_id:p,id:d.id})),{successLabel:`Created`})}};function m(e){return e.positional(`id`,{type:`string`,description:`rag id`,demandOption:!0}).option(`page`,{type:`number`,description:`Page`}).option(`per-page`,{type:`number`,description:`Per page`}).option(`search`,{type:`string`,description:`Search`}).option(`status`,{type:`string`,description:`Status`,choices:[`completed`,`queued`,`running`,`error`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const h={command:`files <id>`,describe:`Files`,builder:d(m),handler:async t=>{let i={page:t.page,per_page:t[`per-page`],search:t.search,status:t.status};if(t.dryRun){s({command:`cf autorag files`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/autorag/rags/${t.id==null?`<id>`:encodeURIComponent(String(t.id))}/files`,pathParams:{id:String(t.id??``)},query:i,bodyKind:`none`});return}let a=await r(t),l=t.local?u:await n(a);t.accountId=l,o(await c(`Loading`,async()=>a.autorag.files({account_id:l,id:t.id,...i})),{successLabel:`Loaded`})}};function g(e){return e.positional(`job-id`,{type:`string`,description:`Job ID`,demandOption:!0}).option(`id`,{type:`string`,description:`rag id`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _={command:`get <job-id>`,describe:`Get a Job Details`,builder:g,handler:async t=>{if(t.dryRun){s({command:`cf autorag jobs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/autorag/rags/${t.id==null?`<id>`:encodeURIComponent(String(t.id))}/jobs/${t[`job-id`]==null?`<job-id>`:encodeURIComponent(String(t[`job-id`]))}`,pathParams:{id:String(t.id??``),"job-id":String(t[`job-id`]??``)},bodyKind:`none`});return}let i=await r(t),a=t.local?u:await n(i);t.accountId=a,o(await c(`Loading`,async()=>i.autorag.jobs.get({account_id:a,id:t.id,job_id:t[`job-id`]})),{successLabel:`Loaded`})}};function v(e){return e.option(`id`,{type:`string`,description:`rag id`,demandOption:!0}).option(`page`,{type:`number`,description:`Page`}).option(`per-page`,{type:`number`,description:`Per page`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const y={command:`list`,describe:`List Jobs`,builder:v,handler:async t=>{let i={page:t.page,per_page:t[`per-page`]};if(t.dryRun){s({command:`cf autorag jobs list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/autorag/rags/${t.id==null?`<id>`:encodeURIComponent(String(t.id))}/jobs`,pathParams:{id:String(t.id??``)},query:i,bodyKind:`none`});return}let a=await r(t),l=t.local?u:await n(a);t.accountId=l,o(await c(`Loading`,async()=>a.autorag.jobs.list({account_id:l,id:t.id,...i})),{successLabel:`Loaded`})}};function b(e){return e.positional(`job-id`,{type:`string`,description:`Job ID`,demandOption:!0}).option(`id`,{type:`string`,description:`rag id`,demandOption:!0}).option(`page`,{type:`number`,description:`Page`}).option(`per-page`,{type:`number`,description:`Per page`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const x={command:`logs <job-id>`,describe:`List Job Logs`,builder:b,handler:async t=>{let i={page:t.page,per_page:t[`per-page`]};if(t.dryRun){s({command:`cf autorag jobs logs`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/autorag/rags/${t.id==null?`<id>`:encodeURIComponent(String(t.id))}/jobs/${t[`job-id`]==null?`<job-id>`:encodeURIComponent(String(t[`job-id`]))}/logs`,pathParams:{id:String(t.id??``),"job-id":String(t[`job-id`]??``)},query:i,bodyKind:`none`});return}let a=await r(t),l=t.local?u:await n(a);t.accountId=l,o(await c(`Loading`,async()=>a.autorag.jobs.logs({account_id:l,id:t.id,job_id:t[`job-id`],...i})),{successLabel:`Loaded`})}},S={command:`jobs`,describe:`AutoRAG job operations`,builder:e=>e.command(_).command(y).command(x).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function C(e){return e.positional(`id`,{type:`string`,description:`rag id`,demandOption:!0}).option(`max-num-results`,{type:`number`,description:`The max_num_results field`,default:10}).option(`query`,{type:`string`,description:`The query field`}).option(`ranking-options-ranker`,{type:`string`,description:`The ranking_options.ranker field`}).option(`ranking-options-score-threshold`,{type:`number`,description:`The ranking_options.score_threshold field`,default:.4}).option(`reranking-enabled`,{type:`boolean`,description:`The reranking.enabled field`,default:!1}).option(`rewrite-query`,{type:`boolean`,description:`The rewrite_query field`,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 w={command:`search <id>`,describe:`Search`,builder:C,handler:async d=>{if(d.dryRun){s({command:`cf autorag search`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/autorag/rags/${d.id==null?`<id>`:encodeURIComponent(String(d.id))}/search`,pathParams:{id:String(d.id??``)},bodyKind:`json`,body:d.body===void 0?a({max_num_results:d[`max-num-results`],query:l(d.query,`query`,`text`),ranking_options:{ranker:l(d[`ranking-options-ranker`],`ranking-options-ranker`,`text`),score_threshold:d[`ranking-options-score-threshold`]},reranking:{enabled:d[`reranking-enabled`]},rewrite_query:d[`rewrite-query`]}):i(d.body)});return}let f=await r(d),p=d.local?u:await n(f);if(d.accountId=p,d.body){let e=i(d.body);o(await c(`Loading`,async()=>f.autorag.search({...e,account_id:p,id:d.id})),{successLabel:`Loaded`});return}d.query===void 0&&(d.query=await t(`query`,`The query field`));let m=a({max_num_results:d[`max-num-results`],query:l(d.query,`query`,`text`),ranking_options:{ranker:l(d[`ranking-options-ranker`],`ranking-options-ranker`,`text`),score_threshold:d[`ranking-options-score-threshold`]},reranking:{enabled:d[`reranking-enabled`]},rewrite_query:d[`rewrite-query`]});o(await c(`Loading`,async()=>f.autorag.search({...m,account_id:p,id:d.id})),{successLabel:`Loaded`})}};function T(e){return e.positional(`id`,{type:`string`,description:`rag id`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`sync <id>`,describe:`Sync`,builder:T,handler:async t=>{if(t.dryRun){s({command:`cf autorag sync`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/autorag/rags/${t.id==null?`<id>`:encodeURIComponent(String(t.id))}/sync`,pathParams:{id:String(t.id??``)},bodyKind:`none`});return}let i=await r(t),a=t.local?u:await n(i);t.accountId=a,o(await c(`Updating`,async()=>i.autorag.sync({account_id:a,id:t.id})),{successLabel:`Updated`})}},D={command:`autorag`,describe:`AutoRAG — AI search, file management, job tracking, and sync for retrieval-augmented generation`,builder:e=>e.command(p).command(h).command(w).command(E).command(S).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{D as default};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import{C as e,_ as t,i as n,n as r}from"./auth-ffdf9yR0.mjs";import{t as i}from"./output-BJFNwj7b.mjs";import{n as a,t as o}from"./progress-CrCGTq7N.mjs";import{t as s}from"./local-VJaJ3BZ1.mjs";function c(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const l={command:`get`,describe:`Gets the current billing profile for the account.`,builder:c,handler:async n=>{if(n.dryRun){a({command:`cf billing profiles get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/billing/profile`,pathParams:{},bodyKind:`none`});return}let c=await r(n),l=n.local?s:await t(c);n.accountId=l,i(await o(`Loading`,async()=>c.billing.profiles.get({account_id:l})),{successLabel:`Loaded`})}},u={command:`profiles`,describe:`Billing profile with payment method, address, and invoice preferences`,builder:e=>e.command(l).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function d(e){return e.option(`from`,{type:`string`,description:`Start date for the usage query (ISO 8601).`}).option(`to`,{type:`string`,description:`End date for the usage query (ISO 8601).`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const f={command:`paygo`,describe:`Returns billable usage data for PayGo (self-serve) accounts. When no query parameters are provided, returns usage for the current billing period.`,builder:d,handler:async n=>{let c={from:n.from,to:n.to};if(n.dryRun){a({command:`cf billing usage paygo`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/paygo-usage`,pathParams:{},query:c,bodyKind:`none`});return}let l=await r(n),u=n.local?s:await t(l);n.accountId=u,i(await o(`Loading`,async()=>l.billing.usage.paygo({account_id:u,...c})),{successLabel:`Loaded`})}};function p(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const m={command:`paygo_info`,describe:`Returns high-level usage information for the account, including coverage, and subscription metadata.`,builder:p,handler:async c=>{if(c.dryRun){a({command:`cf billing usage paygo_info`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/paygo-usage-info`,pathParams:{},bodyKind:`none`});return}let l=await r(c),u=c.local?s:await t(l);c.accountId=u,i(await o(`Loading`,async()=>n(l,`GET`,`/accounts/${u}/paygo-usage-info`)),{successLabel:`Loaded`})}},h={command:`usage`,describe:`Operations for usage`,builder:e=>e.command(f).command(m).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},g={command:`billing`,describe:`Account billing profiles and usage data for Cloudflare subscriptions and add-on services`,builder:e=>e.command(u).command(h).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{g as default};
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- import{C as e,T as t,_ as n,i as r,n as i}from"./auth-ffdf9yR0.mjs";import{n as a}from"./body-parser-DKa8Ipg1.mjs";import{t as o}from"./output-BJFNwj7b.mjs";import{n as s,t as c}from"./progress-CrCGTq7N.mjs";import{t as l}from"./local-VJaJ3BZ1.mjs";import{t as u}from"./cli-types-CRIDdDw3.mjs";import{n as d,t as f}from"./raw-fetch-Dlccg0Tr.mjs";function p(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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 m={command:`create`,describe:"Returns the page's accessibility tree. Use `interestingOnly` to only return semantically meaningful nodes; use `root` to scope the tree to a CSS-selector-anchored subtree. Control page loading with `gotoOptions` and `waitFor*` options.",builder:p,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering accessibilityTree create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/accessibilityTree`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.accessibilityTree.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/accessibilityTree`,{query:u})),{successLabel:`Created`})}},ee={command:`accessibilityTree`,describe:`Operations for accessibilityTree`,builder:e=>e.command(m).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function h(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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:"Fetches rendered HTML content from provided URL or HTML. Check available options like `gotoOptions` and `waitFor*` to control page load behaviour.",builder:h,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering content create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/content`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.content.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/content`,{query:u})),{successLabel:`Created`})}},_={command:`content`,describe:`Render a page and return its full HTML content after JavaScript execution`,builder:e=>e.command(g).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function v(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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:"Starts a crawl job for the provided URL and its children. Check available options like `gotoOptions` and `waitFor*` to control page load behaviour.",builder:v,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering crawl create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/crawl`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.crawl.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/crawl`,{query:u})),{successLabel:`Created`})}};function b(e){return e.positional(`job-id`,{type:`string`,description:`The ID of the crawl job to cancel.`,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 <job-id>`,describe:`Cancels an ongoing crawl job by setting its status to cancelled and stopping all queued URLs.`,builder:b,handler:async r=>{if(r.dryRun){s({command:`cf browser-rendering crawl delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/crawl/${r[`job-id`]==null?`<job-id>`:encodeURIComponent(String(r[`job-id`]))}`,pathParams:{"job-id":String(r[`job-id`]??``)},bodyKind:`none`});return}let a=await i(r),u=r.local?l:await n(a);if(r.accountId=u,!await t({force:!!r.force})){process.stderr.write(`Aborted.
3
- `);return}o(await c(`Deleting`,async()=>a.browserRendering.crawl.delete({account_id:u,job_id:r[`job-id`]})),{successLabel:`Deleted`})}};function S(e){return e.positional(`job-id`,{type:`string`,description:`Crawl job ID.`,demandOption:!0}).option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`status`,{type:`string`,description:`Filter by URL status.`,choices:[`queued`,`errored`,`completed`,`disallowed`,`skipped`,`cancelled`]}).option(`cursor`,{type:`number`,description:`Cursor for pagination.`}).option(`limit`,{type:`number`,description:`Limit for pagination.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const C={command:`get <job-id>`,describe:`Returns the result of a crawl job.`,builder:u(S),handler:async t=>{let r={cacheTTL:t[`cache-ttl`],status:t.status,cursor:t.cursor,limit:t.limit};if(t.dryRun){s({command:`cf browser-rendering crawl get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/crawl/${t[`job-id`]==null?`<job-id>`:encodeURIComponent(String(t[`job-id`]))}`,pathParams:{"job-id":String(t[`job-id`]??``)},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Loading`,async()=>a.browserRendering.crawl.get({account_id:u,job_id:t[`job-id`],...r})),{successLabel:`Loaded`})}},w={command:`crawl`,describe:`Crawl operations`,builder:e=>e.command(y).command(x).command(C).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function T(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID to connect to.`,demandOption:!0}).option(`keep-alive`,{type:`number`,description:`Keep-alive time in ms (only valid when acquiring new session).`}).option(`lab`,{type:`boolean`,description:`Use experimental browser.`}).option(`recording`,{type:`boolean`,description:`Recording`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={command:`connect <session-id>`,describe:`Establishes a WebSocket connection to an existing browser session.`,builder:T,handler:async t=>{let r={keep_alive:t[`keep-alive`],lab:t.lab,recording:t.recording};if(t.dryRun){s({command:`cf browser-rendering devtools browser connect`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}`,pathParams:{"session-id":String(t[`session-id`]??``)},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Loading`,async()=>a.browserRendering.devtools.browser.connect({account_id:u,session_id:t[`session-id`],...r})),{successLabel:`Loaded`})}};function D(e){return e.option(`keep-alive`,{type:`number`,description:`Keep-alive time in milliseconds.`}).option(`lab`,{type:`boolean`,description:`Use experimental browser.`}).option(`targets`,{type:`boolean`,description:`Include browser targets in response.`}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URL remains valid, in milliseconds (max 60 minutes). Only used when targets is true.`}).option(`recording`,{type:`boolean`,description:`Recording`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const O={command:`create`,describe:`Acquires a browser and returns its session ID and websocket URL.`,builder:D,handler:async t=>{let r={keep_alive:t[`keep-alive`],lab:t.lab,targets:t.targets,liveViewUrlExpiresInMs:t[`live-view-url-expires-in-ms`],recording:t.recording};if(t.dryRun){s({command:`cf browser-rendering devtools browser create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser`,pathParams:{},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Creating`,async()=>a.browserRendering.devtools.browser.create({account_id:u,...r})),{successLabel:`Created`})}};function k(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID to close.`,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 A={command:`delete <session-id>`,describe:`Closes an existing browser session.`,builder:k,handler:async r=>{if(r.dryRun){s({command:`cf browser-rendering devtools browser delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}`,pathParams:{"session-id":String(r[`session-id`]??``)},bodyKind:`none`});return}let a=await i(r),u=r.local?l:await n(a);if(r.accountId=u,!await t({force:!!r.force})){process.stderr.write(`Aborted.
4
- `);return}o(await c(`Deleting`,async()=>a.browserRendering.devtools.browser.delete({account_id:u,session_id:r[`session-id`]})),{successLabel:`Deleted`})}};function j(e){return e.option(`keep-alive`,{type:`number`,description:`Keep-alive time in ms (only valid when acquiring new session).`}).option(`lab`,{type:`boolean`,description:`Use experimental browser.`}).option(`recording`,{type:`boolean`,description:`Recording`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const M={command:`launch`,describe:`Acquires and establishes a WebSocket connection to a browser session.`,builder:j,handler:async t=>{let r={keep_alive:t[`keep-alive`],lab:t.lab,recording:t.recording};if(t.dryRun){s({command:`cf browser-rendering devtools browser launch`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser`,pathParams:{},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Loading`,async()=>a.browserRendering.devtools.browser.launch({account_id:u,...r})),{successLabel:`Loaded`})}};function N(e){return e.positional(`target-id`,{type:`string`,description:`Target ID, e.g. page ID.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const P={command:`get <target-id>`,describe:`Establishes a WebSocket connection to a specific Chrome DevTools target or page.`,builder:N,handler:async t=>{if(t.dryRun){s({command:`cf browser-rendering devtools browser page get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/page/${t[`target-id`]==null?`<target-id>`:encodeURIComponent(String(t[`target-id`]))}`,pathParams:{"session-id":String(t[`session-id`]??``),"target-id":String(t[`target-id`]??``)},bodyKind:`none`});return}let r=await i(t),a=t.local?l:await n(r);t.accountId=a,o(await c(`Loading`,async()=>r.browserRendering.devtools.browser.page.get({account_id:a,session_id:t[`session-id`],target_id:t[`target-id`]})),{successLabel:`Loaded`})}},F={command:`page`,describe:`Chrome DevTools Protocol endpoints for browser automation and debugging`,builder:e=>e.command(P).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function I(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const L={command:`protocol <session-id>`,describe:`Returns the complete Chrome DevTools Protocol schema including all domains, commands, events, and types. This schema describes the entire CDP API surface.`,builder:I,handler:async t=>{if(t.dryRun){s({command:`cf browser-rendering devtools browser protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json/protocol`,pathParams:{"session-id":String(t[`session-id`]??``)},bodyKind:`none`});return}let r=await i(t),a=t.local?l:await n(r);t.accountId=a,o(await c(`Loading`,async()=>r.browserRendering.devtools.browser.protocol({account_id:a,session_id:t[`session-id`]})),{successLabel:`Loaded`})}};function R(e){return e.positional(`target-id`,{type:`string`,description:`Target ID to activate.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const z={command:`activate <target-id>`,describe:`Activates (brings to front) a specific browser target by its ID.`,builder:R,handler:async t=>{if(t.dryRun){s({command:`cf browser-rendering devtools browser targets activate`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json/activate/${t[`target-id`]==null?`<target-id>`:encodeURIComponent(String(t[`target-id`]))}`,pathParams:{"session-id":String(t[`session-id`]??``),"target-id":String(t[`target-id`]??``)},bodyKind:`none`});return}let r=await i(t),a=t.local?l:await n(r);t.accountId=a,o(await c(`Loading`,async()=>r.browserRendering.devtools.browser.targets.activate({account_id:a,session_id:t[`session-id`],target_id:t[`target-id`]})),{successLabel:`Loaded`})}};function B(e){return e.positional(`target-id`,{type:`string`,description:`Target ID to close.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const V={command:`close <target-id>`,describe:`Closes a specific browser target (tab, page, etc.) by its ID. Returns 'Target is closing' on success or an error if the target is not found.`,builder:B,handler:async t=>{if(t.dryRun){s({command:`cf browser-rendering devtools browser targets close`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json/close/${t[`target-id`]==null?`<target-id>`:encodeURIComponent(String(t[`target-id`]))}`,pathParams:{"session-id":String(t[`session-id`]??``),"target-id":String(t[`target-id`]??``)},bodyKind:`none`});return}let r=await i(t),a=t.local?l:await n(r);t.accountId=a,o(await c(`Loading`,async()=>r.browserRendering.devtools.browser.targets.close({account_id:a,session_id:t[`session-id`],target_id:t[`target-id`]})),{successLabel:`Loaded`})}};function H(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`url`,{type:`string`,description:`Url`}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URL remains valid, in milliseconds (max 60 minutes)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const U={command:`create <session-id>`,describe:`Opens a new tab in the browser. Optionally specify a URL to navigate to.`,builder:H,handler:async t=>{let r={url:t.url,liveViewUrlExpiresInMs:t[`live-view-url-expires-in-ms`]};if(t.dryRun){s({command:`cf browser-rendering devtools browser targets create`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json/new`,pathParams:{"session-id":String(t[`session-id`]??``)},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Updating`,async()=>a.browserRendering.devtools.browser.targets.create({account_id:u,session_id:t[`session-id`],...r})),{successLabel:`Updated`})}};function W(e){return e.positional(`target-id`,{type:`string`,description:`Target ID.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const G={command:`get <target-id>`,describe:`Returns the debuggable target with the given ID.`,builder:W,handler:async t=>{if(t.dryRun){s({command:`cf browser-rendering devtools browser targets get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json/list/${t[`target-id`]==null?`<target-id>`:encodeURIComponent(String(t[`target-id`]))}`,pathParams:{"session-id":String(t[`session-id`]??``),"target-id":String(t[`target-id`]??``)},bodyKind:`none`});return}let r=await i(t),a=t.local?l:await n(r);t.accountId=a,o(await c(`Loading`,async()=>r.browserRendering.devtools.browser.targets.get({account_id:a,session_id:t[`session-id`],target_id:t[`target-id`]})),{successLabel:`Loaded`})}};function K(e){return e.option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URLs remain valid, in milliseconds (max 60 minutes)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const q={command:`list`,describe:`Returns a list of all debuggable targets including tabs, pages, service workers, and other browser contexts.`,builder:K,handler:async t=>{let r={liveViewUrlExpiresInMs:t[`live-view-url-expires-in-ms`]};if(t.dryRun){s({command:`cf browser-rendering devtools browser targets list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json/list`,pathParams:{"session-id":String(t[`session-id`]??``)},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Loading`,async()=>a.browserRendering.devtools.browser.targets.list({account_id:u,session_id:t[`session-id`],...r})),{successLabel:`Loaded`})}},J={command:`targets`,describe:`Chrome DevTools Protocol endpoints for browser automation and debugging`,builder:e=>e.command(z).command(V).command(U).command(G).command(q).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Y(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const X={command:`version <session-id>`,describe:`Get browser version metadata.`,builder:Y,handler:async t=>{if(t.dryRun){s({command:`cf browser-rendering devtools browser version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json/version`,pathParams:{"session-id":String(t[`session-id`]??``)},bodyKind:`none`});return}let r=await i(t),a=t.local?l:await n(r);t.accountId=a,o(await c(`Loading`,async()=>r.browserRendering.devtools.browser.version({account_id:a,session_id:t[`session-id`]})),{successLabel:`Loaded`})}},te={command:`browser`,describe:`Chrome DevTools Protocol endpoints for browser automation and debugging`,builder:e=>e.command(E).command(O).command(A).command(M).command(L).command(X).command(F).command(J).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Z(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URLs remain valid, in milliseconds (max 60 minutes)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Q={command:`get <session-id>`,describe:`Returns a list of all debuggable targets including tabs, pages, service workers, and other browser contexts.`,builder:Z,handler:async t=>{let r={liveViewUrlExpiresInMs:t[`live-view-url-expires-in-ms`]};if(t.dryRun){s({command:`cf browser-rendering devtools json get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/browser/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}/json`,pathParams:{"session-id":String(t[`session-id`]??``)},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Loading`,async()=>a.browserRendering.devtools.json.get({account_id:u,session_id:t[`session-id`],...r})),{successLabel:`Loaded`})}},ne={command:`json`,describe:`Chrome DevTools Protocol endpoints for browser automation and debugging`,builder:e=>e.command(Q).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function re(e){return e.positional(`session-id`,{type:`string`,description:`Session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ie={command:`get <session-id>`,describe:`Get details for a specific browser session.`,builder:re,handler:async t=>{if(t.dryRun){s({command:`cf browser-rendering devtools session get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/session/${t[`session-id`]==null?`<session-id>`:encodeURIComponent(String(t[`session-id`]))}`,pathParams:{"session-id":String(t[`session-id`]??``)},bodyKind:`none`});return}let r=await i(t),a=t.local?l:await n(r);t.accountId=a,o(await c(`Loading`,async()=>r.browserRendering.devtools.session.get({account_id:a,session_id:t[`session-id`]})),{successLabel:`Loaded`})}};function ae(e){return e.option(`limit`,{type:`number`,description:`Limit`}).option(`offset`,{type:`number`,description:`Offset`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const oe={command:`list`,describe:`List active browser sessions.`,builder:ae,handler:async t=>{let r={limit:t.limit,offset:t.offset};if(t.dryRun){s({command:`cf browser-rendering devtools session list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/devtools/session`,pathParams:{},query:r,bodyKind:`none`});return}let a=await i(t),u=t.local?l:await n(a);t.accountId=u,o(await c(`Loading`,async()=>a.browserRendering.devtools.session.list({account_id:u,...r})),{successLabel:`Loaded`})}},se={command:`session`,describe:`Chrome DevTools Protocol endpoints for browser automation and debugging`,builder:e=>e.command(ie).command(oe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ce={command:`devtools`,describe:`Operations for devtools`,builder:e=>e.command(te).command(ne).command(se).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function le(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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 ue={command:`create`,describe:"Gets json from a webpage from a provided URL or HTML. Pass `prompt` or `schema` in the body. Control page loading with `gotoOptions` and `waitFor*` options.",builder:le,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering json create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/json`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.json.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/json`,{query:u})),{successLabel:`Created`})}},de={command:`json`,describe:`Extract structured JSON data from rendered pages using selectors`,builder:e=>e.command(ue).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function fe(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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 pe={command:`create`,describe:`Get links from a web page.`,builder:fe,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering links create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/links`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.links.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/links`,{query:u})),{successLabel:`Created`})}},me={command:`links`,describe:`Extract all links from a rendered web page`,builder:e=>e.command(pe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function he(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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`,describe:"Gets markdown of a webpage from provided URL or HTML. Control page loading with `gotoOptions` and `waitFor*` options.",builder:he,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering markdown create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/markdown`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.markdown.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/markdown`,{query:u})),{successLabel:`Created`})}},_e={command:`markdown`,describe:`Convert rendered web page content to clean Markdown format`,builder:e=>e.command(ge).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ve(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1})}const ye={command:`create`,describe:"Fetches rendered PDF from provided URL or HTML. Check available options like `gotoOptions` and `waitFor*` to control page load behaviour.",builder:ve,handler:async t=>{let r={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering pdf create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/pdf`,pathParams:{},query:r,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let o=await i(t),u=t.local?l:await n(o);if(t.accountId=u,t.body){let e=a(t.body),n=new URLSearchParams(Object.entries(r).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),i=await c(`Creating`,async()=>f(`/accounts/${u}/browser-rendering/pdf${n?`?`+n:``}`,{method:`POST`,localEndpoint:t.local?t.localEndpoint:void 0,body:JSON.stringify(e),contentType:`application/json`}));d(t.text===!0?i.toString(`utf-8`):i);return}let p=new URLSearchParams(Object.entries(r).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),m=await c(`Creating`,async()=>f(`/accounts/${u}/browser-rendering/pdf${p?`?`+p:``}`,{method:`POST`,localEndpoint:t.local?t.localEndpoint:void 0}));d(t.text===!0?m.toString(`utf-8`):m)}},be={command:`pdf`,describe:`Generate PDF documents from rendered web pages`,builder:e=>e.command(ye).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function $(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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 xe={command:`create`,describe:`Get meta attributes like height, width, text and others of selected elements.`,builder:$,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering scrape create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/scrape`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.scrape.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/scrape`,{query:u})),{successLabel:`Created`})}},Se={command:`scrape`,describe:`Scrape structured data from web pages using CSS selectors`,builder:e=>e.command(xe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ce(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1})}const we={command:`create`,describe:"Takes a screenshot of a webpage from provided URL or HTML. Control page loading with `gotoOptions` and `waitFor*` options. Customize screenshots with `viewport`, `fullPage`, `clip` and others.",builder:Ce,handler:async t=>{let r={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering screenshot create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/screenshot`,pathParams:{},query:r,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let o=await i(t),u=t.local?l:await n(o);if(t.accountId=u,t.body){let e=a(t.body),n=new URLSearchParams(Object.entries(r).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),i=await c(`Creating`,async()=>f(`/accounts/${u}/browser-rendering/screenshot${n?`?`+n:``}`,{method:`POST`,localEndpoint:t.local?t.localEndpoint:void 0,body:JSON.stringify(e),contentType:`application/json`}));d(t.text===!0?i.toString(`utf-8`):i);return}let p=new URLSearchParams(Object.entries(r).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),m=await c(`Creating`,async()=>f(`/accounts/${u}/browser-rendering/screenshot${p?`?`+p:``}`,{method:`POST`,localEndpoint:t.local?t.localEndpoint:void 0}));d(t.text===!0?m.toString(`utf-8`):m)}},Te={command:`screenshot`,describe:`Capture viewport or full-page screenshots as PNG or JPEG images`,builder:e=>e.command(we).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ee(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).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 De={command:`create`,describe:"Returns the page's HTML content and screenshot. Control page loading with `gotoOptions` and `waitFor*` options. Customize screenshots with `viewport`, `fullPage`, `clip` and others.",builder:Ee,handler:async t=>{let u={cacheTTL:t[`cache-ttl`]};if(t.dryRun){s({command:`cf browser-rendering snapshot create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/browser-rendering/snapshot`,pathParams:{},query:u,bodyKind:`json`,body:t.body===void 0?void 0:a(t.body)});return}let d=await i(t),f=t.local?l:await n(d);if(t.accountId=f,t.body){let e=a(t.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Creating`,async()=>d.browserRendering.snapshot.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}o(await c(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/snapshot`,{query:u})),{successLabel:`Created`})}},Oe={command:`snapshot`,describe:`Capture a complete DOM snapshot including styles and resources`,builder:e=>e.command(De).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ke={command:`browser-rendering`,describe:`Headless browser API — render pages, take screenshots, generate PDFs, scrape content, and extract structured data`,builder:e=>e.command(ee).command(_).command(w).command(ce).command(de).command(me).command(_e).command(be).command(Se).command(Te).command(Oe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{ke as default};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import{r as e}from"./chunk-DH-VkVmc.mjs";import{J as t}from"./dist-DNBSHor6.mjs";import{existsSync as n,mkdirSync as r,readFileSync as i,writeFileSync as a}from"node:fs";import{join as o}from"node:path";var s=e({getConfigDir:()=>u,getConfigFile:()=>d,loadConfig:()=>p,saveConfig:()=>m,updateConfig:()=>h});function c(){return t({appName:`cf`,useLegacyHomeDir:!1})}function l(){return o(c(),`config.json`)}function u(){return c()}function d(){return l()}function f(){let e=c();n(e)||r(e,{recursive:!0,mode:448})}function p(){try{let e=l();if(!n(e))return{};let t=i(e,`utf-8`);return JSON.parse(t)}catch{return{}}}function m(e){f();let t=JSON.stringify(e,null,2);a(l(),t,{mode:384})}function h(e){let t=p(),n={...t,...e};e.completions&&t.completions&&(n.completions={...t.completions,...e.completions}),e.defaults&&t.defaults&&(n.defaults={...t.defaults,...e.defaults}),m(n)}export{m as a,p as i,u as n,d as r,s as t};
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- import{E as e,S as t,T as n,n as r}from"./auth-ffdf9yR0.mjs";import{n as i,t as a}from"./body-parser-DKa8Ipg1.mjs";import{t as o}from"./output-BJFNwj7b.mjs";import{n as s,t as c}from"./progress-CrCGTq7N.mjs";import{n as l}from"./input-validation-zEO81MWN.mjs";function u(e){return e.option(`value`,{type:`string`,description:`The status value for Content Scanning.`,choices:[`enabled`,`disabled`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Content Scanning settings to update.`})}const d={command:`create`,describe:`Update the Content Scanning status.`,builder:u,handler:async n=>{if(n.dryRun){s({command:`cf content-scanning create`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${n.zone??n.zoneId??`<zone>`}/content-upload-scan/settings`,pathParams:{"zone-id":String(n.zone??n[`zone-id`]??``)},bodyKind:`json`,body:n.body===void 0?a({value:l(n.value,`value`,`text`)}):i(n.body)});return}let u=await r(n),d=await t({zone:n.zone},u,{quiet:n.quiet});if(n.zoneId=d,n.body){let e=i(n.body);o(await c(`Updating`,async()=>u.contentScanning.create({...e,zone_id:d})),{successLabel:`Updated`});return}n.value===void 0&&(n.value=await e(`value`,`The status value for Content Scanning.`,[`enabled`,`disabled`]));let f=a({value:l(n.value,`value`,`text`)});o(await c(`Updating`,async()=>u.contentScanning.create({...f,zone_id:d})),{successLabel:`Updated`})}};function f(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 p={command:`disable`,describe:`Disable Content Scanning.`,builder:f,handler:async e=>{if(e.dryRun){s({command:`cf content-scanning disable`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/content-upload-scan/disable`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let i=await r(e),a=await t({zone:e.zone},i,{quiet:e.quiet});if(e.zoneId=a,!await n({force:!!e.force,message:`This operation turns off WAF content scanning for a zone.`})){process.stderr.write(`Aborted.
3
- `);return}o(await c(`Deleting`,async()=>i.contentScanning.disable({zone_id:a})),{successLabel:`Deleted`})}};function m(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const h={command:`enable`,describe:`Enable Content Scanning.`,builder:m,handler:async e=>{if(e.dryRun){s({command:`cf content-scanning enable`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/content-upload-scan/enable`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let n=await r(e),i=await t({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Creating`,async()=>n.contentScanning.enable({zone_id:i})),{successLabel:`Created`})}};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:`Retrieve the current status of Content Scanning.`,builder:g,handler:async e=>{if(e.dryRun){s({command:`cf content-scanning get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/content-upload-scan/settings`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let n=await r(e),i=await t({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.contentScanning.get({zone_id:i})),{successLabel:`Loaded`})}};function v(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Array of custom scan expressions to add.`})}const y={command:`create`,describe:`Add custom scan expressions for Content Scanning.`,builder:v,handler:async e=>{if(e.dryRun){s({command:`cf content-scanning payloads create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/content-upload-scan/payloads`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:i(e.body)});return}let n=await r(e),a=await t({zone:e.zone},n,{quiet:e.quiet});if(e.zoneId=a,e.body){let t=i(e.body);o(await c(`Creating`,async()=>n.contentScanning.payloads.create({body:t,zone_id:a})),{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 b(e){return e.positional(`expression-id`,{type:`string`,description:`defines the unique ID for this custom scan expression.`,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 <expression-id>`,describe:`Delete a Content Scan Custom Expression.`,builder:b,handler:async e=>{if(e.dryRun){s({command:`cf content-scanning payloads delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/content-upload-scan/payloads/${e[`expression-id`]==null?`<expression-id>`:encodeURIComponent(String(e[`expression-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"expression-id":String(e[`expression-id`]??``)},bodyKind:`none`});return}let i=await r(e),a=await t({zone:e.zone},i,{quiet:e.quiet});if(e.zoneId=a,!await n({force:!!e.force})){process.stderr.write(`Aborted.
4
- `);return}o(await c(`Deleting`,async()=>i.contentScanning.payloads.delete({zone_id:a,expression_id:e[`expression-id`]})),{successLabel:`Deleted`})}};function S(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const C={command:`list`,describe:`Get a list of existing custom scan expressions for Content Scanning.`,builder:S,handler:async e=>{if(e.dryRun){s({command:`cf content-scanning payloads list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/content-upload-scan/payloads`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let n=await r(e),i=await t({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.contentScanning.payloads.list({zone_id:i})),{successLabel:`Loaded`})}},w={command:`payloads`,describe:`Scanned payload logs showing detection results for uploaded content`,builder:e=>e.command(y).command(x).command(C).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},T={command:`content-scanning`,describe:`Scan uploaded content in HTTP requests for malware and malicious payloads`,builder:e=>e.command(d).command(p).command(h).command(_).command(w).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{T as default};
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- import{C as e,D as t,E as n,T as r,_ as i,n as a}from"./auth-ffdf9yR0.mjs";import{n as o,t as s}from"./body-parser-DKa8Ipg1.mjs";import{t as c}from"./output-BJFNwj7b.mjs";import{n as l,t as u}from"./progress-CrCGTq7N.mjs";import{n as d}from"./input-validation-zEO81MWN.mjs";import{t as f}from"./local-VJaJ3BZ1.mjs";import{t as p}from"./cli-types-CRIDdDw3.mjs";function m(e){return e.positional(`finding-id`,{type:`string`,description:`A base64-encoded ID identifying this Finding.`,demandOption:!0}).option(`finding-instances`,{type:`string`,array:!0,description:`A list of finding instance IDs to pass along.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for bulk actions on finding instances.`})}const h={command:`archiveFindingInstance <finding-id>`,describe:`Archive one or more finding instances.`,builder:m,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture archiveFindingInstance`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${t[`finding-id`]==null?`<finding-id>`:encodeURIComponent(String(t[`finding-id`]))}/instances/archive`,pathParams:{"finding-id":String(t[`finding-id`]??``)},bodyKind:`json`,body:t.body===void 0?s({finding_instances:t[`finding-instances`]}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.archiveFindingInstance({...e,account_id:r,finding_id:t[`finding-id`]})),{successLabel:`Created`});return}if(t[`finding-instances`]===void 0)throw Error(`--finding-instances is required (or pass --body with this field set).`);let d=s({finding_instances:t[`finding-instances`]});c(await u(`Creating`,async()=>n.dataSecurity.posture.archiveFindingInstance({...d,account_id:r,finding_id:t[`finding-id`]})),{successLabel:`Created`})}};function ee(e){return e.positional(`finding-id`,{type:`string`,description:`A unique integer value identifying this findings stats v2.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const g={command:`changeFindingSeverity <finding-id>`,describe:"Update the severity of a Finding. This will update the `severity_override` field on the Finding payload with the new severity value.",builder:p(ee),handler:async t=>{if(t.dryRun){l({command:`cf data-security posture changeFindingSeverity`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${t[`finding-id`]==null?`<finding-id>`:encodeURIComponent(String(t[`finding-id`]))}/tune_finding_severity`,pathParams:{"finding-id":String(t[`finding-id`]??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Creating`,async()=>n.dataSecurity.posture.changeFindingSeverity({account_id:r,finding_id:t[`finding-id`]})),{successLabel:`Created`})}};function _(e){return e.option(`dlp-profile-id`,{type:`string`,array:!0,description:`Filter by DLP profile IDs.`}).option(`integration-id`,{type:`string`,array:!0,description:`Filter by integration IDs.`}).option(`max-affliction-date`,{type:`string`,description:`Filter to view content flagged on or before this date.`}).option(`min-affliction-date`,{type:`string`,description:`Filter to view content flagged on or after this date.`}).option(`search`,{type:`string`,description:`Search term to filter content.`}).option(`vendors`,{type:`string`,array:!0,description:`Filter by vendor types.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for creating content exports.`})}const v={command:`createContentExport`,describe:`Creates a CSV export for content and accepts optional filters in the payload.`,builder:_,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture createContentExport`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/content/export`,pathParams:{},bodyKind:`json`,body:t.body===void 0?s({dlp_profile_id:t[`dlp-profile-id`],integration_id:t[`integration-id`],max_affliction_date:d(t[`max-affliction-date`],`max-affliction-date`,`text`),min_affliction_date:d(t[`min-affliction-date`],`min-affliction-date`,`text`),search:d(t.search,`search`,`text`),vendors:t.vendors}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.createContentExport({...e,account_id:r})),{successLabel:`Created`});return}let p=s({dlp_profile_id:t[`dlp-profile-id`],integration_id:t[`integration-id`],max_affliction_date:d(t[`max-affliction-date`],`max-affliction-date`,`text`),min_affliction_date:d(t[`min-affliction-date`],`min-affliction-date`,`text`),search:d(t.search,`search`,`text`),vendors:t.vendors});c(await u(`Creating`,async()=>n.dataSecurity.posture.createContentExport({...p,account_id:r})),{successLabel:`Created`})}};function y(e){return e.option(`ignored`,{type:`boolean`,description:`Filter for only the ignored findings. Set to false to only see active items.`}).option(`integration-id`,{type:`string`,array:!0,description:`Filter by multiple integration IDs.`}).option(`max-affliction-date`,{type:`string`,description:`Filter to view findings that occurred on or before the affliction date. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`min-affliction-date`,{type:`string`,description:`Filter to view findings that occurred on or after the affliction date. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`search`,{type:`string`,description:`A search term.`}).option(`severities`,{type:`string`,array:!0,description:`Filter by severity levels.`}).option(`vendors`,{type:`string`,array:!0,description:`Filter by vendor types.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Filter specification for findings export jobs.`})}const b={command:`createFindingExportCSV`,describe:`Creates a CSV export for findings and accepts optional filters in the payload.`,builder:y,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture createFindingExportCSV`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/export`,pathParams:{},bodyKind:`json`,body:t.body===void 0?s({ignored:t.ignored,integration_id:t[`integration-id`],max_affliction_date:d(t[`max-affliction-date`],`max-affliction-date`,`text`),min_affliction_date:d(t[`min-affliction-date`],`min-affliction-date`,`text`),search:d(t.search,`search`,`text`),severities:t.severities,vendors:t.vendors}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.createFindingExportCsv({...e,account_id:r})),{successLabel:`Created`});return}let p=s({ignored:t.ignored,integration_id:t[`integration-id`],max_affliction_date:d(t[`max-affliction-date`],`max-affliction-date`,`text`),min_affliction_date:d(t[`min-affliction-date`],`min-affliction-date`,`text`),search:d(t.search,`search`,`text`),severities:t.severities,vendors:t.vendors});c(await u(`Creating`,async()=>n.dataSecurity.posture.createFindingExportCsv({...p,account_id:r})),{successLabel:`Created`})}};function x(e){return e.positional(`storage-namespace-id`,{type:`string`,description:"A storage namespace identifier for the finding, used to scope finding instance exports. Constructed by base64-decoding the finding ID (which encodes `integration_id:finding_type_id`) and replacing the colon separator with a hyphen. For example, a finding ID that decodes to `00000000-0000-0000-0000-000000000001:00000000-0000-0000-0000-000000000002` becomes `00000000-0000-0000-0000-000000000001-00000000-0000-0000-0000-000000000002`.",demandOption:!0}).option(`archived`,{type:`boolean`,description:`Filter for archived status.`}).option(`max-affliction-date`,{type:`string`,description:`Filter to view findings that occurred on or before the affliction date. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`min-affliction-date`,{type:`string`,description:`Filter to view findings that occurred on or after the affliction date. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`search`,{type:`string`,description:`A search term.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Filter specification for finding instance exports.`})}const S={command:`createFindingInstancesExportCSV <storage-namespace-id>`,describe:"Creates a CSV export for Finding instances and accepts optional filters in the payload. The `storage_namespace_id` path parameter is derived from the finding ID by base64-decoding it (which yields `integration_id:finding_type_id`) and replacing the colon with a hyphen.",builder:x,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture createFindingInstancesExportCSV`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${t[`storage-namespace-id`]==null?`<storage-namespace-id>`:encodeURIComponent(String(t[`storage-namespace-id`]))}/instances/export`,pathParams:{"storage-namespace-id":String(t[`storage-namespace-id`]??``)},bodyKind:`json`,body:t.body===void 0?s({archived:t.archived,max_affliction_date:d(t[`max-affliction-date`],`max-affliction-date`,`text`),min_affliction_date:d(t[`min-affliction-date`],`min-affliction-date`,`text`),search:d(t.search,`search`,`text`)}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.createFindingInstancesExportCsv({...e,account_id:r,storage_namespace_id:t[`storage-namespace-id`]})),{successLabel:`Created`});return}let p=s({archived:t.archived,max_affliction_date:d(t[`max-affliction-date`],`max-affliction-date`,`text`),min_affliction_date:d(t[`min-affliction-date`],`min-affliction-date`,`text`),search:d(t.search,`search`,`text`)});c(await u(`Creating`,async()=>n.dataSecurity.posture.createFindingInstancesExportCsv({...p,account_id:r,storage_namespace_id:t[`storage-namespace-id`]})),{successLabel:`Created`})}};function C(e){return e.option(`finding-instance-ids`,{type:`string`,array:!0,description:`UUIDs identifying Finding Instances.`}).option(`remediation-type-id`,{type:`string`,description:`A UUID identifying this Remediation Type.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for creating remediation jobs.`})}const w={command:`createRemediationJobs`,describe:`Create one or more remediation jobs tied to a specific Cloudflare Account.`,builder:C,handler:async n=>{if(n.dryRun){l({command:`cf data-security posture createRemediationJobs`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/remediations/jobs`,pathParams:{},bodyKind:`json`,body:n.body===void 0?s({finding_instance_ids:n[`finding-instance-ids`],remediation_type_id:d(n[`remediation-type-id`],`remediation-type-id`,`text`)}):o(n.body)});return}let r=await a(n),p=n.local?f:await i(r);if(n.accountId=p,n.body){let e=o(n.body);c(await u(`Creating`,async()=>r.dataSecurity.posture.createRemediationJobs({...e,account_id:p})),{successLabel:`Created`});return}if(n[`finding-instance-ids`]===void 0)throw Error(`--finding-instance-ids is required (or pass --body with this field set).`);n[`remediation-type-id`]===void 0&&(n[`remediation-type-id`]=await t(`remediation-type-id`,`A UUID identifying this Remediation Type.`));let m=s({finding_instance_ids:n[`finding-instance-ids`],remediation_type_id:d(n[`remediation-type-id`],`remediation-type-id`,`text`)});c(await u(`Creating`,async()=>r.dataSecurity.posture.createRemediationJobs({...m,account_id:p})),{successLabel:`Created`})}};function T(e){return e.option(`integration-id`,{type:`string`,array:!0,description:`Filter by multiple integration IDs.`}).option(`max-updated-at`,{type:`string`,description:`Filter to view remediation jobs updated on or before this datetime. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`min-updated-at`,{type:`string`,description:`Filter to view remediation jobs updated on or after this datetime. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`search`,{type:`string`,description:`A search term.`}).option(`status`,{type:`string`,array:!0,description:`Filter by remediation job status.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Filter specification for remediation jobs export.`})}const E={command:`createRemediationJobsExportCSV`,describe:`Creates a CSV export for remediation jobs and accepts optional filters in the payload.`,builder:T,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture createRemediationJobsExportCSV`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/remediations/jobs/export`,pathParams:{},bodyKind:`json`,body:t.body===void 0?s({integration_id:t[`integration-id`],max_updated_at:d(t[`max-updated-at`],`max-updated-at`,`text`),min_updated_at:d(t[`min-updated-at`],`min-updated-at`,`text`),search:d(t.search,`search`,`text`),status:t.status}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.createRemediationJobsExportCsv({...e,account_id:r})),{successLabel:`Created`});return}let p=s({integration_id:t[`integration-id`],max_updated_at:d(t[`max-updated-at`],`max-updated-at`,`text`),min_updated_at:d(t[`min-updated-at`],`min-updated-at`,`text`),search:d(t.search,`search`,`text`),status:t.status});c(await u(`Creating`,async()=>n.dataSecurity.posture.createRemediationJobsExportCsv({...p,account_id:r})),{successLabel:`Created`})}};function D(e){return e.option(`authentication-type`,{type:`string`,description:`Type of authentication used for the webhook.`,choices:[`Basic Auth`,`None`,`Bearer Auth`,`Static Headers`,`HMAC-Signing`]}).option(`destination-url`,{type:`string`,description:`Target URL for the webhook configuration. Where resulting data will be sent.`}).option(`label`,{type:`string`,description:`Account-specified display label for the webhook configuration.`}).option(`signing-secret`,{type:`string`,description:`Secret key used for HMAC signing when authentication_type is "HMAC-Signing".`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for creating a new webhook configuration.`})}const O={command:`createWebhook`,describe:`Creates a new webhook configuration for sending finding notifications to external endpoints.`,builder:D,handler:async r=>{if(r.dryRun){l({command:`cf data-security posture createWebhook`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks`,pathParams:{},bodyKind:`json`,body:r.body===void 0?s({authentication_type:d(r[`authentication-type`],`authentication-type`,`text`),destination_url:d(r[`destination-url`],`destination-url`,`text`),label:d(r.label,`label`,`text`),signing_secret:d(r[`signing-secret`],`signing-secret`,`text`)}):o(r.body)});return}let p=await a(r),m=r.local?f:await i(p);if(r.accountId=m,r.body){let e=o(r.body);c(await u(`Creating`,async()=>p.dataSecurity.posture.createWebhook({...e,account_id:m})),{successLabel:`Created`});return}r[`authentication-type`]===void 0&&(r[`authentication-type`]=await n(`authentication-type`,`Type of authentication used for the webhook.`,[`Basic Auth`,`None`,`Bearer Auth`,`Static Headers`,`HMAC-Signing`])),r[`destination-url`]===void 0&&(r[`destination-url`]=await t(`destination-url`,`Target URL for the webhook configuration. Where resulting data will be sent.`)),r.label===void 0&&(r.label=await t(`label`,`Account-specified display label for the webhook configuration.`));let h=s({authentication_type:d(r[`authentication-type`],`authentication-type`,`text`),destination_url:d(r[`destination-url`],`destination-url`,`text`),label:d(r.label,`label`,`text`),signing_secret:d(r[`signing-secret`],`signing-secret`,`text`)});c(await u(`Creating`,async()=>p.dataSecurity.posture.createWebhook({...h,account_id:m})),{successLabel:`Created`})}};function k(e){return e.option(`finding-instance-ids`,{type:`string`,array:!0,description:`Array of finding instance IDs to send to the webhooks`}).option(`webhook-ids`,{type:`string`,array:!0,description:`Array of webhook IDs to trigger jobs for`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for creating webhook jobs`})}const A={command:`createWebhookJobs`,describe:`Creates webhook jobs to send a finding instance to one or more configured webhooks.`,builder:k,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture createWebhookJobs`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks/jobs`,pathParams:{},bodyKind:`json`,body:t.body===void 0?s({finding_instance_ids:t[`finding-instance-ids`],webhook_ids:t[`webhook-ids`]}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.createWebhookJobs({...e,account_id:r})),{successLabel:`Created`});return}if(t[`finding-instance-ids`]===void 0)throw Error(`--finding-instance-ids is required (or pass --body with this field set).`);if(t[`webhook-ids`]===void 0)throw Error(`--webhook-ids is required (or pass --body with this field set).`);let d=s({finding_instance_ids:t[`finding-instance-ids`],webhook_ids:t[`webhook-ids`]});c(await u(`Creating`,async()=>n.dataSecurity.posture.createWebhookJobs({...d,account_id:r})),{successLabel:`Created`})}};function j(e){return e.positional(`webhook-id`,{type:`string`,description:`A UUID identifying the webhook configuration.`,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 <webhook-id>`,describe:`Soft deletes a webhook configuration by its unique identifier. The webhook will be marked as deleted and will no longer be available for use.`,builder:j,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks/${t[`webhook-id`]==null?`<webhook-id>`:encodeURIComponent(String(t[`webhook-id`]))}`,pathParams:{"webhook-id":String(t[`webhook-id`]??``)},bodyKind:`none`});return}let n=await a(t),o=t.local?f:await i(n);if(t.accountId=o,!await r({force:!!t.force})){process.stderr.write(`Aborted.
3
- `);return}c(await u(`Deleting`,async()=>n.dataSecurity.posture.delete({account_id:o,webhook_id:t[`webhook-id`]})),{successLabel:`Deleted`})}};function N(e){return e.positional(`webhook-id`,{type:`string`,description:`A UUID identifying the webhook configuration.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const P={command:`evaluateExistingWebhook <webhook-id>`,describe:`Sends a test webhook event using an existing webhook configuration. This allows customers to verify their webhook endpoint is still reachable and properly configured after creating the webhook resource. The test payload includes: - event_type: "webhook.test" - timestamp: Current UTC timestamp - message: Test message indicating this is from Cloudflare CASB - data: Object with test: true`,builder:N,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture evaluateExistingWebhook`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks/${t[`webhook-id`]==null?`<webhook-id>`:encodeURIComponent(String(t[`webhook-id`]))}/evaluate`,pathParams:{"webhook-id":String(t[`webhook-id`]??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Creating`,async()=>n.dataSecurity.posture.evaluateExistingWebhook({account_id:r,webhook_id:t[`webhook-id`]})),{successLabel:`Created`})}};function F(e){return e.option(`authentication-type`,{type:`string`,description:`Type of authentication to use for the test webhook request.`,choices:[`Basic Auth`,`None`,`Bearer Auth`,`Static Headers`,`HMAC-Signing`]}).option(`destination-url`,{type:`string`,description:`Target URL to send the test webhook event to.`}).option(`signing-secret`,{type:`string`,description:`Secret key used for HMAC signing when authentication_type is "HMAC-Signing".`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for testing a webhook configuration before creating it.`})}const I={command:`evaluateNewWebhook`,describe:`Sends a test webhook event to the specified destination URL to verify the webhook endpoint is reachable and properly configured. This allows customers to validate their webhook configuration before creating the actual webhook resource. The test payload includes: - event_type: "webhook.test" - timestamp: Current UTC timestamp - message: Test message indicating this is from Cloudflare CASB - data: Object with test: true`,builder:F,handler:async r=>{if(r.dryRun){l({command:`cf data-security posture evaluateNewWebhook`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks/evaluate`,pathParams:{},bodyKind:`json`,body:r.body===void 0?s({authentication_type:d(r[`authentication-type`],`authentication-type`,`text`),destination_url:d(r[`destination-url`],`destination-url`,`text`),signing_secret:d(r[`signing-secret`],`signing-secret`,`text`)}):o(r.body)});return}let p=await a(r),m=r.local?f:await i(p);if(r.accountId=m,r.body){let e=o(r.body);c(await u(`Creating`,async()=>p.dataSecurity.posture.evaluateNewWebhook({...e,account_id:m})),{successLabel:`Created`});return}r[`authentication-type`]===void 0&&(r[`authentication-type`]=await n(`authentication-type`,`Type of authentication to use for the test webhook request.`,[`Basic Auth`,`None`,`Bearer Auth`,`Static Headers`,`HMAC-Signing`])),r[`destination-url`]===void 0&&(r[`destination-url`]=await t(`destination-url`,`Target URL to send the test webhook event to.`));let h=s({authentication_type:d(r[`authentication-type`],`authentication-type`,`text`),destination_url:d(r[`destination-url`],`destination-url`,`text`),signing_secret:d(r[`signing-secret`],`signing-secret`,`text`)});c(await u(`Creating`,async()=>p.dataSecurity.posture.evaluateNewWebhook({...h,account_id:m})),{successLabel:`Created`})}};function L(e){return e.positional(`id`,{type:`string`,description:`Unique identifier for the export job`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const R={command:`getExportJob <id>`,describe:`Retrieves a single export job by its unique identifier`,builder:L,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture getExportJob`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/exports/${t.id==null?`<id>`:encodeURIComponent(String(t.id))}`,pathParams:{id:String(t.id??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Loading`,async()=>n.dataSecurity.posture.getExportJob({account_id:r,id:t.id})),{successLabel:`Loaded`})}};function z(e){return e.positional(`finding-id`,{type:`string`,description:`A unique identifier for the finding type`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const te={command:`getFinding <finding-id>`,describe:`Gets a security Finding that has been identified as being problematic.`,builder:z,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture getFinding`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${t[`finding-id`]==null?`<finding-id>`:encodeURIComponent(String(t[`finding-id`]))}`,pathParams:{"finding-id":String(t[`finding-id`]??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Loading`,async()=>n.dataSecurity.posture.getFinding({account_id:r,finding_id:t[`finding-id`]})),{successLabel:`Loaded`})}};function B(e){return e.positional(`instance-id`,{type:`string`,description:`A uuid ID identifying this Finding instance.`,demandOption:!0}).option(`finding-id`,{type:`string`,description:`A base64-encoded ID identifying this Finding.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const V={command:`getFindingInstance <instance-id>`,describe:`Gets a security Finding instance by id.`,builder:B,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture getFindingInstance`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${t[`finding-id`]==null?`<finding-id>`:encodeURIComponent(String(t[`finding-id`]))}/instances/${t[`instance-id`]==null?`<instance-id>`:encodeURIComponent(String(t[`instance-id`]))}`,pathParams:{"finding-id":String(t[`finding-id`]??``),"instance-id":String(t[`instance-id`]??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Loading`,async()=>n.dataSecurity.posture.getFindingInstance({account_id:r,finding_id:t[`finding-id`],instance_id:t[`instance-id`]})),{successLabel:`Loaded`})}};function H(e){return e.positional(`finding-type-id`,{type:`string`,description:`A UUID string identifying the finding type.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const U={command:`getFindingType <finding-type-id>`,describe:`Retrieve a specific finding type by its unique identifier.`,builder:H,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture getFindingType`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/finding_types/${t[`finding-type-id`]==null?`<finding-type-id>`:encodeURIComponent(String(t[`finding-type-id`]))}`,pathParams:{"finding-type-id":String(t[`finding-type-id`]??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Loading`,async()=>n.dataSecurity.posture.getFindingType({account_id:r,finding_type_id:t[`finding-type-id`]})),{successLabel:`Loaded`})}};function W(e){return e.positional(`finding-type-id`,{type:`string`,description:`A UUID string identifying the finding type.`,demandOption:!0}).option(`integration-id`,{type:`string`,description:`Filter by an integration ID`}).option(`cursor`,{type:`string`,description:`A cursor for pagination.`}).option(`page`,{type:`number`,description:`A page number within the paginated result set.`}).option(`per-page`,{type:`number`,description:`Number of results to return per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const G={command:`getRemediationTypesForFindingType <finding-type-id>`,describe:"List all remediation types for a given finding type. This endpoint supports both cursor and offset pagination. Note that `cursor` and `page` are mutually exclusive.",builder:W,handler:async t=>{let n={integration_id:t[`integration-id`],cursor:t.cursor,page:t.page,per_page:t[`per-page`]};if(t.dryRun){l({command:`cf data-security posture getRemediationTypesForFindingType`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/finding_types/${t[`finding-type-id`]==null?`<finding-type-id>`:encodeURIComponent(String(t[`finding-type-id`]))}/remediation_types`,pathParams:{"finding-type-id":String(t[`finding-type-id`]??``)},query:n,bodyKind:`none`});return}let r=await a(t),o=t.local?f:await i(r);t.accountId=o,c(await u(`Loading`,async()=>r.dataSecurity.posture.getRemediationTypesForFindingType({account_id:o,finding_type_id:t[`finding-type-id`],...n})),{successLabel:`Loaded`})}};function K(e){return e.positional(`webhook-id`,{type:`string`,description:`A UUID identifying the webhook configuration.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const q={command:`getWebhookConfigByID <webhook-id>`,describe:`Retrieves a specific webhook configuration by its unique identifier.`,builder:K,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture getWebhookConfigByID`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks/${t[`webhook-id`]==null?`<webhook-id>`:encodeURIComponent(String(t[`webhook-id`]))}`,pathParams:{"webhook-id":String(t[`webhook-id`]??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Loading`,async()=>n.dataSecurity.posture.getWebhookConfigById({account_id:r,webhook_id:t[`webhook-id`]})),{successLabel:`Loaded`})}};function J(e){return e.option(`findings`,{type:`string`,array:!0,description:`A list of finding IDs to pass along.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for bulk actions on findings.`})}const Y={command:`ignoreFinding`,describe:`Given a list of findings, mark as ignored. Does nothing if Finding is already ignored.`,builder:J,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture ignoreFinding`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/ignore`,pathParams:{},bodyKind:`json`,body:t.body===void 0?s({findings:t.findings}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.ignoreFinding({body:e,account_id:r})),{successLabel:`Created`});return}if(t.findings===void 0)throw Error(`--findings is required (or pass --body with this field set).`);let d=s({findings:t.findings});c(await u(`Creating`,async()=>n.dataSecurity.posture.ignoreFinding({body:d,account_id:r})),{successLabel:`Created`})}};function X(e){return e.option(`page`,{type:`number`,description:`A page number within the paginated result set.`}).option(`per-page`,{type:`number`,description:`Number of results to return per page.`}).option(`status`,{type:`string`,description:`Filter on export job's status`,choices:[`Pending`,`Success`,`Failure`,`Rescheduled`,`In-Progress`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Z={command:`listExportJobs`,describe:`List all export jobs for a given requestor's organization`,builder:p(X),handler:async t=>{let n={page:t.page,per_page:t[`per-page`],status:t.status};if(t.dryRun){l({command:`cf data-security posture listExportJobs`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/exports`,pathParams:{},query:n,bodyKind:`none`});return}let r=await a(t),o=t.local?f:await i(r);t.accountId=o,c(await u(`Loading`,async()=>r.dataSecurity.posture.listExportJobs({account_id:o,...n})),{successLabel:`Loaded`})}};function Q(e){return e.positional(`finding-id`,{type:`string`,description:`A base64-encoded ID identifying this Finding.`,demandOption:!0}).option(`archived`,{type:`boolean`,description:`Archived`}).option(`cursor`,{type:`string`,description:"A cursor for pagination. Obtained from the `result_info.cursor` field of a previous response."}).option(`direction`,{type:`string`,description:`Direction to order results.`,choices:[`asc`,`desc`]}).option(`max-affliction-date`,{type:`string`,description:`Filter to view findings that occurred on or before the affliction date. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`min-affliction-date`,{type:`string`,description:`Filter to view findings that occurred on or after the affliction date. Can be a date-time in ISO 8601 format or an epoch timestamp.`}).option(`order`,{type:`string`,description:`Which field to use when ordering the Finding's instances.
4
- When ordering by 'remediation.status', only the most recent non-stale remediation job is considered. Stale jobs (created before the instance's affliction_date) are treated as having no status for ordering purposes.`,choices:[`affliction_date`,`asset.name`,`remediation.status`]}).option(`page`,{type:`number`,description:`A page number within the paginated result set.`}).option(`per-page`,{type:`number`,description:`Number of results to return per page.`}).option(`search`,{type:`string`,description:`A search term.`}).option(`remediation-statuses`,{type:`string`,description:`Filter finding instances by most recent remediation job status. Supports multiple comma-separated values.
5
- Use 'none' to filter instances with no remediation jobs or instances where the most recent job is stale.
6
- Note: Stale jobs (created before the instance's affliction_date) are ignored for filtering purposes, but are still included in the 'remediations' array with stale=true.`}).option(`finding-instance-ids`,{type:`string`,description:`Filter finding instances by an array of finding instance IDs. Supports multiple comma-separated values.`}).option(`asset-ids`,{type:`string`,description:`Filter finding instances by an array of asset IDs. Supports multiple comma-separated values.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ne={command:`listFindingInstances <finding-id>`,describe:`Lists all security finding instances for a given security finding.`,builder:p(Q),handler:async t=>{let n={archived:t.archived,cursor:t.cursor,direction:t.direction,max_affliction_date:t[`max-affliction-date`],min_affliction_date:t[`min-affliction-date`],order:t.order,page:t.page,per_page:t[`per-page`],search:t.search,remediation_statuses:t[`remediation-statuses`],finding_instance_ids:t[`finding-instance-ids`],asset_ids:t[`asset-ids`]};if(t.dryRun){l({command:`cf data-security posture listFindingInstances`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${t[`finding-id`]==null?`<finding-id>`:encodeURIComponent(String(t[`finding-id`]))}/instances`,pathParams:{"finding-id":String(t[`finding-id`]??``)},query:n,bodyKind:`none`});return}let r=await a(t),o=t.local?f:await i(r);t.accountId=o,c(await u(`Loading`,async()=>r.dataSecurity.posture.listFindingInstances({account_id:o,finding_id:t[`finding-id`],...n})),{successLabel:`Loaded`})}};function re(e){return e.option(`page`,{type:`number`,description:`A page number within the paginated result set.`}).option(`per-page`,{type:`number`,description:`Number of results to return per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ie={command:`listFindingTypes`,describe:`List all available finding types with pagination support.`,builder:re,handler:async t=>{let n={page:t.page,per_page:t[`per-page`]};if(t.dryRun){l({command:`cf data-security posture listFindingTypes`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/finding_types`,pathParams:{},query:n,bodyKind:`none`});return}let r=await a(t),o=t.local?f:await i(r);t.accountId=o,c(await u(`Loading`,async()=>r.dataSecurity.posture.listFindingTypes({account_id:o,...n})),{successLabel:`Loaded`})}};function ae(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const oe={command:`listWebhooks`,describe:`Retrieves all webhook configurations for the authenticated account. Returns an array of webhook configurations that can be used to send finding notifications.`,builder:ae,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture listWebhooks`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks`,pathParams:{},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Loading`,async()=>n.dataSecurity.posture.listWebhooks({account_id:r})),{successLabel:`Loaded`})}};function $(e){return e.positional(`finding-id`,{type:`string`,description:`A unique string value identifying this finding type v2.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const se={command:`resetFindingSeverity <finding-id>`,describe:`If a Finding's severity has been changed, reset it back to default value. Does nothing if no override exists.`,builder:$,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture resetFindingSeverity`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${t[`finding-id`]==null?`<finding-id>`:encodeURIComponent(String(t[`finding-id`]))}/reset_finding_severity`,pathParams:{"finding-id":String(t[`finding-id`]??``)},bodyKind:`none`});return}let n=await a(t),r=t.local?f:await i(n);t.accountId=r,c(await u(`Creating`,async()=>n.dataSecurity.posture.resetFindingSeverity({account_id:r,finding_id:t[`finding-id`]})),{successLabel:`Created`})}};function ce(e){return e.positional(`finding-id`,{type:`string`,description:`A base64-encoded ID identifying this Finding.`,demandOption:!0}).option(`affliction-date`,{type:`string`,description:`When this instance was identified.`}).option(`id`,{type:`string`,description:`Unique identifier for the finding instance.`}).option(`is-archived`,{type:`boolean`,description:`Whether this finding instance is archived.`,default:!1}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for finding instance operations. In the API interface, we refer to the 'finding' table in our DB as finding instances.`})}const le={command:`unarchiveFindingInstance <finding-id>`,describe:`Remove the archive marking from one or more finding instances.`,builder:ce,handler:async n=>{if(n.dryRun){l({command:`cf data-security posture unarchiveFindingInstance`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/${n[`finding-id`]==null?`<finding-id>`:encodeURIComponent(String(n[`finding-id`]))}/instances/unarchive`,pathParams:{"finding-id":String(n[`finding-id`]??``)},bodyKind:`json`,body:n.body===void 0?s({affliction_date:d(n[`affliction-date`],`affliction-date`,`text`),id:d(n.id,`id`,`text`),is_archived:n[`is-archived`]}):o(n.body)});return}let r=await a(n),p=n.local?f:await i(r);if(n.accountId=p,n.body){let e=o(n.body);c(await u(`Creating`,async()=>r.dataSecurity.posture.unarchiveFindingInstance({...e,account_id:p,finding_id:n[`finding-id`]})),{successLabel:`Created`});return}n[`affliction-date`]===void 0&&(n[`affliction-date`]=await t(`affliction-date`,`When this instance was identified.`));let m=s({affliction_date:d(n[`affliction-date`],`affliction-date`,`text`),id:d(n.id,`id`,`text`),is_archived:n[`is-archived`]});c(await u(`Creating`,async()=>r.dataSecurity.posture.unarchiveFindingInstance({...m,account_id:p,finding_id:n[`finding-id`]})),{successLabel:`Created`})}};function ue(e){return e.option(`findings`,{type:`string`,array:!0,description:`A list of finding IDs to pass along.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for bulk actions on findings.`})}const de={command:`unIgnoreFinding`,describe:`Ability to un-ignore a Finding if it's previously been ignored. Does nothing if the Finding is not ignored.`,builder:ue,handler:async t=>{if(t.dryRun){l({command:`cf data-security posture unIgnoreFinding`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/findings/unignore`,pathParams:{},bodyKind:`json`,body:t.body===void 0?s({findings:t.findings}):o(t.body)});return}let n=await a(t),r=t.local?f:await i(n);if(t.accountId=r,t.body){let e=o(t.body);c(await u(`Creating`,async()=>n.dataSecurity.posture.unIgnoreFinding({body:e,account_id:r})),{successLabel:`Created`});return}if(t.findings===void 0)throw Error(`--findings is required (or pass --body with this field set).`);let d=s({findings:t.findings});c(await u(`Creating`,async()=>n.dataSecurity.posture.unIgnoreFinding({body:d,account_id:r})),{successLabel:`Created`})}};function fe(e){return e.positional(`webhook-id`,{type:`string`,description:`A UUID identifying the webhook configuration.`,demandOption:!0}).option(`authentication-type`,{type:`string`,description:`Type of authentication used for the webhook.`,choices:[`Basic Auth`,`None`,`Bearer Auth`,`Static Headers`,`HMAC-Signing`]}).option(`destination-url`,{type:`string`,description:`Target URL for the webhook configuration. Where resulting data will be sent.`}).option(`label`,{type:`string`,description:`Account-specified display label for the webhook configuration.`}).option(`signing-secret`,{type:`string`,description:`Secret key used for HMAC signing when authentication_type is "HMAC-Signing".`}).option(`status`,{type:`string`,description:`Status of the webhook configuration.`,choices:[`enabled`,`disabled`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Request body for updating an existing webhook configuration.`})}const pe={command:`update <webhook-id>`,describe:`Updates an existing webhook configuration with new settings.`,builder:fe,handler:async r=>{if(r.dryRun){l({command:`cf data-security posture update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/data-security/posture/webhooks/${r[`webhook-id`]==null?`<webhook-id>`:encodeURIComponent(String(r[`webhook-id`]))}`,pathParams:{"webhook-id":String(r[`webhook-id`]??``)},bodyKind:`json`,body:r.body===void 0?s({authentication_type:d(r[`authentication-type`],`authentication-type`,`text`),destination_url:d(r[`destination-url`],`destination-url`,`text`),label:d(r.label,`label`,`text`),signing_secret:d(r[`signing-secret`],`signing-secret`,`text`),status:d(r.status,`status`,`text`)}):o(r.body)});return}let p=await a(r),m=r.local?f:await i(p);if(r.accountId=m,r.body){let e=o(r.body);c(await u(`Updating`,async()=>p.dataSecurity.posture.update({...e,account_id:m,webhook_id:r[`webhook-id`]})),{successLabel:`Updated`});return}r[`authentication-type`]===void 0&&(r[`authentication-type`]=await n(`authentication-type`,`Type of authentication used for the webhook.`,[`Basic Auth`,`None`,`Bearer Auth`,`Static Headers`,`HMAC-Signing`])),r[`destination-url`]===void 0&&(r[`destination-url`]=await t(`destination-url`,`Target URL for the webhook configuration. Where resulting data will be sent.`)),r.label===void 0&&(r.label=await t(`label`,`Account-specified display label for the webhook configuration.`)),r.status===void 0&&(r.status=await n(`status`,`Status of the webhook configuration.`,[`enabled`,`disabled`]));let h=s({authentication_type:d(r[`authentication-type`],`authentication-type`,`text`),destination_url:d(r[`destination-url`],`destination-url`,`text`),label:d(r.label,`label`,`text`),signing_secret:d(r[`signing-secret`],`signing-secret`,`text`),status:d(r.status,`status`,`text`)});c(await u(`Updating`,async()=>p.dataSecurity.posture.update({...h,account_id:m,webhook_id:r[`webhook-id`]})),{successLabel:`Updated`})}},me={command:`posture`,describe:`Operations for posture`,builder:e=>e.command(h).command(g).command(v).command(b).command(S).command(w).command(E).command(O).command(A).command(M).command(P).command(I).command(R).command(te).command(V).command(U).command(G).command(q).command(Y).command(Z).command(ne).command(ie).command(oe).command(se).command(de).command(le).command(pe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},he={command:`data-security`,describe:`data-security`,builder:e=>e.command(me).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{he as default};