cf 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/dist/_meta/agent-context.json +96 -95
  2. package/dist/_meta/commands.json +16558 -13965
  3. package/dist/_meta/schemas.json +52979 -16753
  4. package/dist/abuse-reports-dMIfUJ8v.mjs +8 -0
  5. package/dist/accounts-Kx1epdA1.mjs +22 -0
  6. package/dist/acm-Utu252kC.mjs +3 -0
  7. package/dist/addressing-CBq7Z7Vq.mjs +12 -0
  8. package/dist/{agent-context-D26woB9J.mjs → agent-context-BGTU299M.mjs} +1 -1
  9. package/dist/ai-DOOKLPkG.mjs +2 -0
  10. package/dist/ai-gateway-Cj1T3avF.mjs +8 -0
  11. package/dist/ai-search-CQF_Sn7d.mjs +7 -0
  12. package/dist/ai_gateway-C3fH22C0.mjs +4 -0
  13. package/dist/alerting-CqmEIaKn.mjs +6 -0
  14. package/dist/analytics-Dv-X8x7D.mjs +20 -0
  15. package/dist/analytics_engine-DdXVR8z2.mjs +2 -0
  16. package/dist/api-gateway-CNv0IHTU.mjs +33 -0
  17. package/dist/argo-CX_A4kcn.mjs +2 -0
  18. package/dist/audit-logs-BfBf3oo-.mjs +2 -0
  19. package/dist/auth-SyWhMmPu.mjs +6 -0
  20. package/dist/auth-ffdf9yR0.mjs +135 -0
  21. package/dist/autorag-BuGhGTeZ.mjs +2 -0
  22. package/dist/billing-PoG81XaQ.mjs +2 -0
  23. package/dist/body-parser-DKa8Ipg1.mjs +2 -0
  24. package/dist/bot-management-CFvtVx62.mjs +5 -0
  25. package/dist/botnet-feed-B-M4Yu0W.mjs +3 -0
  26. package/dist/brand-protection-D05Eg-_6.mjs +3 -0
  27. package/dist/browser-rendering-xu8F_Rrv.mjs +4 -0
  28. package/dist/build-DYkGW4dh.mjs +1054 -0
  29. package/dist/cache-DsoW6Xwv.mjs +5 -0
  30. package/dist/calls-CZbO7TyR.mjs +4 -0
  31. package/dist/certificate-authorities-D2yr7_3t.mjs +2 -0
  32. package/dist/cli-types-CRIDdDw3.mjs +2 -0
  33. package/dist/client-certificates-MJcDsTId.mjs +3 -0
  34. package/dist/cloud-connector-DWOrN2eM.mjs +2 -0
  35. package/dist/cloudforce-one-2Bhz8YdW.mjs +21 -0
  36. package/dist/{completions-BKrxcfhN.mjs → completions-BwRpZQVn.mjs} +1 -1
  37. package/dist/{config-BIfdEY0E.mjs → config-DYzlVxcB.mjs} +1 -1
  38. package/dist/connectivity-BX8C7tvK.mjs +3 -0
  39. package/dist/content-scanning-r6uzMO1r.mjs +4 -0
  40. package/dist/context-DGlHRGWM.mjs +2 -0
  41. package/dist/custom-certificates-aAiEguR7.mjs +5 -0
  42. package/dist/custom-hostnames-AG5yBHIi.mjs +5 -0
  43. package/dist/custom-nameservers-D1DtlRue.mjs +3 -0
  44. package/dist/custom-pages-DQCi2plU.mjs +4 -0
  45. package/dist/d1-DbnYhw45.mjs +4 -0
  46. package/dist/data-security-D_EtYBfo.mjs +6 -0
  47. package/dist/dcv-delegation-CHspSzTI.mjs +2 -0
  48. package/dist/delegate.mjs +1 -1
  49. package/dist/deploy-CQial3kN.mjs +2 -0
  50. package/dist/{dev-BfKYB-R_.mjs → dev-B38LfCTl.mjs} +1 -1
  51. package/dist/diagnostics-BJQGjVJn.mjs +3 -0
  52. package/dist/dispatch-namespaces-DmHvoBOg.mjs +7 -0
  53. package/dist/{dist-C_bu5HwZ.mjs → dist-AIcZFk0U.mjs} +7 -7
  54. package/dist/dist-DNBSHor6.mjs +301 -0
  55. package/dist/dns-VMhQSr5n.mjs +29 -0
  56. package/dist/dns-firewall-B4DVXFBQ.mjs +57 -0
  57. package/dist/durable-objects-CTboySEo.mjs +2 -0
  58. package/dist/email-routing-tIR2SFu-.mjs +10 -0
  59. package/dist/email-security-Ca1id3rZ.mjs +8 -0
  60. package/dist/email-sending-DwWKc5jC.mjs +3 -0
  61. package/dist/filters-A4dg_a68.mjs +4 -0
  62. package/dist/firewall-DWPQgYd9.mjs +11 -0
  63. package/dist/fraud-BMkSsJGU.mjs +20 -0
  64. package/dist/google-tag-gateway-BGD49nRC.mjs +2 -0
  65. package/dist/healthchecks-CtIfrFql.mjs +4 -0
  66. package/dist/hostnames-BiomxukN.mjs +3 -0
  67. package/dist/hyperdrive-Da104VaQ.mjs +18 -0
  68. package/dist/iam-BIGKo0WW.mjs +6 -0
  69. package/dist/images-BO8FbDAa.mjs +5 -0
  70. package/dist/index.mjs +1 -1
  71. package/dist/intel-CY6_79v8.mjs +3 -0
  72. package/dist/{ips-B0cK7D0_.mjs → ips-K4bzaGqd.mjs} +1 -1
  73. package/dist/keyless-certificates-CZC-L8gM.mjs +3 -0
  74. package/dist/kv-8o27w_pY.mjs +5 -0
  75. package/dist/leaked-credential-checks-qLzRyu85.mjs +3 -0
  76. package/dist/load-balancers-DtG8nj25.mjs +6 -0
  77. package/dist/logpush-4L0njy1d.mjs +4 -0
  78. package/dist/logs-B_Yp95hv.mjs +3 -0
  79. package/dist/magic-cloud-networking-CSOM3EM-.mjs +5 -0
  80. package/dist/magic-network-monitoring-BnwvM4-I.mjs +4 -0
  81. package/dist/magic-transit-CXDyvhxq.mjs +90 -0
  82. package/dist/managed-transforms-D15yVbZx.mjs +3 -0
  83. package/dist/mtls-certificates-D8k0AXWK.mjs +3 -0
  84. package/dist/network-interconnects-rrr7red3.mjs +36 -0
  85. package/dist/observability-DWvpqnQJ.mjs +4 -0
  86. package/dist/organizations-T77D50Sq.mjs +41 -0
  87. package/dist/origin-ca-certificates-DXIvD8H5.mjs +3 -0
  88. package/dist/origin-post-quantum-encryption-C8oOczyV.mjs +2 -0
  89. package/dist/origin-tls-client-auth-CaVW1Ztp.mjs +4 -0
  90. package/dist/output-BJFNwj7b.mjs +2 -0
  91. package/dist/page-rules-CjZPTMQX.mjs +18 -0
  92. package/dist/page-shield-D5RRNJCY.mjs +37 -0
  93. package/dist/pages-CWJtJnL0.mjs +11 -0
  94. package/dist/pipelines-B0L_7j9e.mjs +6 -0
  95. package/dist/{progress-DZfTxbrx.mjs → progress-CrCGTq7N.mjs} +1 -1
  96. package/dist/queues-CN6DPhRR.mjs +6 -0
  97. package/dist/r2-DQIcyRtA.mjs +21 -0
  98. package/dist/r2-data-catalog-Bbo93TJx.mjs +14 -0
  99. package/dist/radar-Bxb0WX8V.mjs +2 -0
  100. package/dist/rate-limits-DcrQV6Ar.mjs +5 -0
  101. package/dist/raw-fetch-Dlccg0Tr.mjs +2 -0
  102. package/dist/realtime-kit-CaquuVOE.mjs +18 -0
  103. package/dist/registrar-Ko-xZemf.mjs +46 -0
  104. package/dist/request-tracers-DOW_reTJ.mjs +2 -0
  105. package/dist/{resolve-BuJRWSk0.mjs → resolve-4-OSeHlK.mjs} +1 -1
  106. package/dist/resource-sharing-D7TX0JV0.mjs +5 -0
  107. package/dist/resource-tagging-C3qtLzCz.mjs +16 -0
  108. package/dist/rules-BXRADHL5.mjs +4 -0
  109. package/dist/rulesets-CBgpeSvJ.mjs +8 -0
  110. package/dist/rum-BjPptTUP.mjs +4 -0
  111. package/dist/{schema-D0_cbcDt.mjs → schema-D16TgWBg.mjs} +1 -1
  112. package/dist/schema-validation-Dgv_opM3.mjs +24 -0
  113. package/dist/scim-DdSEr4kZ.mjs +3 -0
  114. package/dist/secrets-store-7BfyvJLb.mjs +25 -0
  115. package/dist/security-center-DAy6AKtT.mjs +2 -0
  116. package/dist/security-txt-xAMb7K6Y.mjs +3 -0
  117. package/dist/session-COHHdS7A.mjs +5 -0
  118. package/dist/shared-AGtpXwwL.mjs +2 -0
  119. package/dist/smart-shield-TeWZFnH2.mjs +3 -0
  120. package/dist/snippets-CCSsCXVs.mjs +4 -0
  121. package/dist/{spawn-D_cjG87Z.mjs → spawn-DcppKGI5.mjs} +1 -1
  122. package/dist/spectrum-CTTZID8u.mjs +63 -0
  123. package/dist/speed-CuzTE0AL.mjs +4 -0
  124. package/dist/{src-C5qivNKH.mjs → src-BW6vfAwE.mjs} +15 -15
  125. package/dist/ssl-BWA2LdwC.mjs +15 -0
  126. package/dist/stream-GFsIZ-pP.mjs +14 -0
  127. package/dist/tenants-Bd7NGQ_m.mjs +2 -0
  128. package/dist/token-validation-DAgtFOvs.mjs +10 -0
  129. package/dist/{tools-CtKbk6VS.mjs → tools-DXQmfFuE.mjs} +1 -1
  130. package/dist/turnstile-cfdaO4ca.mjs +23 -0
  131. package/dist/{ui-mP_arYIg.mjs → ui-D4KtlMh9.mjs} +1 -1
  132. package/dist/url-normalization-B5RN4nLD.mjs +3 -0
  133. package/dist/url-scanner-BrZ1L9OC.mjs +2 -0
  134. package/dist/user-CAo-yCJA.mjs +10 -0
  135. package/dist/vectorize-C7_oQlaI.mjs +4 -0
  136. package/dist/versions-CUwWJWmy.mjs +2 -0
  137. package/dist/waiting-rooms-Dln5ICg5.mjs +11 -0
  138. package/dist/web3-HQJRm38W.mjs +4 -0
  139. package/dist/workers-Dg7ddG2Q.mjs +18 -0
  140. package/dist/workers-builds-AVfx8IyL.mjs +7 -0
  141. package/dist/workflows-VquuSh2J.mjs +4 -0
  142. package/dist/zaraz-xYSWIV4P.mjs +2 -0
  143. package/dist/zero-trust-CP96wnSh.mjs +118 -0
  144. package/dist/zones-BSgmZ9WC.mjs +21 -0
  145. package/package.json +7 -6
  146. package/dist/abuse-reports-ChV_yD7f.mjs +0 -8
  147. package/dist/accounts-BCYecXFh.mjs +0 -21
  148. package/dist/acm-DD8zSds2.mjs +0 -3
  149. package/dist/addressing-D4Eqw5Bi.mjs +0 -13
  150. package/dist/ai-DfXMOMx_.mjs +0 -2
  151. package/dist/ai-gateway-DdRFthMo.mjs +0 -8
  152. package/dist/ai-search-C_68CDj1.mjs +0 -7
  153. package/dist/alerting-DbhqhVCp.mjs +0 -6
  154. package/dist/analytics-BSBBc7ep.mjs +0 -20
  155. package/dist/api-gateway-CZ4swbkQ.mjs +0 -33
  156. package/dist/argo-tms9ZwHO.mjs +0 -2
  157. package/dist/audit-logs-24qyW8cl.mjs +0 -2
  158. package/dist/auth-BlSmtIKd.mjs +0 -112
  159. package/dist/auth-DQ8miey6.mjs +0 -6
  160. package/dist/autorag-kgNt06GD.mjs +0 -2
  161. package/dist/billing-lwBHNTXC.mjs +0 -2
  162. package/dist/body-parser-Br-BoYk-.mjs +0 -2
  163. package/dist/bot-management-LKf7BqUr.mjs +0 -5
  164. package/dist/botnet-feed-nQ-gErTS.mjs +0 -3
  165. package/dist/brand-protection-DOKv9GRr.mjs +0 -3
  166. package/dist/browser-rendering-CBExtgGt.mjs +0 -4
  167. package/dist/build-C_48VvoK.mjs +0 -1056
  168. package/dist/builds-C_ySULja.mjs +0 -2
  169. package/dist/cache-BBiiNZHP.mjs +0 -5
  170. package/dist/calls-DA5Xzwev.mjs +0 -4
  171. package/dist/certificate-authorities-sXyR_yGp.mjs +0 -2
  172. package/dist/client-certificates-tV0aCLQJ.mjs +0 -3
  173. package/dist/cloud-connector-DZfHcSso.mjs +0 -2
  174. package/dist/cloudforce-one-y1PgQmI9.mjs +0 -21
  175. package/dist/connectivity-8SOqaFDn.mjs +0 -3
  176. package/dist/content-scanning-B9y6K_G5.mjs +0 -4
  177. package/dist/context-DTIbtQn5.mjs +0 -2
  178. package/dist/custom-certificates-sWksR8Ys.mjs +0 -5
  179. package/dist/custom-hostnames-91QZkdqN.mjs +0 -5
  180. package/dist/custom-nameservers-DajZaZvE.mjs +0 -3
  181. package/dist/custom-pages-Cu7gmwzT.mjs +0 -4
  182. package/dist/d1-H_VRsVmF.mjs +0 -3
  183. package/dist/dcv-delegation-C-qhEYEZ.mjs +0 -2
  184. package/dist/deploy--9wYOkHg.mjs +0 -2
  185. package/dist/diagnostics-D2B2LPZZ.mjs +0 -3
  186. package/dist/dispatch-namespaces-CyrXBU_w.mjs +0 -7
  187. package/dist/dist-DvKjT2TT.mjs +0 -303
  188. package/dist/dns-Bn9Uz_Nj.mjs +0 -29
  189. package/dist/dns-firewall-BslP4p-j.mjs +0 -57
  190. package/dist/durable-objects-BN1ZnHhm.mjs +0 -2
  191. package/dist/email-routing-n2TnTaRR.mjs +0 -10
  192. package/dist/email-security-C9SEx0kh.mjs +0 -60
  193. package/dist/email-sending-DayZ7u3I.mjs +0 -3
  194. package/dist/filters-CI_XTgfQ.mjs +0 -4
  195. package/dist/firewall-CcaayGig.mjs +0 -11
  196. package/dist/fraud-Cr7aPCV8.mjs +0 -8
  197. package/dist/google-tag-gateway-B3GpYgQ4.mjs +0 -2
  198. package/dist/healthchecks-CVTsR_OC.mjs +0 -4
  199. package/dist/hostnames-Bd_Wa5l6.mjs +0 -3
  200. package/dist/hyperdrive-BBJhEDZd.mjs +0 -18
  201. package/dist/iam-D_FN0pDF.mjs +0 -6
  202. package/dist/images-CAP2hAlZ.mjs +0 -5
  203. package/dist/intel-CkxfzqmJ.mjs +0 -3
  204. package/dist/keyless-certificates-LcLmHZsX.mjs +0 -3
  205. package/dist/kv-_TkUQ6fs.mjs +0 -5
  206. package/dist/leaked-credential-checks-Dhvaen22.mjs +0 -3
  207. package/dist/load-balancers-Ckr0UIpk.mjs +0 -6
  208. package/dist/logpush-Cj946hxT.mjs +0 -4
  209. package/dist/logs-DgC9hjvJ.mjs +0 -3
  210. package/dist/magic-cloud-networking-WbDvPzuG.mjs +0 -5
  211. package/dist/magic-network-monitoring-BcHShvGQ.mjs +0 -4
  212. package/dist/magic-transit-B8sCOkt_.mjs +0 -89
  213. package/dist/managed-transforms-BpOr-8HY.mjs +0 -3
  214. package/dist/mtls-certificates-fOul8D5g.mjs +0 -3
  215. package/dist/network-interconnects-BSW65xlh.mjs +0 -36
  216. package/dist/organizations-T4vKGFAb.mjs +0 -41
  217. package/dist/origin-ca-certificates-ChM0lZ64.mjs +0 -3
  218. package/dist/origin-post-quantum-encryption-C7o26ARh.mjs +0 -2
  219. package/dist/origin-tls-client-auth-D32dpZk_.mjs +0 -5
  220. package/dist/output-D7_yAFVR.mjs +0 -2
  221. package/dist/page-rules-RFoj8CjN.mjs +0 -18
  222. package/dist/page-shield-VTktzKDN.mjs +0 -37
  223. package/dist/pages-L1ITjXDZ.mjs +0 -10
  224. package/dist/pipelines-BPO0Lnil.mjs +0 -6
  225. package/dist/queues-B0C06L9r.mjs +0 -6
  226. package/dist/r2-DP020Tmq.mjs +0 -21
  227. package/dist/r2-data-catalog-Dmipvz5F.mjs +0 -14
  228. package/dist/radar-DR3VMknH.mjs +0 -2
  229. package/dist/rate-limits-DnHPBPgU.mjs +0 -5
  230. package/dist/raw-fetch-DlXYwVA8.mjs +0 -2
  231. package/dist/realtime-kit-C430aq2d.mjs +0 -6
  232. package/dist/registrar-7Qy50zbW.mjs +0 -46
  233. package/dist/request-tracers-sv99NDIl.mjs +0 -2
  234. package/dist/resource-sharing-uEjC7lnQ.mjs +0 -5
  235. package/dist/resource-tagging-CiODdP3N.mjs +0 -16
  236. package/dist/rules-FXAyTrwk.mjs +0 -4
  237. package/dist/rulesets-B6aUsFFB.mjs +0 -8
  238. package/dist/rum-CyyGJhp5.mjs +0 -4
  239. package/dist/schema-validation-ByU49h--.mjs +0 -4
  240. package/dist/scim-DdTS65_C.mjs +0 -3
  241. package/dist/scm-CilfPOue.mjs +0 -2
  242. package/dist/secrets-store-ClOUVhBJ.mjs +0 -18
  243. package/dist/security-center-4iSBqTrf.mjs +0 -2
  244. package/dist/security-txt-kGxdkDY6.mjs +0 -3
  245. package/dist/session-mW-s8ghP.mjs +0 -2
  246. package/dist/smart-shield-B-SQd2Qp.mjs +0 -3
  247. package/dist/snippets-Aq58ojqw.mjs +0 -4
  248. package/dist/spectrum-0gFvGI6y.mjs +0 -59
  249. package/dist/speed-DAZU8w3T.mjs +0 -4
  250. package/dist/ssl-BRlXa-5w.mjs +0 -15
  251. package/dist/stream-BAxsVeBX.mjs +0 -14
  252. package/dist/tenants-Df6xDqoA.mjs +0 -2
  253. package/dist/token-validation-pO4dCjCy.mjs +0 -4
  254. package/dist/turnstile-B1dmO8wE.mjs +0 -23
  255. package/dist/url-normalization-sUDVmrUt.mjs +0 -3
  256. package/dist/url-scanner-CwOKRkYo.mjs +0 -2
  257. package/dist/user-D_UrIdNq.mjs +0 -10
  258. package/dist/vectorize-BEbBn9G9.mjs +0 -4
  259. package/dist/vuln-scanner-Br_2lQp1.mjs +0 -2
  260. package/dist/waiting-rooms-BQC-urV4.mjs +0 -11
  261. package/dist/web3-CIH2iQeX.mjs +0 -4
  262. package/dist/workers-B9EvrpH3.mjs +0 -16
  263. package/dist/workers-builds-DzWSiRd2.mjs +0 -7
  264. package/dist/workflows-aD81gA4k.mjs +0 -4
  265. package/dist/zaraz-Cg1dsvrZ.mjs +0 -2
  266. package/dist/zero-trust-D-xQXWcy.mjs +0 -119
  267. package/dist/zones-DQzucJDd.mjs +0 -28
  268. /package/dist/{metadata-DGdCpUxn.mjs → metadata-5VwHPW6C.mjs} +0 -0
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ import{S as e,n as t}from"./auth-ffdf9yR0.mjs";import{t as n}from"./output-BJFNwj7b.mjs";import{n as r,t as i}from"./progress-CrCGTq7N.mjs";import{t as a}from"./cli-types-CRIDdDw3.mjs";function o(e){return e.positional(`zone-identifier`,{type:`string`,description:`Identifier`,demandOption:!0}).option(`until`,{type:`string`,description:`The (exclusive) end of the requested time frame. This value can be a negative integer representing the number of minutes in the past relative to time the request is made, or can be an absolute timestamp that conforms to RFC 3339. If omitted, the time of the request is used.`}).option(`since`,{type:`string`,description:`The (inclusive) beginning of the requested time frame. This value can be a negative integer representing the number of minutes in the past relative to time the request is made, or can be an absolute timestamp that conforms to RFC 3339. At this point in time, it cannot exceed a time in the past greater than one year.
3
+
4
+ Ranges that the Cloudflare web application provides will provide the following period length for each point:
5
+ - Last 60 minutes (from -59 to -1): 1 minute resolution
6
+ - Last 7 hours (from -419 to -60): 15 minutes resolution
7
+ - Last 15 hours (from -899 to -420): 30 minutes resolution
8
+ - Last 72 hours (from -4320 to -900): 1 hour resolution
9
+ - Older than 3 days (-525600 to -4320): 1 day resolution.`}).option(`continuous`,{type:`boolean`,description:`When set to true, the API will move the requested time window backward, until it finds a region with completely aggregated data.
10
+
11
+ The API response _may not represent the requested time window_.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const s={command:`get <zone-identifier>`,describe:`This view provides a breakdown of analytics data by datacenter. Note: This is available to Enterprise customers only.`,builder:a(o),handler:async a=>{let o={until:a.until,since:a.since,continuous:a.continuous};if(a.dryRun){r({command:`cf analytics colo get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/analytics/colos`,pathParams:{"zone-identifier":String(a.zone??a[`zone-identifier`]??``)},query:o,bodyKind:`none`});return}let s=await t(a),c=await e({zone:a.zone},s,{quiet:a.quiet});a.zoneId=c,n(await i(`Loading`,async()=>s.analytics.colo.get({zone_identifier:c,...o})),{successLabel:`Loaded`})}},c={command:`colo`,describe:`Per-data-center (colo) traffic analytics breakdown for the zone`,builder:e=>e.command(s).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function l(e){return e.positional(`zone-identifier`,{type:`string`,description:`Identifier`,demandOption:!0}).option(`until`,{type:`string`,description:`The (exclusive) end of the requested time frame. This value can be a negative integer representing the number of minutes in the past relative to time the request is made, or can be an absolute timestamp that conforms to RFC 3339. If omitted, the time of the request is used.`}).option(`since`,{type:`string`,description:`The (inclusive) beginning of the requested time frame. This value can be a negative integer representing the number of minutes in the past relative to time the request is made, or can be an absolute timestamp that conforms to RFC 3339. At this point in time, it cannot exceed a time in the past greater than one year.
12
+
13
+ Ranges that the Cloudflare web application provides will provide the following period length for each point:
14
+ - Last 60 minutes (from -59 to -1): 1 minute resolution
15
+ - Last 7 hours (from -419 to -60): 15 minutes resolution
16
+ - Last 15 hours (from -899 to -420): 30 minutes resolution
17
+ - Last 72 hours (from -4320 to -900): 1 hour resolution
18
+ - Older than 3 days (-525600 to -4320): 1 day resolution.`}).option(`continuous`,{type:`boolean`,description:`When set to true, the API will move the requested time window backward, until it finds a region with completely aggregated data.
19
+
20
+ The API response _may not represent the requested time window_.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const u={command:`get <zone-identifier>`,describe:`The dashboard view provides both totals and timeseries data for the given zone and time period across the entire Cloudflare network.`,builder:a(l),handler:async a=>{let o={until:a.until,since:a.since,continuous:a.continuous};if(a.dryRun){r({command:`cf analytics dashboard get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/analytics/dashboard`,pathParams:{"zone-identifier":String(a.zone??a[`zone-identifier`]??``)},query:o,bodyKind:`none`});return}let s=await t(a),c=await e({zone:a.zone},s,{quiet:a.quiet});a.zoneId=c,n(await i(`Loading`,async()=>s.analytics.dashboard.get({zone_identifier:c,...o})),{successLabel:`Loaded`})}},d={command:`dashboard`,describe:`Aggregated zone dashboard analytics — requests, bandwidth, threats, and page views`,builder:e=>e.command(u).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function f(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const p={command:`get`,describe:`Retrieves Argo Smart Routing analytics broken down by geographic points of presence (PoPs). Shows latency improvements and routing efficiency per location.`,builder:f,handler:async a=>{if(a.dryRun){r({command:`cf analytics latency colos get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/analytics/latency/colos`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},bodyKind:`none`});return}let o=await t(a),s=await e({zone:a.zone},o,{quiet:a.quiet});a.zoneId=s,n(await i(`Loading`,async()=>o.analytics.latency.colos.get({zone_id:s})),{successLabel:`Loaded`})}},m={command:`colos`,describe:`Argo Smart Routing latency analytics showing time-to-first-byte improvements`,builder:e=>e.command(p).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function h(e){return e.option(`bins`,{type:`string`,description:`Bins`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const g={command:`get`,describe:`Retrieves aggregate Argo Smart Routing analytics for a zone, including latency improvements, bandwidth savings, and routing statistics.`,builder:h,handler:async a=>{let o={bins:a.bins};if(a.dryRun){r({command:`cf analytics latency get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/analytics/latency`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},query:o,bodyKind:`none`});return}let s=await t(a),c=await e({zone:a.zone},s,{quiet:a.quiet});a.zoneId=c,n(await i(`Loading`,async()=>s.analytics.latency.get({zone_id:c,...o})),{successLabel:`Loaded`})}},_={command:`latency`,describe:`Argo Smart Routing latency analytics showing time-to-first-byte improvements`,builder:e=>e.command(g).command(m).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},v={command:`analytics`,describe:`Zone-level traffic analytics — dashboard summaries, per-colo breakdowns, and Argo latency metrics`,builder:e=>e.command(c).command(d).command(_).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{v as default};
@@ -0,0 +1,2 @@
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{n as s,t as c}from"./input-validation-zEO81MWN.mjs";import{t as l}from"./local-VJaJ3BZ1.mjs";function u(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).option(`file`,{type:`string`,description:`Path to a file to upload as the request body`})}const d={command:`query`,describe:`Executes a SQL query against Workers Analytics Engine data. Pass the SQL query in the request body as plain text. The response uses newline-delimited JSON (NDJSON) by default, or a single JSON object when the query includes a FORMAT JSON clause. Prefer this method for longer queries that may exceed URL length limits.`,builder:u,handler:async u=>{if(u.dryRun){a({command:`cf analytics_engine sql query`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/analytics_engine/sql`,pathParams:{},bodyKind:`octet-stream`,body:u.body});return}let d=await r(u),f=u.local?l:await t(d);if(u.accountId=f,u.file){let e=c(u.file);i(await o(`Loading`,async()=>n(d,`POST`,`/accounts/${f}/analytics_engine/sql`,{body:e,headers:{"Content-Type":`text/plain`}})),{successLabel:`Loaded`});return}if(u.body){let e=s(u.body,`body`,`binary`);i(await o(`Loading`,async()=>n(d,`POST`,`/accounts/${f}/analytics_engine/sql`,{body:e,headers:{"Content-Type":`text/plain`}})),{successLabel:`Loaded`});return}i(await o(`Loading`,async()=>d.analyticsEngine.sql.query({account_id:f})),{successLabel:`Loaded`})}},f={command:`sql`,describe:`Operations for sql`,builder:e=>e.command(d).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},p={command:`analytics_engine`,describe:`analytics_engine`,builder:e=>e.command(f).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{p as default};
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ import{D as e,E as t,S as n,T as r,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,t as f}from"./input-validation-zEO81MWN.mjs";import{t as p}from"./cli-types-CRIDdDw3.mjs";function ee(e){return e.option(`normalize`,{type:`boolean`,description:`Ensures that the configuration is written or retrieved in normalized fashion`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const te={command:`get`,describe:`Gets the current API Shield configuration settings for a zone, including validation behavior and enforcement mode.`,builder:ee,handler:async e=>{let t={normalize:e.normalize};if(e.dryRun){l({command:`cf api-gateway configurations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/configuration`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.configurations.get({zone_id:i,...t})),{successLabel:`Loaded`})}};function m(e){return e.option(`normalize`,{type:`boolean`,description:`Ensures that the configuration is written or retrieved in normalized fashion`}).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 h={command:`update`,describe:`Updates API Shield configuration settings for a zone. Can modify validation strictness, enforcement mode, and other global settings.`,builder:m,handler:async e=>{let t={normalize:e.normalize};if(e.dryRun){l({command:`cf api-gateway configurations update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/configuration`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});if(e.zoneId=i,e.body){let n=o(e.body);new URLSearchParams(Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),c(await u(`Updating`,async()=>r.apiGateway.configurations.update({body:n,zone_id:i,...t})),{successLabel:`Updated`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}},g={command:`configurations`,describe:`API Shield configuration — authentication requirements and session identifiers`,builder:e=>e.command(te).command(h).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function _(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const v={command:`get`,describe:`Retrieve the most up to date view of discovered operations, rendered as OpenAPI schemas`,builder:_,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway discovery get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/discovery`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});e.zoneId=r,c(await u(`Loading`,async()=>t.apiGateway.discovery.get({zone_id:r})),{successLabel:`Loaded`})}};function y(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const b={command:`bulk-edit`,describe:"Update the `state` on one or more discovered operations",builder:y,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway discovery operations bulk-edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/discovery/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.discovery.operations.bulkEdit({body:n,zone_id:r})),{successLabel:`Updated`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function x(e){return e.positional(`discovery-id`,{type:`string`,description:`Discovery ID of a discovered operation`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const S={command:`edit <discovery-id>`,describe:"Update the `state` on a discovered operation",builder:x,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway discovery operations edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/discovery/operations/${e[`discovery-id`]==null?`<discovery-id>`:encodeURIComponent(String(e[`discovery-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"discovery-id":String(e[`discovery-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.discovery.operations.edit({...n,zone_id:r,discovery_id:e[`discovery-id`]})),{successLabel:`Updated`});return}c(await u(`Updating`,async()=>t.apiGateway.discovery.operations.edit({zone_id:r,discovery_id:e[`discovery-id`]})),{successLabel:`Updated`})}};function C(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`host`,{type:`string`,description:`Filter results to only include the specified hosts.`}).option(`method`,{type:`string`,description:`Filter results to only include the specified HTTP methods.`}).option(`endpoint`,{type:`string`,description:`Filter results to only include endpoints containing this pattern.`}).option(`direction`,{type:`string`,description:`Direction to order results.`,choices:[`asc`,`desc`]}).option(`order`,{type:`string`,description:`Field to order by`,choices:[`host`,`method`,`endpoint`,`traffic_stats.requests`,`traffic_stats.last_updated`]}).option(`diff`,{type:`boolean`,description:"When `true`, only return API Discovery results that are not saved into API Shield Endpoint Management"}).option(`origin`,{type:`string`,description:"Filter results to only include discovery results sourced from a particular discovery engine\n * `ML` - Discovered operations that were sourced using ML API Discovery\n * `SessionIdentifier` - Discovered operations that were sourced using Session Identifier API Discovery",choices:[`ML`,`SessionIdentifier`,`LabelDiscovery`]}).option(`state`,{type:`string`,description:"Filter results to only include discovery results in a particular state. States are as follows\n * `review` - Discovered operations that are not saved into API Shield Endpoint Management\n * `saved` - Discovered operations that are already saved into API Shield Endpoint Management\n * `ignored` - Discovered operations that have been marked as ignored",choices:[`review`,`saved`,`ignored`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const w={command:`list`,describe:`Retrieve the most up to date view of discovered operations`,builder:p(C),handler:async e=>{let t={page:e.page,per_page:e[`per-page`],host:e.host,method:e.method,endpoint:e.endpoint,direction:e.direction,order:e.order,diff:e.diff,origin:e.origin,state:e.state};if(e.dryRun){l({command:`cf api-gateway discovery operations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/discovery/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.discovery.operations.list({zone_id:i,...t})),{successLabel:`Loaded`})}},T={command:`operations`,describe:`Auto-discovered API endpoints from traffic analysis with schema inference`,builder:e=>e.command(b).command(S).command(w).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},E={command:`discovery`,describe:`Auto-discovered API endpoints from traffic analysis with schema inference`,builder:e=>e.command(v).command(T).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function D(e){return e.option(`hosts`,{type:`string`,array:!0,description:`List of hosts to be targeted in the expression`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const O={command:`create`,describe:`Creates an expression template fallthrough rule for API Shield. Used for configuring default behavior when no other expression templates match.`,builder:D,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway expression-template fallthrough create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/expression-template/fallthrough`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({hosts:e.hosts}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Creating`,async()=>t.apiGateway.expressionTemplate.fallthrough.create({...n,zone_id:r})),{successLabel:`Created`});return}if(e.hosts===void 0)throw Error(`--hosts is required (or pass --body with this field set).`);let i=s({hosts:e.hosts});c(await u(`Creating`,async()=>t.apiGateway.expressionTemplate.fallthrough.create({...i,zone_id:r})),{successLabel:`Created`})}},k={command:`fallthrough`,describe:`Reusable expression templates for API Gateway rule configurations`,builder:e=>e.command(O).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},A={command:`expression-template`,describe:`Operations for expression-template`,builder:e=>e.command(k).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function j(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`order`,{type:`string`,description:`Field to order by`,choices:[`name`,`description`,`created_at`,`last_updated`,`mapped_resources.operations`]}).option(`direction`,{type:`string`,description:`Direction to order results.`,choices:[`asc`,`desc`]}).option(`source`,{type:`string`,description:`Filter for labels with source`,choices:[`user`,`managed`]}).option(`filter`,{type:`string`,description:`Filter for labels where the name or description matches using substring match`}).option(`with-mapped-resource-counts`,{type:`boolean`,description:"Include `mapped_resources` for each label"}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const M={command:`list`,describe:`Retrieve all labels`,builder:p(j),handler:async e=>{let t={page:e.page,per_page:e[`per-page`],order:e.order,direction:e.direction,source:e.source,filter:e.filter,with_mapped_resource_counts:e[`with-mapped-resource-counts`]};if(e.dryRun){l({command:`cf api-gateway labels list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.labels.list({zone_id:i,...t})),{successLabel:`Loaded`})}};function N(e){return e.positional(`name`,{type:`string`,description:`The label name`,demandOption:!0}).option(`with-mapped-resource-counts`,{type:`boolean`,description:"Include `mapped_resources` for each label"}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const P={command:`get <name>`,describe:`Retrieve managed label`,builder:N,handler:async e=>{let t={with_mapped_resource_counts:e[`with-mapped-resource-counts`]};if(e.dryRun){l({command:`cf api-gateway labels managed get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/managed/${e.name==null?`<name>`:encodeURIComponent(String(e.name))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),name:String(e.name??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.labels.managed.get({zone_id:i,name:e.name,...t})),{successLabel:`Loaded`})}};function F(e){return e.positional(`name`,{type:`string`,description:`The label name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const I={command:`update <name>`,describe:`Replace all operations(s) attached to a managed label`,builder:F,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway labels managed resources operation update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/managed/${e.name==null?`<name>`:encodeURIComponent(String(e.name))}/resources/operation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),name:String(e.name??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.labels.managed.resources.operation.update({body:n,zone_id:r,name:e.name})),{successLabel:`Updated`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}},L={command:`operation`,describe:`Labels operations`,builder:e=>e.command(I).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},R={command:`resources`,describe:`Operations for labels.managed.resources`,builder:e=>e.command(L).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},z={command:`managed`,describe:`Labels operations`,builder:e=>e.command(P).command(R).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function B(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const V={command:`bulk-create`,describe:`Create user labels`,builder:B,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway labels user bulk-create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/user`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Creating`,async()=>t.apiGateway.labels.user.bulkCreate({body:n,zone_id:r})),{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 H(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}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const U={command:`bulk-delete`,describe:`Delete user labels`,builder:H,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway labels user bulk-delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/user`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),i=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=i,!await r({force:!!e.force})){process.stderr.write(`Aborted.
3
+ `);return}if(e.body){let n=o(e.body);c(await u(`Deleting`,async()=>t.apiGateway.labels.user.bulkDelete({body:n,zone_id:i})),{successLabel:`Deleted`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function W(e){return e.positional(`name`,{type:`string`,description:`The label name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const G={command:`delete <name>`,describe:`Delete user label`,builder:W,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway labels user delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/user/${e.name==null?`<name>`:encodeURIComponent(String(e.name))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),name:String(e.name??``)},bodyKind:`none`});return}let t=await a(e),i=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=i,!await r({force:!!e.force})){process.stderr.write(`Aborted.
4
+ `);return}c(await u(`Deleting`,async()=>t.apiGateway.labels.user.delete({zone_id:i,name:e.name})),{successLabel:`Deleted`})}};function K(e){return e.positional(`name`,{type:`string`,description:`The label name`,demandOption:!0}).option(`description`,{type:`string`,description:`The description of the label`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const q={command:`edit <name>`,describe:`Update certain fields on a label`,builder:K,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway labels user edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/user/${e.name==null?`<name>`:encodeURIComponent(String(e.name))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),name:String(e.name??``)},bodyKind:`json`,body:e.body===void 0?s({description:d(e.description,`description`,`text`)}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.labels.user.edit({...n,zone_id:r,name:e.name})),{successLabel:`Updated`});return}let i=s({description:d(e.description,`description`,`text`)});c(await u(`Updating`,async()=>t.apiGateway.labels.user.edit({...i,zone_id:r,name:e.name})),{successLabel:`Updated`})}};function J(e){return e.positional(`name`,{type:`string`,description:`The label name`,demandOption:!0}).option(`with-mapped-resource-counts`,{type:`boolean`,description:"Include `mapped_resources` for each label"}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Y={command:`get <name>`,describe:`Retrieve user label`,builder:J,handler:async e=>{let t={with_mapped_resource_counts:e[`with-mapped-resource-counts`]};if(e.dryRun){l({command:`cf api-gateway labels user get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/user/${e.name==null?`<name>`:encodeURIComponent(String(e.name))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),name:String(e.name??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.labels.user.get({zone_id:i,name:e.name,...t})),{successLabel:`Loaded`})}};function X(e){return e.positional(`name`,{type:`string`,description:`The label name`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Z={command:`update <name>`,describe:`Replace all operations(s) attached to a user label`,builder:X,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway labels user resources operation update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/user/${e.name==null?`<name>`:encodeURIComponent(String(e.name))}/resources/operation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),name:String(e.name??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.labels.user.resources.operation.update({body:n,zone_id:r,name:e.name})),{successLabel:`Updated`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}},Q={command:`operation`,describe:`Labels operations`,builder:e=>e.command(Z).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ne={command:`resources`,describe:`Operations for labels.user.resources`,builder:e=>e.command(Q).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function re(e){return e.positional(`name`,{type:`string`,description:`The label name`,demandOption:!0}).option(`description`,{type:`string`,description:`The description of the label`}).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 ie={command:`update <name>`,describe:`Update all fields on a label`,builder:re,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway labels user update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/labels/user/${e.name==null?`<name>`:encodeURIComponent(String(e.name))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),name:String(e.name??``)},bodyKind:`json`,body:e.body===void 0?s({description:d(e.description,`description`,`text`)}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.labels.user.update({...n,zone_id:r,name:e.name})),{successLabel:`Updated`});return}let i=s({description:d(e.description,`description`,`text`)});c(await u(`Updating`,async()=>t.apiGateway.labels.user.update({...i,zone_id:r,name:e.name})),{successLabel:`Updated`})}},ae={command:`user`,describe:`Labels operations`,builder:e=>e.command(V).command(U).command(G).command(q).command(Y).command(ie).command(ne).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},oe={command:`labels`,describe:`Labels operations`,builder:e=>e.command(M).command(z).command(ae).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function se(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const ce={command:`bulk-create`,describe:`Add one or more operations to a zone. Endpoints can contain path variables. Host, method, endpoint will be normalized to a canoncial form when creating an operation and must be unique on the zone. Inserting an operation that matches an existing one will return the record of the already existing operation and update its last_updated date.`,builder:se,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations bulk-create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Creating`,async()=>t.apiGateway.operations.bulkCreate({body:n,zone_id:r})),{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 le(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}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const ue={command:`bulk-delete`,describe:`Bulk removes multiple API operations from API Shield endpoint management in a single request. Efficient for cleaning up unused endpoints.`,builder:le,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations bulk-delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),i=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=i,!await r({force:!!e.force})){process.stderr.write(`Aborted.
5
+ `);return}if(e.body){let n=o(e.body);c(await u(`Deleting`,async()=>t.apiGateway.operations.bulkDelete({body:n,zone_id:i})),{successLabel:`Deleted`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function de(e){return e.option(`endpoint`,{type:`string`,description:`The endpoint which can contain path parameter templates in curly braces, each will be replaced from left to right with {varN}, starting with {var1}, during insertion. This will further be Cloudflare-normalized upon insertion. See: https://developers.cloudflare.com/rules/normalization/how-it-works/.`}).option(`host`,{type:`string`,description:`RFC3986-compliant host.`}).option(`method`,{type:`string`,description:`The HTTP method used to access the endpoint.`,choices:[`GET`,`POST`,`HEAD`,`OPTIONS`,`PUT`,`DELETE`,`CONNECT`,`PATCH`,`TRACE`]}).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 fe={command:`create`,describe:`Add one operation to a zone. Endpoints can contain path variables. Host, method, endpoint will be normalized to a canoncial form when creating an operation and must be unique on the zone. Inserting an operation that matches an existing one will return the record of the already existing operation and update its last_updated date.`,builder:de,handler:async r=>{if(r.dryRun){l({command:`cf api-gateway operations create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${r.zone??r.zoneId??`<zone>`}/api_gateway/operations/item`,pathParams:{"zone-id":String(r.zone??r[`zone-id`]??``)},bodyKind:`json`,body:r.body===void 0?s({endpoint:d(r.endpoint,`endpoint`,`text`),host:d(r.host,`host`,`text`),method:d(r.method,`method`,`text`)}):o(r.body)});return}let i=await a(r),f=await n({zone:r.zone},i,{quiet:r.quiet});if(r.zoneId=f,r.body){let e=o(r.body);c(await u(`Creating`,async()=>i.apiGateway.operations.create({body:e,zone_id:f})),{successLabel:`Created`});return}r.endpoint===void 0&&(r.endpoint=await e(`endpoint`,`The endpoint which can contain path parameter templates in curly braces, each will be replaced from left to right with {varN}, starting with {var1}, during insertion. This will further be Cloudflare-normalized upon insertion. See: https://developers.cloudflare.com/rules/normalization/how-it-works/.`)),r.host===void 0&&(r.host=await e(`host`,`RFC3986-compliant host.`)),r.method===void 0&&(r.method=await t(`method`,`The HTTP method used to access the endpoint.`,[`GET`,`POST`,`HEAD`,`OPTIONS`,`PUT`,`DELETE`,`CONNECT`,`PATCH`,`TRACE`]));let p=s({endpoint:d(r.endpoint,`endpoint`,`text`),host:d(r.host,`host`,`text`),method:d(r.method,`method`,`text`)});c(await u(`Creating`,async()=>i.apiGateway.operations.create({body:p,zone_id:f})),{successLabel:`Created`})}};function pe(e){return e.positional(`operation-id`,{type:`string`,description:`Identifier for the operation`,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 me={command:`delete <operation-id>`,describe:`Removes a single API operation from API Shield endpoint management. The operation will no longer be tracked or protected by API Shield rules.`,builder:pe,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/${e[`operation-id`]==null?`<operation-id>`:encodeURIComponent(String(e[`operation-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"operation-id":String(e[`operation-id`]??``)},bodyKind:`none`});return}let t=await a(e),i=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=i,!await r({force:!!e.force})){process.stderr.write(`Aborted.
6
+ `);return}c(await u(`Deleting`,async()=>t.apiGateway.operations.delete({zone_id:i,operation_id:e[`operation-id`]})),{successLabel:`Deleted`})}};function he(e){return e.positional(`operation-id`,{type:`string`,description:`Identifier for the operation`,demandOption:!0}).option(`feature`,{type:`string`,description:`Add feature(s) to the results. The feature name that is given here corresponds to the resulting feature object. Have a look at the top-level object description for more details on the specific meaning.`}).option(`with-schemas`,{type:`boolean`,description:`When true, includes OpenAPI schemas (both uploaded and learned) for the operation in the response. Due to the conversion overhead, this parameter is only supported on single-operation retrieval.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ge={command:`get <operation-id>`,describe:`Gets detailed information about a specific API operation in API Shield, including its schema validation settings and traffic statistics.`,builder:p(he),handler:async e=>{let t={feature:e.feature,with_schemas:e[`with-schemas`]};if(e.dryRun){l({command:`cf api-gateway operations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/${e[`operation-id`]==null?`<operation-id>`:encodeURIComponent(String(e[`operation-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"operation-id":String(e[`operation-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.operations.get({zone_id:i,operation_id:e[`operation-id`],...t})),{successLabel:`Loaded`})}};function _e(e){return e.option(`managed-labels`,{type:`string`,array:!0,description:`List of managed label names.`}).option(`user-labels`,{type:`string`,array:!0,description:`List of user label names.`}).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 ve={command:`bulk-create`,describe:`Bulk attach label(s) on operation(s) in endpoint management`,builder:_e,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations labels bulk-create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/labels`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({managed:{labels:e[`managed-labels`]},user:{labels:e[`user-labels`]}}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Creating`,async()=>t.apiGateway.operations.labels.bulkCreate({...n,zone_id:r})),{successLabel:`Created`});return}let i=s({managed:{labels:e[`managed-labels`]},user:{labels:e[`user-labels`]}});c(await u(`Creating`,async()=>t.apiGateway.operations.labels.bulkCreate({...i,zone_id:r})),{successLabel:`Created`})}};function ye(e){return e.option(`managed-labels`,{type:`string`,array:!0,description:`List of managed label names.`}).option(`user-labels`,{type:`string`,array:!0,description:`List of user label names.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const be={command:`bulk-delete`,describe:`Bulk remove label(s) on operation(s) in endpoint management`,builder:ye,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations labels bulk-delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/labels`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({managed:{labels:e[`managed-labels`]},user:{labels:e[`user-labels`]}}):o(e.body)});return}let t=await a(e),i=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=i,!await r({force:!!e.force})){process.stderr.write(`Aborted.
7
+ `);return}if(e.body){let n=o(e.body);c(await u(`Deleting`,async()=>t.apiGateway.operations.labels.bulkDelete({...n,zone_id:i})),{successLabel:`Deleted`});return}let d=s({managed:{labels:e[`managed-labels`]},user:{labels:e[`user-labels`]}});c(await u(`Deleting`,async()=>t.apiGateway.operations.labels.bulkDelete({...d,zone_id:i})),{successLabel:`Deleted`})}};function xe(e){return e.option(`managed-labels`,{type:`string`,array:!0,description:`List of managed label names. Providing an empty array will result in all managed labels being removed from all affected operations`}).option(`user-labels`,{type:`string`,array:!0,description:`List of user label names. Providing an empty array will result in all user labels being removed from all affected operations`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Se={command:`bulk-update`,describe:`Bulk replace label(s) on operation(s) in endpoint management`,builder:xe,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations labels bulk-update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/labels`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({managed:{labels:e[`managed-labels`]},user:{labels:e[`user-labels`]}}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.operations.labels.bulkUpdate({...n,zone_id:r})),{successLabel:`Updated`});return}if(e[`managed-labels`]===void 0)throw Error(`--managed-labels is required (or pass --body with this field set).`);if(e[`user-labels`]===void 0)throw Error(`--user-labels is required (or pass --body with this field set).`);let i=s({managed:{labels:e[`managed-labels`]},user:{labels:e[`user-labels`]}});c(await u(`Updating`,async()=>t.apiGateway.operations.labels.bulkUpdate({...i,zone_id:r})),{successLabel:`Updated`})}};function Ce(e){return e.positional(`operation-id`,{type:`string`,description:`Identifier for the operation`,demandOption:!0}).option(`managed`,{type:`string`,array:!0,description:`List of managed label names.`}).option(`user`,{type:`string`,array:!0,description:`List of user label names.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const we={command:`create <operation-id>`,describe:`Attach label(s) on an operation in endpoint management`,builder:Ce,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations labels create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/${e[`operation-id`]==null?`<operation-id>`:encodeURIComponent(String(e[`operation-id`]))}/labels`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"operation-id":String(e[`operation-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({managed:e.managed,user:e.user}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Creating`,async()=>t.apiGateway.operations.labels.create({...n,zone_id:r,operation_id:e[`operation-id`]})),{successLabel:`Created`});return}let i=s({managed:e.managed,user:e.user});c(await u(`Creating`,async()=>t.apiGateway.operations.labels.create({...i,zone_id:r,operation_id:e[`operation-id`]})),{successLabel:`Created`})}};function Te(e){return e.positional(`operation-id`,{type:`string`,description:`Identifier for the operation`,demandOption:!0}).option(`managed`,{type:`string`,array:!0,description:`List of managed label names.`}).option(`user`,{type:`string`,array:!0,description:`List of user label names.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Ee={command:`delete <operation-id>`,describe:`Remove label(s) on an operation in endpoint management`,builder:Te,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations labels delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/${e[`operation-id`]==null?`<operation-id>`:encodeURIComponent(String(e[`operation-id`]))}/labels`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"operation-id":String(e[`operation-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({managed:e.managed,user:e.user}):o(e.body)});return}let t=await a(e),i=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=i,!await r({force:!!e.force})){process.stderr.write(`Aborted.
8
+ `);return}if(e.body){let n=o(e.body);c(await u(`Deleting`,async()=>t.apiGateway.operations.labels.delete({...n,zone_id:i,operation_id:e[`operation-id`]})),{successLabel:`Deleted`});return}let d=s({managed:e.managed,user:e.user});c(await u(`Deleting`,async()=>t.apiGateway.operations.labels.delete({...d,zone_id:i,operation_id:e[`operation-id`]})),{successLabel:`Deleted`})}};function De(e){return e.positional(`operation-id`,{type:`string`,description:`Identifier for the operation`,demandOption:!0}).option(`managed`,{type:`string`,array:!0,description:`List of managed label names. Omitting this property or passing an empty array will result in all managed labels being removed from the operation`}).option(`user`,{type:`string`,array:!0,description:`List of user label names. Omitting this property or passing an empty array will result in all user labels being removed from the operation`}).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 Oe={command:`update <operation-id>`,describe:`Replace label(s) on an operation in endpoint management`,builder:De,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations labels update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/${e[`operation-id`]==null?`<operation-id>`:encodeURIComponent(String(e[`operation-id`]))}/labels`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"operation-id":String(e[`operation-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({managed:e.managed,user:e.user}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.operations.labels.update({...n,zone_id:r,operation_id:e[`operation-id`]})),{successLabel:`Updated`});return}let i=s({managed:e.managed,user:e.user});c(await u(`Updating`,async()=>t.apiGateway.operations.labels.update({...i,zone_id:r,operation_id:e[`operation-id`]})),{successLabel:`Updated`})}},ke={command:`labels`,describe:`Manage labels on API Shield operations for classification and policy enforcement`,builder:e=>e.command(ve).command(be).command(Se).command(we).command(Ee).command(Oe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ae(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`order`,{type:`string`,description:"Field to order by. When requesting a feature, the feature keys are available for ordering as well, e.g., `thresholds.suggested_threshold`.",choices:[`method`,`host`,`endpoint`,`thresholds.$key`]}).option(`direction`,{type:`string`,description:`Direction to order results.`,choices:[`asc`,`desc`]}).option(`host`,{type:`string`,description:`Filter results to only include the specified hosts.`}).option(`method`,{type:`string`,description:`Filter results to only include the specified HTTP methods.`}).option(`endpoint`,{type:`string`,description:`Filter results to only include endpoints containing this pattern.`}).option(`feature`,{type:`string`,description:`Add feature(s) to the results. The feature name that is given here corresponds to the resulting feature object. Have a look at the top-level object description for more details on the specific meaning.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const je={command:`list`,describe:`Lists all API operations tracked by API Shield for a zone with pagination. Returns operation details including method, path, and feature configurations.`,builder:p(Ae),handler:async e=>{let t={page:e.page,per_page:e[`per-page`],order:e.order,direction:e.direction,host:e.host,method:e.method,endpoint:e.endpoint,feature:e.feature};if(e.dryRun){l({command:`cf api-gateway operations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.operations.list({zone_id:i,...t})),{successLabel:`Loaded`})}};function Me(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Ne={command:`edit`,describe:`Updates multiple operation-level schema validation settings on the zone`,builder:Me,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations schema-validation edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/schema_validation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.operations.schemaValidation.edit({body:n,zone_id:r})),{successLabel:`Updated`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function Pe(e){return e.positional(`operation-id`,{type:`string`,description:`Identifier for the operation`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Fe={command:`get <operation-id>`,describe:`Retrieves operation-level schema validation settings on the zone`,builder:Pe,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations schema-validation get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/${e[`operation-id`]==null?`<operation-id>`:encodeURIComponent(String(e[`operation-id`]))}/schema_validation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"operation-id":String(e[`operation-id`]??``)},bodyKind:`none`});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});e.zoneId=r,c(await u(`Loading`,async()=>t.apiGateway.operations.schemaValidation.get({zone_id:r,operation_id:e[`operation-id`]})),{successLabel:`Loaded`})}};function Ie(e){return e.positional(`operation-id`,{type:`string`,description:`Identifier for the operation`,demandOption:!0}).option(`mitigation-action`,{type:`string`,description:"When set, this applies a mitigation action to this operation\n\n - `log` log request when request does not conform to schema for this operation\n - `block` deny access to the site when request does not conform to schema for this operation\n - `none` will skip mitigation for this operation\n - `null` indicates that no operation level mitigation is in place, see Zone Level Schema Validation Settings for mitigation action that will be applied\n",choices:[`log`,`block`,`none`]}).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 Le={command:`update <operation-id>`,describe:`Updates operation-level schema validation settings on the zone`,builder:Ie,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway operations schema-validation update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/operations/${e[`operation-id`]==null?`<operation-id>`:encodeURIComponent(String(e[`operation-id`]))}/schema_validation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"operation-id":String(e[`operation-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({mitigation_action:d(e[`mitigation-action`],`mitigation-action`,`text`)}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.operations.schemaValidation.update({...n,zone_id:r,operation_id:e[`operation-id`]})),{successLabel:`Updated`});return}let i=s({mitigation_action:d(e[`mitigation-action`],`mitigation-action`,`text`)});c(await u(`Updating`,async()=>t.apiGateway.operations.schemaValidation.update({...i,zone_id:r,operation_id:e[`operation-id`]})),{successLabel:`Updated`})}},Re={command:`schema-validation`,describe:`Registered API operations (method + path) with traffic metrics and schema bindings`,builder:e=>e.command(Ne).command(Fe).command(Le).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ze={command:`operations`,describe:`Registered API operations (method + path) with traffic metrics and schema bindings`,builder:e=>e.command(ce).command(ue).command(fe).command(me).command(ge).command(je).command(ke).command(Re).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Be(e){return e.option(`host`,{type:`string`,description:`Receive schema only for the given host(s).`}).option(`feature`,{type:`string`,description:`Add feature(s) to the results. The feature name that is given here corresponds to the resulting feature object. Have a look at the top-level object description for more details on the specific meaning.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ve={command:`list`,describe:`Retrieves API operations and their features exported as OpenAPI schemas.`,builder:p(Be),handler:async e=>{let t={host:e.host,feature:e.feature};if(e.dryRun){l({command:`cf api-gateway schemas list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/schemas`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.schemas.list({zone_id:i,...t})),{successLabel:`Loaded`})}},He={command:`schemas`,describe:`OpenAPI schemas learned from traffic for API endpoint validation`,builder:e=>e.command(Ve).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ue(e){return e.option(`validation-default-mitigation-action`,{type:`string`,description:`The default mitigation action used when there is no mitigation action defined on the operation
9
+ Mitigation actions are as follows:
10
+
11
+ * \`log\` - log request when request does not conform to schema
12
+ * \`block\` - deny access to the site when request does not conform to schema
13
+
14
+ A special value of of \`none\` will skip running schema validation entirely for the request when there is no mitigation action defined on the operation
15
+
16
+ \`null\` will have no effect.
17
+ `,choices:[`none`,`log`,`block`]}).option(`validation-override-mitigation-action`,{type:`string`,description:`When set, this overrides both zone level and operation level mitigation actions.
18
+
19
+ - \`none\` will skip running schema validation entirely for the request
20
+
21
+ To clear any override, use the special value \`disable_override\`
22
+
23
+ \`null\` will have no effect.
24
+ `,choices:[`none`,`disable_override`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const We={command:`edit`,describe:`Updates zone level schema validation settings on the zone`,builder:Ue,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway settings schema-validation edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/settings/schema_validation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({validation_default_mitigation_action:d(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:d(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)}):o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.settings.schemaValidation.edit({...n,zone_id:r})),{successLabel:`Updated`});return}let i=s({validation_default_mitigation_action:d(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:d(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)});c(await u(`Updating`,async()=>t.apiGateway.settings.schemaValidation.edit({...i,zone_id:r})),{successLabel:`Updated`})}};function Ge(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ke={command:`get`,describe:`Retrieves zone level schema validation settings currently set on the zone`,builder:Ge,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway settings schema-validation get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/settings/schema_validation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});e.zoneId=r,c(await u(`Loading`,async()=>t.apiGateway.settings.schemaValidation.get({zone_id:r})),{successLabel:`Loaded`})}};function qe(e){return e.option(`validation-default-mitigation-action`,{type:`string`,description:`The default mitigation action used when there is no mitigation action defined on the operation
25
+
26
+ Mitigation actions are as follows:
27
+
28
+ * \`log\` - log request when request does not conform to schema
29
+ * \`block\` - deny access to the site when request does not conform to schema
30
+
31
+ A special value of of \`none\` will skip running schema validation entirely for the request when there is no mitigation action defined on the operation
32
+ `,choices:[`none`,`log`,`block`]}).option(`validation-override-mitigation-action`,{type:`string`,description:"When set, this overrides both zone level and operation level mitigation actions.\n\n - `none` will skip running schema validation entirely for the request\n - `null` indicates that no override is in place\n\nTo clear any override, use the special value `disable_override` or `null`\n",choices:[`none`,`disable_override`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Je={command:`update`,describe:`Updates zone level schema validation settings on the zone`,builder:qe,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway settings schema-validation update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/settings/schema_validation`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?s({validation_default_mitigation_action:d(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:d(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)}):o(e.body)});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});if(e.zoneId=i,e.body){let t=o(e.body);c(await u(`Updating`,async()=>r.apiGateway.settings.schemaValidation.update({...t,zone_id:i})),{successLabel:`Updated`});return}e[`validation-default-mitigation-action`]===void 0&&(e[`validation-default-mitigation-action`]=await t(`validation-default-mitigation-action`,"The default mitigation action used when there is no mitigation action defined on the operation Mitigation actions are as follows: * `log` - log request when request does not conform to schema * `block` - deny access to the site when request does not conform to schema A special value of of `none` will skip running schema validation entirely for the request when there is no mitigation action defined on the operation ",[`none`,`log`,`block`]));let f=s({validation_default_mitigation_action:d(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:d(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)});c(await u(`Updating`,async()=>r.apiGateway.settings.schemaValidation.update({...f,zone_id:i})),{successLabel:`Updated`})}},Ye={command:`schema-validation`,describe:`Zone-level API Gateway settings including schema validation behavior`,builder:e=>e.command(We).command(Ke).command(Je).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Xe={command:`settings`,describe:`Operations for settings`,builder:e=>e.command(Ye).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ze(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).option(`file`,{type:`string`,description:`Path to a file to upload as the request body`}).option(`kind`,{type:`string`,description:`Kind of schema`}).option(`name`,{type:`string`,description:`Name of the schema`}).option(`validation-enabled`,{type:`string`,description:`Flag whether schema is enabled for validation.`})}const Qe={command:`create`,describe:`Uploads a new OpenAPI schema for API Shield schema validation. The schema defines expected request/response formats for API endpoints.`,builder:Ze,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway user-schemas create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/user_schemas`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`multipart`,body:{body:e.body,file:e.file,kind:e.kind,name:e.name,"validation-enabled":e[`validation-enabled`]}});return}let t=await a(e);if(e.zoneId=await n({zone:e.zone},t,{quiet:e.quiet}),e.file!==void 0||e.body!==void 0||e.kind!==void 0||e.name!==void 0||e[`validation-enabled`]!==void 0){let n=new FormData;if(e.file){let t=f(e.file);n.append(`file`,new Blob([t]),e.file.split(/[\\/]/).filter(Boolean).pop())}else e.body!==void 0&&n.append(`file`,e.body);e.kind!==void 0&&n.append(`kind`,String(d(e.kind,`kind`,`text`)??``)),e.name!==void 0&&n.append(`name`,String(d(e.name,`name`,`text`)??``)),e[`validation-enabled`]!==void 0&&n.append(`validation_enabled`,String(d(e[`validation-enabled`],`validation-enabled`,`text`)??``)),c(await u(`Creating`,async()=>i(t,`POST`,`/zones/${e.zoneId}/api_gateway/user_schemas`,{body:n})),{successLabel:`Created`});return}if(e.body){let n=d(e.body,`body`,`binary`);c(await u(`Creating`,async()=>i(t,`POST`,`/zones/${e.zoneId}/api_gateway/user_schemas`,{body:n,headers:{"Content-Type":`multipart/form-data`}})),{successLabel:`Created`});return}if(e.body===void 0)throw Error(`--body is required for this command. Pass --body '<json>' or --body @path/to/file.json.`)}};function $e(e){return e.positional(`schema-id`,{type:`string`,description:`Identifier for the schema-ID`,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 et={command:`delete <schema-id>`,describe:`Permanently removes an uploaded OpenAPI schema from API Shield schema validation. Operations using this schema will lose their validation rules.`,builder:$e,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway user-schemas delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/user_schemas/${e[`schema-id`]==null?`<schema-id>`:encodeURIComponent(String(e[`schema-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"schema-id":String(e[`schema-id`]??``)},bodyKind:`none`});return}let t=await a(e),i=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=i,!await r({force:!!e.force})){process.stderr.write(`Aborted.
33
+ `);return}c(await u(`Deleting`,async()=>t.apiGateway.userSchemas.delete({zone_id:i,schema_id:e[`schema-id`]})),{successLabel:`Deleted`})}};function tt(e){return e.positional(`schema-id`,{type:`string`,description:`Identifier for the schema-ID`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const $={command:`edit <schema-id>`,describe:`Activates schema validation for an uploaded OpenAPI schema. Requests to matching endpoints will be validated against the schema definitions.`,builder:tt,handler:async e=>{if(e.dryRun){l({command:`cf api-gateway user-schemas edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/user_schemas/${e[`schema-id`]==null?`<schema-id>`:encodeURIComponent(String(e[`schema-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"schema-id":String(e[`schema-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:o(e.body)});return}let t=await a(e),r=await n({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=r,e.body){let n=o(e.body);c(await u(`Updating`,async()=>t.apiGateway.userSchemas.edit({...n,zone_id:r,schema_id:e[`schema-id`]})),{successLabel:`Updated`});return}c(await u(`Updating`,async()=>t.apiGateway.userSchemas.edit({zone_id:r,schema_id:e[`schema-id`]})),{successLabel:`Updated`})}};function nt(e){return e.positional(`schema-id`,{type:`string`,description:`Identifier for the schema-ID`,demandOption:!0}).option(`omit-source`,{type:`boolean`,description:`Omit the source-files of schemas and only retrieve their meta-data.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const rt={command:`get <schema-id>`,describe:`Gets detailed information about a specific uploaded OpenAPI schema, including its contents and validation configuration.`,builder:nt,handler:async e=>{let t={omit_source:e[`omit-source`]};if(e.dryRun){l({command:`cf api-gateway user-schemas get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/user_schemas/${e[`schema-id`]==null?`<schema-id>`:encodeURIComponent(String(e[`schema-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"schema-id":String(e[`schema-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.userSchemas.get({zone_id:i,schema_id:e[`schema-id`],...t})),{successLabel:`Loaded`})}};function it(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const at={command:`list`,describe:`Lists all unique hosts found in uploaded OpenAPI schemas for the zone. Useful for understanding which domains have schema coverage.`,builder:it,handler:async e=>{let t={page:e.page,per_page:e[`per-page`]};if(e.dryRun){l({command:`cf api-gateway user-schemas hosts list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/user_schemas/hosts`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.userSchemas.hosts.list({zone_id:i,...t})),{successLabel:`Loaded`})}},ot={command:`hosts`,describe:`User-uploaded OpenAPI schemas for validating API request and response payloads`,builder:e=>e.command(at).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function st(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`omit-source`,{type:`boolean`,description:`Omit the source-files of schemas and only retrieve their meta-data.`}).option(`validation-enabled`,{type:`boolean`,description:`Flag whether schema is enabled for validation.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ct={command:`list`,describe:`Lists all OpenAPI schemas uploaded to API Shield for the zone, including their validation status and associated operations.`,builder:st,handler:async e=>{let t={page:e.page,per_page:e[`per-page`],omit_source:e[`omit-source`],validation_enabled:e[`validation-enabled`]};if(e.dryRun){l({command:`cf api-gateway user-schemas list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/user_schemas`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.userSchemas.list({zone_id:i,...t})),{successLabel:`Loaded`})}};function lt(e){return e.option(`schema-id`,{type:`string`,description:`Identifier for the schema-ID`,demandOption:!0}).option(`feature`,{type:`string`,description:`Add feature(s) to the results. The feature name that is given here corresponds to the resulting feature object. Have a look at the top-level object description for more details on the specific meaning.`}).option(`host`,{type:`string`,description:`Filter results to only include the specified hosts.`}).option(`method`,{type:`string`,description:`Filter results to only include the specified HTTP methods.`}).option(`endpoint`,{type:`string`,description:`Filter results to only include endpoints containing this pattern.`}).option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`operation-status`,{type:`string`,description:"Filter results by whether operations exist in API Shield Endpoint Management or not. `new` will just return operations from the schema that do not exist in API Shield Endpoint Management. `existing` will just return operations from the schema that already exist in API Shield Endpoint Management.",choices:[`new`,`existing`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ut={command:`list`,describe:`Retrieves all operations from the schema. Operations that already exist in API Shield Endpoint Management will be returned as full operations.`,builder:p(lt),handler:async e=>{let t={feature:e.feature,host:e.host,method:e.method,endpoint:e.endpoint,page:e.page,per_page:e[`per-page`],operation_status:e[`operation-status`]};if(e.dryRun){l({command:`cf api-gateway user-schemas operations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/api_gateway/user_schemas/${e[`schema-id`]==null?`<schema-id>`:encodeURIComponent(String(e[`schema-id`]))}/operations`,pathParams:{"schema-id":String(e[`schema-id`]??``),"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let r=await a(e),i=await n({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,c(await u(`Loading`,async()=>r.apiGateway.userSchemas.operations.list({zone_id:i,schema_id:e[`schema-id`],...t})),{successLabel:`Loaded`})}},dt={command:`operations`,describe:`User-uploaded OpenAPI schemas for validating API request and response payloads`,builder:e=>e.command(ut).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ft={command:`user-schemas`,describe:`User-uploaded OpenAPI schemas for validating API request and response payloads`,builder:e=>e.command(Qe).command(et).command($).command(rt).command(ct).command(ot).command(dt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},pt={command:`api-gateway`,describe:`Discover, monitor, and protect your API endpoints with schema validation, abuse detection, and routing`,builder:e=>e.command(g).command(E).command(A).command(oe).command(ze).command(He).command(Xe).command(ft).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{pt as default};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import{E as e,S as t,n}from"./auth-ffdf9yR0.mjs";import{n as r,t as i}from"./body-parser-DKa8Ipg1.mjs";import{t as a}from"./output-BJFNwj7b.mjs";import{n as o,t as s}from"./progress-CrCGTq7N.mjs";import{n as c}from"./input-validation-zEO81MWN.mjs";function l(e){return e.option(`value`,{type:`string`,description:`Specifies the enablement value of Argo Smart Routing.`,choices:[`on`,`off`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Configures the enablement of Argo Smart Routing.`})}const u={command:`edit`,describe:`Configures the value of the Argo Smart Routing enablement setting.`,builder:l,handler:async l=>{if(l.dryRun){o({command:`cf argo smart-routing edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${l.zone??l.zoneId??`<zone>`}/argo/smart_routing`,pathParams:{"zone-id":String(l.zone??l[`zone-id`]??``)},bodyKind:`json`,body:l.body===void 0?i({value:c(l.value,`value`,`text`)}):r(l.body)});return}let u=await n(l),d=await t({zone:l.zone},u,{quiet:l.quiet});if(l.zoneId=d,l.body){let e=r(l.body);a(await s(`Updating`,async()=>u.argo.smartRouting.edit({...e,zone_id:d})),{successLabel:`Updated`});return}l.value===void 0&&(l.value=await e(`value`,`Specifies the enablement value of Argo Smart Routing.`,[`on`,`off`]));let f=i({value:c(l.value,`value`,`text`)});a(await s(`Updating`,async()=>u.argo.smartRouting.edit({...f,zone_id:d})),{successLabel:`Updated`})}};function d(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const f={command:`get`,describe:`Retrieves the value of Argo Smart Routing enablement setting.`,builder:d,handler:async e=>{if(e.dryRun){o({command:`cf argo smart-routing get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/argo/smart_routing`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let r=await n(e),i=await t({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,a(await s(`Loading`,async()=>r.argo.smartRouting.get({zone_id:i})),{successLabel:`Loaded`})}},p={command:`smart-routing`,describe:`Route traffic through the fastest network paths to your origin using real-time latency data`,builder:e=>e.command(u).command(f).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function m(e){return e.option(`value`,{type:`string`,description:`Enables Tiered Caching.`,choices:[`on`,`off`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Update enablement of Tiered Caching.`})}const h={command:`edit`,describe:`Tiered Cache works by dividing Cloudflare's data centers into a hierarchy of lower-tiers and upper-tiers. If content is not cached in lower-tier data centers (generally the ones closest to a visitor), the lower-tier must ask an upper-tier to see if it has the content. If the upper-tier does not have the content, only the upper-tier can ask the origin for content. This practice improves bandwidth efficiency by limiting the number of data centers that can ask the origin for content, which reduces origin load and makes websites more cost-effective to operate. Additionally, Tiered Cache concentrates connections to origin servers so they come from a small number of data centers rather than the full set of network locations. This results in fewer open connections using server resources.`,builder:m,handler:async l=>{if(l.dryRun){o({command:`cf argo tiered-caching edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${l.zone??l.zoneId??`<zone>`}/argo/tiered_caching`,pathParams:{"zone-id":String(l.zone??l[`zone-id`]??``)},bodyKind:`json`,body:l.body===void 0?i({value:c(l.value,`value`,`text`)}):r(l.body)});return}let u=await n(l),d=await t({zone:l.zone},u,{quiet:l.quiet});if(l.zoneId=d,l.body){let e=r(l.body);a(await s(`Updating`,async()=>u.argo.tieredCaching.edit({...e,zone_id:d})),{successLabel:`Updated`});return}l.value===void 0&&(l.value=await e(`value`,`Enables Tiered Caching.`,[`on`,`off`]));let f=i({value:c(l.value,`value`,`text`)});a(await s(`Updating`,async()=>u.argo.tieredCaching.edit({...f,zone_id:d})),{successLabel:`Updated`})}};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:`Tiered Cache works by dividing Cloudflare's data centers into a hierarchy of lower-tiers and upper-tiers. If content is not cached in lower-tier data centers (generally the ones closest to a visitor), the lower-tier must ask an upper-tier to see if it has the content. If the upper-tier does not have the content, only the upper-tier can ask the origin for content. This practice improves bandwidth efficiency by limiting the number of data centers that can ask the origin for content, which reduces origin load and makes websites more cost-effective to operate. Additionally, Tiered Cache concentrates connections to origin servers so they come from a small number of data centers rather than the full set of network locations. This results in fewer open connections using server resources.`,builder:g,handler:async e=>{if(e.dryRun){o({command:`cf argo tiered-caching get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/argo/tiered_caching`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let r=await n(e),i=await t({zone:e.zone},r,{quiet:e.quiet});e.zoneId=i,a(await s(`Loading`,async()=>r.argo.tieredCaching.get({zone_id:i})),{successLabel:`Loaded`})}},v={command:`tiered-caching`,describe:`Reduce origin load by having upper-tier data centers serve cache misses before reaching your origin`,builder:e=>e.command(h).command(_).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},y={command:`argo`,describe:`Network optimization features that speed up and improve reliability of traffic to your origins`,builder:e=>e.command(p).command(v).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{y as default};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import{C as e,_ as t,n}from"./auth-ffdf9yR0.mjs";import{t as r}from"./output-BJFNwj7b.mjs";import{n as i,t as a}from"./progress-CrCGTq7N.mjs";import{t as o}from"./local-VJaJ3BZ1.mjs";import{t as s}from"./cli-types-CRIDdDw3.mjs";function c(e){return e.option(`id`,{type:`string`,description:`Finds a specific log by its ID.`}).option(`export`,{type:`boolean`,description:`Indicates that this request is an export of logs in CSV format.`}).option(`action-type`,{type:`string`,description:`Filters by the action type.`}).option(`actor-ip`,{type:`string`,description:`Filters by the IP address of the request that made the change by specific IP address or valid CIDR Range.`}).option(`actor-email`,{type:`string`,description:`Filters by the email address of the actor that made the change.`}).option(`since`,{type:`string`,description:"Limits the returned results to logs newer than the specified date. A `full-date` that conforms to RFC3339."}).option(`before`,{type:`string`,description:"Limits the returned results to logs older than the specified date. A `full-date` that conforms to RFC3339."}).option(`zone-name`,{type:`string`,description:`Filters by the name of the zone associated to the change.`}).option(`direction`,{type:`string`,description:`Changes the direction of the chronological sorting.`,choices:[`desc`,`asc`]}).option(`per-page`,{type:`number`,description:`Sets the number of results to return per page.`}).option(`page`,{type:`number`,description:`Defines which page of results to return.`}).option(`hide-user-logs`,{type:`boolean`,description:`Indicates whether or not to hide user level audit logs.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const l={command:`list`,describe:`Gets a list of audit logs for an account. Can be filtered by who made the change, on which zone, and the timeframe of the change.`,builder:s(c),handler:async s=>{let c={id:s.id,export:s.export,"action.type":s[`action-type`],"actor.ip":s[`actor-ip`],"actor.email":s[`actor-email`],since:s.since,before:s.before,"zone.name":s[`zone-name`],direction:s.direction,per_page:s[`per-page`],page:s.page,hide_user_logs:s[`hide-user-logs`]};if(s.dryRun){i({command:`cf audit-logs list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${e()??`<account-id>`}/audit_logs`,pathParams:{},query:c,bodyKind:`none`});return}let l=await n(s),u=s.local?o:await t(l);s.accountId=u,r(await a(`Loading`,async()=>l.auditLogs.list({account_id:u,...c})),{successLabel:`Loaded`})}},u={command:`audit-logs`,describe:`Immutable audit trail of actions taken by account members — who changed what and when`,builder:e=>e.command(l).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{u as default};
@@ -0,0 +1,6 @@
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};
@@ -0,0 +1,135 @@
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};
@@ -0,0 +1,2 @@
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};