cf 0.9.1 → 0.11.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 (363) hide show
  1. package/README.md +20 -5
  2. package/dist/_meta/agent-context.json +46 -39
  3. package/dist/_meta/commands.json +9358 -10581
  4. package/dist/_meta/hand-written-commands.json +784 -0
  5. package/dist/_meta/schemas.json +14870 -14667
  6. package/dist/abuse-reports-sDBTV0qZ.mjs +8 -0
  7. package/dist/{access-CxyW_sIW.mjs → access-DcNzuCue.mjs} +1 -1
  8. package/dist/account-BX90zXn5.mjs +2 -0
  9. package/dist/account-tags-Bz3JG5hI.mjs +9 -0
  10. package/dist/accounts-DCuW3xyZ.mjs +28 -0
  11. package/dist/{acm-CHacxa3s.mjs → acm-zjfShZLS.mjs} +1 -1
  12. package/dist/{addressing-BnqNmmYN.mjs → addressing-DORQ64Ux.mjs} +11 -11
  13. package/dist/{agent-context-Bu6yvDqA.mjs → agent-context-BgPR_aQr.mjs} +1 -1
  14. package/dist/agent-memory-C0hAUMeC.mjs +6 -0
  15. package/dist/ai-BpEBGMT2.mjs +5 -0
  16. package/dist/ai-audit-DnU3vn3E.mjs +2 -0
  17. package/dist/ai-gateway-COOrr_Yw.mjs +13 -0
  18. package/dist/ai-search-DKbN9Tyd.mjs +7 -0
  19. package/dist/ai-security-C_I5lo58.mjs +4 -0
  20. package/dist/{alerting-qa8SkXlD.mjs → alerting-4T8gmZs-.mjs} +4 -4
  21. package/dist/analytics-Bxh4TCP7.mjs +3 -0
  22. package/dist/analytics_engine-fV56bjVN.mjs +2 -0
  23. package/dist/{api-security-MfHbfZyf.mjs → api-security-COk_i184.mjs} +20 -20
  24. package/dist/argo-DIRfvxvv.mjs +2 -0
  25. package/dist/args-DlUhyGU0.mjs +2 -0
  26. package/dist/artifacts-BBfXNfUg.mjs +4 -0
  27. package/dist/audit-logs-BlOrlAWe.mjs +2 -0
  28. package/dist/{auth-DuLchM18.mjs → auth-D3X9HYhD.mjs} +3 -3
  29. package/dist/auth-DPhNN3Ly.mjs +5 -0
  30. package/dist/billing-B9e4PnvN.mjs +3 -0
  31. package/dist/body-parser-BshbixEq.mjs +2 -0
  32. package/dist/bot-management-D2JVeS-V.mjs +5 -0
  33. package/dist/botnet-feed-BTzTYs5d.mjs +3 -0
  34. package/dist/brand-protection-C5Q6Gpw9.mjs +3 -0
  35. package/dist/{browser-extension-q79xHrVW.mjs → browser-extension-u5uA0Lwk.mjs} +1 -1
  36. package/dist/browser-run-CHGOCTdG.mjs +4 -0
  37. package/dist/build-D0FhOj40.mjs +8 -0
  38. package/dist/{cache-Cl7vKJwH.mjs → cache-C6V7PbQM.mjs} +1 -1
  39. package/dist/{calls-DtK_ANxq.mjs → calls-Bye8Tyy-.mjs} +1 -1
  40. package/dist/certificate-authorities-B-U_e6JJ.mjs +2 -0
  41. package/dist/cf-Ds4JFovl.mjs +18 -0
  42. package/dist/chunk-LQW53VED-22IYZovK.mjs +119 -0
  43. package/dist/chunk-QBZBEHZB-CKzQKcIp.mjs +2 -0
  44. package/dist/{client-certificates-BtPU9GsQ.mjs → client-certificates-3RrC-6LG.mjs} +1 -1
  45. package/dist/{client-side-security-DAn-3jwp.mjs → client-side-security-DIdKvRMT.mjs} +1 -1
  46. package/dist/cloud-connector-CL1jPQud.mjs +2 -0
  47. package/dist/cloudforce-one-DULeqLkR.mjs +36 -0
  48. package/dist/command-C9VP3xaA.mjs +2 -0
  49. package/dist/{completions-BHE4pRjB.mjs → completions-CqgGKRAC.mjs} +3 -3
  50. package/dist/config.d.mts +1460 -1348
  51. package/dist/config.mjs +1 -1
  52. package/dist/connector-interrupts-CXlLObDv.mjs +2 -0
  53. package/dist/connector-telemetry-events-BrYX4ig4.mjs +2 -0
  54. package/dist/connector-telemetry-events-latest-BbpcII3_.mjs +2 -0
  55. package/dist/connector-telemetry-snapshots-BdeBQYcM.mjs +2 -0
  56. package/dist/connector-telemetry-snapshots-latest-DuCiimXl.mjs +2 -0
  57. package/dist/{connectors-Bo6ZT8PT.mjs → connectors-BQwyBJ4_.mjs} +1 -1
  58. package/dist/containers-BrQtGiNp.mjs +58 -0
  59. package/dist/{content-scan-D03UfK2X.mjs → content-scan-DNzhXYkY.mjs} +1 -1
  60. package/dist/{csamScanner-DgS-7ADh.mjs → csamScanner-CFq5s1Q3.mjs} +1 -1
  61. package/dist/{ct-alerting-8AKtNnUg.mjs → ct-alerting-CH6UmsGQ.mjs} +1 -1
  62. package/dist/custom-certificates-DnG73Wg2.mjs +5 -0
  63. package/dist/custom-csrs-bhClr2SU.mjs +3 -0
  64. package/dist/custom-hostnames-C0eiGvG9.mjs +5 -0
  65. package/dist/custom-nameservers-CVMhhLm6.mjs +3 -0
  66. package/dist/custom-pages-DTINMR30.mjs +3 -0
  67. package/dist/d1-sKdExJYF.mjs +20 -0
  68. package/dist/data-security-mV3a6UfW.mjs +7 -0
  69. package/dist/dcv-delegation-dBu3jdRw.mjs +2 -0
  70. package/dist/delegate.mjs +1 -1
  71. package/dist/{deploy-DGlmjPTS.mjs → deploy-BL59O1O1.mjs} +1 -1
  72. package/dist/deploy-input-Dz6q-__n.mjs +2 -0
  73. package/dist/{dev-BbLV0Ti-.mjs → dev-BDaavgH1.mjs} +2 -2
  74. package/dist/diagnostics-CJV6qWUA.mjs +3 -0
  75. package/dist/{directory-CCndFkbQ.mjs → directory-B5zCMusW.mjs} +1 -1
  76. package/dist/{dispatch-namespaces-C48JQ9EA.mjs → dispatch-namespaces-Dg5lu5xX.mjs} +1 -1
  77. package/dist/dist-BHi7UhXO.mjs +72 -0
  78. package/dist/dist-BWpErtDM.mjs +384 -0
  79. package/dist/{dls-BBq99pjI.mjs → dls-t0hnIe_P.mjs} +1 -1
  80. package/dist/dns-C8FC2hbh.mjs +29 -0
  81. package/dist/{dns-firewall-DdwVtm12.mjs → dns-firewall-CuhhUm55.mjs} +1 -1
  82. package/dist/{dot-prop-6SRZBKHT-C_xd7eTS.mjs → dot-prop-6SRZBKHT-wwGHcwAa.mjs} +1 -1
  83. package/dist/dry-run-DL2V6yFm.mjs +2 -0
  84. package/dist/durable-objects-BLrgM3Cw.mjs +2 -0
  85. package/dist/email-auth-BmYrl0pO.mjs +2 -0
  86. package/dist/email-routing-CF3_Z957.mjs +6 -0
  87. package/dist/email-security-F7OYcMkZ.mjs +18 -0
  88. package/dist/email-sending-EyU3WvGQ.mjs +7 -0
  89. package/dist/fieldExtractors-Cno37T2m.mjs +3 -0
  90. package/dist/firewall-8YWWy4iB.mjs +11 -0
  91. package/dist/flagship-C4x0l-8J.mjs +4 -0
  92. package/dist/{fraud-AH47n-wL.mjs → fraud-HR_SdUx3.mjs} +1 -1
  93. package/dist/google-tag-gateway-BdcS0WnX.mjs +2 -0
  94. package/dist/{healthchecks-DfEUG007.mjs → healthchecks-4qOvjrTN.mjs} +2 -2
  95. package/dist/{hostnames-DQUiD3Vr.mjs → hostnames-DehdYOMz.mjs} +1 -1
  96. package/dist/{hyperdrive-RyQboMWI.mjs → hyperdrive-3gD3hn70.mjs} +1 -1
  97. package/dist/iam-DR72hmii.mjs +6 -0
  98. package/dist/images-CeKc5JPh.mjs +8 -0
  99. package/dist/index.mjs +1 -1
  100. package/dist/intel-DtFix9WL.mjs +8 -0
  101. package/dist/{interactive-mV8PABm6.mjs → interactive-C7M55Wxx.mjs} +1 -1
  102. package/dist/ips-CtWCjXAN.mjs +2 -0
  103. package/dist/{keyless-certificates-oNu5jWKF.mjs → keyless-certificates-Dk24yQFz.mjs} +1 -1
  104. package/dist/keys-BmhG6Kn1.mjs +2 -0
  105. package/dist/{kv-Bi9B4E0A.mjs → kv-BuVPAuZP.mjs} +1 -1
  106. package/dist/{leaked-credential-checks-DKRjBLcr.mjs → leaked-credential-checks-XcZmt1I-.mjs} +1 -1
  107. package/dist/load-balancers-CylN-l7n.mjs +6 -0
  108. package/dist/{local-DTyuGwTw.mjs → local-Be3lg_9E.mjs} +1 -1
  109. package/dist/{local-runtime-IAXhEugU.mjs → local-runtime-Ce7k598H.mjs} +1 -1
  110. package/dist/logexplorer-CvRPoKbj.mjs +17 -0
  111. package/dist/logo-matches-Heuft3yF.mjs +2 -0
  112. package/dist/logos-DRYjGBDq.mjs +3 -0
  113. package/dist/logpush-Dve9jOMp.mjs +4 -0
  114. package/dist/{logs-DmWWL5f9.mjs → logs-SC86FE89.mjs} +1 -1
  115. package/dist/{magic-cloud-networking-XbTa6P52.mjs → magic-cloud-networking-DXzeqwX-.mjs} +4 -4
  116. package/dist/magic-network-monitoring-DW0Jl74i.mjs +4 -0
  117. package/dist/magic-transit-BK_3asH2.mjs +111 -0
  118. package/dist/managed-transforms-B6TV4qoE.mjs +3 -0
  119. package/dist/matches-Iss9Fo4R.mjs +2 -0
  120. package/dist/mcp-8wxXT6JU.mjs +4 -0
  121. package/dist/mesh-Bf9UAS4J.mjs +4 -0
  122. package/dist/{moq-CJpE-eNj.mjs → moq-ZKMFOeVz.mjs} +1 -1
  123. package/dist/mtls-certificates-DoWm6GiE.mjs +3 -0
  124. package/dist/{network-D2WRXCDe.mjs → network-B1lBARU9.mjs} +1 -1
  125. package/dist/{network-interconnects-Clq4X1U8.mjs → network-interconnects-CLYIFHfU.mjs} +1 -1
  126. package/dist/oauth-DuEONNgC.mjs +14 -0
  127. package/dist/{oauth-clients-hilWfAlm.mjs → oauth-clients-DgiTzLzu.mjs} +1 -1
  128. package/dist/oauth-scopes-BOBRMxjm.mjs +2 -0
  129. package/dist/observability-Jya7-zkl.mjs +4 -0
  130. package/dist/{open-PBXRGS4R-C46yIm3u.mjs → open-PBXRGS4R-CX8K4WYl.mjs} +3 -3
  131. package/dist/{organization-D41rIvJa.mjs → organization-CYxYV4e0.mjs} +6 -6
  132. package/dist/organizations-SacGUW44.mjs +2 -0
  133. package/dist/origin-ca-certificates-Ph1bJGQ1.mjs +3 -0
  134. package/dist/origin-post-quantum-encryption-BBLiGAGB.mjs +2 -0
  135. package/dist/origin-tls-client-auth-DSDgTN2X.mjs +4 -0
  136. package/dist/{output-DgW1hQGX.mjs → output-Ccqw2WOb.mjs} +1 -1
  137. package/dist/page-rules-BqEyFR2c.mjs +27 -0
  138. package/dist/pages-CQ7ZVWk1.mjs +14 -0
  139. package/dist/pay-per-crawl-BMe_3_Qj.mjs +4 -0
  140. package/dist/pipelines-6De2Pe2C.mjs +6 -0
  141. package/dist/precursor-iwK-1P_d.mjs +4 -0
  142. package/dist/progress-BqQcF5QH.mjs +2 -0
  143. package/dist/project-settings-C_1-JI6Y.mjs +3 -0
  144. package/dist/prompt-B0sWIs9c.mjs +3 -0
  145. package/dist/{public-BwQqexwo-DbWj8rrr.mjs → public-BYCVISMH-DnMJ5Jct.mjs} +1 -1
  146. package/dist/queries-c7zvnfEQ.mjs +3 -0
  147. package/dist/queues-BU6y16qS.mjs +6 -0
  148. package/dist/r2-Jo3QMahK.mjs +24 -0
  149. package/dist/{r2-data-catalog-DLtf9d6o.mjs → r2-data-catalog-B-tw-JdG.mjs} +1 -1
  150. package/dist/radar-DIYAMEof.mjs +2 -0
  151. package/dist/{rate-limits-B1YjnGue.mjs → rate-limits-DewOcznT.mjs} +1 -1
  152. package/dist/raw-fetch-Cc-MjHeL.mjs +2 -0
  153. package/dist/realtimekit-cnZEVNDn.mjs +7 -0
  154. package/dist/registrar-BsWr_aPM.mjs +23 -0
  155. package/dist/{registrar-sandbox-0i1T3zne.mjs → registrar-sandbox-BlcpUyIH.mjs} +6 -6
  156. package/dist/{registry-DDcSvd8H.mjs → registry-jifR3_Y6.mjs} +1 -1
  157. package/dist/reporting--1AyTV7k.mjs +2 -0
  158. package/dist/request-tracers-C_VX7X6-.mjs +2 -0
  159. package/dist/{resource-sharing-Ctdi9D-j.mjs → resource-sharing-Br5dqr3o.mjs} +1 -1
  160. package/dist/resource-tagging-C33U6T74.mjs +2 -0
  161. package/dist/rules-BfjzALMi.mjs +4 -0
  162. package/dist/rulesets-3i_1Vwt-.mjs +5 -0
  163. package/dist/rum-CjmIckiR.mjs +4 -0
  164. package/dist/{schema-BeXPWeK9.mjs → schema-1mwmslUV.mjs} +1 -1
  165. package/dist/schema-flags-llLJuFFw.mjs +5 -0
  166. package/dist/{scim-BgGsmHrL.mjs → scim-pApmzA5B.mjs} +1 -1
  167. package/dist/sdk-ZctLa5jW.mjs +3 -0
  168. package/dist/{secrets-store-BCpFhYFv.mjs → secrets-store-DBC9WJau.mjs} +1 -1
  169. package/dist/security-center-Djm06dq-.mjs +2 -0
  170. package/dist/{security-txt-Be2Bif0z.mjs → security-txt-Ci7bP4zH.mjs} +1 -1
  171. package/dist/{share-Bz2tFTUP.mjs → share-Dj-MNXrw.mjs} +4 -4
  172. package/dist/shared-BJvq4DkR.mjs +290 -0
  173. package/dist/smart-shield--8EpJjrF.mjs +4 -0
  174. package/dist/snippets-Dyz0PH60.mjs +4 -0
  175. package/dist/{spawn-CHkoow5W.mjs → spawn-C5Z7oWdp.mjs} +108 -112
  176. package/dist/{spectrum-BA0a42eM.mjs → spectrum-rAHWz8rH.mjs} +1 -1
  177. package/dist/{speed-mmOjxOzo.mjs → speed-BKepWBXj.mjs} +1 -1
  178. package/dist/src-gJma71Ec.mjs +108 -0
  179. package/dist/{ssl-Yr6kELqg.mjs → ssl-KdFiY3ev.mjs} +1 -1
  180. package/dist/startup-profile-GLNPHQ9U.mjs +17 -0
  181. package/dist/{state-DZC531l2.mjs → state-Cu3cItUg.mjs} +1 -1
  182. package/dist/{stream-Cu0kYWbc.mjs → stream-CKJ6Tb0M.mjs} +13 -13
  183. package/dist/submit-BxbKKhBn.mjs +2 -0
  184. package/dist/tags-DA8dq9fx.mjs +2 -0
  185. package/dist/tenant-DLXw48hS.mjs +2 -0
  186. package/dist/tenant-custom-nameservers-9G93XuvU.mjs +3 -0
  187. package/dist/{tools-D2Xxfkrc.mjs → tools-x8bj9E6b.mjs} +1 -1
  188. package/dist/{tunnel-CDYkWjnt.mjs → tunnel-CNQA5Flp.mjs} +1 -1
  189. package/dist/tunnels-CC10EOsU.mjs +2 -0
  190. package/dist/turnstile-CH58hnf4.mjs +23 -0
  191. package/dist/{ui-DIpjthrV.mjs → ui-CmnnBm_O.mjs} +1 -1
  192. package/dist/url-info-BpCgdUtL.mjs +2 -0
  193. package/dist/{url-normalization-BeKkOZz7.mjs → url-normalization-BzuynEy1.mjs} +1 -1
  194. package/dist/url-scanner-APIZbhB7.mjs +2 -0
  195. package/dist/user-2-NGebfI.mjs +12 -0
  196. package/dist/values-S_bNv819.mjs +2 -0
  197. package/dist/{vectorize-CjXfiFH4.mjs → vectorize-Bv7feLBC.mjs} +1 -1
  198. package/dist/waiting-rooms-Dk4LIpvm.mjs +11 -0
  199. package/dist/{web-assets-BzM5vVzy.mjs → web-assets-C1UmOyzD.mjs} +1 -1
  200. package/dist/web3-GnUocVYH.mjs +4 -0
  201. package/dist/workers-J1-PLwdl.mjs +28 -0
  202. package/dist/{workers-builds-B44wc67O.mjs → workers-builds-DCHmWOMS.mjs} +4 -4
  203. package/dist/{workflows-rFuQWClt.mjs → workflows-CArfEI2c.mjs} +2 -2
  204. package/dist/zaraz-mg2YlR3_.mjs +2 -0
  205. package/dist/zero-trust-DVdUPtj1.mjs +93 -0
  206. package/dist/zone-DMAfrDJX.mjs +2 -0
  207. package/dist/zones-CNwxUi7I.mjs +21 -0
  208. package/package.json +10 -7
  209. package/dist/abuse-reports-CzDAjFpo.mjs +0 -8
  210. package/dist/account-Dd4-tDYJ.mjs +0 -2
  211. package/dist/account-tags-65fAlHrf.mjs +0 -9
  212. package/dist/accounts-Bp5KGc6r.mjs +0 -28
  213. package/dist/agent-memory-D--BQS0W.mjs +0 -6
  214. package/dist/ai-BnVlQDiI.mjs +0 -5
  215. package/dist/ai-audit-CfpDKXkD.mjs +0 -2
  216. package/dist/ai-gateway-oG4j_oYN.mjs +0 -13
  217. package/dist/ai-search-B2l3B_jn.mjs +0 -7
  218. package/dist/ai-security-byjIIrfl.mjs +0 -4
  219. package/dist/analytics-DeIKjC9n.mjs +0 -3
  220. package/dist/analytics_engine-BnECMIWJ.mjs +0 -2
  221. package/dist/argo-DFerMyXF.mjs +0 -2
  222. package/dist/artifacts-CtyEYYDa.mjs +0 -4
  223. package/dist/audit-logs-retFtvow.mjs +0 -2
  224. package/dist/auth-aazs91XL.mjs +0 -5
  225. package/dist/billing-CxQVqpGZ.mjs +0 -3
  226. package/dist/body-parser-CYD7PKFC.mjs +0 -2
  227. package/dist/bot-management-Rli7v7tg.mjs +0 -5
  228. package/dist/botnet-feed-Cw6XSEf8.mjs +0 -3
  229. package/dist/brand-protection-CTvnHGfV.mjs +0 -3
  230. package/dist/browser-run-FwtwnBzA.mjs +0 -4
  231. package/dist/build-Dji9BYmV.mjs +0 -2
  232. package/dist/certificate-authorities-DZP1RzAs.mjs +0 -2
  233. package/dist/cf-oSz9pud_.mjs +0 -18
  234. package/dist/chunk-LQW53VED-Xakf_rUn.mjs +0 -499
  235. package/dist/cloud-connector-BpVcvhjZ.mjs +0 -2
  236. package/dist/cloudforce-one-2PecncfX.mjs +0 -30
  237. package/dist/connector-interrupts-ollUcksZ.mjs +0 -2
  238. package/dist/connector-telemetry-events-D5_3X7XW.mjs +0 -2
  239. package/dist/connector-telemetry-snapshots-CJ9gLRFR.mjs +0 -2
  240. package/dist/containers-Bog7j0Hw.mjs +0 -54
  241. package/dist/custom-certificates-4y35UC1X.mjs +0 -5
  242. package/dist/custom-csrs-DwBrLh-H.mjs +0 -4
  243. package/dist/custom-hostnames-CDIAnsRa.mjs +0 -5
  244. package/dist/custom-nameservers-stk7ymnP.mjs +0 -3
  245. package/dist/custom-pages-vfDxrXbt.mjs +0 -4
  246. package/dist/d1-Cllm-iTT.mjs +0 -20
  247. package/dist/data-security-rnoSCEdL.mjs +0 -7
  248. package/dist/dcv-delegation-DCRCOL6l.mjs +0 -2
  249. package/dist/deploy-input-DhCo1I0I.mjs +0 -242
  250. package/dist/diagnostics-D5Yo2xqx.mjs +0 -3
  251. package/dist/dist-COfwjT96.mjs +0 -72
  252. package/dist/dns-DdQYtenF.mjs +0 -29
  253. package/dist/durable-objects-BvxXBht_.mjs +0 -2
  254. package/dist/email-CGOC_evd.mjs +0 -2
  255. package/dist/email-auth-DFvXKSkg.mjs +0 -2
  256. package/dist/email-routing-QBRPBlyl.mjs +0 -6
  257. package/dist/email-security-BFagcRPP.mjs +0 -18
  258. package/dist/email-sending-Ddhe7xjN.mjs +0 -7
  259. package/dist/filters-CGisPGD1.mjs +0 -4
  260. package/dist/firewall-DD8U-Brd.mjs +0 -11
  261. package/dist/flagship-FJHc4mFi.mjs +0 -4
  262. package/dist/google-tag-gateway-149kbuG_.mjs +0 -2
  263. package/dist/iam-BhHYhMXO.mjs +0 -6
  264. package/dist/images-CDViyKtZ.mjs +0 -8
  265. package/dist/intel-YHZbPlS3.mjs +0 -8
  266. package/dist/ips-BpCdldFx.mjs +0 -2
  267. package/dist/keys-yYtv7Ztr.mjs +0 -2
  268. package/dist/load-balancers-jRCN75mX.mjs +0 -7
  269. package/dist/logexplorer-kO8CULiK.mjs +0 -24
  270. package/dist/logo-matches-LyDAYPbI.mjs +0 -2
  271. package/dist/logos-O9f5bGSB.mjs +0 -3
  272. package/dist/logpush-dtXLu3Ck.mjs +0 -5
  273. package/dist/magic-network-monitoring-CpfkgZMp.mjs +0 -4
  274. package/dist/magic-transit-DwgZeIj-.mjs +0 -111
  275. package/dist/managed-transforms-DCmogkxv.mjs +0 -3
  276. package/dist/matches-BAeN8VM1.mjs +0 -2
  277. package/dist/mcp-DKZ2D050.mjs +0 -4
  278. package/dist/media-CnxgOViL.mjs +0 -2
  279. package/dist/mesh-CzIPtuaM.mjs +0 -4
  280. package/dist/mtls-certificates-Bbm_1lQI.mjs +0 -3
  281. package/dist/oauth-BPizUUqP.mjs +0 -15
  282. package/dist/oauth-scopes-CmbgsPYd.mjs +0 -2
  283. package/dist/observability-DXYgDdU5.mjs +0 -4
  284. package/dist/organizations-eNzfOwlP.mjs +0 -2
  285. package/dist/origin-ca-certificates-DaiAmw45.mjs +0 -3
  286. package/dist/origin-post-quantum-encryption-7YztBged.mjs +0 -2
  287. package/dist/origin-tls-client-auth-DRwURM8s.mjs +0 -4
  288. package/dist/page-rules-B2Csdc4h.mjs +0 -18
  289. package/dist/pages-BAL6Q7OY.mjs +0 -14
  290. package/dist/pay-per-crawl-C-1-ZAtn.mjs +0 -4
  291. package/dist/pipelines-cyQOuFLb.mjs +0 -6
  292. package/dist/precursor-BrweY39h.mjs +0 -4
  293. package/dist/progress-B84wYh91.mjs +0 -2
  294. package/dist/prompt-CDtLWxNv.mjs +0 -3
  295. package/dist/queries-oM8uGZy5.mjs +0 -3
  296. package/dist/queues-CTx04ZNw.mjs +0 -6
  297. package/dist/r2-CnlIUn7R.mjs +0 -24
  298. package/dist/radar-CGNgGh8v.mjs +0 -2
  299. package/dist/raw-fetch-Dz-QBoP_.mjs +0 -2
  300. package/dist/realtimekit-BPwzhNS9.mjs +0 -7
  301. package/dist/registrar-BEcb90RX.mjs +0 -21
  302. package/dist/reporting-CLbjHlnw.mjs +0 -2
  303. package/dist/request-tracers-BcKpofP1.mjs +0 -2
  304. package/dist/resource-tagging-DGEyVTDN.mjs +0 -2
  305. package/dist/rules-CmuB5rIN.mjs +0 -4
  306. package/dist/rulesets-CGaMq8vG.mjs +0 -8
  307. package/dist/rum-QT6EP4JK.mjs +0 -4
  308. package/dist/schema-flags-DHryz6SF.mjs +0 -5
  309. package/dist/sdk-m4xeaua4.mjs +0 -3
  310. package/dist/security-center-BNm4uPVB.mjs +0 -2
  311. package/dist/session-Ckt20hHa.mjs +0 -2
  312. package/dist/shared-BzPQog8H.mjs +0 -2
  313. package/dist/smart-shield-SODkOUyO.mjs +0 -4
  314. package/dist/snippets-B5jY8v_7.mjs +0 -4
  315. package/dist/src-CHW7s5IS.mjs +0 -108
  316. package/dist/submit-Dl_27e0n.mjs +0 -2
  317. package/dist/tags-Cdo_Pwtr.mjs +0 -2
  318. package/dist/tenant-EX-ANl6X.mjs +0 -2
  319. package/dist/tenant-custom-nameservers-BPHUeckw.mjs +0 -3
  320. package/dist/triggers-Bf9hbP3h.mjs +0 -2
  321. package/dist/tunnels-CgyX8R2J.mjs +0 -2
  322. package/dist/turnstile-BUtzlW-0.mjs +0 -23
  323. package/dist/url-info-CJsa1Oc9.mjs +0 -2
  324. package/dist/url-scanner-Cz-yl0_3.mjs +0 -2
  325. package/dist/user-BxHjEqpd.mjs +0 -12
  326. package/dist/values-C43NurfT.mjs +0 -2
  327. package/dist/versions-BFbc90Wu.mjs +0 -2
  328. package/dist/waiting-rooms-C5jSQv_r.mjs +0 -11
  329. package/dist/web3-Ctv9HGiR.mjs +0 -4
  330. package/dist/workers-D-YbIedB.mjs +0 -24
  331. package/dist/zaraz-BA6kY-b6.mjs +0 -2
  332. package/dist/zero-trust-DOFLlUz1.mjs +0 -102
  333. package/dist/zone-B_rgejLV.mjs +0 -2
  334. package/dist/zone-tags-BWdza4rH.mjs +0 -9
  335. package/dist/zones-DTWO7Vvn.mjs +0 -21
  336. /package/dist/{Page-C-JHZnIy.mjs → Page-9ry_XAVC.mjs} +0 -0
  337. /package/dist/{alerts-B85uj2Vx.mjs → alerts-15-IW4jE.mjs} +0 -0
  338. /package/dist/{autorag-Do9l_LyY.mjs → autorag-CFwRkEKw.mjs} +0 -0
  339. /package/dist/{brands-DateHCdd.mjs → brands-BgT1vu9B.mjs} +0 -0
  340. /package/dist/{chunk-6EUZQHAF-l8tR2Qyj.mjs → chunk-6EUZQHAF-C3w62dek.mjs} +0 -0
  341. /package/dist/{chunk-Q72B4Q5Z-CPy_WJKU.mjs → chunk-Q72B4Q5Z-DVMMVVEs.mjs} +0 -0
  342. /package/dist/{clear-CB2kgcEB.mjs → clear-BlCK85Me.mjs} +0 -0
  343. /package/dist/{cli-types-BWdZbsFE.mjs → cli-types-DAYeL_Mj.mjs} +0 -0
  344. /package/dist/{domain-info-DJHEt8JJ.mjs → domain-info-C7LBxPBt.mjs} +0 -0
  345. /package/dist/{health-buY5f5pp.mjs → health-DZFfafkX.mjs} +0 -0
  346. /package/dist/{input-validation-BBKJRoRB.mjs → input-validation-QDIYu7Vb.mjs} +0 -0
  347. /package/dist/{internal-CwyoJUHh.mjs → internal-BKHC2D1Y.mjs} +0 -0
  348. /package/dist/{live-wEpA5V_n.mjs → live-DwCvDmaH.mjs} +0 -0
  349. /package/dist/{metadata-8AkOftcB.mjs → metadata-B5yfL0ln.mjs} +0 -0
  350. /package/dist/{rate-limit-analytics-Bf1uT0lT.mjs → rate-limit-analytics-B8Vuu1sU.mjs} +0 -0
  351. /package/dist/{ready-CBSCPiHE.mjs → ready-D9H2zHHI.mjs} +0 -0
  352. /package/dist/{recent-submissions-Dpmq1f7z.mjs → recent-submissions-BPo0J80d.mjs} +0 -0
  353. /package/dist/{refute-u7ZPQJZy.mjs → refute-2W8NLCN4.mjs} +0 -0
  354. /package/dist/{resolve-XgxRJ-Ys.mjs → resolve-B8CyM1mi.mjs} +0 -0
  355. /package/dist/{scan-logo-Ba8WZAyp.mjs → scan-logo-D5x6F1Y0.mjs} +0 -0
  356. /package/dist/{scan-page-Bcq3Ei86.mjs → scan-page-CWhta3x7.mjs} +0 -0
  357. /package/dist/{search-D9WDwnV4.mjs → search-DZmBQJL9.mjs} +0 -0
  358. /package/dist/{signed-url-CjPbG5zV.mjs → signed-url-CQrmWgz5.mjs} +0 -0
  359. /package/dist/{submission-info-Z9hhp9Rq.mjs → submission-info-C98A0bqq.mjs} +0 -0
  360. /package/dist/{theme-BePJemMn.mjs → theme-CrIBazAF.mjs} +0 -0
  361. /package/dist/{total-queries-aKAYX1iX.mjs → total-queries-BZoaFoDE.mjs} +0 -0
  362. /package/dist/{tracked-domains-Ck7Jm4Kn.mjs → tracked-domains-CNHogPHx.mjs} +0 -0
  363. /package/dist/{verify-2yi0H93r.mjs → verify-4e4L9IRk.mjs} +0 -0
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import{t as e}from"./local-DTyuGwTw.mjs";import{f as t,g as n,h as r}from"./oauth-BPizUUqP.mjs";import{a as i,r as a}from"./auth-DuLchM18.mjs";import{t as o}from"./output-DgW1hQGX.mjs";import{n as s,t as c}from"./progress-B84wYh91.mjs";import{n as l,t as u}from"./body-parser-CYD7PKFC.mjs";import{n as d}from"./input-validation-BBKJRoRB.mjs";import{a as f,i as p,n as m}from"./prompt-CDtLWxNv.mjs";import{t as h}from"./cli-types-BWdZbsFE.mjs";function ee(e){return e.option(`kind`,{type:`string`,description:`The kind of the schema`,choices:[`openapi_v3`]}).option(`name`,{type:`string`,description:`A human-readable name for the schema`}).option(`source`,{type:`string`,description:`The raw schema, e.g., the OpenAPI schema, either as JSON or YAML`}).option(`validation-enabled`,{type:`boolean`,description:`An indicator if this schema is enabled`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const te={command:`create`,describe:`Uploads an OpenAPI schema that defines expected request formats for API operations.`,builder:ee,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation schemas create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?u({kind:d(e.kind,`kind`,`text`),name:d(e.name,`name`,`text`),source:d(e.source,`source`,`text`),validation_enabled:e[`validation-enabled`]}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.schemaValidation.schemas.create({...r,zone_id:n})),{successLabel:`Created`});return}if(e.kind===void 0&&(e.kind=await p(`kind`,`The kind of the schema`,[`openapi_v3`])),e.name===void 0&&(e.name=await f(`name`,`A human-readable name for the schema`)),e.source===void 0&&(e.source=await f(`source`,`The raw schema, e.g., the OpenAPI schema, either as JSON or YAML`)),e[`validation-enabled`]===void 0)throw Error(`--validation-enabled is required (or pass --body with this field set).`);let i=u({kind:d(e.kind,`kind`,`text`),name:d(e.name,`name`,`text`),source:d(e.source,`source`,`text`),validation_enabled:e[`validation-enabled`]});o(await c(`Creating`,async()=>t.apiSecurity.schemaValidation.schemas.create({...i,zone_id:n})),{successLabel:`Created`})}};function g(e){return e.positional(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const _={command:`delete <schema-id>`,describe:`Permanently removes an uploaded OpenAPI schema from API Security. Operations using this schema will lose their validation rules.`,builder:g,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation schemas delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/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),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await m({force:!!e.force,message:`This operation permanently deletes the uploaded schema and removes its validation coverage.`})){process.stderr.write(`Aborted.
3
- `);return}o(await c(`Deleting`,async()=>t.apiSecurity.schemaValidation.schemas.delete({zone_id:n,schema_id:e[`schema-id`]})),{successLabel:`Deleted`})}};function v(e){return e.positional(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,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 y={command:`get <schema-id>`,describe:`Gets the contents and metadata of a specific OpenAPI schema uploaded to API Security.`,builder:v,handler:async e=>{let t={omit_source:e[`omit-source`]};if(e.dryRun){s({command:`cf api-security schema-validation schemas get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/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 n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.get({zone_id:i,schema_id:e[`schema-id`],...t})),{successLabel:`Loaded`})}};function b(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 x={command:`list`,describe:`Lists all unique hosts found in uploaded OpenAPI schemas for the zone.`,builder:b,handler:async e=>{let t={page:e.page,per_page:e[`per-page`]};if(e.dryRun){s({command:`cf api-security schema-validation schemas hosts list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas/hosts`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.hosts.list({zone_id:i,...t})),{successLabel:`Loaded`})}},S={command:`hosts`,describe:`Operations for schema-validation.schemas.hosts`,builder:e=>e.command(x).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};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(`omit-source`,{type:`boolean`,description:`Omit the source-files of schemas and only retrieve their meta-data.`}).option(`validation-enabled`,{type:`boolean`,description:`Filter for enabled schemas`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const w={command:`list`,describe:`Lists all OpenAPI schemas uploaded to API Security.`,builder:C,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){s({command:`cf api-security schema-validation schemas list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.list({zone_id:i,...t})),{successLabel:`Loaded`})}};function T(e){return e.option(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,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 Web Asset Management or not. `new` will just return operations from the schema that do not exist otherwise. `existing` will just return operations from the schema that already exist.",choices:[`new`,`existing`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const E={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:h(T),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){s({command:`cf api-security schema-validation schemas operations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas/${e[`schema-id`]==null?`<schema-id>`:encodeURIComponent(String(e[`schema-id`]))}/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"schema-id":String(e[`schema-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.operations.list({zone_id:i,schema_id:e[`schema-id`],...t})),{successLabel:`Loaded`})}},D={command:`operations`,describe:`Operations for schema-validation.schemas.operations`,builder:e=>e.command(E).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function O(e){return e.positional(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,demandOption:!0}).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}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const k={command:`set-validation <schema-id>`,describe:`Enables or disables validation for an uploaded OpenAPI schema without changing the schema document.`,builder:O,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation schemas set-validation`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/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?u({validation_enabled:e[`validation-enabled`]}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.schemas.setValidation({...r,zone_id:n,schema_id:e[`schema-id`]})),{successLabel:`Updated`});return}let i=u({validation_enabled:e[`validation-enabled`]});o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.schemas.setValidation({...i,zone_id:n,schema_id:e[`schema-id`]})),{successLabel:`Updated`})}},A={command:`schemas`,describe:`Operations for schema-validation.schemas`,builder:e=>e.command(te).command(_).command(y).command(w).command(k).command(S).command(D).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function j(e){return e.option(`validation-default-mitigation-action`,{type:`string`,description:`The default mitigation action used
2
+ import{t as e}from"./local-Be3lg_9E.mjs";import{f as t,g as n,h as r}from"./oauth-DuEONNgC.mjs";import{a as i,r as a}from"./auth-D3X9HYhD.mjs";import{t as o}from"./output-Ccqw2WOb.mjs";import{t as s}from"./dry-run-DL2V6yFm.mjs";import{t as c}from"./progress-BqQcF5QH.mjs";import{n as l,r as u,t as d}from"./body-parser-BshbixEq.mjs";import{n as f}from"./input-validation-QDIYu7Vb.mjs";import{a as p,i as m,n as h}from"./prompt-B0sWIs9c.mjs";import{t as g}from"./cli-types-DAYeL_Mj.mjs";function ee(e){return e.option(`kind`,{type:`string`,description:`The kind of the schema`,choices:[`openapi_v3`]}).option(`name`,{type:`string`,description:`A human-readable name for the schema`}).option(`source`,{type:`string`,description:`The raw schema, e.g., the OpenAPI schema, either as JSON or YAML`}).option(`validation-enabled`,{type:`boolean`,description:`An indicator if this schema is enabled`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const te={command:`create`,describe:`Uploads an OpenAPI schema that defines expected request formats for API operations.`,builder:ee,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation schemas create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({kind:f(e.kind,`kind`,`text`),name:f(e.name,`name`,`text`),source:f(e.source,`source`,`text`),validation_enabled:e[`validation-enabled`]}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.schemaValidation.schemas.create({...r,zone_id:n})),{successLabel:`Created`});return}if(e.kind===void 0&&(e.kind=await m(`kind`,`The kind of the schema`,[`openapi_v3`])),e.name===void 0&&(e.name=await p(`name`,`A human-readable name for the schema`)),e.source===void 0&&(e.source=await p(`source`,`The raw schema, e.g., the OpenAPI schema, either as JSON or YAML`)),e[`validation-enabled`]===void 0)throw Error(`--validation-enabled is required (or pass --body with this field set).`);let i=d({kind:f(e.kind,`kind`,`text`),name:f(e.name,`name`,`text`),source:f(e.source,`source`,`text`),validation_enabled:e[`validation-enabled`]});o(await c(`Creating`,async()=>t.apiSecurity.schemaValidation.schemas.create({...i,zone_id:n})),{successLabel:`Created`})}};function _(e){return e.positional(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,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 v={command:`delete <schema-id>`,describe:`Permanently removes an uploaded OpenAPI schema from API Security. Operations using this schema will lose their validation rules.`,builder:_,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation schemas delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/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),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await h({force:!!e.force,message:`This operation permanently deletes the uploaded schema and removes its validation coverage.`})){process.stderr.write(`Aborted.
3
+ `);return}o(await c(`Deleting`,async()=>t.apiSecurity.schemaValidation.schemas.delete({zone_id:n,schema_id:e[`schema-id`]})),{successLabel:`Deleted`})}};function y(e){return e.positional(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,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 b={command:`get <schema-id>`,describe:`Gets the contents and metadata of a specific OpenAPI schema uploaded to API Security.`,builder:y,handler:async e=>{let t={omit_source:e[`omit-source`]};if(e.dryRun){s({command:`cf api-security schema-validation schemas get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/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 n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.get({zone_id:i,schema_id:e[`schema-id`],...t})),{successLabel:`Loaded`})}};function x(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 S={command:`list`,describe:`Lists all unique hosts found in uploaded OpenAPI schemas for the zone.`,builder:x,handler:async e=>{let t={page:e.page,per_page:e[`per-page`]};if(e.dryRun){s({command:`cf api-security schema-validation schemas hosts list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas/hosts`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.hosts.list({zone_id:i,...t})),{successLabel:`Loaded`})}},C={command:`hosts`,describe:`Operations for schema-validation.schemas.hosts`,builder:e=>e.command(S).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function w(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:`Filter for enabled schemas`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const T={command:`list`,describe:`Lists all OpenAPI schemas uploaded to API Security.`,builder:w,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){s({command:`cf api-security schema-validation schemas list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.list({zone_id:i,...t})),{successLabel:`Loaded`})}};function E(e){return e.option(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,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 Web Asset Management or not. `new` will just return operations from the schema that do not exist otherwise. `existing` will just return operations from the schema that already exist.",choices:[`new`,`existing`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const D={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:g(E),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){s({command:`cf api-security schema-validation schemas operations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/schemas/${e[`schema-id`]==null?`<schema-id>`:encodeURIComponent(String(e[`schema-id`]))}/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"schema-id":String(e[`schema-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.schemas.operations.list({zone_id:i,schema_id:e[`schema-id`],...t})),{successLabel:`Loaded`})}},O={command:`operations`,describe:`Operations for schema-validation.schemas.operations`,builder:e=>e.command(D).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function k(e){return e.positional(`schema-id`,{type:`string`,description:`The unique identifier of the schema`,demandOption:!0}).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}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const A={command:`set-validation <schema-id>`,describe:`Enables or disables validation for an uploaded OpenAPI schema without changing the schema document.`,builder:k,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation schemas set-validation`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/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?d({validation_enabled:e[`validation-enabled`]}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.schemas.setValidation({...r,zone_id:n,schema_id:e[`schema-id`]})),{successLabel:`Updated`});return}let i=d({validation_enabled:e[`validation-enabled`]});o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.schemas.setValidation({...i,zone_id:n,schema_id:e[`schema-id`]})),{successLabel:`Updated`})}},j={command:`schemas`,describe:`Operations for schema-validation.schemas`,builder:e=>e.command(te).command(v).command(b).command(T).command(A).command(C).command(O).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function M(e){return e.option(`validation-default-mitigation-action`,{type:`string`,description:`The default mitigation action used
4
4
  Mitigation actions are as follows:
5
5
 
6
6
  - \`"log"\` - log request when request does not conform to schema
@@ -10,8 +10,8 @@ Mitigation actions are as follows:
10
10
 
11
11
  - \`"none"\` - skip running schema validation entirely for the request
12
12
  - \`null\` - clears any existing override
13
- `,choices:[`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 M={command:`edit`,describe:`Partially updates global schema validation settings for a zone using PATCH semantics.`,builder:j,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?u({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`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.edit({body:r,zone_id:n})),{successLabel:`Updated`});return}let i=u({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(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.edit({body:i,zone_id:n})),{successLabel:`Updated`})}};function N(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 the current global schema validation settings for a zone.`,builder:N,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.schemaValidation.settings.get({zone_id:n})),{successLabel:`Loaded`})}};function F(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 I={command:`bulk-edit`,describe:`Updates schema validation settings for multiple API operations in a single request. Efficient for applying consistent validation rules across endpoints.`,builder:F,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations bulk-edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.operations.bulkEdit({body:r,zone_id:n})),{successLabel:`Updated`});return}o(await c(`Updating`,async()=>i(t,`PATCH`,`/zones/${e.zoneId}/schema_validation/settings/operations`)),{successLabel:`Updated`})}};function L(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 R={command:`delete <operation-id>`,describe:`Removes custom schema validation settings for a specific API operation, reverting to zone-level defaults.`,builder:L,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/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),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await m({force:!!e.force,message:`This operation deletes the operation-specific schema validation setting and restores the zone default.`})){process.stderr.write(`Aborted.
14
- `);return}o(await c(`Deleting`,async()=>t.apiSecurity.schemaValidation.settings.operations.delete({zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Deleted`})}};function z(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 B={command:`get <operation-id>`,describe:`Retrieves the schema validation settings configured for a specific API operation.`,builder:z,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/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),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.schemaValidation.settings.operations.get({zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Loaded`})}};function V(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 H={command:`list`,describe:`Lists per-operation schema validation settings configured for the zone.`,builder:V,handler:async e=>{let t={page:e.page,per_page:e[`per-page`]};if(e.dryRun){s({command:`cf api-security schema-validation settings operations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.settings.operations.list({zone_id:i,...t})),{successLabel:`Loaded`})}};function U(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` - clears any mitigation action\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 W={command:`update <operation-id>`,describe:`Fully updates schema validation settings for a specific API operation.`,builder:U,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/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:`json`,body:e.body===void 0?u({mitigation_action:d(e[`mitigation-action`],`mitigation-action`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.operations.update({...r,zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Updated`});return}e[`mitigation-action`]===void 0&&(e[`mitigation-action`]=await p(`mitigation-action`,'When set, this applies a mitigation action to this operation - `"log"` - log request when request does not conform to schema for this operation - `"block"` - deny access to the site when request does not conform to schema for this operation - `"none"` - will skip mitigation for this operation - `null` - clears any mitigation action ',[`log`,`block`,`none`]));let i=u({mitigation_action:d(e[`mitigation-action`],`mitigation-action`,`text`)});o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.operations.update({...i,zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Updated`})}},G={command:`operations`,describe:`Operations for schema-validation.settings.operations`,builder:e=>e.command(I).command(R).command(B).command(H).command(W).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function K(e){return e.option(`validation-default-mitigation-action`,{type:`string`,description:`The default mitigation action used
13
+ `,choices:[`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 N={command:`edit`,describe:`Partially updates global schema validation settings for a zone using PATCH semantics.`,builder:M,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({validation_default_mitigation_action:f(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:f(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.edit({body:r,zone_id:n})),{successLabel:`Updated`});return}let i=d({validation_default_mitigation_action:f(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:f(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)});o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.edit({body:i,zone_id:n})),{successLabel:`Updated`})}};function P(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 current global schema validation settings for a zone.`,builder:P,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.schemaValidation.settings.get({zone_id:n})),{successLabel:`Loaded`})}};function I(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 L={command:`bulk-edit`,describe:`Updates schema validation settings for multiple API operations in a single request. Efficient for applying consistent validation rules across endpoints.`,builder:I,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations bulk-edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.operations.bulkEdit({body:r,zone_id:n})),{successLabel:`Updated`});return}o(await c(`Updating`,async()=>i(t,`PATCH`,`/zones/${e.zoneId}/schema_validation/settings/operations`)),{successLabel:`Updated`})}};function R(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 z={command:`delete <operation-id>`,describe:`Removes custom schema validation settings for a specific API operation, reverting to zone-level defaults.`,builder:R,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/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),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await h({force:!!e.force,message:`This operation deletes the operation-specific schema validation setting and restores the zone default.`})){process.stderr.write(`Aborted.
14
+ `);return}o(await c(`Deleting`,async()=>t.apiSecurity.schemaValidation.settings.operations.delete({zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Deleted`})}};function B(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 V={command:`get <operation-id>`,describe:`Retrieves the schema validation settings configured for a specific API operation.`,builder:B,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/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),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.schemaValidation.settings.operations.get({zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Loaded`})}};function H(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 U={command:`list`,describe:`Lists per-operation schema validation settings configured for the zone.`,builder:H,handler:async e=>{let t={page:e.page,per_page:e[`per-page`]};if(e.dryRun){s({command:`cf api-security schema-validation settings operations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/operations`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.schemaValidation.settings.operations.list({zone_id:i,...t})),{successLabel:`Loaded`})}};function W(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` - clears any mitigation action\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 G={command:`update <operation-id>`,describe:`Fully updates schema validation settings for a specific API operation.`,builder:W,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings operations update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings/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:`json`,body:e.body===void 0?d({mitigation_action:f(e[`mitigation-action`],`mitigation-action`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.operations.update({...r,zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Updated`});return}e[`mitigation-action`]===void 0&&(e[`mitigation-action`]=await m(`mitigation-action`,'When set, this applies a mitigation action to this operation - `"log"` - log request when request does not conform to schema for this operation - `"block"` - deny access to the site when request does not conform to schema for this operation - `"none"` - will skip mitigation for this operation - `null` - clears any mitigation action ',[`log`,`block`,`none`]));let i=d({mitigation_action:f(e[`mitigation-action`],`mitigation-action`,`text`)});o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.operations.update({...i,zone_id:n,operation_id:e[`operation-id`]})),{successLabel:`Updated`})}},K={command:`operations`,describe:`Operations for schema-validation.settings.operations`,builder:e=>e.command(L).command(z).command(V).command(U).command(G).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function q(e){return e.option(`validation-default-mitigation-action`,{type:`string`,description:`The default mitigation action used
15
15
  Mitigation actions are as follows:
16
16
 
17
17
  - \`"log"\` - log request when request does not conform to schema
@@ -21,30 +21,30 @@ Mitigation actions are as follows:
21
21
 
22
22
  - \`"none"\` - skip running schema validation entirely for the request
23
23
  - \`null\` - clears any existing override
24
- `,choices:[`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 q={command:`update`,describe:`Fully updates global schema validation settings for a zone, replacing existing configuration.`,builder:K,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?u({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`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.update({...r,zone_id:n})),{successLabel:`Updated`});return}e[`validation-default-mitigation-action`]===void 0&&(e[`validation-default-mitigation-action`]=await p(`validation-default-mitigation-action`,'The default mitigation action used 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 - `"none"` - skip running schema validation ',[`none`,`log`,`block`]));let i=u({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(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.update({...i,zone_id:n})),{successLabel:`Updated`})}},J={command:`settings`,describe:`Operations for schema-validation.settings`,builder:e=>e.command(M).command(P).command(q).command(G).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Y={command:`schema-validation`,describe:`Operations for schema-validation`,builder:e=>e.command(A).command(J).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function X(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 Z={command:`get`,describe:`Returns the authentication identifier characteristics configured for the zone. Header, cookie, or JWT claim values identify distinct API sessions.`,builder:X,handler:async e=>{let t={normalize:e.normalize};if(e.dryRun){s({command:`cf api-security session-identifiers 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 n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.sessionIdentifiers.get({zone_id:i,...t})),{successLabel:`Loaded`})}};function Q(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 ne={command:`update`,describe:`Replaces the zone's authentication identifier characteristics used to identify distinct API sessions.`,builder:Q,handler:async e=>{let t={normalize:e.normalize};if(e.dryRun){s({command:`cf api-security session-identifiers 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:l(e.body)});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});if(e.zoneId=i,e.body){let r=l(e.body);new URLSearchParams(Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Updating`,async()=>n.apiSecurity.sessionIdentifiers.update({body:r,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.`)}},re={command:`session-identifiers`,describe:`Operations for session-identifiers`,builder:e=>e.command(Z).command(ne).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ie(e){return e.option(`description`,{type:`string`,description:`The description field`}).option(`title`,{type:`string`,description:`The title field`}).option(`token-type`,{type:`string`,description:`The token_type field`,choices:[`JWT`]}).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 ae={command:`create`,describe:`Creates a JWT validation configuration for the zone.`,builder:ie,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?u({description:d(e.description,`description`,`text`),title:d(e.title,`title`,`text`),token_type:d(e[`token-type`],`token-type`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.configurations.create({...r,zone_id:n})),{successLabel:`Created`});return}e.description===void 0&&(e.description=await f(`description`,`The description field`)),e.title===void 0&&(e.title=await f(`title`,`The title field`)),e[`token-type`]===void 0&&(e[`token-type`]=await p(`token-type`,`The token_type field`,[`JWT`]));let i=u({description:d(e.description,`description`,`text`),title:d(e.title,`title`,`text`),token_type:d(e[`token-type`],`token-type`,`text`)});o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.configurations.create({...i,zone_id:n})),{successLabel:`Created`})}};function oe(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:"Request payload for PATCH credentials. Provided keys define the complete stored key set, and stored keys omitted from payload are removed. For each provided key identity (`{alg,kid}`), payload fields overwrite the stored key before validation and omitted fields inherit from the stored key. Key identities must be unique."})}const se={command:`edit <config-id>`,describe:`Updates the configuration's complete key set while allowing omitted fields on existing keys to retain stored values. Omitted key identities are removed.`,builder:oe,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations credentials edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}/credentials`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.credentials.edit({...r,zone_id:n,config_id:e[`config-id`]})),{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 ce(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:"Request payload for create and PUT credentials operations. Provided keys define the complete stored key set. Key identities (`{alg,kid}`) must be unique."})}const le={command:`update <config-id>`,describe:`Replaces the configuration's complete key set. Symmetric keys must include their key material.`,builder:ce,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations credentials update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}/credentials`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.credentials.update({body:r,zone_id:n,config_id:e[`config-id`]})),{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.`)}},ue={command:`credentials`,describe:`Operations for token-validation.configurations.credentials`,builder:e=>e.command(se).command(le).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function de(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration 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 fe={command:`delete <config-id>`,describe:`Deletes a JWT validation configuration from the zone.`,builder:de,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await m({force:!!e.force,message:`This operation deletes the token validation configuration. The request is rejected if rules, operations, or JWT authentication identifiers still reference it.`})){process.stderr.write(`Aborted.
25
- `);return}o(await c(`Deleting`,async()=>t.apiSecurity.tokenValidation.configurations.delete({zone_id:n,config_id:e[`config-id`]})),{successLabel:`Deleted`})}};function pe(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`description`,{type:`string`,description:`The description field`}).option(`title`,{type:`string`,description:`The title 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 me={command:`edit <config-id>`,describe:`Updates only the supplied fields on a JWT validation configuration.`,builder:pe,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`json`,body:e.body===void 0?u({description:d(e.description,`description`,`text`),title:d(e.title,`title`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.edit({...r,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`});return}let i=u({description:d(e.description,`description`,`text`),title:d(e.title,`title`,`text`)});o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.edit({...i,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`})}};function he(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ge={command:`get <config-id>`,describe:`Returns a JWT validation configuration by ID.`,builder:he,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.tokenValidation.configurations.get({zone_id:n,config_id:e[`config-id`]})),{successLabel:`Loaded`})}};function _e(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 ve={command:`list`,describe:`Lists the JWT validation configurations defined for the zone.`,builder:_e,handler:async e=>{let t={page:e.page,per_page:e[`per-page`]};if(e.dryRun){s({command:`cf api-security token-validation configurations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.tokenValidation.configurations.list({zone_id:i,...t})),{successLabel:`Loaded`})}},ye={command:`configurations`,describe:`Operations for token-validation.configurations`,builder:e=>e.command(ae).command(fe).command(me).command(ge).command(ve).command(ue).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function be(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 xe={command:`bulk-create`,describe:`Creates multiple token validation rules for the zone in one request.`,builder:be,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules bulk-create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/bulk`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.rules.bulkCreate({body:r,zone_id:n})),{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 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-edit`,describe:`Updates and reorders multiple token validation rules in one request, then returns the updated rules.`,builder:Se,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules bulk-edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/bulk`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.rules.bulkEdit({body:r,zone_id:n})),{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 we(e){return e.option(`action`,{type:`string`,description:"Action to take on requests that match operations included in `selector` and fail `expression`.",choices:[`log`,`block`]}).option(`description`,{type:`string`,description:"A human-readable description that gives more details than `title`."}).option(`enabled`,{type:`boolean`,description:`Toggle rule on or off.`}).option(`expression`,{type:`string`,description:`Rule expression. Requests that fail to match this expression will be subject to \`action\`.
24
+ `,choices:[`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 J={command:`update`,describe:`Fully updates global schema validation settings for a zone, replacing existing configuration.`,builder:q,handler:async e=>{if(e.dryRun){s({command:`cf api-security schema-validation settings update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/schema_validation/settings`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({validation_default_mitigation_action:f(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:f(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.update({...r,zone_id:n})),{successLabel:`Updated`});return}e[`validation-default-mitigation-action`]===void 0&&(e[`validation-default-mitigation-action`]=await m(`validation-default-mitigation-action`,'The default mitigation action used 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 - `"none"` - skip running schema validation ',[`none`,`log`,`block`]));let i=d({validation_default_mitigation_action:f(e[`validation-default-mitigation-action`],`validation-default-mitigation-action`,`text`),validation_override_mitigation_action:f(e[`validation-override-mitigation-action`],`validation-override-mitigation-action`,`text`)});o(await c(`Updating`,async()=>t.apiSecurity.schemaValidation.settings.update({...i,zone_id:n})),{successLabel:`Updated`})}},Y={command:`settings`,describe:`Operations for schema-validation.settings`,builder:e=>e.command(N).command(F).command(J).command(K).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},X={command:`schema-validation`,describe:`Operations for schema-validation`,builder:e=>e.command(j).command(Y).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Z(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 Q={command:`get`,describe:`Returns the authentication identifier characteristics configured for the zone. Header, cookie, or JWT claim values identify distinct API sessions.`,builder:Z,handler:async e=>{let t={normalize:e.normalize};if(e.dryRun){s({command:`cf api-security session-identifiers 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 n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.sessionIdentifiers.get({zone_id:i,...t})),{successLabel:`Loaded`})}};function ne(e){return e.option(`normalize`,{type:`boolean`,description:`Ensures that the configuration is written or retrieved in normalized fashion`}).option(`auth-id-characteristics`,{type:`string`,description:`The auth_id_characteristics field. Provide as a JSON array of objects or @path/to/file.json.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const re={command:`update`,describe:`Replaces the zone's authentication identifier characteristics used to identify distinct API sessions.`,builder:ne,handler:async e=>{let t={normalize:e.normalize};if(e.dryRun){s({command:`cf api-security session-identifiers 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?d({auth_id_characteristics:u(e[`auth-id-characteristics`],`auth-id-characteristics`)}):l(e.body)});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});if(e.zoneId=i,e.body){let r=l(e.body);new URLSearchParams(Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Updating`,async()=>n.apiSecurity.sessionIdentifiers.update({body:r,zone_id:i,...t})),{successLabel:`Updated`});return}if(e[`auth-id-characteristics`]===void 0)throw Error(`--auth-id-characteristics is required (or pass --body with this field set).`);let f=d({auth_id_characteristics:u(e[`auth-id-characteristics`],`auth-id-characteristics`)});new URLSearchParams(Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),o(await c(`Updating`,async()=>n.apiSecurity.sessionIdentifiers.update({body:f,zone_id:i,...t})),{successLabel:`Updated`})}},ie={command:`session-identifiers`,describe:`Operations for session-identifiers`,builder:e=>e.command(Q).command(re).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ae(e){return e.option(`description`,{type:`string`,description:`The description field`}).option(`title`,{type:`string`,description:`The title field`}).option(`token-type`,{type:`string`,description:`The token_type field`,choices:[`JWT`]}).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:`create`,describe:`Creates a JWT validation configuration for the zone.`,builder:ae,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({description:f(e.description,`description`,`text`),title:f(e.title,`title`,`text`),token_type:f(e[`token-type`],`token-type`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.configurations.create({...r,zone_id:n})),{successLabel:`Created`});return}e.description===void 0&&(e.description=await p(`description`,`The description field`)),e.title===void 0&&(e.title=await p(`title`,`The title field`)),e[`token-type`]===void 0&&(e[`token-type`]=await m(`token-type`,`The token_type field`,[`JWT`]));let i=d({description:f(e.description,`description`,`text`),title:f(e.title,`title`,`text`),token_type:f(e[`token-type`],`token-type`,`text`)});o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.configurations.create({...i,zone_id:n})),{successLabel:`Created`})}};function se(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`keys`,{type:`string`,description:`The keys field. Provide as a JSON array of objects or @path/to/file.json.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:"Request payload for PATCH credentials. Provided keys define the complete stored key set, and stored keys omitted from payload are removed. For each provided key identity (`{alg,kid}`), payload fields overwrite the stored key before validation and omitted fields inherit from the stored key. Key identities must be unique."})}const ce={command:`edit <config-id>`,describe:`Updates the configuration's complete key set while allowing omitted fields on existing keys to retain stored values. Omitted key identities are removed.`,builder:se,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations credentials edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}/credentials`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({keys:u(e.keys,`keys`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.credentials.edit({...r,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`});return}if(e.keys===void 0)throw Error(`--keys is required (or pass --body with this field set).`);let i=d({keys:u(e.keys,`keys`)});o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.credentials.edit({...i,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`})}};function le(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`keys`,{type:`string`,description:`The keys field. Provide as a JSON array of objects or @path/to/file.json.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:"Request payload for create and PUT credentials operations. Provided keys define the complete stored key set. Key identities (`{alg,kid}`) must be unique."})}const ue={command:`update <config-id>`,describe:`Replaces the configuration's complete key set. Symmetric keys must include their key material.`,builder:le,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations credentials update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}/credentials`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({keys:u(e.keys,`keys`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.credentials.update({body:r,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`});return}if(e.keys===void 0)throw Error(`--keys is required (or pass --body with this field set).`);let i=d({keys:u(e.keys,`keys`)});o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.credentials.update({body:i,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`})}},de={command:`credentials`,describe:`Operations for token-validation.configurations.credentials`,builder:e=>e.command(ce).command(ue).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function fe(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration 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 pe={command:`delete <config-id>`,describe:`Deletes a JWT validation configuration from the zone.`,builder:fe,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await h({force:!!e.force,message:`This operation deletes the token validation configuration. The request is rejected if rules, operations, or JWT authentication identifiers still reference it.`})){process.stderr.write(`Aborted.
25
+ `);return}o(await c(`Deleting`,async()=>t.apiSecurity.tokenValidation.configurations.delete({zone_id:n,config_id:e[`config-id`]})),{successLabel:`Deleted`})}};function me(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`description`,{type:`string`,description:`The description field`}).option(`title`,{type:`string`,description:`The title 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 he={command:`edit <config-id>`,describe:`Updates only the supplied fields on a JWT validation configuration.`,builder:me,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({description:f(e.description,`description`,`text`),title:f(e.title,`title`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.edit({...r,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`});return}let i=d({description:f(e.description,`description`,`text`),title:f(e.title,`title`,`text`)});o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.configurations.edit({...i,zone_id:n,config_id:e[`config-id`]})),{successLabel:`Updated`})}};function ge(e){return e.positional(`config-id`,{type:`string`,description:`Token Configuration ID`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const _e={command:`get <config-id>`,describe:`Returns a JWT validation configuration by ID.`,builder:ge,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation configurations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config/${e[`config-id`]==null?`<config-id>`:encodeURIComponent(String(e[`config-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"config-id":String(e[`config-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.tokenValidation.configurations.get({zone_id:n,config_id:e[`config-id`]})),{successLabel:`Loaded`})}};function ve(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 ye={command:`list`,describe:`Lists the JWT validation configurations defined for the zone.`,builder:ve,handler:async e=>{let t={page:e.page,per_page:e[`per-page`]};if(e.dryRun){s({command:`cf api-security token-validation configurations list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/config`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.tokenValidation.configurations.list({zone_id:i,...t})),{successLabel:`Loaded`})}},be={command:`configurations`,describe:`Operations for token-validation.configurations`,builder:e=>e.command(oe).command(pe).command(he).command(_e).command(ye).command(de).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function xe(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 Se={command:`bulk-create`,describe:`Creates multiple token validation rules for the zone in one request.`,builder:xe,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules bulk-create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/bulk`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.rules.bulkCreate({body:r,zone_id:n})),{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 Ce(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 we={command:`bulk-edit`,describe:`Updates and reorders multiple token validation rules in one request, then returns the updated rules.`,builder:Ce,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules bulk-edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/bulk`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?void 0:l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.rules.bulkEdit({body:r,zone_id:n})),{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 Te(e){return e.option(`action`,{type:`string`,description:"Action to take on requests that match operations included in `selector` and fail `expression`.",choices:[`log`,`block`]}).option(`description`,{type:`string`,description:"A human-readable description that gives more details than `title`."}).option(`enabled`,{type:`boolean`,description:`Toggle rule on or off.`}).option(`expression`,{type:`string`,description:`Rule expression. Requests that fail to match this expression will be subject to \`action\`.
26
26
 
27
27
  For details on expressions, see the [Cloudflare Docs](https://developers.cloudflare.com/api-shield/security/jwt-validation/).
28
- `}).option(`title`,{type:`string`,description:`A human-readable name for the rule.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Te={command:`create`,describe:`Creates a token validation rule for the zone.`,builder:we,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?u({action:d(e.action,`action`,`text`),description:d(e.description,`description`,`text`),enabled:e.enabled,expression:d(e.expression,`expression`,`text`),title:d(e.title,`title`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.rules.create({body:r,zone_id:n})),{successLabel:`Created`});return}if(e.action===void 0&&(e.action=await p(`action`,"Action to take on requests that match operations included in `selector` and fail `expression`.",[`log`,`block`])),e.description===void 0&&(e.description=await f(`description`,"A human-readable description that gives more details than `title`.")),e.enabled===void 0)throw Error(`--enabled is required (or pass --body with this field set).`);e.expression===void 0&&(e.expression=await f(`expression`,"Rule expression. Requests that fail to match this expression will be subject to `action`. For details on expressions, see the [Cloudflare Docs](https://developers.cloudflare.com/api-shield/security/jwt-validation/). ")),e.title===void 0&&(e.title=await f(`title`,`A human-readable name for the rule.`));let i=u({action:d(e.action,`action`,`text`),description:d(e.description,`description`,`text`),enabled:e.enabled,expression:d(e.expression,`expression`,`text`),title:d(e.title,`title`,`text`)});o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.rules.create({body:i,zone_id:n})),{successLabel:`Created`})}};function Ee(e){return e.positional(`rule-id`,{type:`string`,description:`Token Validation Rule 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 De={command:`delete <rule-id>`,describe:`Deletes a token validation rule from the zone.`,builder:Ee,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/${e[`rule-id`]==null?`<rule-id>`:encodeURIComponent(String(e[`rule-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"rule-id":String(e[`rule-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await m({force:!!e.force,message:`This operation deletes the token validation rule from the zone.`})){process.stderr.write(`Aborted.
29
- `);return}o(await c(`Deleting`,async()=>t.apiSecurity.tokenValidation.rules.delete({zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Deleted`})}};function Oe(e){return e.positional(`rule-id`,{type:`string`,description:`Token Validation Rule ID`,demandOption:!0}).option(`action`,{type:`string`,description:"Action to take on requests that match operations included in `selector` and fail `expression`.",choices:[`log`,`block`]}).option(`description`,{type:`string`,description:"A human-readable description that gives more details than `title`."}).option(`enabled`,{type:`boolean`,description:`Toggle rule on or off.`}).option(`expression`,{type:`string`,description:`Rule expression. Requests that fail to match this expression will be subject to \`action\`.
28
+ `}).option(`title`,{type:`string`,description:`A human-readable name for the rule.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Ee={command:`create`,describe:`Creates a token validation rule for the zone.`,builder:Te,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({action:f(e.action,`action`,`text`),description:f(e.description,`description`,`text`),enabled:e.enabled,expression:f(e.expression,`expression`,`text`),title:f(e.title,`title`,`text`)}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.rules.create({body:r,zone_id:n})),{successLabel:`Created`});return}if(e.action===void 0&&(e.action=await m(`action`,"Action to take on requests that match operations included in `selector` and fail `expression`.",[`log`,`block`])),e.description===void 0&&(e.description=await p(`description`,"A human-readable description that gives more details than `title`.")),e.enabled===void 0)throw Error(`--enabled is required (or pass --body with this field set).`);e.expression===void 0&&(e.expression=await p(`expression`,"Rule expression. Requests that fail to match this expression will be subject to `action`. For details on expressions, see the [Cloudflare Docs](https://developers.cloudflare.com/api-shield/security/jwt-validation/). ")),e.title===void 0&&(e.title=await p(`title`,`A human-readable name for the rule.`));let i=d({action:f(e.action,`action`,`text`),description:f(e.description,`description`,`text`),enabled:e.enabled,expression:f(e.expression,`expression`,`text`),title:f(e.title,`title`,`text`)});o(await c(`Creating`,async()=>t.apiSecurity.tokenValidation.rules.create({body:i,zone_id:n})),{successLabel:`Created`})}};function De(e){return e.positional(`rule-id`,{type:`string`,description:`Token Validation Rule 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 Oe={command:`delete <rule-id>`,describe:`Deletes a token validation rule from the zone.`,builder:De,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/${e[`rule-id`]==null?`<rule-id>`:encodeURIComponent(String(e[`rule-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"rule-id":String(e[`rule-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,!await h({force:!!e.force,message:`This operation deletes the token validation rule from the zone.`})){process.stderr.write(`Aborted.
29
+ `);return}o(await c(`Deleting`,async()=>t.apiSecurity.tokenValidation.rules.delete({zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Deleted`})}};function ke(e){return e.positional(`rule-id`,{type:`string`,description:`Token Validation Rule ID`,demandOption:!0}).option(`action`,{type:`string`,description:"Action to take on requests that match operations included in `selector` and fail `expression`.",choices:[`log`,`block`]}).option(`description`,{type:`string`,description:"A human-readable description that gives more details than `title`."}).option(`enabled`,{type:`boolean`,description:`Toggle rule on or off.`}).option(`expression`,{type:`string`,description:`Rule expression. Requests that fail to match this expression will be subject to \`action\`.
30
30
 
31
31
  For details on expressions, see the [Cloudflare Docs](https://developers.cloudflare.com/api-shield/security/jwt-validation/).
32
- `}).option(`title`,{type:`string`,description:`A human-readable name for the rule.`}).option(`position-index`,{type:`number`,description:`Move rule to this position`}).option(`position-before`,{type:`string`,description:`Move rule to before rule with this ID.`}).option(`position-after`,{type:`string`,description:`Move rule to after rule with this ID.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).conflicts(`position-index`,[`position-before`,`position-after`]).conflicts(`position-before`,[`position-index`,`position-after`]).conflicts(`position-after`,[`position-index`,`position-before`])}const ke={command:`edit <rule-id>`,describe:`Updates only the supplied fields on a token validation rule.`,builder:Oe,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/${e[`rule-id`]==null?`<rule-id>`:encodeURIComponent(String(e[`rule-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"rule-id":String(e[`rule-id`]??``)},bodyKind:`json`,body:e.body===void 0?u({action:d(e.action,`action`,`text`),description:d(e.description,`description`,`text`),enabled:e.enabled,expression:d(e.expression,`expression`,`text`),title:d(e.title,`title`,`text`),position:{index:e[`position-index`],before:d(e[`position-before`],`position-before`,`text`),after:d(e[`position-after`],`position-after`,`text`)}}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.rules.edit({body:r,zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Updated`});return}let i=u({action:d(e.action,`action`,`text`),description:d(e.description,`description`,`text`),enabled:e.enabled,expression:d(e.expression,`expression`,`text`),title:d(e.title,`title`,`text`),position:{index:e[`position-index`],before:d(e[`position-before`],`position-before`,`text`),after:d(e[`position-after`],`position-after`,`text`)}});o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.rules.edit({body:i,zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Updated`})}};function Ae(e){return e.positional(`rule-id`,{type:`string`,description:`Token Validation Rule ID`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const je={command:`get <rule-id>`,describe:`Returns a token validation rule by ID.`,builder:Ae,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/${e[`rule-id`]==null?`<rule-id>`:encodeURIComponent(String(e[`rule-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"rule-id":String(e[`rule-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.tokenValidation.rules.get({zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Loaded`})}};function Me(e){return e.option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`token-configuration`,{type:`string`,description:`Select rules using any of these token configurations.`}).option(`action`,{type:`string`,description:"Action to take on requests that match operations included in `selector` and fail `expression`.",choices:[`log`,`block`]}).option(`enabled`,{type:`boolean`,description:`Toggle rule on or off.`}).option(`id`,{type:`string`,description:`Select rules with these IDs.`}).option(`rule-id`,{type:`string`,description:`Select rules with these IDs.`}).option(`host`,{type:`string`,description:"Select rules with this host in `include`."}).option(`hostname`,{type:`string`,description:"Select rules with this host in `include`."}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ne={command:`list`,describe:`Lists token validation rules for the zone, with filters for configuration, action, state, ID, and host.`,builder:h(Me),handler:async e=>{let t={per_page:e[`per-page`],page:e.page,token_configuration:e[`token-configuration`],action:e.action,enabled:e.enabled,id:e.id,rule_id:e[`rule-id`],host:e.host,hostname:e.hostname};if(e.dryRun){s({command:`cf api-security token-validation rules list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.tokenValidation.rules.list({zone_id:i,...t})),{successLabel:`Loaded`})}},Pe={command:`rules`,describe:`Operations for token-validation.rules`,builder:e=>e.command(xe).command(Ce).command(Te).command(De).command(ke).command(je).command(Ne).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Fe={command:`token-validation`,describe:`Operations for token-validation`,builder:e=>e.command(ye).command(Pe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ie(e){return e.option(`name`,{type:`string`,description:`Human-readable name.`}).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:`create`,describe:`Creates a new credential set.`,builder:Ie,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets`,pathParams:{},bodyKind:`json`,body:r.body===void 0?u({name:d(r.name,`name`,`text`)}):l(r.body)});return}let i=await a(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.create({...e,account_id:p})),{successLabel:`Created`});return}r.name===void 0&&(r.name=await f(`name`,`Human-readable name.`));let m=u({name:d(r.name,`name`,`text`)});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.create({...m,account_id:p})),{successLabel:`Created`})}};function Re(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`location`,{type:`string`,description:`Where the credential is attached in outgoing requests.`,choices:[`header`,`cookie`]}).option(`location-name`,{type:`string`,description:`Name of the header or cookie where the credential is attached.
32
+ `}).option(`title`,{type:`string`,description:`A human-readable name for the rule.`}).option(`position-index`,{type:`number`,description:`Move rule to this position`}).option(`position-before`,{type:`string`,description:`Move rule to before rule with this ID.`}).option(`position-after`,{type:`string`,description:`Move rule to after rule with this ID.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).conflicts(`position-index`,[`position-before`,`position-after`]).conflicts(`position-before`,[`position-index`,`position-after`]).conflicts(`position-after`,[`position-index`,`position-before`])}const Ae={command:`edit <rule-id>`,describe:`Updates only the supplied fields on a token validation rule.`,builder:ke,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/${e[`rule-id`]==null?`<rule-id>`:encodeURIComponent(String(e[`rule-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"rule-id":String(e[`rule-id`]??``)},bodyKind:`json`,body:e.body===void 0?d({action:f(e.action,`action`,`text`),description:f(e.description,`description`,`text`),enabled:e.enabled,expression:f(e.expression,`expression`,`text`),title:f(e.title,`title`,`text`),position:{index:e[`position-index`],before:f(e[`position-before`],`position-before`,`text`),after:f(e[`position-after`],`position-after`,`text`)}}):l(e.body)});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});if(e.zoneId=n,e.body){let r=l(e.body);o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.rules.edit({body:r,zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Updated`});return}let i=d({action:f(e.action,`action`,`text`),description:f(e.description,`description`,`text`),enabled:e.enabled,expression:f(e.expression,`expression`,`text`),title:f(e.title,`title`,`text`),position:{index:e[`position-index`],before:f(e[`position-before`],`position-before`,`text`),after:f(e[`position-after`],`position-after`,`text`)}});o(await c(`Updating`,async()=>t.apiSecurity.tokenValidation.rules.edit({body:i,zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Updated`})}};function je(e){return e.positional(`rule-id`,{type:`string`,description:`Token Validation Rule ID`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Me={command:`get <rule-id>`,describe:`Returns a token validation rule by ID.`,builder:je,handler:async e=>{if(e.dryRun){s({command:`cf api-security token-validation rules get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules/${e[`rule-id`]==null?`<rule-id>`:encodeURIComponent(String(e[`rule-id`]))}`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``),"rule-id":String(e[`rule-id`]??``)},bodyKind:`none`});return}let t=await a(e),n=await r({zone:e.zone},t,{quiet:e.quiet});e.zoneId=n,o(await c(`Loading`,async()=>t.apiSecurity.tokenValidation.rules.get({zone_id:n,rule_id:e[`rule-id`]})),{successLabel:`Loaded`})}};function Ne(e){return e.option(`per-page`,{type:`number`,description:`Maximum number of results per page.`}).option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`token-configuration`,{type:`string`,description:`Select rules using any of these token configurations.`}).option(`action`,{type:`string`,description:"Action to take on requests that match operations included in `selector` and fail `expression`.",choices:[`log`,`block`]}).option(`enabled`,{type:`boolean`,description:`Toggle rule on or off.`}).option(`id`,{type:`string`,description:`Select rules with these IDs.`}).option(`rule-id`,{type:`string`,description:`Select rules with these IDs.`}).option(`host`,{type:`string`,description:"Select rules with this host in `include`."}).option(`hostname`,{type:`string`,description:"Select rules with this host in `include`."}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Pe={command:`list`,describe:`Lists token validation rules for the zone, with filters for configuration, action, state, ID, and host.`,builder:g(Ne),handler:async e=>{let t={per_page:e[`per-page`],page:e.page,token_configuration:e[`token-configuration`],action:e.action,enabled:e.enabled,id:e.id,rule_id:e[`rule-id`],host:e.host,hostname:e.hostname};if(e.dryRun){s({command:`cf api-security token-validation rules list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${e.zone??e.zoneId??`<zone>`}/token_validation/rules`,pathParams:{"zone-id":String(e.zone??e[`zone-id`]??``)},query:t,bodyKind:`none`});return}let n=await a(e),i=await r({zone:e.zone},n,{quiet:e.quiet});e.zoneId=i,o(await c(`Loading`,async()=>n.apiSecurity.tokenValidation.rules.list({zone_id:i,...t})),{successLabel:`Loaded`})}},Fe={command:`rules`,describe:`Operations for token-validation.rules`,builder:e=>e.command(Se).command(we).command(Ee).command(Oe).command(Ae).command(Me).command(Pe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},Ie={command:`token-validation`,describe:`Operations for token-validation`,builder:e=>e.command(be).command(Fe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Le(e){return e.option(`name`,{type:`string`,description:`Human-readable name.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const Re={command:`create`,describe:`Creates a new credential set.`,builder:Le,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets`,pathParams:{},bodyKind:`json`,body:r.body===void 0?d({name:f(r.name,`name`,`text`)}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.create({...e,account_id:u})),{successLabel:`Created`});return}r.name===void 0&&(r.name=await p(`name`,`Human-readable name.`));let m=d({name:f(r.name,`name`,`text`)});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.create({...m,account_id:u})),{successLabel:`Created`})}};function ze(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`location`,{type:`string`,description:`Where the credential is attached in outgoing requests.`,choices:[`header`,`cookie`]}).option(`location-name`,{type:`string`,description:`Name of the header or cookie where the credential is attached.
33
33
  `}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`value`,{type:`string`,description:`The credential value (e.g. API key, session token). Write-only.
34
34
  Never returned in responses.
35
- `}).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 ze={command:`create <credential-set-id>`,describe:`Creates a new credential within a credential set.`,builder:Re,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({location:d(r.location,`location`,`text`),location_name:d(r[`location-name`],`location-name`,`text`),name:d(r.name,`name`,`text`),value:d(r.value,`value`,`text`)}):l(r.body)});return}let i=await a(r),m=r.local?e:await t();if(r.accountId=m,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.create({...e,account_id:m,credential_set_id:r[`credential-set-id`]})),{successLabel:`Created`});return}r.location===void 0&&(r.location=await p(`location`,`Where the credential is attached in outgoing requests.`,[`header`,`cookie`])),r[`location-name`]===void 0&&(r[`location-name`]=await f(`location-name`,`Name of the header or cookie where the credential is attached. `)),r.name===void 0&&(r.name=await f(`name`,`Human-readable name.`)),r.value===void 0&&(r.value=await f(`value`,`The credential value (e.g. API key, session token). Write-only. Never returned in responses. `,{kind:`secret`}));let h=u({location:d(r.location,`location`,`text`),location_name:d(r[`location-name`],`location-name`,`text`),name:d(r.name,`name`,`text`),value:d(r.value,`value`,`text`)});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.create({...h,account_id:m,credential_set_id:r[`credential-set-id`]})),{successLabel:`Created`})}};function Be(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const Ve={command:`delete <credential-id>`,describe:`Deletes a credential.`,builder:Be,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await m({force:!!r.force,message:`This operation permanently deletes the credential from the credential set.`})){process.stderr.write(`Aborted.
36
- `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.delete({account_id:l,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Deleted`})}};function He(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`location`,{type:`string`,description:`Where the credential is attached in outgoing requests.`,choices:[`header`,`cookie`]}).option(`location-name`,{type:`string`,description:`Name of the header or cookie where the credential is attached.
35
+ `}).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 Be={command:`create <credential-set-id>`,describe:`Creates a new credential within a credential set.`,builder:ze,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`json`,body:r.body===void 0?d({location:f(r.location,`location`,`text`),location_name:f(r[`location-name`],`location-name`,`text`),name:f(r.name,`name`,`text`),value:f(r.value,`value`,`text`)}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.create({...e,account_id:u,credential_set_id:r[`credential-set-id`]})),{successLabel:`Created`});return}r.location===void 0&&(r.location=await m(`location`,`Where the credential is attached in outgoing requests.`,[`header`,`cookie`])),r[`location-name`]===void 0&&(r[`location-name`]=await p(`location-name`,`Name of the header or cookie where the credential is attached. `)),r.name===void 0&&(r.name=await p(`name`,`Human-readable name.`)),r.value===void 0&&(r.value=await p(`value`,`The credential value (e.g. API key, session token). Write-only. Never returned in responses. `,{kind:`secret`}));let h=d({location:f(r.location,`location`,`text`),location_name:f(r[`location-name`],`location-name`,`text`),name:f(r.name,`name`,`text`),value:f(r.value,`value`,`text`)});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.create({...h,account_id:u,credential_set_id:r[`credential-set-id`]})),{successLabel:`Created`})}};function Ve(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const He={command:`delete <credential-id>`,describe:`Deletes a credential.`,builder:Ve,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await h({force:!!r.force,message:`This operation permanently deletes the credential from the credential set.`})){process.stderr.write(`Aborted.
36
+ `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.delete({account_id:l,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Deleted`})}};function Ue(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`location`,{type:`string`,description:`Where the credential is attached in outgoing requests.`,choices:[`header`,`cookie`]}).option(`location-name`,{type:`string`,description:`Name of the header or cookie where the credential is attached.
37
37
  `}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`value`,{type:`string`,description:`The credential value. Write-only. Never returned in responses.
38
- `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Applies a partial update. Only the provided fields change; omitted fields remain unchanged.`})}const Ue={command:`edit <credential-id>`,describe:`Updates a credential with only the provided fields; omitted fields remain unchanged.`,builder:He,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({location:d(r.location,`location`,`text`),location_name:d(r[`location-name`],`location-name`,`text`),name:d(r.name,`name`,`text`),value:d(r.value,`value`,`text`)}):l(r.body)});return}let i=await a(r),f=r.local?e:await t();if(r.accountId=f,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.edit({...e,account_id:f,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`});return}let p=u({location:d(r.location,`location`,`text`),location_name:d(r[`location-name`],`location-name`,`text`),name:d(r.name,`name`,`text`),value:d(r.value,`value`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.edit({...p,account_id:f,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`})}};function We(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ge={command:`get <credential-id>`,describe:`Returns a single credential by ID.`,builder:We,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.get({account_id:l,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Loaded`})}};function Ke(e){return e.option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const qe={command:`list`,describe:`Returns all credentials within a credential set.`,builder:Ke,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.credentialSets.credentials.list({account_id:u,credential_set_id:r[`credential-set-id`],...i})),{successLabel:`Loaded`})}};function Je(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`location`,{type:`string`,description:`Where the credential is attached in outgoing requests.`,choices:[`header`,`cookie`]}).option(`location-name`,{type:`string`,description:`Name of the header or cookie where the credential is attached.
38
+ `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Applies a partial update. Only the provided fields change; omitted fields remain unchanged.`})}const We={command:`edit <credential-id>`,describe:`Updates a credential with only the provided fields; omitted fields remain unchanged.`,builder:Ue,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`json`,body:r.body===void 0?d({location:f(r.location,`location`,`text`),location_name:f(r[`location-name`],`location-name`,`text`),name:f(r.name,`name`,`text`),value:f(r.value,`value`,`text`)}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.edit({...e,account_id:u,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`});return}let p=d({location:f(r.location,`location`,`text`),location_name:f(r[`location-name`],`location-name`,`text`),name:f(r.name,`name`,`text`),value:f(r.value,`value`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.edit({...p,account_id:u,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`})}};function Ge(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ke={command:`get <credential-id>`,describe:`Returns a single credential by ID.`,builder:Ge,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.get({account_id:l,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Loaded`})}};function qe(e){return e.option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Je={command:`list`,describe:`Returns all credentials within a credential set.`,builder:qe,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.credentialSets.credentials.list({account_id:u,credential_set_id:r[`credential-set-id`],...i})),{successLabel:`Loaded`})}};function Ye(e){return e.positional(`credential-id`,{type:`string`,description:`Credential identifier.`,demandOption:!0}).option(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`location`,{type:`string`,description:`Where the credential is attached in outgoing requests.`,choices:[`header`,`cookie`]}).option(`location-name`,{type:`string`,description:`Name of the header or cookie where the credential is attached.
39
39
  `}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`value`,{type:`string`,description:`The credential value. Write-only. Never returned in responses.
40
- `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Full replacement. Provide all fields.`})}const Ye={command:`update <credential-id>`,describe:`Replaces a credential. All fields must be provided.`,builder:Je,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({location:d(r.location,`location`,`text`),location_name:d(r[`location-name`],`location-name`,`text`),name:d(r.name,`name`,`text`),value:d(r.value,`value`,`text`)}):l(r.body)});return}let i=await a(r),m=r.local?e:await t();if(r.accountId=m,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.update({...e,account_id:m,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`});return}r.location===void 0&&(r.location=await p(`location`,`Where the credential is attached in outgoing requests.`,[`header`,`cookie`])),r[`location-name`]===void 0&&(r[`location-name`]=await f(`location-name`,`Name of the header or cookie where the credential is attached. `)),r.name===void 0&&(r.name=await f(`name`,`Human-readable name.`)),r.value===void 0&&(r.value=await f(`value`,`The credential value. Write-only. Never returned in responses. `,{kind:`secret`}));let h=u({location:d(r.location,`location`,`text`),location_name:d(r[`location-name`],`location-name`,`text`),name:d(r.name,`name`,`text`),value:d(r.value,`value`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.update({...h,account_id:m,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`})}},Xe={command:`credentials`,describe:`Operations for vulnerability-scanner.credential-sets.credentials`,builder:e=>e.command(ze).command(Ve).command(Ue).command(Ge).command(qe).command(Ye).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Ze(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const Qe={command:`delete <credential-set-id>`,describe:`Deletes a credential set and all of its credentials.`,builder:Ze,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await m({force:!!r.force,message:`This operation permanently deletes the credential set and every credential it contains.`})){process.stderr.write(`Aborted.
41
- `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.delete({account_id:l,credential_set_id:r[`credential-set-id`]})),{successLabel:`Deleted`})}};function $e(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Applies a partial update. Only the provided fields change; omitted fields remain unchanged.`})}const et={command:`edit <credential-set-id>`,describe:`Updates a credential set with only the provided fields; omitted fields remain unchanged.`,builder:$e,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({name:d(r.name,`name`,`text`)}):l(r.body)});return}let i=await a(r),f=r.local?e:await t();if(r.accountId=f,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.edit({...e,account_id:f,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`});return}let p=u({name:d(r.name,`name`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.edit({...p,account_id:f,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`})}};function tt(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const nt={command:`get <credential-set-id>`,describe:`Returns a single credential set by ID.`,builder:tt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.get({account_id:l,credential_set_id:r[`credential-set-id`]})),{successLabel:`Loaded`})}};function rt(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const it={command:`list`,describe:`Returns all credential sets for the account.`,builder:rt,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets`,pathParams:{},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.credentialSets.list({account_id:u,...i})),{successLabel:`Loaded`})}};function at(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Full replacement. Provide all fields.`})}const ot={command:`update <credential-set-id>`,describe:`Replaces a credential set. All fields must be provided.`,builder:at,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({name:d(r.name,`name`,`text`)}):l(r.body)});return}let i=await a(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.update({...e,account_id:p,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`});return}r.name===void 0&&(r.name=await f(`name`,`Human-readable name.`));let m=u({name:d(r.name,`name`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.update({...m,account_id:p,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`})}},st={command:`credential-sets`,describe:`Operations for vulnerability-scanner.credential-sets`,builder:e=>e.command(Le).command(Qe).command(et).command(nt).command(it).command(ot).command(Xe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function ct(e){return e.option(`credential-sets-attacker`,{type:`string`,description:`Credential set ID for the attacker.`}).option(`credential-sets-owner`,{type:`string`,description:`Credential set ID for the resource owner.`}).option(`open-api`,{type:`string`,description:`OpenAPI schema definition for the API under test. The scanner
40
+ `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Full replacement. Provide all fields.`})}const Xe={command:`update <credential-id>`,describe:`Replaces a credential. All fields must be provided.`,builder:Ye,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets credentials update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}/credentials/${r[`credential-id`]==null?`<credential-id>`:encodeURIComponent(String(r[`credential-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``),"credential-id":String(r[`credential-id`]??``)},bodyKind:`json`,body:r.body===void 0?d({location:f(r.location,`location`,`text`),location_name:f(r[`location-name`],`location-name`,`text`),name:f(r.name,`name`,`text`),value:f(r.value,`value`,`text`)}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.update({...e,account_id:u,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`});return}r.location===void 0&&(r.location=await m(`location`,`Where the credential is attached in outgoing requests.`,[`header`,`cookie`])),r[`location-name`]===void 0&&(r[`location-name`]=await p(`location-name`,`Name of the header or cookie where the credential is attached. `)),r.name===void 0&&(r.name=await p(`name`,`Human-readable name.`)),r.value===void 0&&(r.value=await p(`value`,`The credential value. Write-only. Never returned in responses. `,{kind:`secret`}));let h=d({location:f(r.location,`location`,`text`),location_name:f(r[`location-name`],`location-name`,`text`),name:f(r.name,`name`,`text`),value:f(r.value,`value`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.credentials.update({...h,account_id:u,credential_set_id:r[`credential-set-id`],credential_id:r[`credential-id`]})),{successLabel:`Updated`})}},Ze={command:`credentials`,describe:`Operations for vulnerability-scanner.credential-sets.credentials`,builder:e=>e.command(Be).command(He).command(We).command(Ke).command(Je).command(Xe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Qe(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const $e={command:`delete <credential-set-id>`,describe:`Deletes a credential set and all of its credentials.`,builder:Qe,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await h({force:!!r.force,message:`This operation permanently deletes the credential set and every credential it contains.`})){process.stderr.write(`Aborted.
41
+ `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.delete({account_id:l,credential_set_id:r[`credential-set-id`]})),{successLabel:`Deleted`})}};function et(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Applies a partial update. Only the provided fields change; omitted fields remain unchanged.`})}const tt={command:`edit <credential-set-id>`,describe:`Updates a credential set with only the provided fields; omitted fields remain unchanged.`,builder:et,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`json`,body:r.body===void 0?d({name:f(r.name,`name`,`text`)}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.edit({...e,account_id:u,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`});return}let p=d({name:f(r.name,`name`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.edit({...p,account_id:u,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`})}};function nt(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const rt={command:`get <credential-set-id>`,describe:`Returns a single credential set by ID.`,builder:nt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.get({account_id:l,credential_set_id:r[`credential-set-id`]})),{successLabel:`Loaded`})}};function it(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const at={command:`list`,describe:`Returns all credential sets for the account.`,builder:it,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets`,pathParams:{},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.credentialSets.list({account_id:u,...i})),{successLabel:`Loaded`})}};function ot(e){return e.positional(`credential-set-id`,{type:`string`,description:`Credential set identifier.`,demandOption:!0}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Full replacement. Provide all fields.`})}const st={command:`update <credential-set-id>`,describe:`Replaces a credential set. All fields must be provided.`,builder:ot,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner credential-sets update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/credential_sets/${r[`credential-set-id`]==null?`<credential-set-id>`:encodeURIComponent(String(r[`credential-set-id`]))}`,pathParams:{"credential-set-id":String(r[`credential-set-id`]??``)},bodyKind:`json`,body:r.body===void 0?d({name:f(r.name,`name`,`text`)}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.update({...e,account_id:u,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`});return}r.name===void 0&&(r.name=await p(`name`,`Human-readable name.`));let m=d({name:f(r.name,`name`,`text`)});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.credentialSets.update({...m,account_id:u,credential_set_id:r[`credential-set-id`]})),{successLabel:`Updated`})}},ct={command:`credential-sets`,describe:`Operations for vulnerability-scanner.credential-sets`,builder:e=>e.command(Re).command($e).command(tt).command(rt).command(at).command(st).command(Ze).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function lt(e){return e.option(`credential-sets-attacker`,{type:`string`,description:`Credential set ID for the attacker.`}).option(`credential-sets-owner`,{type:`string`,description:`Credential set ID for the resource owner.`}).option(`open-api`,{type:`string`,description:`OpenAPI schema definition for the API under test. The scanner
42
42
  uses this to discover endpoints and construct requests.
43
- `}).option(`scan-type`,{type:`string`,description:`The scan_type field`,choices:[`bola`]}).option(`target-environment-id`,{type:`string`,description:`The target environment to scan.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:"Create a new vulnerability scan. The `scan_type` discriminator selects the scan variant and its required context fields. "}).check(e=>{if([`credential-sets-attacker`,`credential-sets-owner`].some(t=>e[t]!==void 0)){let t=[`credential-sets-attacker`,`credential-sets-owner`].filter(t=>e[t]===void 0);if(t.length>0)throw Error(`${t.map(e=>`--`+e).join(`, `)} ${t.length===1?`is`:`are`} required when any --credential_sets-* flag is set`)}return!0})}const lt={command:`create`,describe:"Creates and starts a new vulnerability scan. The response may include non-fatal warnings in the `messages` array.",builder:ct,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans`,pathParams:{},bodyKind:`json`,body:r.body===void 0?u({credential_sets:{attacker:d(r[`credential-sets-attacker`],`credential-sets-attacker`,`text`),owner:d(r[`credential-sets-owner`],`credential-sets-owner`,`text`)},open_api:d(r[`open-api`],`open-api`,`text`),scan_type:d(r[`scan-type`],`scan-type`,`text`),target_environment_id:d(r[`target-environment-id`],`target-environment-id`,`text`)}):l(r.body)});return}let i=await a(r),m=r.local?e:await t();if(r.accountId=m,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.scans.create({body:e,account_id:m})),{successLabel:`Created`});return}r[`open-api`]===void 0&&(r[`open-api`]=await f(`open-api`,`OpenAPI schema definition for the API under test. The scanner uses this to discover endpoints and construct requests. `)),r[`scan-type`]===void 0&&(r[`scan-type`]=await p(`scan-type`,`The scan_type field`,[`bola`])),r[`target-environment-id`]===void 0&&(r[`target-environment-id`]=await f(`target-environment-id`,`The target environment to scan.`));let h=u({credential_sets:{attacker:d(r[`credential-sets-attacker`],`credential-sets-attacker`,`text`),owner:d(r[`credential-sets-owner`],`credential-sets-owner`,`text`)},open_api:d(r[`open-api`],`open-api`,`text`),scan_type:d(r[`scan-type`],`scan-type`,`text`),target_environment_id:d(r[`target-environment-id`],`target-environment-id`,`text`)});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.scans.create({body:h,account_id:m})),{successLabel:`Created`})}};function ut(e){return e.positional(`scan-id`,{type:`string`,description:`Scan identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const dt={command:`delete <scan-id>`,describe:"Deletes a scan and all associated data. Only scans in a terminal state (`finished`, `failed`) may be deleted. Attempting to delete a scan that is still being created or executed (`created`, `scheduled`, `planning`, `running`) returns `400`.",builder:ut,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans/${r[`scan-id`]==null?`<scan-id>`:encodeURIComponent(String(r[`scan-id`]))}`,pathParams:{"scan-id":String(r[`scan-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await m({force:!!r.force,message:`This operation permanently deletes the completed or failed scan and all associated scan data.`})){process.stderr.write(`Aborted.
44
- `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.scans.delete({account_id:l,scan_id:r[`scan-id`]})),{successLabel:`Deleted`})}};function ft(e){return e.positional(`scan-id`,{type:`string`,description:`Scan identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const pt={command:`get <scan-id>`,describe:`Returns a single scan by ID.`,builder:ft,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans/${r[`scan-id`]==null?`<scan-id>`:encodeURIComponent(String(r[`scan-id`]))}`,pathParams:{"scan-id":String(r[`scan-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.scans.get({account_id:l,scan_id:r[`scan-id`]})),{successLabel:`Loaded`})}};function mt(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ht={command:`list`,describe:`Returns all scans for the account.`,builder:mt,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans`,pathParams:{},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.scans.list({account_id:u,...i})),{successLabel:`Loaded`})}},gt={command:`scans`,describe:`Operations for vulnerability-scanner.scans`,builder:e=>e.command(lt).command(dt).command(pt).command(ht).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function _t(e){return e.option(`description`,{type:`string`,description:`Optional description.`}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`target-type`,{type:`string`,description:`The target.type field`,choices:[`zone`]}).option(`target-zone-tag`,{type:`string`,description:`Cloudflare zone tag. The zone must belong to the account.
45
- `}).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 vt={command:`create`,describe:`Creates a new target environment for the account.`,builder:_t,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments`,pathParams:{},bodyKind:`json`,body:r.body===void 0?u({description:d(r.description,`description`,`text`),name:d(r.name,`name`,`text`),target:{type:d(r[`target-type`],`target-type`,`text`),zone_tag:d(r[`target-zone-tag`],`target-zone-tag`,`text`)}}):l(r.body)});return}let i=await a(r),m=r.local?e:await t();if(r.accountId=m,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.create({...e,account_id:m})),{successLabel:`Created`});return}r.name===void 0&&(r.name=await f(`name`,`Human-readable name.`)),r[`target-type`]===void 0&&(r[`target-type`]=await p(`target-type`,`The target.type field`,[`zone`])),r[`target-zone-tag`]===void 0&&(r[`target-zone-tag`]=await f(`target-zone-tag`,`Cloudflare zone tag. The zone must belong to the account. `));let h=u({description:d(r.description,`description`,`text`),name:d(r.name,`name`,`text`),target:{type:d(r[`target-type`],`target-type`,`text`),zone_tag:d(r[`target-zone-tag`],`target-zone-tag`,`text`)}});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.create({...h,account_id:m})),{successLabel:`Created`})}};function yt(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const $={command:`delete <target-environment-id>`,describe:`Removes a target environment.`,builder:yt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await m({force:!!r.force,message:`This operation permanently deletes the target environment from Vulnerability Scanner.`})){process.stderr.write(`Aborted.
46
- `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.delete({account_id:l,target_environment_id:r[`target-environment-id`]})),{successLabel:`Deleted`})}};function bt(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`description`,{type:`string`,description:`Optional description. Omit to leave unchanged, set to \`null\`
43
+ `}).option(`scan-type`,{type:`string`,description:`The scan_type field`,choices:[`bola`]}).option(`target-environment-id`,{type:`string`,description:`The target environment to scan.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:"Create a new vulnerability scan. The `scan_type` discriminator selects the scan variant and its required context fields. "}).check(e=>{if([`credential-sets-attacker`,`credential-sets-owner`].some(t=>e[t]!==void 0)){let t=[`credential-sets-attacker`,`credential-sets-owner`].filter(t=>e[t]===void 0);if(t.length>0)throw Error(`${t.map(e=>`--`+e).join(`, `)} ${t.length===1?`is`:`are`} required when any --credential_sets-* flag is set`)}return!0})}const ut={command:`create`,describe:"Creates and starts a new vulnerability scan. The response may include non-fatal warnings in the `messages` array.",builder:lt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans`,pathParams:{},bodyKind:`json`,body:r.body===void 0?d({credential_sets:{attacker:f(r[`credential-sets-attacker`],`credential-sets-attacker`,`text`),owner:f(r[`credential-sets-owner`],`credential-sets-owner`,`text`)},open_api:f(r[`open-api`],`open-api`,`text`),scan_type:f(r[`scan-type`],`scan-type`,`text`),target_environment_id:f(r[`target-environment-id`],`target-environment-id`,`text`)}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.scans.create({body:e,account_id:u})),{successLabel:`Created`});return}r[`open-api`]===void 0&&(r[`open-api`]=await p(`open-api`,`OpenAPI schema definition for the API under test. The scanner uses this to discover endpoints and construct requests. `)),r[`scan-type`]===void 0&&(r[`scan-type`]=await m(`scan-type`,`The scan_type field`,[`bola`])),r[`target-environment-id`]===void 0&&(r[`target-environment-id`]=await p(`target-environment-id`,`The target environment to scan.`));let h=d({credential_sets:{attacker:f(r[`credential-sets-attacker`],`credential-sets-attacker`,`text`),owner:f(r[`credential-sets-owner`],`credential-sets-owner`,`text`)},open_api:f(r[`open-api`],`open-api`,`text`),scan_type:f(r[`scan-type`],`scan-type`,`text`),target_environment_id:f(r[`target-environment-id`],`target-environment-id`,`text`)});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.scans.create({body:h,account_id:u})),{successLabel:`Created`})}};function dt(e){return e.positional(`scan-id`,{type:`string`,description:`Scan identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const ft={command:`delete <scan-id>`,describe:"Deletes a scan and all associated data. Only scans in a terminal state (`finished`, `failed`) may be deleted. Attempting to delete a scan that is still being created or executed (`created`, `scheduled`, `planning`, `running`) returns `400`.",builder:dt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans/${r[`scan-id`]==null?`<scan-id>`:encodeURIComponent(String(r[`scan-id`]))}`,pathParams:{"scan-id":String(r[`scan-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await h({force:!!r.force,message:`This operation permanently deletes the completed or failed scan and all associated scan data.`})){process.stderr.write(`Aborted.
44
+ `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.scans.delete({account_id:l,scan_id:r[`scan-id`]})),{successLabel:`Deleted`})}};function pt(e){return e.positional(`scan-id`,{type:`string`,description:`Scan identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const mt={command:`get <scan-id>`,describe:`Returns a single scan by ID.`,builder:pt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans/${r[`scan-id`]==null?`<scan-id>`:encodeURIComponent(String(r[`scan-id`]))}`,pathParams:{"scan-id":String(r[`scan-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.scans.get({account_id:l,scan_id:r[`scan-id`]})),{successLabel:`Loaded`})}};function ht(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const gt={command:`list`,describe:`Returns all scans for the account.`,builder:ht,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner scans list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/scans`,pathParams:{},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.scans.list({account_id:u,...i})),{successLabel:`Loaded`})}},_t={command:`scans`,describe:`Operations for vulnerability-scanner.scans`,builder:e=>e.command(ut).command(ft).command(mt).command(gt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function vt(e){return e.option(`description`,{type:`string`,description:`Optional description.`}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`target-type`,{type:`string`,description:`The target.type field`,choices:[`zone`]}).option(`target-zone-tag`,{type:`string`,description:`Cloudflare zone tag. The zone must belong to the account.
45
+ `}).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 yt={command:`create`,describe:`Creates a new target environment for the account.`,builder:vt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments`,pathParams:{},bodyKind:`json`,body:r.body===void 0?d({description:f(r.description,`description`,`text`),name:f(r.name,`name`,`text`),target:{type:f(r[`target-type`],`target-type`,`text`),zone_tag:f(r[`target-zone-tag`],`target-zone-tag`,`text`)}}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.create({...e,account_id:u})),{successLabel:`Created`});return}r.name===void 0&&(r.name=await p(`name`,`Human-readable name.`)),r[`target-type`]===void 0&&(r[`target-type`]=await m(`target-type`,`The target.type field`,[`zone`])),r[`target-zone-tag`]===void 0&&(r[`target-zone-tag`]=await p(`target-zone-tag`,`Cloudflare zone tag. The zone must belong to the account. `));let h=d({description:f(r.description,`description`,`text`),name:f(r.name,`name`,`text`),target:{type:f(r[`target-type`],`target-type`,`text`),zone_tag:f(r[`target-zone-tag`],`target-zone-tag`,`text`)}});o(await c(`Creating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.create({...h,account_id:u})),{successLabel:`Created`})}};function $(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const bt={command:`delete <target-environment-id>`,describe:`Removes a target environment.`,builder:$,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();if(r.accountId=l,!await h({force:!!r.force,message:`This operation permanently deletes the target environment from Vulnerability Scanner.`})){process.stderr.write(`Aborted.
46
+ `);return}o(await c(`Deleting`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.delete({account_id:l,target_environment_id:r[`target-environment-id`]})),{successLabel:`Deleted`})}};function xt(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`description`,{type:`string`,description:`Optional description. Omit to leave unchanged, set to \`null\`
47
47
  to clear, or provide a string to update.
48
48
  `}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`target-type`,{type:`string`,description:`The target.type field`,choices:[`zone`]}).option(`target-zone-tag`,{type:`string`,description:`Cloudflare zone tag. The zone must belong to the account.
49
- `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:'Applies a partial update. Only the provided fields change; omitted fields remain unchanged. The `description` field supports three states: - **omitted**: leave unchanged - **`null`**: clear the description - **`"value"`**: set to the given string '}).check(e=>{if([`target-type`,`target-zone-tag`].some(t=>e[t]!==void 0)){let t=[`target-type`,`target-zone-tag`].filter(t=>e[t]===void 0);if(t.length>0)throw Error(`${t.map(e=>`--`+e).join(`, `)} ${t.length===1?`is`:`are`} required when any --target-* flag is set`)}return!0})}const xt={command:`edit <target-environment-id>`,describe:`Updates a target environment with only the provided fields; omitted fields remain unchanged.`,builder:bt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({description:d(r.description,`description`,`text`),name:d(r.name,`name`,`text`),target:{type:d(r[`target-type`],`target-type`,`text`),zone_tag:d(r[`target-zone-tag`],`target-zone-tag`,`text`)}}):l(r.body)});return}let i=await a(r),f=r.local?e:await t();if(r.accountId=f,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.edit({...e,account_id:f,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`});return}let p=u({description:d(r.description,`description`,`text`),name:d(r.name,`name`,`text`),target:{type:d(r[`target-type`],`target-type`,`text`),zone_tag:d(r[`target-zone-tag`],`target-zone-tag`,`text`)}});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.edit({...p,account_id:f,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`})}};function St(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Ct={command:`get <target-environment-id>`,describe:`Returns a single target environment by ID.`,builder:St,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.get({account_id:l,target_environment_id:r[`target-environment-id`]})),{successLabel:`Loaded`})}};function wt(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Tt={command:`list`,describe:`Returns all target environments for the account.`,builder:wt,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments`,pathParams:{},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.targetEnvironments.list({account_id:u,...i})),{successLabel:`Loaded`})}};function Et(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`description`,{type:`string`,description:`Optional description.`}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`target-type`,{type:`string`,description:`The target.type field`,choices:[`zone`]}).option(`target-zone-tag`,{type:`string`,description:`Cloudflare zone tag. The zone must belong to the account.
50
- `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Full replacement.`})}const Dt={command:`update <target-environment-id>`,describe:`Replaces a target environment. All fields must be provided.`,builder:Et,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({description:d(r.description,`description`,`text`),name:d(r.name,`name`,`text`),target:{type:d(r[`target-type`],`target-type`,`text`),zone_tag:d(r[`target-zone-tag`],`target-zone-tag`,`text`)}}):l(r.body)});return}let i=await a(r),m=r.local?e:await t();if(r.accountId=m,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.update({...e,account_id:m,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`});return}r.name===void 0&&(r.name=await f(`name`,`Human-readable name.`)),r[`target-type`]===void 0&&(r[`target-type`]=await p(`target-type`,`The target.type field`,[`zone`])),r[`target-zone-tag`]===void 0&&(r[`target-zone-tag`]=await f(`target-zone-tag`,`Cloudflare zone tag. The zone must belong to the account. `));let h=u({description:d(r.description,`description`,`text`),name:d(r.name,`name`,`text`),target:{type:d(r[`target-type`],`target-type`,`text`),zone_tag:d(r[`target-zone-tag`],`target-zone-tag`,`text`)}});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.update({...h,account_id:m,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`})}},Ot={command:`target-environments`,describe:`Operations for vulnerability-scanner.target-environments`,builder:e=>e.command(vt).command($).command(xt).command(Ct).command(Tt).command(Dt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},kt={command:`vulnerability-scanner`,describe:`Operations for vulnerability-scanner`,builder:e=>e.command(st).command(gt).command(Ot).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},At={command:`api-security`,describe:`api-security`,builder:e=>e.command(Y).command(re).command(Fe).command(kt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{At as default};
49
+ `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:'Applies a partial update. Only the provided fields change; omitted fields remain unchanged. The `description` field supports three states: - **omitted**: leave unchanged - **`null`**: clear the description - **`"value"`**: set to the given string '}).check(e=>{if([`target-type`,`target-zone-tag`].some(t=>e[t]!==void 0)){let t=[`target-type`,`target-zone-tag`].filter(t=>e[t]===void 0);if(t.length>0)throw Error(`${t.map(e=>`--`+e).join(`, `)} ${t.length===1?`is`:`are`} required when any --target-* flag is set`)}return!0})}const St={command:`edit <target-environment-id>`,describe:`Updates a target environment with only the provided fields; omitted fields remain unchanged.`,builder:xt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`json`,body:r.body===void 0?d({description:f(r.description,`description`,`text`),name:f(r.name,`name`,`text`),target:{type:f(r[`target-type`],`target-type`,`text`),zone_tag:f(r[`target-zone-tag`],`target-zone-tag`,`text`)}}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.edit({...e,account_id:u,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`});return}let p=d({description:f(r.description,`description`,`text`),name:f(r.name,`name`,`text`),target:{type:f(r[`target-type`],`target-type`,`text`),zone_tag:f(r[`target-zone-tag`],`target-zone-tag`,`text`)}});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.edit({...p,account_id:u,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`})}};function Ct(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const wt={command:`get <target-environment-id>`,describe:`Returns a single target environment by ID.`,builder:Ct,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`none`});return}let i=await a(r),l=r.local?e:await t();r.accountId=l,o(await c(`Loading`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.get({account_id:l,target_environment_id:r[`target-environment-id`]})),{successLabel:`Loaded`})}};function Tt(e){return e.option(`page`,{type:`number`,description:`Page number of paginated results.`}).option(`per-page`,{type:`number`,description:`Number of results per page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Et={command:`list`,describe:`Returns all target environments for the account.`,builder:Tt,handler:async r=>{let i={page:r.page,per_page:r[`per-page`]};if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments`,pathParams:{},query:i,bodyKind:`none`});return}let l=await a(r),u=r.local?e:await t();r.accountId=u,o(await c(`Loading`,async()=>l.apiSecurity.vulnerabilityScanner.targetEnvironments.list({account_id:u,...i})),{successLabel:`Loaded`})}};function Dt(e){return e.positional(`target-environment-id`,{type:`string`,description:`Target environment identifier.`,demandOption:!0}).option(`description`,{type:`string`,description:`Optional description.`}).option(`name`,{type:`string`,description:`Human-readable name.`}).option(`target-type`,{type:`string`,description:`The target.type field`,choices:[`zone`]}).option(`target-zone-tag`,{type:`string`,description:`Cloudflare zone tag. The zone must belong to the account.
50
+ `}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Full replacement.`})}const Ot={command:`update <target-environment-id>`,describe:`Replaces a target environment. All fields must be provided.`,builder:Dt,handler:async r=>{if(r.dryRun){s({command:`cf api-security vulnerability-scanner target-environments update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/vuln_scanner/target_environments/${r[`target-environment-id`]==null?`<target-environment-id>`:encodeURIComponent(String(r[`target-environment-id`]))}`,pathParams:{"target-environment-id":String(r[`target-environment-id`]??``)},bodyKind:`json`,body:r.body===void 0?d({description:f(r.description,`description`,`text`),name:f(r.name,`name`,`text`),target:{type:f(r[`target-type`],`target-type`,`text`),zone_tag:f(r[`target-zone-tag`],`target-zone-tag`,`text`)}}):l(r.body)});return}let i=await a(r),u=r.local?e:await t();if(r.accountId=u,r.body){let e=l(r.body);o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.update({...e,account_id:u,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`});return}r.name===void 0&&(r.name=await p(`name`,`Human-readable name.`)),r[`target-type`]===void 0&&(r[`target-type`]=await m(`target-type`,`The target.type field`,[`zone`])),r[`target-zone-tag`]===void 0&&(r[`target-zone-tag`]=await p(`target-zone-tag`,`Cloudflare zone tag. The zone must belong to the account. `));let h=d({description:f(r.description,`description`,`text`),name:f(r.name,`name`,`text`),target:{type:f(r[`target-type`],`target-type`,`text`),zone_tag:f(r[`target-zone-tag`],`target-zone-tag`,`text`)}});o(await c(`Updating`,async()=>i.apiSecurity.vulnerabilityScanner.targetEnvironments.update({...h,account_id:u,target_environment_id:r[`target-environment-id`]})),{successLabel:`Updated`})}},kt={command:`target-environments`,describe:`Operations for vulnerability-scanner.target-environments`,builder:e=>e.command(yt).command(bt).command(St).command(wt).command(Et).command(Ot).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},At={command:`vulnerability-scanner`,describe:`Operations for vulnerability-scanner`,builder:e=>e.command(ct).command(_t).command(kt).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},jt={command:`api-security`,describe:`api-security`,builder:e=>e.command(X).command(ie).command(Ie).command(At).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{jt as default};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import{h as e}from"./oauth-DuEONNgC.mjs";import{r as t}from"./auth-D3X9HYhD.mjs";import{t as n}from"./output-Ccqw2WOb.mjs";import{t as r}from"./dry-run-DL2V6yFm.mjs";import{t as i}from"./progress-BqQcF5QH.mjs";import{n as a,t as o}from"./body-parser-BshbixEq.mjs";import{n as s}from"./input-validation-QDIYu7Vb.mjs";import{i as c}from"./prompt-B0sWIs9c.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){r({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?o({value:s(l.value,`value`,`text`)}):a(l.body)});return}let u=await t(l),d=await e({zone:l.zone},u,{quiet:l.quiet});if(l.zoneId=d,l.body){let e=a(l.body);n(await i(`Updating`,async()=>u.argo.smartRouting.edit({...e,zone_id:d})),{successLabel:`Updated`});return}l.value===void 0&&(l.value=await c(`value`,`Specifies the enablement value of Argo Smart Routing.`,[`on`,`off`]));let f=o({value:s(l.value,`value`,`text`)});n(await i(`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 a=>{if(a.dryRun){r({command:`cf argo smart-routing get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/argo/smart_routing`,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.argo.smartRouting.get({zone_id:s})),{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){r({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?o({value:s(l.value,`value`,`text`)}):a(l.body)});return}let u=await t(l),d=await e({zone:l.zone},u,{quiet:l.quiet});if(l.zoneId=d,l.body){let e=a(l.body);n(await i(`Updating`,async()=>u.argo.tieredCaching.edit({...e,zone_id:d})),{successLabel:`Updated`});return}l.value===void 0&&(l.value=await c(`value`,`Enables Tiered Caching.`,[`on`,`off`]));let f=o({value:s(l.value,`value`,`text`)});n(await i(`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 a=>{if(a.dryRun){r({command:`cf argo tiered-caching get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/argo/tiered_caching`,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.argo.tieredCaching.get({zone_id:s})),{successLabel:`Loaded`})}},v={command:`tiered-caching`,describe:`Operations for tiered-caching`,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
+ function e(e=process.argv.slice(2)){let t=!1;for(let[n,r]of e.entries()){if(r===`--quiet=false`||r===`-q=false`||r===`--no-quiet`){t=!1;continue}if(r===`--quiet=true`||r===`-q=true`){t=!0;continue}(r===`--quiet`||r===`-q`)&&(t=e[n+1]!==`false`)}return t}export{e as t};
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import{t as e}from"./local-Be3lg_9E.mjs";import{f as t,g as n}from"./oauth-DuEONNgC.mjs";import{r}from"./auth-D3X9HYhD.mjs";import{t as i}from"./output-Ccqw2WOb.mjs";import{t as a}from"./dry-run-DL2V6yFm.mjs";import{t as o}from"./progress-BqQcF5QH.mjs";import{n as s,t as c}from"./body-parser-BshbixEq.mjs";import{n as l}from"./input-validation-QDIYu7Vb.mjs";import{a as u,n as d}from"./prompt-B0sWIs9c.mjs";import{t as f}from"./cli-types-DAYeL_Mj.mjs";import{n as p,t as m}from"./raw-fetch-Cc-MjHeL.mjs";function h(e){return e.option(`limit`,{type:`number`,description:`Limit`}).option(`cursor`,{type:`string`,description:`Cursor`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const g={command:`artifactsNamespacesList`,describe:`Lists Artifacts namespaces for an account.`,builder:h,handler:async s=>{let c={limit:s.limit,cursor:s.cursor};if(s.dryRun){a({command:`cf artifacts namespaces artifactsNamespacesList`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces`,pathParams:{},query:c,bodyKind:`none`});return}let l=await r(s),u=s.local?e:await t();s.accountId=u,i(await o(`Loading`,async()=>l.artifacts.namespaces.artifactsNamespacesList({account_id:u,...c})),{successLabel:`Loaded`})}};function _(e){return e.positional(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const v={command:`get <namespace>`,describe:`Returns an Artifacts namespace summary.`,builder:_,handler:async s=>{if(s.dryRun){a({command:`cf artifacts namespaces get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}`,pathParams:{namespace:String(s.namespace??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.artifacts.namespaces.get({account_id:l,namespace:s.namespace})),{successLabel:`Loaded`})}};function y(e){return e.positional(`hash`,{type:`string`,description:`40-character lowercase hexadecimal Git object hash.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1})}const b={command:`get <hash>`,describe:`Returns raw bytes for an immutable Git blob object. Blob responses are cacheable forever by hash.`,builder:y,handler:async i=>{if(i.dryRun){a({command:`cf artifacts namespaces repos blobs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${i.namespace==null?`<namespace>`:encodeURIComponent(String(i.namespace))}/repos/${i.name==null?`<name>`:encodeURIComponent(String(i.name))}/blob/${i.hash==null?`<hash>`:encodeURIComponent(String(i.hash))}`,pathParams:{namespace:String(i.namespace??``),name:String(i.name??``),hash:String(i.hash??``)},bodyKind:`none`});return}await r(i);let s=i.local?e:await t();i.accountId=s;let c=await o(`Loading`,async()=>m(`/accounts/${s}/artifacts/namespaces/${encodeURIComponent(String(i.namespace))}/repos/${encodeURIComponent(String(i.name))}/blob/${encodeURIComponent(String(i.hash))}`,{method:`GET`,local:i.local===!0,persistTo:i.persistTo}));p(i.text===!0?c.toString(`utf-8`):c)}},x={command:`blobs`,describe:`Operations for namespaces.repos.blobs`,builder:e=>e.command(b).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function S(e){return e.positional(`hash`,{type:`string`,description:`40-character lowercase hexadecimal Git object hash.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const C={command:`get <hash>`,describe:`Returns decoded metadata for an immutable Git commit object. Commit responses are cacheable forever by hash.`,builder:S,handler:async s=>{if(s.dryRun){a({command:`cf artifacts namespaces repos commits get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/repos/${s.name==null?`<name>`:encodeURIComponent(String(s.name))}/commit/${s.hash==null?`<hash>`:encodeURIComponent(String(s.hash))}`,pathParams:{namespace:String(s.namespace??``),name:String(s.name??``),hash:String(s.hash??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.artifacts.namespaces.repos.commits.get({account_id:l,namespace:s.namespace,name:s.name,hash:s.hash})),{successLabel:`Loaded`})}},w={command:`commits`,describe:`Operations for namespaces.repos.commits`,builder:e=>e.command(C).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function T(e){return e.positional(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`default-branch`,{type:`string`,description:`Git branch name. Must match /^[a-zA-Z0-9][a-zA-Z0-9._/-]*$/, must not contain '..', and must not end with '/' or '.'.`}).option(`description`,{type:`string`,description:`The description field`}).option(`name`,{type:`string`,description:`The name field`}).option(`read-only`,{type:`boolean`,description:`The read_only 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 E={command:`create <namespace>`,describe:`Creates a Git-compatible Artifacts repository in a namespace.`,builder:T,handler:async d=>{if(d.dryRun){a({command:`cf artifacts namespaces repos create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${d.namespace==null?`<namespace>`:encodeURIComponent(String(d.namespace))}/repos`,pathParams:{namespace:String(d.namespace??``)},bodyKind:`json`,body:d.body===void 0?c({default_branch:l(d[`default-branch`],`default-branch`,`text`),description:l(d.description,`description`,`text`),name:l(d.name,`name`,`text`),read_only:d[`read-only`]}):s(d.body)});return}let f=await r(d),p=d.local?e:await t();if(d.accountId=p,d.body){let e=s(d.body);i(await o(`Creating`,async()=>f.artifacts.namespaces.repos.create({...e,account_id:p,namespace:d.namespace})),{successLabel:`Created`});return}d.name===void 0&&(d.name=await u(`name`,`The name field`));let m=c({default_branch:l(d[`default-branch`],`default-branch`,`text`),description:l(d.description,`description`,`text`),name:l(d.name,`name`,`text`),read_only:d[`read-only`]});i(await o(`Creating`,async()=>f.artifacts.namespaces.repos.create({...m,account_id:p,namespace:d.namespace})),{successLabel:`Created`})}};function D(e){return e.positional(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace 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 O={command:`delete <name>`,describe:`Deletes a repository and schedules cleanup of its backing data.`,builder:D,handler:async s=>{if(s.dryRun){a({command:`cf artifacts namespaces repos delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/repos/${s.name==null?`<name>`:encodeURIComponent(String(s.name))}`,pathParams:{namespace:String(s.namespace??``),name:String(s.name??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();if(s.accountId=l,!await d({force:!!s.force})){process.stderr.write(`Aborted.
3
+ `);return}i(await o(`Deleting`,async()=>c.artifacts.namespaces.repos.delete({account_id:l,namespace:s.namespace,name:s.name})),{successLabel:`Deleted`})}};function k(e){return e.positional(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`ref`,{type:`string`,description:`Git ref, branch, tag, or commit hash.`,demandOption:!0}).option(`path`,{type:`string`,description:`File path.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1})}const A={command:`get <name>`,describe:`Returns raw bytes for a file resolved by ref and path.`,builder:k,handler:async i=>{let s={ref:i.ref,path:i.path};if(i.dryRun){a({command:`cf artifacts namespaces repos files get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${i.namespace==null?`<namespace>`:encodeURIComponent(String(i.namespace))}/repos/${i.name==null?`<name>`:encodeURIComponent(String(i.name))}/file`,pathParams:{namespace:String(i.namespace??``),name:String(i.name??``)},query:s,bodyKind:`none`});return}await r(i);let c=i.local?e:await t();i.accountId=c;let l=new URLSearchParams(Object.entries(s).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),u=await o(`Loading`,async()=>m(`/accounts/${c}/artifacts/namespaces/${encodeURIComponent(String(i.namespace))}/repos/${encodeURIComponent(String(i.name))}/file${l?`?`+l:``}`,{method:`GET`,local:i.local===!0,persistTo:i.persistTo}));p(i.text===!0?u.toString(`utf-8`):u)}},j={command:`files`,describe:`Operations for namespaces.repos.files`,builder:e=>e.command(A).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function M(e){return e.positional(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`default-branch-only`,{type:`boolean`,description:`The default_branch_only field`}).option(`description`,{type:`string`,description:`The description field`}).option(`read-only`,{type:`boolean`,description:`The read_only 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 N={command:`fork <name>`,describe:`Forks a source repository into a new repository.`,builder:M,handler:async u=>{if(u.dryRun){a({command:`cf artifacts namespaces repos fork`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${u.namespace==null?`<namespace>`:encodeURIComponent(String(u.namespace))}/repos/${u.name==null?`<name>`:encodeURIComponent(String(u.name))}/fork`,pathParams:{namespace:String(u.namespace??``),name:String(u.name??``)},bodyKind:`json`,body:u.body===void 0?c({default_branch_only:u[`default-branch-only`],description:l(u.description,`description`,`text`),read_only:u[`read-only`]}):s(u.body)});return}let d=await r(u),f=u.local?e:await t();if(u.accountId=f,u.body){let e=s(u.body);i(await o(`Creating`,async()=>d.artifacts.namespaces.repos.fork({...e,account_id:f,namespace:u.namespace,name:u.name})),{successLabel:`Created`});return}let p=c({default_branch_only:u[`default-branch-only`],description:l(u.description,`description`,`text`),read_only:u[`read-only`]});i(await o(`Creating`,async()=>d.artifacts.namespaces.repos.fork({...p,account_id:f,namespace:u.namespace,name:u.name})),{successLabel:`Created`})}};function P(e){return e.positional(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const F={command:`get <name>`,describe:`Returns repository metadata.`,builder:P,handler:async s=>{if(s.dryRun){a({command:`cf artifacts namespaces repos get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/repos/${s.name==null?`<name>`:encodeURIComponent(String(s.name))}`,pathParams:{namespace:String(s.namespace??``),name:String(s.name??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.artifacts.namespaces.repos.get({account_id:l,namespace:s.namespace,name:s.name})),{successLabel:`Loaded`})}};function ee(e){return e.positional(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`branch`,{type:`string`,description:`Git branch name. Must match /^[a-zA-Z0-9][a-zA-Z0-9._/-]*$/, must not contain '..', and must not end with '/' or '.'.`}).option(`depth`,{type:`number`,description:`The depth field`}).option(`read-only`,{type:`boolean`,description:`The read_only field`}).option(`url`,{type:`string`,description:`The url 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 I={command:`import <name>`,describe:`Imports an HTTPS Git repository into an Artifacts repository.`,builder:ee,handler:async d=>{if(d.dryRun){a({command:`cf artifacts namespaces repos import`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${d.namespace==null?`<namespace>`:encodeURIComponent(String(d.namespace))}/repos/${d.name==null?`<name>`:encodeURIComponent(String(d.name))}/import`,pathParams:{namespace:String(d.namespace??``),name:String(d.name??``)},bodyKind:`json`,body:d.body===void 0?c({branch:l(d.branch,`branch`,`text`),depth:d.depth,read_only:d[`read-only`],url:l(d.url,`url`,`text`)}):s(d.body)});return}let f=await r(d),p=d.local?e:await t();if(d.accountId=p,d.body){let e=s(d.body);i(await o(`Creating`,async()=>f.artifacts.namespaces.repos.import({...e,account_id:p,namespace:d.namespace,name:d.name})),{successLabel:`Created`});return}d.url===void 0&&(d.url=await u(`url`,`The url field`));let m=c({branch:l(d.branch,`branch`,`text`),depth:d.depth,read_only:d[`read-only`],url:l(d.url,`url`,`text`)});i(await o(`Creating`,async()=>f.artifacts.namespaces.repos.import({...m,account_id:p,namespace:d.namespace,name:d.name})),{successLabel:`Created`})}};function L(e){return e.option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`limit`,{type:`number`,description:`Limit`}).option(`cursor`,{type:`string`,description:`Cursor`}).option(`search`,{type:`string`,description:`Search`}).option(`sort`,{type:`string`,description:`Sort`,choices:[`created_at`,`updated_at`,`last_push_at`,`name`]}).option(`direction`,{type:`string`,description:`Direction`,choices:[`asc`,`desc`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const R={command:`list`,describe:`Lists repositories in a namespace.`,builder:f(L),handler:async s=>{let c={limit:s.limit,cursor:s.cursor,search:s.search,sort:s.sort,direction:s.direction};if(s.dryRun){a({command:`cf artifacts namespaces repos list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/repos`,pathParams:{namespace:String(s.namespace??``)},query:c,bodyKind:`none`});return}let l=await r(s),u=s.local?e:await t();s.accountId=u,i(await o(`Loading`,async()=>l.artifacts.namespaces.repos.list({account_id:u,namespace:s.namespace,...c})),{successLabel:`Loaded`})}};function z(e){return e.positional(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`ref`,{type:`string`,description:`Git ref, branch, tag, or commit hash. Defaults to HEAD.`}).option(`limit`,{type:`number`,description:`Limit`}).option(`offset`,{type:`number`,description:`Offset`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const B={command:`get <name>`,describe:`Returns commit metadata walking backwards from a ref, branch, tag, or HEAD.`,builder:z,handler:async s=>{let c={ref:s.ref,limit:s.limit,offset:s.offset};if(s.dryRun){a({command:`cf artifacts namespaces repos logs get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/repos/${s.name==null?`<name>`:encodeURIComponent(String(s.name))}/log`,pathParams:{namespace:String(s.namespace??``),name:String(s.name??``)},query:c,bodyKind:`none`});return}let l=await r(s),u=s.local?e:await t();s.accountId=u,i(await o(`Loading`,async()=>l.artifacts.namespaces.repos.logs.get({account_id:u,namespace:s.namespace,name:s.name,...c})),{successLabel:`Loaded`})}},V={command:`logs`,describe:`Operations for namespaces.repos.logs`,builder:e=>e.command(B).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function H(e){return e.positional(`path`,{type:`string`,description:`File path. May contain slashes.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`ref`,{type:`string`,description:`Git ref, branch, tag, or 40-character commit hash.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1})}const U={command:`get <path>`,describe:`Returns file bytes resolved by ref and path, with a sniffed content type and browser-safe response headers.`,builder:H,handler:async i=>{if(i.dryRun){a({command:`cf artifacts namespaces repos raw get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${i.namespace==null?`<namespace>`:encodeURIComponent(String(i.namespace))}/repos/${i.name==null?`<name>`:encodeURIComponent(String(i.name))}/raw/${i.ref==null?`<ref>`:encodeURIComponent(String(i.ref))}/${i.path==null?`<path>`:encodeURIComponent(String(i.path))}`,pathParams:{namespace:String(i.namespace??``),name:String(i.name??``),ref:String(i.ref??``),path:String(i.path??``)},bodyKind:`none`});return}await r(i);let s=i.local?e:await t();i.accountId=s;let c=await o(`Loading`,async()=>m(`/accounts/${s}/artifacts/namespaces/${encodeURIComponent(String(i.namespace))}/repos/${encodeURIComponent(String(i.name))}/raw/${encodeURIComponent(String(i.ref))}/${encodeURIComponent(String(i.path))}`,{method:`GET`,local:i.local===!0,persistTo:i.persistTo}));p(i.text===!0?c.toString(`utf-8`):c)}},W={command:`raw`,describe:`Operations for namespaces.repos.raw`,builder:e=>e.command(U).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function G(e){return e.positional(`hash`,{type:`string`,description:`40-character lowercase hexadecimal Git object hash.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const K={command:`get <hash>`,describe:`Returns decoded entries for an immutable Git tree object. Tree responses are cacheable forever by hash.`,builder:G,handler:async s=>{if(s.dryRun){a({command:`cf artifacts namespaces repos trees get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/repos/${s.name==null?`<name>`:encodeURIComponent(String(s.name))}/tree/${s.hash==null?`<hash>`:encodeURIComponent(String(s.hash))}`,pathParams:{namespace:String(s.namespace??``),name:String(s.name??``),hash:String(s.hash??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.artifacts.namespaces.repos.trees.get({account_id:l,namespace:s.namespace,name:s.name,hash:s.hash})),{successLabel:`Loaded`})}},q={command:`trees`,describe:`Operations for namespaces.repos.trees`,builder:e=>e.command(K).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},J={command:`repos`,describe:`Operations for namespaces.repos`,builder:e=>e.command(E).command(O).command(N).command(F).command(I).command(R).command(x).command(w).command(j).command(V).command(W).command(q).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Y(e){return e.positional(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`repo`,{type:`string`,description:`The repo field`}).option(`scope`,{type:`string`,description:`The scope field`,choices:[`read`,`write`]}).option(`ttl`,{type:`number`,description:`The ttl 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 X={command:`create <namespace>`,describe:`Creates a scoped Git token for a repository.`,builder:Y,handler:async d=>{if(d.dryRun){a({command:`cf artifacts namespaces tokens create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${d.namespace==null?`<namespace>`:encodeURIComponent(String(d.namespace))}/tokens`,pathParams:{namespace:String(d.namespace??``)},bodyKind:`json`,body:d.body===void 0?c({repo:l(d.repo,`repo`,`text`),scope:l(d.scope,`scope`,`text`),ttl:d.ttl}):s(d.body)});return}let f=await r(d),p=d.local?e:await t();if(d.accountId=p,d.body){let e=s(d.body);i(await o(`Creating`,async()=>f.artifacts.namespaces.tokens.create({...e,account_id:p,namespace:d.namespace})),{successLabel:`Created`});return}d.repo===void 0&&(d.repo=await u(`repo`,`The repo field`));let m=c({repo:l(d.repo,`repo`,`text`),scope:l(d.scope,`scope`,`text`),ttl:d.ttl});i(await o(`Creating`,async()=>f.artifacts.namespaces.tokens.create({...m,account_id:p,namespace:d.namespace})),{successLabel:`Created`})}};function Z(e){return e.option(`namespace`,{type:`string`,description:`Artifacts namespace name.`,demandOption:!0}).option(`name`,{type:`string`,description:`Repository name.`,demandOption:!0}).option(`state`,{type:`string`,description:`State`,choices:[`active`,`expired`,`revoked`,`all`]}).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 Q={command:`list`,describe:`Lists tokens for a repository.`,builder:f(Z),handler:async s=>{let c={state:s.state,page:s.page,per_page:s[`per-page`]};if(s.dryRun){a({command:`cf artifacts namespaces tokens list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/repos/${s.name==null?`<name>`:encodeURIComponent(String(s.name))}/tokens`,pathParams:{namespace:String(s.namespace??``),name:String(s.name??``)},query:c,bodyKind:`none`});return}let l=await r(s),u=s.local?e:await t();s.accountId=u,i(await o(`Loading`,async()=>l.artifacts.namespaces.tokens.list({account_id:u,namespace:s.namespace,name:s.name,...c})),{successLabel:`Loaded`})}};function $(e){return e.positional(`id`,{type:`string`,description:`Token ID. Must match /^[0-9a-z]{16}$/.`,demandOption:!0}).option(`namespace`,{type:`string`,description:`Artifacts namespace 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 te={command:`revoke <id>`,describe:`Revokes an Artifacts repository token.`,builder:$,handler:async s=>{if(s.dryRun){a({command:`cf artifacts namespaces tokens revoke`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/artifacts/namespaces/${s.namespace==null?`<namespace>`:encodeURIComponent(String(s.namespace))}/tokens/${s.id==null?`<id>`:encodeURIComponent(String(s.id))}`,pathParams:{namespace:String(s.namespace??``),id:String(s.id??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();if(s.accountId=l,!await d({force:!!s.force})){process.stderr.write(`Aborted.
4
+ `);return}i(await o(`Deleting`,async()=>c.artifacts.namespaces.tokens.revoke({account_id:l,namespace:s.namespace,id:s.id})),{successLabel:`Deleted`})}},ne={command:`tokens`,describe:`Operations for namespaces.tokens`,builder:e=>e.command(X).command(Q).command(te).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},re={command:`namespaces`,describe:`Operations for namespaces`,builder:e=>e.command(g).command(v).command(J).command(ne).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ie={command:`artifacts`,describe:`artifacts`,builder:e=>e.command(re).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{ie as default};