cf 0.9.0 → 0.10.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 (262) hide show
  1. package/README.md +5 -0
  2. package/dist/_meta/agent-context.json +34 -35
  3. package/dist/_meta/commands.json +6834 -10044
  4. package/dist/_meta/schemas.json +11228 -12752
  5. package/dist/{abuse-reports-DnNvw2gG.mjs → abuse-reports-CGF4zcKf.mjs} +2 -2
  6. package/dist/{access-RbqBFrSC.mjs → access-lhLJo1v2.mjs} +1 -1
  7. package/dist/{account-D7xvYqDx.mjs → account-CYRm3yoN.mjs} +1 -1
  8. package/dist/account-tags-B88TotoH.mjs +9 -0
  9. package/dist/accounts-BSIAT_iP.mjs +28 -0
  10. package/dist/{acm-Szq4CoQN.mjs → acm-VULm1djv.mjs} +1 -1
  11. package/dist/{addressing-CgTTbuCF.mjs → addressing-BHPBIkRY.mjs} +1 -1
  12. package/dist/{agent-context-Bu6yvDqA.mjs → agent-context-KBy48G1b.mjs} +1 -1
  13. package/dist/{agent-memory-C8pT01pR.mjs → agent-memory-DDv_Gxr7.mjs} +2 -2
  14. package/dist/{ai-audit-CCygMmsh.mjs → ai-audit-BWZGvbca.mjs} +1 -1
  15. package/dist/{ai-gateway-D4tATNRV.mjs → ai-gateway-jeB-sAgP.mjs} +1 -1
  16. package/dist/ai-search-BmdskMjR.mjs +7 -0
  17. package/dist/{ai-security-AUfzagSE.mjs → ai-security-CsmfcaUx.mjs} +1 -1
  18. package/dist/{ai-Cn0BniR4.mjs → ai-viHB1tgI.mjs} +1 -1
  19. package/dist/{alerting-DbXVpGv3.mjs → alerting-Bl8OqViR.mjs} +4 -4
  20. package/dist/analytics-vOxw8Hy0.mjs +3 -0
  21. package/dist/{analytics_engine-B_bMbfxW.mjs → analytics_engine-DO4-C0wD.mjs} +1 -1
  22. package/dist/{api-security-pSJdgmtK.mjs → api-security-4FVrD4n8.mjs} +1 -1
  23. package/dist/argo-CQfCgazW.mjs +2 -0
  24. package/dist/args-DlUhyGU0.mjs +2 -0
  25. package/dist/artifacts-CVDGnr2V.mjs +4 -0
  26. package/dist/{audit-logs-BIHP5-rk.mjs → audit-logs-CzpwvQ6A.mjs} +1 -1
  27. package/dist/{auth-MeSu8lFz.mjs → auth-D0xZxAEa.mjs} +1 -1
  28. package/dist/{auth-C6MhC9EZ.mjs → auth-MQEamPN9.mjs} +2 -2
  29. package/dist/{billing-0RNCYBJM.mjs → billing-aJgapeRm.mjs} +2 -2
  30. package/dist/{bot-management-uhBRnSPl.mjs → bot-management-Y2q5d-pi.mjs} +1 -1
  31. package/dist/{botnet-feed-DEbMknrE.mjs → botnet-feed-DANJqfmE.mjs} +1 -1
  32. package/dist/{brand-protection-DY2qPL8d.mjs → brand-protection-CjpZWBjp.mjs} +1 -1
  33. package/dist/{browser-extension-DBsmLCUj.mjs → browser-extension-BtpCbh-2.mjs} +1 -1
  34. package/dist/browser-run-BFn9h2Tz.mjs +4 -0
  35. package/dist/{build-Nivzj54_.mjs → build-DcflwvqN.mjs} +1 -1
  36. package/dist/{cache-BgRIDcFJ.mjs → cache-VyWK1SjY.mjs} +1 -1
  37. package/dist/{calls-JrRne0U0.mjs → calls-BxoRYxs4.mjs} +1 -1
  38. package/dist/{certificate-authorities-BJ7W8GGQ.mjs → certificate-authorities-D7OAFxF_.mjs} +1 -1
  39. package/dist/{cf-BUKsENG5.mjs → cf-C7DU4819.mjs} +2 -2
  40. package/dist/{chunk-LQW53VED-Xakf_rUn.mjs → chunk-LQW53VED-DLrXV-hE.mjs} +2 -2
  41. package/dist/{client-certificates-6xxvcOgI.mjs → client-certificates-DDUv8K0a.mjs} +1 -1
  42. package/dist/{client-side-security-cU0Z1tql.mjs → client-side-security-D4ysjwWT.mjs} +1 -1
  43. package/dist/{cloud-connector-DFooSAcn.mjs → cloud-connector-Bhec6z2P.mjs} +1 -1
  44. package/dist/cloudforce-one-J_hn9ss9.mjs +36 -0
  45. package/dist/config.mjs +1 -1
  46. package/dist/connector-interrupts-Dycx8zFx.mjs +2 -0
  47. package/dist/{connector-telemetry-events-CTMmX2BA.mjs → connector-telemetry-events-BmxOSNtN.mjs} +1 -1
  48. package/dist/connector-telemetry-events-latest-BY2556uL.mjs +2 -0
  49. package/dist/{connector-telemetry-snapshots-5Y7m8Cw8.mjs → connector-telemetry-snapshots-CdcqfKnH.mjs} +1 -1
  50. package/dist/connector-telemetry-snapshots-latest-BHYdxUEF.mjs +2 -0
  51. package/dist/{connectors-BRCQSsos.mjs → connectors-BqxYMMtQ.mjs} +1 -1
  52. package/dist/{containers-CfKOM_f5.mjs → containers-CKW081JA.mjs} +8 -8
  53. package/dist/{content-scan-CB4xHGv1.mjs → content-scan-Dgd7A8KF.mjs} +1 -1
  54. package/dist/{csamScanner-AQo_QTlq.mjs → csamScanner-DYL37wLc.mjs} +1 -1
  55. package/dist/{ct-alerting-Bai-1Z3k.mjs → ct-alerting-CkhSbfAs.mjs} +1 -1
  56. package/dist/{custom-certificates-D6aQIGu2.mjs → custom-certificates-BzAOnEoT.mjs} +1 -1
  57. package/dist/custom-csrs-CgzG3pd3.mjs +3 -0
  58. package/dist/{custom-hostnames-BiOVGwnR.mjs → custom-hostnames-q_nsnlye.mjs} +4 -4
  59. package/dist/custom-nameservers-BUBmfhUe.mjs +3 -0
  60. package/dist/custom-pages-M7jA2Hit.mjs +3 -0
  61. package/dist/{d1-FmAh7T7l.mjs → d1-BFvMd6-S.mjs} +1 -1
  62. package/dist/{data-security-2fmzF_Me.mjs → data-security-Bji4Or_j.mjs} +2 -2
  63. package/dist/{dcv-delegation-Cmxxgi9V.mjs → dcv-delegation-BuoRQ1Yh.mjs} +1 -1
  64. package/dist/{deploy-BzFbjH6a.mjs → deploy-CZ7bgNDu.mjs} +1 -1
  65. package/dist/{deploy-input-BRMQehgs.mjs → deploy-input-CrvuoDGJ.mjs} +1 -1
  66. package/dist/{dev-CWaf-qW4.mjs → dev-V10MG-Bg.mjs} +1 -1
  67. package/dist/{diagnostics-Ca6r_972.mjs → diagnostics-BTH-8nJH.mjs} +2 -2
  68. package/dist/{directory-CGNWfVQc.mjs → directory-BlH6N6Qy.mjs} +1 -1
  69. package/dist/{dispatch-namespaces-CBo5kuf7.mjs → dispatch-namespaces-BCjH1JzB.mjs} +1 -1
  70. package/dist/{dist-COfwjT96.mjs → dist-CgrMkXFx.mjs} +1 -1
  71. package/dist/{dls-CobKlH4N.mjs → dls-BF5iN78p.mjs} +1 -1
  72. package/dist/{dns-OfJXNYkK.mjs → dns-CeCTNqRk.mjs} +11 -11
  73. package/dist/{dns-firewall-DZ2ij-nX.mjs → dns-firewall-B54MaLGm.mjs} +1 -1
  74. package/dist/{dot-prop-6SRZBKHT-C_xd7eTS.mjs → dot-prop-6SRZBKHT-wIVDg_fl.mjs} +1 -1
  75. package/dist/{durable-objects-Cw_y37WB.mjs → durable-objects-D8FQORrL.mjs} +1 -1
  76. package/dist/{email-auth-DuJHdiwN.mjs → email-auth-DJK0Eb30.mjs} +1 -1
  77. package/dist/email-routing-NpmiKIrl.mjs +6 -0
  78. package/dist/{email-security-D-P8ln2L.mjs → email-security-BLZ7WZ9Z.mjs} +2 -2
  79. package/dist/email-sending-dn-353Nx.mjs +7 -0
  80. package/dist/fieldExtractors-ahysj57J.mjs +3 -0
  81. package/dist/firewall-CBPGJ43p.mjs +11 -0
  82. package/dist/{flagship-CPkQMist.mjs → flagship-BusjRNIb.mjs} +3 -3
  83. package/dist/{fraud-BhX0QNUl.mjs → fraud-BIhS8pLf.mjs} +1 -1
  84. package/dist/{google-tag-gateway-CDtRxao4.mjs → google-tag-gateway-TZZ3F1tV.mjs} +1 -1
  85. package/dist/{healthchecks-D2WwALvQ.mjs → healthchecks-FiXIk-KP.mjs} +2 -2
  86. package/dist/{hostnames-CGAFkYT1.mjs → hostnames-Bx0mykMR.mjs} +1 -1
  87. package/dist/{hyperdrive-zLFPWFQj.mjs → hyperdrive-C8qCabBF.mjs} +1 -1
  88. package/dist/{iam-Su_hpatD.mjs → iam-Cj63Kjc6.mjs} +1 -1
  89. package/dist/{images-D2ZflvBi.mjs → images-CBWXCDhy.mjs} +1 -1
  90. package/dist/index.mjs +1 -1
  91. package/dist/{intel-DPGzVovJ.mjs → intel-B-9Z_sJs.mjs} +2 -2
  92. package/dist/{interactive-CM2G03lr.mjs → interactive-DtsCYfrK.mjs} +1 -1
  93. package/dist/{ips-C5-NH1b0.mjs → ips-qs9eGJnI.mjs} +1 -1
  94. package/dist/{keyless-certificates-Xx-oAN3Z.mjs → keyless-certificates-THHvoXX3.mjs} +1 -1
  95. package/dist/{keys-B0FBtlOD.mjs → keys-D7N0j4-x.mjs} +1 -1
  96. package/dist/{kv-BbZ9st5o.mjs → kv-BFDUCnft.mjs} +1 -1
  97. package/dist/{leaked-credential-checks-Vonw4inx.mjs → leaked-credential-checks-DUlUCOoJ.mjs} +1 -1
  98. package/dist/load-balancers-D2zbQ8fT.mjs +6 -0
  99. package/dist/{local-eEF0NF51.mjs → local-D-aVNu6A.mjs} +1 -1
  100. package/dist/{local-runtime-BNCCOZ8s.mjs → local-runtime-Dh3keC5v.mjs} +1 -1
  101. package/dist/logexplorer-CUsfZ_bS.mjs +13 -0
  102. package/dist/{logo-matches-oHYc8Xaz.mjs → logo-matches-CJcthPHf.mjs} +1 -1
  103. package/dist/{logos-DS0krPAz.mjs → logos-BS65zN8q.mjs} +1 -1
  104. package/dist/logpush-BK34mMQs.mjs +4 -0
  105. package/dist/{logs-C07M9zn-.mjs → logs-CLAqX9h2.mjs} +1 -1
  106. package/dist/{magic-cloud-networking-ZPEK7O5I.mjs → magic-cloud-networking-h_ozrC5S.mjs} +1 -1
  107. package/dist/magic-network-monitoring-C7tAPNKP.mjs +4 -0
  108. package/dist/{magic-transit-CgPZ8iMn.mjs → magic-transit-BtsFePMx.mjs} +5 -5
  109. package/dist/{managed-transforms-2XyQ14s3.mjs → managed-transforms-Cm_KVCMB.mjs} +1 -1
  110. package/dist/{matches-CIaCrdrs.mjs → matches-InA1hwII.mjs} +1 -1
  111. package/dist/{mcp-D2afM8MD.mjs → mcp-mJ7bekNJ.mjs} +1 -1
  112. package/dist/mesh-BK4S1Ezy.mjs +4 -0
  113. package/dist/{moq-BBQVNGo1.mjs → moq-qmuVPAO0.mjs} +1 -1
  114. package/dist/{mtls-certificates-C5j0Gn65.mjs → mtls-certificates-CU4OAAXY.mjs} +1 -1
  115. package/dist/{network-CmuJqtFJ.mjs → network-D74cSy3t.mjs} +1 -1
  116. package/dist/{network-interconnects-BlajBQqs.mjs → network-interconnects-BJ0Nc48J.mjs} +1 -1
  117. package/dist/{oauth-BjHjJtnn.mjs → oauth-B0ETkNcX.mjs} +2 -2
  118. package/dist/{oauth-clients-BSthfZP-.mjs → oauth-clients-Br-smLxQ.mjs} +1 -1
  119. package/dist/{oauth-scopes-ByUp5bLU.mjs → oauth-scopes-D5bF11ju.mjs} +1 -1
  120. package/dist/observability-BWE0Gg3V.mjs +4 -0
  121. package/dist/{open-PBXRGS4R-C46yIm3u.mjs → open-PBXRGS4R-R-qesf18.mjs} +1 -1
  122. package/dist/{organization-DQIfNVCT.mjs → organization-NX7yCZrq.mjs} +1 -1
  123. package/dist/{organizations-L_ycAy6r.mjs → organizations-DLhiRt8g.mjs} +1 -1
  124. package/dist/{origin-ca-certificates-opIcs3_Q.mjs → origin-ca-certificates-Ff4McZRQ.mjs} +1 -1
  125. package/dist/{origin-post-quantum-encryption-TSMXzoEL.mjs → origin-post-quantum-encryption-UuTr4_SW.mjs} +1 -1
  126. package/dist/{origin-tls-client-auth-5CtcPUR6.mjs → origin-tls-client-auth-DOJ1zlH3.mjs} +1 -1
  127. package/dist/{output-DgW1hQGX.mjs → output-DrpYYfnB.mjs} +1 -1
  128. package/dist/{page-rules-DPd1Y3IL.mjs → page-rules-BSz1gO-_.mjs} +1 -1
  129. package/dist/{pages-CskAn5mR.mjs → pages-DVDogxPs.mjs} +4 -4
  130. package/dist/{pay-per-crawl-BMa_V40s.mjs → pay-per-crawl-BrLXK7gT.mjs} +1 -1
  131. package/dist/{pipelines-BbJjj1ZQ.mjs → pipelines-BszRk4sM.mjs} +2 -2
  132. package/dist/{precursor-DgRWBN9_.mjs → precursor-BPNjQr76.mjs} +1 -1
  133. package/dist/progress-CsHIt3Tp.mjs +2 -0
  134. package/dist/{prompt-DM4z101s.mjs → prompt-DdegNPpg.mjs} +1 -1
  135. package/dist/{queries-DrqcK0ZX.mjs → queries-JL1H1Biz.mjs} +1 -1
  136. package/dist/{queues-CutvMZcc.mjs → queues-DpkYdRUE.mjs} +1 -1
  137. package/dist/{r2-sFI62vhq.mjs → r2-CKozthw_.mjs} +4 -4
  138. package/dist/{r2-data-catalog-3vzU6FE1.mjs → r2-data-catalog-Du7hN9jA.mjs} +1 -1
  139. package/dist/radar-C-92vggG.mjs +2 -0
  140. package/dist/{rate-limits-HRZ8zMSl.mjs → rate-limits-yBF3qoYD.mjs} +1 -1
  141. package/dist/{raw-fetch-25gXED6c.mjs → raw-fetch-CteyTOM2.mjs} +1 -1
  142. package/dist/realtimekit-CIP7lP-a.mjs +7 -0
  143. package/dist/{registrar-C0EsXf83.mjs → registrar-DKKN0M29.mjs} +3 -3
  144. package/dist/{registrar-sandbox-CR9Rr7jV.mjs → registrar-sandbox-DiXg8p_1.mjs} +3 -3
  145. package/dist/{registry-CJvn75Bq.mjs → registry-Bck_zFkz.mjs} +1 -1
  146. package/dist/{reporting-BB6sqe6r.mjs → reporting-fg_GKXe1.mjs} +1 -1
  147. package/dist/{request-tracers-BrsM3zXZ.mjs → request-tracers-CkMya96z.mjs} +1 -1
  148. package/dist/{resource-sharing-CusU3kiy.mjs → resource-sharing-D1pSDvtf.mjs} +1 -1
  149. package/dist/{resource-tagging-wXAcblmz.mjs → resource-tagging-z48JGHCq.mjs} +1 -1
  150. package/dist/{rules-C2BxykEe.mjs → rules-BTmNjDN-.mjs} +1 -1
  151. package/dist/rulesets-CsoSM-17.mjs +5 -0
  152. package/dist/{rum-Dyno5zj3.mjs → rum-DB4iO2q5.mjs} +1 -1
  153. package/dist/{schema-BeXPWeK9.mjs → schema-B34Q9tLF.mjs} +1 -1
  154. package/dist/{schema-flags-C1BRprT2.mjs → schema-flags-iGoOriJt.mjs} +1 -1
  155. package/dist/{scim-Bb2xHpIz.mjs → scim-CcSyfKCH.mjs} +1 -1
  156. package/dist/sdk-ZctLa5jW.mjs +3 -0
  157. package/dist/{secrets-store-BMhjbceW.mjs → secrets-store-DFmvtphu.mjs} +1 -1
  158. package/dist/security-center-DFKeHq5c.mjs +2 -0
  159. package/dist/{security-txt-Bh_2gymk.mjs → security-txt-DqnFpjMI.mjs} +1 -1
  160. package/dist/{session-Br-q_UIW.mjs → session-D6KHthHf.mjs} +1 -1
  161. package/dist/{share-DfTpOxhk.mjs → share-BuwYUzOL.mjs} +1 -1
  162. package/dist/{shared-BNjZc02w.mjs → shared-VppSAQf4.mjs} +1 -1
  163. package/dist/{smart-shield-rHn-Lckq.mjs → smart-shield-D6X8L7p8.mjs} +2 -2
  164. package/dist/{snippets-nSLwH8uJ.mjs → snippets-DIpc9pb_.mjs} +1 -1
  165. package/dist/{spawn-Bj8QRFJ5.mjs → spawn-O1RS01vr.mjs} +2 -2
  166. package/dist/{spectrum-DuhSUTZI.mjs → spectrum-b7N1ZRAm.mjs} +1 -1
  167. package/dist/{speed-Dgby_e1J.mjs → speed-cw31yFva.mjs} +1 -1
  168. package/dist/src-D_HETJNy.mjs +108 -0
  169. package/dist/{ssl-BsxTHasY.mjs → ssl-CsEhRVTO.mjs} +1 -1
  170. package/dist/{state-C1m9nwUm.mjs → state-Bb5Cbc_L.mjs} +1 -1
  171. package/dist/{stream-CkEOX5Ko.mjs → stream-DFOao6Gu.mjs} +3 -3
  172. package/dist/{submit-BjdywxTq.mjs → submit--xTzyNPy.mjs} +1 -1
  173. package/dist/{tags-CFAw_Sce.mjs → tags-efICDkah.mjs} +1 -1
  174. package/dist/{tenant-C66iOy5O.mjs → tenant-CerHuToJ.mjs} +1 -1
  175. package/dist/{tenant-custom-nameservers-CyJZ_AB0.mjs → tenant-custom-nameservers-C4otMBm2.mjs} +1 -1
  176. package/dist/{tools-D2Xxfkrc.mjs → tools-BHfBOZOU.mjs} +1 -1
  177. package/dist/{triggers-Dv22ZXM4.mjs → triggers-BEsiiKAf.mjs} +1 -1
  178. package/dist/{tunnel-BatkLdds.mjs → tunnel-DkMiNtVY.mjs} +1 -1
  179. package/dist/{tunnels-CstoXOoq.mjs → tunnels-D0J8lJoI.mjs} +1 -1
  180. package/dist/{turnstile-IoRtama4.mjs → turnstile-CFmtY5bn.mjs} +2 -2
  181. package/dist/{ui-DjQ4AQww.mjs → ui-DE8CNn6c.mjs} +1 -1
  182. package/dist/{url-info-Hjhwr2la.mjs → url-info-DBCeRWwb.mjs} +1 -1
  183. package/dist/{url-normalization-C2BP_Kl0.mjs → url-normalization-ClfFiruK.mjs} +1 -1
  184. package/dist/{url-scanner-DmYVTdAE.mjs → url-scanner-CNyvg65L.mjs} +1 -1
  185. package/dist/{user-CVHm-cnB.mjs → user-bifVEQq5.mjs} +2 -2
  186. package/dist/{values-Cmlw5wGZ.mjs → values-OxkdP1tV.mjs} +1 -1
  187. package/dist/{vectorize-BQtIqiNO.mjs → vectorize-CVKu7lEt.mjs} +1 -1
  188. package/dist/{versions-CU6Av1vh.mjs → versions-BVL-Ludh.mjs} +1 -1
  189. package/dist/waiting-rooms-CmRAl51T.mjs +11 -0
  190. package/dist/{web-assets-DmSKaxzf.mjs → web-assets-C2s9kzWf.mjs} +1 -1
  191. package/dist/{web3-DVv4jNul.mjs → web3-y_cY91V_.mjs} +1 -1
  192. package/dist/{workers-builds-DgrejrUc.mjs → workers-builds-B55-oXOa.mjs} +4 -4
  193. package/dist/{workers-D8czeT64.mjs → workers-jDcq14GH.mjs} +6 -6
  194. package/dist/{workflows-BOi5MTEN.mjs → workflows-B-kGHxFu.mjs} +2 -2
  195. package/dist/{zaraz-CGSSFJng.mjs → zaraz-27zwjLvv.mjs} +1 -1
  196. package/dist/zero-trust-DV3sIOvu.mjs +92 -0
  197. package/dist/{zone-Bx5ElO9U.mjs → zone-BJix2KQ9.mjs} +1 -1
  198. package/dist/{zones-_SnlZMiM.mjs → zones-Bkj5i92c.mjs} +1 -1
  199. package/package.json +2 -2
  200. package/dist/account-tags-CKRh1jra.mjs +0 -9
  201. package/dist/accounts-2pGhN4s8.mjs +0 -28
  202. package/dist/ai-search-2xP8FP_W.mjs +0 -7
  203. package/dist/analytics-UQrIx99t.mjs +0 -3
  204. package/dist/argo-Br60zF3y.mjs +0 -2
  205. package/dist/artifacts-D8HMRQmb.mjs +0 -4
  206. package/dist/browser-run-C5pYOwtf.mjs +0 -4
  207. package/dist/cloudforce-one-Cp4bQmrG.mjs +0 -30
  208. package/dist/connector-interrupts-BR47snkh.mjs +0 -2
  209. package/dist/custom-csrs-D0zBkQT5.mjs +0 -4
  210. package/dist/custom-nameservers-G2MWpRwY.mjs +0 -3
  211. package/dist/custom-pages-BINNZTds.mjs +0 -4
  212. package/dist/email-CGOC_evd.mjs +0 -2
  213. package/dist/email-routing-CRvIUSFm.mjs +0 -6
  214. package/dist/email-sending-BwRN8PMW.mjs +0 -7
  215. package/dist/filters-DczM8qpH.mjs +0 -4
  216. package/dist/firewall-BMiETRmM.mjs +0 -11
  217. package/dist/load-balancers-Ct5cyyF9.mjs +0 -7
  218. package/dist/logexplorer-BhsAWxCr.mjs +0 -24
  219. package/dist/logpush-CFQBi88z.mjs +0 -5
  220. package/dist/magic-network-monitoring-CY3CHSpX.mjs +0 -4
  221. package/dist/media-CnxgOViL.mjs +0 -2
  222. package/dist/mesh-DLNLi3UT.mjs +0 -4
  223. package/dist/observability-B5p3iwrq.mjs +0 -4
  224. package/dist/progress-C-oFUtvC.mjs +0 -2
  225. package/dist/radar-Cu9rsTw_.mjs +0 -2
  226. package/dist/realtimekit-msnGHBbf.mjs +0 -7
  227. package/dist/rulesets-BHvhAeG_.mjs +0 -8
  228. package/dist/sdk-m4xeaua4.mjs +0 -3
  229. package/dist/security-center-DRC4Mf3R.mjs +0 -2
  230. package/dist/src-CgAVPA4I.mjs +0 -108
  231. package/dist/waiting-rooms-ku9UsAr9.mjs +0 -11
  232. package/dist/zero-trust-BmA0VkgF.mjs +0 -102
  233. package/dist/zone-tags-izd3WWmy.mjs +0 -9
  234. /package/dist/{Page-C-JHZnIy.mjs → Page-9ry_XAVC.mjs} +0 -0
  235. /package/dist/{alerts-B85uj2Vx.mjs → alerts-CRmjqOZi.mjs} +0 -0
  236. /package/dist/{autorag-Do9l_LyY.mjs → autorag-BD7cu5NU.mjs} +0 -0
  237. /package/dist/{body-parser-CYD7PKFC.mjs → body-parser-C-c9gfH1.mjs} +0 -0
  238. /package/dist/{brands-DateHCdd.mjs → brands-BhALBkX2.mjs} +0 -0
  239. /package/dist/{chunk-6EUZQHAF-l8tR2Qyj.mjs → chunk-6EUZQHAF-B7bSMYLe.mjs} +0 -0
  240. /package/dist/{chunk-Q72B4Q5Z-CPy_WJKU.mjs → chunk-Q72B4Q5Z-DVMMVVEs.mjs} +0 -0
  241. /package/dist/{clear-CB2kgcEB.mjs → clear-BgF8No7D.mjs} +0 -0
  242. /package/dist/{cli-types-BWdZbsFE.mjs → cli-types-BsTty22w.mjs} +0 -0
  243. /package/dist/{domain-info-DJHEt8JJ.mjs → domain-info-C50W5GhA.mjs} +0 -0
  244. /package/dist/{health-buY5f5pp.mjs → health-BFNZqiAm.mjs} +0 -0
  245. /package/dist/{input-validation-BBKJRoRB.mjs → input-validation-Bav2M9F-.mjs} +0 -0
  246. /package/dist/{internal-CwyoJUHh.mjs → internal-BTeSewwB.mjs} +0 -0
  247. /package/dist/{live-wEpA5V_n.mjs → live-Dkiyu30_.mjs} +0 -0
  248. /package/dist/{public-BwQqexwo-DbWj8rrr.mjs → public-BwQqexwo-CNW_dPly.mjs} +0 -0
  249. /package/dist/{rate-limit-analytics-Bf1uT0lT.mjs → rate-limit-analytics-Dz-Wv1T0.mjs} +0 -0
  250. /package/dist/{ready-CBSCPiHE.mjs → ready-TKOkKeRg.mjs} +0 -0
  251. /package/dist/{recent-submissions-Dpmq1f7z.mjs → recent-submissions-3Asm6eIi.mjs} +0 -0
  252. /package/dist/{refute-u7ZPQJZy.mjs → refute-BVz9nMyd.mjs} +0 -0
  253. /package/dist/{resolve-XgxRJ-Ys.mjs → resolve-CeBbH6Pq.mjs} +0 -0
  254. /package/dist/{scan-logo-Ba8WZAyp.mjs → scan-logo-ZteA-PUV.mjs} +0 -0
  255. /package/dist/{scan-page-Bcq3Ei86.mjs → scan-page-DWDSyzQ7.mjs} +0 -0
  256. /package/dist/{search-D9WDwnV4.mjs → search-DGNc37HK.mjs} +0 -0
  257. /package/dist/{signed-url-CjPbG5zV.mjs → signed-url-B5Qpn2mn.mjs} +0 -0
  258. /package/dist/{submission-info-Z9hhp9Rq.mjs → submission-info-FjUolE6A.mjs} +0 -0
  259. /package/dist/{theme-BePJemMn.mjs → theme-CeVf-5qG.mjs} +0 -0
  260. /package/dist/{total-queries-aKAYX1iX.mjs → total-queries-NHJj1HGq.mjs} +0 -0
  261. /package/dist/{tracked-domains-Ck7Jm4Kn.mjs → tracked-domains-CniKVHIp.mjs} +0 -0
  262. /package/dist/{verify-2yi0H93r.mjs → verify-DS1PWAJe.mjs} +0 -0
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import{t as e}from"./local-D-aVNu6A.mjs";import{f as t,g as n}from"./oauth-B0ETkNcX.mjs";import{a as r,r as i}from"./auth-MQEamPN9.mjs";import{t as a}from"./output-DrpYYfnB.mjs";import{n as o,t as s}from"./progress-CsHIt3Tp.mjs";import{n as c,r as l,t as u}from"./body-parser-C-c9gfH1.mjs";import{n as d}from"./input-validation-Bav2M9F-.mjs";import{n as f}from"./prompt-DdegNPpg.mjs";import{t as p}from"./cli-types-BsTty22w.mjs";import{n as m,t as h}from"./raw-fetch-CteyTOM2.mjs";function g(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const _={command:`create`,describe:"Starts a crawl job for the provided URL and its children. Check available options like `gotoOptions` and `waitFor*` to control page load behaviour.",builder:g,handler:async l=>{let u={cacheTTL:l[`cache-ttl`]};if(l.dryRun){o({command:`cf browser-run crawl create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/crawl`,pathParams:{},query:u,bodyKind:`json`,body:l.body===void 0?void 0:c(l.body)});return}let d=await i(l),f=l.local?e:await t();if(l.accountId=f,l.body){let e=c(l.body);new URLSearchParams(Object.entries(u).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>d.browserRun.crawl.create({body:e,account_id:f,...u})),{successLabel:`Created`});return}a(await s(`Creating`,async()=>r(d,`POST`,`/accounts/${f}/browser-rendering/crawl`,{query:u})),{successLabel:`Created`})}};function ee(e){return e.positional(`job-id`,{type:`string`,description:`The ID of the crawl job to cancel.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const v={command:`delete <job-id>`,describe:`Cancels an ongoing crawl job by setting its status to cancelled and stopping all queued URLs.`,builder:ee,handler:async r=>{if(r.dryRun){o({command:`cf browser-run crawl delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/crawl/${r[`job-id`]==null?`<job-id>`:encodeURIComponent(String(r[`job-id`]))}`,pathParams:{"job-id":String(r[`job-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();if(r.accountId=l,!await f({force:!!r.force})){process.stderr.write(`Aborted.
3
+ `);return}a(await s(`Deleting`,async()=>c.browserRun.crawl.delete({account_id:l,job_id:r[`job-id`]})),{successLabel:`Deleted`})}};function y(e){return e.positional(`job-id`,{type:`string`,description:`Crawl job ID.`,demandOption:!0}).option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`status`,{type:`string`,description:`Filter by URL status.`,choices:[`queued`,`errored`,`completed`,`disallowed`,`skipped`,`cancelled`]}).option(`cursor`,{type:`number`,description:`Cursor for pagination.`}).option(`limit`,{type:`number`,description:`Limit for pagination.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const b={command:`get <job-id>`,describe:`Returns the result of a crawl job.`,builder:p(y),handler:async r=>{let c={cacheTTL:r[`cache-ttl`],status:r.status,cursor:r.cursor,limit:r.limit};if(r.dryRun){o({command:`cf browser-run crawl get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/crawl/${r[`job-id`]==null?`<job-id>`:encodeURIComponent(String(r[`job-id`]))}`,pathParams:{"job-id":String(r[`job-id`]??``)},query:c,bodyKind:`none`});return}let l=await i(r),u=r.local?e:await t();r.accountId=u,a(await s(`Loading`,async()=>l.browserRun.crawl.get({account_id:u,job_id:r[`job-id`],...c})),{successLabel:`Loaded`})}},x={command:`crawl`,describe:`Operations for crawl`,builder:e=>e.command(_).command(v).command(b).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function S(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID to connect to.`,demandOption:!0}).option(`keep-alive`,{type:`number`,description:`Keep-alive time in ms (only valid when acquiring new session).`}).option(`lab`,{type:`boolean`,description:`Use experimental browser.`}).option(`recording`,{type:`boolean`,description:`Recording`}).option(`cf-brapi-guardrails`,{type:`string`,description:`Optional base64url-encoded JSON connection guardrails (mode)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const C={command:`connect <session-id>`,describe:`Establishes a WebSocket connection to an existing browser session.`,builder:S,handler:async c=>{let l={keep_alive:c[`keep-alive`],lab:c.lab,recording:c.recording},u={};if(c[`cf-brapi-guardrails`]!==void 0&&(u[`cf-brapi-guardrails`]=String(c[`cf-brapi-guardrails`])),c.dryRun){o({command:`cf browser-run devtools browser connect`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${c[`session-id`]==null?`<session-id>`:encodeURIComponent(String(c[`session-id`]))}`,pathParams:{"session-id":String(c[`session-id`]??``)},query:l,bodyKind:`none`});return}let d=await i(c),f=c.local?e:await t();c.accountId=f,a(await s(`Loading`,async()=>r(d,`GET`,`/accounts/${f}/browser-rendering/devtools/browser/${encodeURIComponent(String(c[`session-id`]))}`,{query:l,headers:Object.keys(u).length>0?u:void 0})),{successLabel:`Loaded`})}};function w(e){return e.option(`keep-alive`,{type:`number`,description:`Keep-alive time in milliseconds.`}).option(`lab`,{type:`boolean`,description:`Use experimental browser.`}).option(`targets`,{type:`boolean`,description:`Include browser targets in response.`}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URL remains valid, in milliseconds (max 60 minutes). Only used when targets is true.`}).option(`recording`,{type:`boolean`,description:`Recording`}).option(`guardrails-allowed-domain-sets`,{type:`string`,array:!0,description:`Max 4 entries: curated preset names (common-cdns) and/or https URLs of newline-separated hostname lists.`}).option(`guardrails-allowed-domains`,{type:`string`,array:!0,description:`Hostname patterns, max 50. Supports exact hosts (example.com) or a single * wildcard anywhere. Prefer *.example.com (subdomain wildcard) over *example.com (prefix wildcard) to avoid matching overbroad lookalikes like evilexample.com.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const T={command:`create`,describe:`Acquires a browser and returns its session ID and websocket URL. Optionally accepts a JSON body with session guardrails to restrict outbound HTTP/S traffic.`,builder:w,handler:async r=>{let l={keep_alive:r[`keep-alive`],lab:r.lab,targets:r.targets,liveViewUrlExpiresInMs:r[`live-view-url-expires-in-ms`],recording:r.recording};if(r.dryRun){o({command:`cf browser-run devtools browser create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({guardrails:{allowedDomainSets:r[`guardrails-allowed-domain-sets`],allowedDomains:r[`guardrails-allowed-domains`]}}):c(r.body)});return}let d=await i(r),f=r.local?e:await t();if(r.accountId=f,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>d.browserRun.devtools.browser.create({...e,account_id:f,...l})),{successLabel:`Created`});return}let p=u({guardrails:{allowedDomainSets:r[`guardrails-allowed-domain-sets`],allowedDomains:r[`guardrails-allowed-domains`]}});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>d.browserRun.devtools.browser.create({...p,account_id:f,...l})),{successLabel:`Created`})}};function E(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID to close.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const D={command:`delete <session-id>`,describe:`Closes an existing browser session.`,builder:E,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools browser delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}`,pathParams:{"session-id":String(r[`session-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();if(r.accountId=l,!await f({force:!!r.force})){process.stderr.write(`Aborted.
4
+ `);return}a(await s(`Deleting`,async()=>c.browserRun.devtools.browser.delete({account_id:l,session_id:r[`session-id`]})),{successLabel:`Deleted`})}};function O(e){return e.option(`keep-alive`,{type:`number`,description:`Keep-alive time in ms (only valid when acquiring new session).`}).option(`lab`,{type:`boolean`,description:`Use experimental browser.`}).option(`recording`,{type:`boolean`,description:`Recording`}).option(`cf-brapi-guardrails`,{type:`string`,description:`Optional base64url-encoded JSON session guardrails (allowedDomains and allowedDomainSets)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const k={command:`launch`,describe:'Acquires and establishes a WebSocket connection to a browser session. Session guardrails may be supplied in the `cf-brapi-guardrails` header as base64url-encoded JSON of the same `guardrails` object the POST body accepts (for example `{"allowedDomains":["*.example.com"]}`).',builder:O,handler:async c=>{let l={keep_alive:c[`keep-alive`],lab:c.lab,recording:c.recording},u={};if(c[`cf-brapi-guardrails`]!==void 0&&(u[`cf-brapi-guardrails`]=String(c[`cf-brapi-guardrails`])),c.dryRun){o({command:`cf browser-run devtools browser launch`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser`,pathParams:{},query:l,bodyKind:`none`});return}let d=await i(c),f=c.local?e:await t();c.accountId=f,a(await s(`Loading`,async()=>r(d,`GET`,`/accounts/${f}/browser-rendering/devtools/browser`,{query:l,headers:Object.keys(u).length>0?u:void 0})),{successLabel:`Loaded`})}};function A(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID`,demandOption:!0}).option(`expires-in-ms`,{type:`number`,description:`How long the live view URLs remain valid, in milliseconds. Default: 5 minutes. Max: 60 minutes.`,default:3e5}).option(`guardrails-mode`,{type:`string`,description:`The guardrails.mode field`,choices:[`readonly`]}).option(`mode`,{type:`string`,description:`UI mode: 'devtools' (Chrome DevTools), 'tab' (single tab view), 'full' (multi-tab browser)`,choices:[`devtools`,`tab`,`full`],default:`devtools`}).option(`target-id`,{type:`string`,description:`Target ID (page) to connect to. If omitted, auto-resolves to the first active page.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`guardrails-mode`].some(t=>e[t]!==void 0)){let t=[`guardrails-mode`].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 --guardrails-* flag is set`)}return!0})}const j={command:`create <session-id>`,describe:"Generates time-limited URLs to view a remote browser session. Set `guardrails: { mode: 'readonly' }` to create a view-only link.",builder:A,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools browser live-view create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/live_view`,pathParams:{"session-id":String(r[`session-id`]??``)},bodyKind:`json`,body:r.body===void 0?u({expiresInMs:r[`expires-in-ms`],guardrails:{mode:d(r[`guardrails-mode`],`guardrails-mode`,`text`)},mode:d(r.mode,`mode`,`text`),targetId:d(r[`target-id`],`target-id`,`text`)}):c(r.body)});return}let l=await i(r),f=r.local?e:await t();if(r.accountId=f,r.body){let e=c(r.body);a(await s(`Creating`,async()=>l.browserRun.devtools.browser.liveView.create({...e,account_id:f,session_id:r[`session-id`]})),{successLabel:`Created`});return}let p=u({expiresInMs:r[`expires-in-ms`],guardrails:{mode:d(r[`guardrails-mode`],`guardrails-mode`,`text`)},mode:d(r.mode,`mode`,`text`),targetId:d(r[`target-id`],`target-id`,`text`)});a(await s(`Creating`,async()=>l.browserRun.devtools.browser.liveView.create({...p,account_id:f,session_id:r[`session-id`]})),{successLabel:`Created`})}},M={command:`live-view`,describe:`Operations for devtools.browser.live-view`,builder:e=>e.command(j).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function N(e){return e.positional(`target-id`,{type:`string`,description:`Target ID, e.g. page ID.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`cf-brapi-guardrails`,{type:`string`,description:`Optional base64url-encoded JSON connection guardrails (mode)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const P={command:`get <target-id>`,describe:`Establishes a WebSocket connection to a specific Chrome DevTools target or page.`,builder:N,handler:async c=>{let l={};if(c[`cf-brapi-guardrails`]!==void 0&&(l[`cf-brapi-guardrails`]=String(c[`cf-brapi-guardrails`])),c.dryRun){o({command:`cf browser-run devtools browser page get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${c[`session-id`]==null?`<session-id>`:encodeURIComponent(String(c[`session-id`]))}/page/${c[`target-id`]==null?`<target-id>`:encodeURIComponent(String(c[`target-id`]))}`,pathParams:{"session-id":String(c[`session-id`]??``),"target-id":String(c[`target-id`]??``)},bodyKind:`none`});return}let u=await i(c),d=c.local?e:await t();c.accountId=d,a(await s(`Loading`,async()=>r(u,`GET`,`/accounts/${d}/browser-rendering/devtools/browser/${encodeURIComponent(String(c[`session-id`]))}/page/${encodeURIComponent(String(c[`target-id`]))}`,{headers:Object.keys(l).length>0?l:void 0})),{successLabel:`Loaded`})}},F={command:`page`,describe:`Operations for devtools.browser.page`,builder:e=>e.command(P).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function I(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const L={command:`protocol <session-id>`,describe:`Returns the complete Chrome DevTools Protocol schema including all domains, commands, events, and types. This schema describes the entire CDP API surface.`,builder:I,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools browser protocol`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json/protocol`,pathParams:{"session-id":String(r[`session-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();r.accountId=l,a(await s(`Loading`,async()=>c.browserRun.devtools.browser.protocol({account_id:l,session_id:r[`session-id`]})),{successLabel:`Loaded`})}};function R(e){return e.positional(`target-id`,{type:`string`,description:`Target ID to activate.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const z={command:`activate <target-id>`,describe:`Activates (brings to front) a specific browser target by its ID.`,builder:R,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools browser targets activate`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json/activate/${r[`target-id`]==null?`<target-id>`:encodeURIComponent(String(r[`target-id`]))}`,pathParams:{"session-id":String(r[`session-id`]??``),"target-id":String(r[`target-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();r.accountId=l,a(await s(`Loading`,async()=>c.browserRun.devtools.browser.targets.activate({account_id:l,session_id:r[`session-id`],target_id:r[`target-id`]})),{successLabel:`Loaded`})}};function B(e){return e.positional(`target-id`,{type:`string`,description:`Target ID to close.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const V={command:`close <target-id>`,describe:`Closes a specific browser target (tab, page, etc.) by its ID. Returns 'Target is closing' on success or an error if the target is not found.`,builder:B,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools browser targets close`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json/close/${r[`target-id`]==null?`<target-id>`:encodeURIComponent(String(r[`target-id`]))}`,pathParams:{"session-id":String(r[`session-id`]??``),"target-id":String(r[`target-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();r.accountId=l,a(await s(`Loading`,async()=>c.browserRun.devtools.browser.targets.close({account_id:l,session_id:r[`session-id`],target_id:r[`target-id`]})),{successLabel:`Loaded`})}};function H(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`url`,{type:`string`,description:`Url`}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URL remains valid, in milliseconds (max 60 minutes)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const U={command:`create <session-id>`,describe:`Opens a new tab in the browser. Optionally specify a URL to navigate to.`,builder:H,handler:async r=>{let c={url:r.url,liveViewUrlExpiresInMs:r[`live-view-url-expires-in-ms`]};if(r.dryRun){o({command:`cf browser-run devtools browser targets create`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json/new`,pathParams:{"session-id":String(r[`session-id`]??``)},query:c,bodyKind:`none`});return}let l=await i(r),u=r.local?e:await t();r.accountId=u,a(await s(`Updating`,async()=>l.browserRun.devtools.browser.targets.create({account_id:u,session_id:r[`session-id`],...c})),{successLabel:`Updated`})}};function W(e){return e.positional(`target-id`,{type:`string`,description:`Target ID.`,demandOption:!0}).option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const G={command:`get <target-id>`,describe:`Returns the debuggable target with the given ID.`,builder:W,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools browser targets get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json/list/${r[`target-id`]==null?`<target-id>`:encodeURIComponent(String(r[`target-id`]))}`,pathParams:{"session-id":String(r[`session-id`]??``),"target-id":String(r[`target-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();r.accountId=l,a(await s(`Loading`,async()=>c.browserRun.devtools.browser.targets.get({account_id:l,session_id:r[`session-id`],target_id:r[`target-id`]})),{successLabel:`Loaded`})}};function te(e){return e.option(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URLs remain valid, in milliseconds (max 60 minutes)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const K={command:`list`,describe:`Returns a list of all debuggable targets including tabs, pages, service workers, and other browser contexts.`,builder:te,handler:async r=>{let c={liveViewUrlExpiresInMs:r[`live-view-url-expires-in-ms`]};if(r.dryRun){o({command:`cf browser-run devtools browser targets list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json/list`,pathParams:{"session-id":String(r[`session-id`]??``)},query:c,bodyKind:`none`});return}let l=await i(r),u=r.local?e:await t();r.accountId=u,a(await s(`Loading`,async()=>l.browserRun.devtools.browser.targets.list({account_id:u,session_id:r[`session-id`],...c})),{successLabel:`Loaded`})}},q={command:`targets`,describe:`Operations for devtools.browser.targets`,builder:e=>e.command(z).command(V).command(U).command(G).command(K).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function J(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Y={command:`version <session-id>`,describe:`Get browser version metadata.`,builder:J,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools browser version`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json/version`,pathParams:{"session-id":String(r[`session-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();r.accountId=l,a(await s(`Loading`,async()=>c.browserRun.devtools.browser.version({account_id:l,session_id:r[`session-id`]})),{successLabel:`Loaded`})}},X={command:`browser`,describe:`Operations for devtools.browser`,builder:e=>e.command(C).command(T).command(D).command(k).command(L).command(Y).command(M).command(F).command(q).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function Z(e){return e.positional(`session-id`,{type:`string`,description:`Browser session ID.`,demandOption:!0}).option(`live-view-url-expires-in-ms`,{type:`number`,description:`How long the live view URLs remain valid, in milliseconds (max 60 minutes)`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const Q={command:`get <session-id>`,describe:`Returns a list of all debuggable targets including tabs, pages, service workers, and other browser contexts.`,builder:Z,handler:async r=>{let c={liveViewUrlExpiresInMs:r[`live-view-url-expires-in-ms`]};if(r.dryRun){o({command:`cf browser-run devtools json get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/browser/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}/json`,pathParams:{"session-id":String(r[`session-id`]??``)},query:c,bodyKind:`none`});return}let l=await i(r),u=r.local?e:await t();r.accountId=u,a(await s(`Loading`,async()=>l.browserRun.devtools.json.get({account_id:u,session_id:r[`session-id`],...c})),{successLabel:`Loaded`})}},ne={command:`json`,describe:`Operations for devtools.json`,builder:e=>e.command(Q).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function re(e){return e.positional(`session-id`,{type:`string`,description:`Session ID.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const ie={command:`get <session-id>`,describe:`Get details for a specific browser session.`,builder:re,handler:async r=>{if(r.dryRun){o({command:`cf browser-run devtools session get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/session/${r[`session-id`]==null?`<session-id>`:encodeURIComponent(String(r[`session-id`]))}`,pathParams:{"session-id":String(r[`session-id`]??``)},bodyKind:`none`});return}let c=await i(r),l=r.local?e:await t();r.accountId=l,a(await s(`Loading`,async()=>c.browserRun.devtools.session.get({account_id:l,session_id:r[`session-id`]})),{successLabel:`Loaded`})}};function ae(e){return e.option(`limit`,{type:`number`,description:`Limit`}).option(`offset`,{type:`number`,description:`Offset`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const oe={command:`list`,describe:`List active browser sessions.`,builder:ae,handler:async r=>{let c={limit:r.limit,offset:r.offset};if(r.dryRun){o({command:`cf browser-run devtools session list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/devtools/session`,pathParams:{},query:c,bodyKind:`none`});return}let l=await i(r),u=r.local?e:await t();r.accountId=u,a(await s(`Loading`,async()=>l.browserRun.devtools.session.list({account_id:u,...c})),{successLabel:`Loaded`})}},se={command:`session`,describe:`Operations for devtools.session`,builder:e=>e.command(ie).command(oe).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},ce={command:`devtools`,describe:`Operations for devtools`,builder:e=>e.command(X).command(ne).command(se).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function le(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`interesting-only`,{type:`boolean`,description:`The interestingOnly field`}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`root`,{type:`string`,description:`The root field`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const ue={command:`accessibility-tree`,describe:"Returns the page's accessibility tree. Use `interestingOnly` to only return semantically meaningful nodes; use `root` to scope the tree to a CSS-selector-anchored subtree. Control page loading with `gotoOptions` and `waitFor*` options.",builder:le,handler:async r=>{let l={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action accessibility-tree`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/accessibilityTree`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),interestingOnly:r[`interesting-only`],rejectRequestPattern:r[`reject-request-pattern`],root:d(r.root,`root`,`text`),setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}let f=await i(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.accessibilityTree({...e,account_id:p,...l})),{successLabel:`Created`});return}let m=u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),interestingOnly:r[`interesting-only`],rejectRequestPattern:r[`reject-request-pattern`],root:d(r.root,`root`,`text`),setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.accessibilityTree({...m,account_id:p,...l})),{successLabel:`Created`})}};function de(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const fe={command:`content`,describe:"Fetches rendered HTML content from provided URL or HTML. Check available options like `gotoOptions` and `waitFor*` to control page load behaviour.",builder:de,handler:async r=>{let l={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action content`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/content`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}let f=await i(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.content({...e,account_id:p,...l})),{successLabel:`Created`});return}let m=u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.content({...m,account_id:p,...l})),{successLabel:`Created`})}};function pe(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`prompt`,{type:`string`,description:`The prompt field`}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`response-format-type`,{type:`string`,description:`The response_format.type field`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`response-format-type`].some(t=>e[t]!==void 0)){let t=[`response-format-type`].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 --response_format-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const me={command:`json`,describe:"Gets json from a webpage from a provided URL or HTML. Pass `prompt` or `schema` in the body. Control page loading with `gotoOptions` and `waitFor*` options.",builder:pe,handler:async r=>{let l={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action json`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/json`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),prompt:d(r.prompt,`prompt`,`text`),rejectRequestPattern:r[`reject-request-pattern`],response_format:{type:d(r[`response-format-type`],`response-format-type`,`text`)},setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}let f=await i(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.json({...e,account_id:p,...l})),{successLabel:`Created`});return}let m=u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),prompt:d(r.prompt,`prompt`,`text`),rejectRequestPattern:r[`reject-request-pattern`],response_format:{type:d(r[`response-format-type`],`response-format-type`,`text`)},setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.json({...m,account_id:p,...l})),{successLabel:`Created`})}};function he(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`exclude-external-links`,{type:`boolean`,description:`The excludeExternalLinks field`,default:!1}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`visible-links-only`,{type:`boolean`,description:`The visibleLinksOnly field`,default:!1}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const ge={command:`links`,describe:`Get links from a web page.`,builder:he,handler:async r=>{let l={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action links`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/links`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),excludeExternalLinks:r[`exclude-external-links`],gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},visibleLinksOnly:r[`visible-links-only`],waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}let f=await i(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.links({...e,account_id:p,...l})),{successLabel:`Created`});return}let m=u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),excludeExternalLinks:r[`exclude-external-links`],gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},visibleLinksOnly:r[`visible-links-only`],waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.links({...m,account_id:p,...l})),{successLabel:`Created`})}};function _e(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const ve={command:`markdown`,describe:"Gets markdown of a webpage from provided URL or HTML. Control page loading with `gotoOptions` and `waitFor*` options.",builder:_e,handler:async r=>{let l={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action markdown`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/markdown`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}let f=await i(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.markdown({...e,account_id:p,...l})),{successLabel:`Created`});return}let m=u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.markdown({...m,account_id:p,...l})),{successLabel:`Created`})}};function ye(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`pdf-options-display-header-footer`,{type:`boolean`,description:`Whether to show the header and footer.`}).option(`pdf-options-footer-template`,{type:`string`,description:`HTML template for the print footer.`}).option(`pdf-options-format`,{type:`string`,description:`Paper format. Takes priority over width and height if set.`,choices:[`letter`,`legal`,`tabloid`,`ledger`,`a0`,`a1`,`a2`,`a3`,`a4`,`a5`,`a6`]}).option(`pdf-options-header-template`,{type:`string`,description:`HTML template for the print header.`}).option(`pdf-options-landscape`,{type:`boolean`,description:`Whether to print in landscape orientation.`}).option(`pdf-options-omit-background`,{type:`boolean`,description:`Hides default white background and allows generating pdfs with transparency.`}).option(`pdf-options-outline`,{type:`boolean`,description:`Generate document outline.`}).option(`pdf-options-page-ranges`,{type:`string`,description:`Paper ranges to print, e.g. '1-5, 8, 11-13'.`}).option(`pdf-options-prefer-csspage-size`,{type:`boolean`,description:`Give CSS @page size priority over other size declarations.`}).option(`pdf-options-print-background`,{type:`boolean`,description:`Set to true to print background graphics.`}).option(`pdf-options-scale`,{type:`number`,description:`Scales the rendering of the web page. Amount must be between 0.1 and 2.`}).option(`pdf-options-tagged`,{type:`boolean`,description:`Generate tagged (accessible) PDF.`}).option(`pdf-options-timeout`,{type:`number`,description:`Timeout in milliseconds.`}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).option(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const be={command:`pdf`,describe:"Fetches rendered PDF from provided URL or HTML. Check available options like `gotoOptions` and `waitFor*` to control page load behaviour.",builder:ye,handler:async r=>{let a={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action pdf`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/pdf`,pathParams:{},query:a,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),pdfOptions:{displayHeaderFooter:r[`pdf-options-display-header-footer`],footerTemplate:d(r[`pdf-options-footer-template`],`pdf-options-footer-template`,`text`),format:d(r[`pdf-options-format`],`pdf-options-format`,`text`),headerTemplate:d(r[`pdf-options-header-template`],`pdf-options-header-template`,`text`),landscape:r[`pdf-options-landscape`],omitBackground:r[`pdf-options-omit-background`],outline:r[`pdf-options-outline`],pageRanges:d(r[`pdf-options-page-ranges`],`pdf-options-page-ranges`,`text`),preferCSSPageSize:r[`pdf-options-prefer-csspage-size`],printBackground:r[`pdf-options-print-background`],scale:r[`pdf-options-scale`],tagged:r[`pdf-options-tagged`],timeout:r[`pdf-options-timeout`]},rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}await i(r);let f=r.local?e:await t();if(r.accountId=f,r.body){let e=c(r.body),t=new URLSearchParams(Object.entries(a).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),n=await s(`Creating`,async()=>h(`/accounts/${f}/browser-rendering/pdf${t?`?`+t:``}`,{method:`POST`,local:r.local===!0,persistTo:r.persistTo,body:JSON.stringify(e),contentType:`application/json`}));m(r.text===!0?n.toString(`utf-8`):n);return}let p={};r[`action-timeout`]!==void 0&&l(p,[`actionTimeout`],r[`action-timeout`]),r[`allow-request-pattern`]!==void 0&&l(p,[`allowRequestPattern`],r[`allow-request-pattern`]),r[`authenticate-password`]!==void 0&&l(p,[`authenticate`,`password`],d(r[`authenticate-password`],`authenticate-password`,`text`)),r[`authenticate-username`]!==void 0&&l(p,[`authenticate`,`username`],d(r[`authenticate-username`],`authenticate-username`,`text`)),r[`best-attempt`]!==void 0&&l(p,[`bestAttempt`],r[`best-attempt`]),r[`emulate-media-type`]!==void 0&&l(p,[`emulateMediaType`],d(r[`emulate-media-type`],`emulate-media-type`,`text`)),r[`goto-options-referer`]!==void 0&&l(p,[`gotoOptions`,`referer`],d(r[`goto-options-referer`],`goto-options-referer`,`text`)),r[`goto-options-referrer-policy`]!==void 0&&l(p,[`gotoOptions`,`referrerPolicy`],d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`)),r[`goto-options-timeout`]!==void 0&&l(p,[`gotoOptions`,`timeout`],r[`goto-options-timeout`]),r.html!==void 0&&l(p,[`html`],d(r.html,`html`,`text`)),r[`pdf-options-display-header-footer`]!==void 0&&l(p,[`pdfOptions`,`displayHeaderFooter`],r[`pdf-options-display-header-footer`]),r[`pdf-options-footer-template`]!==void 0&&l(p,[`pdfOptions`,`footerTemplate`],d(r[`pdf-options-footer-template`],`pdf-options-footer-template`,`text`)),r[`pdf-options-format`]!==void 0&&l(p,[`pdfOptions`,`format`],d(r[`pdf-options-format`],`pdf-options-format`,`text`)),r[`pdf-options-header-template`]!==void 0&&l(p,[`pdfOptions`,`headerTemplate`],d(r[`pdf-options-header-template`],`pdf-options-header-template`,`text`)),r[`pdf-options-landscape`]!==void 0&&l(p,[`pdfOptions`,`landscape`],r[`pdf-options-landscape`]),r[`pdf-options-omit-background`]!==void 0&&l(p,[`pdfOptions`,`omitBackground`],r[`pdf-options-omit-background`]),r[`pdf-options-outline`]!==void 0&&l(p,[`pdfOptions`,`outline`],r[`pdf-options-outline`]),r[`pdf-options-page-ranges`]!==void 0&&l(p,[`pdfOptions`,`pageRanges`],d(r[`pdf-options-page-ranges`],`pdf-options-page-ranges`,`text`)),r[`pdf-options-prefer-csspage-size`]!==void 0&&l(p,[`pdfOptions`,`preferCSSPageSize`],r[`pdf-options-prefer-csspage-size`]),r[`pdf-options-print-background`]!==void 0&&l(p,[`pdfOptions`,`printBackground`],r[`pdf-options-print-background`]),r[`pdf-options-scale`]!==void 0&&l(p,[`pdfOptions`,`scale`],r[`pdf-options-scale`]),r[`pdf-options-tagged`]!==void 0&&l(p,[`pdfOptions`,`tagged`],r[`pdf-options-tagged`]),r[`pdf-options-timeout`]!==void 0&&l(p,[`pdfOptions`,`timeout`],r[`pdf-options-timeout`]),r[`reject-request-pattern`]!==void 0&&l(p,[`rejectRequestPattern`],r[`reject-request-pattern`]),r[`set-java-script-enabled`]!==void 0&&l(p,[`setJavaScriptEnabled`],r[`set-java-script-enabled`]),r.url!==void 0&&l(p,[`url`],d(r.url,`url`,`text`)),r[`user-agent`]!==void 0&&l(p,[`userAgent`],d(r[`user-agent`],`user-agent`,`text`)),r[`viewport-device-scale-factor`]!==void 0&&l(p,[`viewport`,`deviceScaleFactor`],r[`viewport-device-scale-factor`]),r[`viewport-has-touch`]!==void 0&&l(p,[`viewport`,`hasTouch`],r[`viewport-has-touch`]),r[`viewport-height`]!==void 0&&l(p,[`viewport`,`height`],r[`viewport-height`]),r[`viewport-is-landscape`]!==void 0&&l(p,[`viewport`,`isLandscape`],r[`viewport-is-landscape`]),r[`viewport-is-mobile`]!==void 0&&l(p,[`viewport`,`isMobile`],r[`viewport-is-mobile`]),r[`viewport-width`]!==void 0&&l(p,[`viewport`,`width`],r[`viewport-width`]),r[`wait-for-selector-hidden`]!==void 0&&l(p,[`waitForSelector`,`hidden`],r[`wait-for-selector-hidden`]),r[`wait-for-selector-selector`]!==void 0&&l(p,[`waitForSelector`,`selector`],d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`)),r[`wait-for-selector-timeout`]!==void 0&&l(p,[`waitForSelector`,`timeout`],r[`wait-for-selector-timeout`]),r[`wait-for-selector-visible`]!==void 0&&l(p,[`waitForSelector`,`visible`],r[`wait-for-selector-visible`]),r[`wait-for-timeout`]!==void 0&&l(p,[`waitForTimeout`],r[`wait-for-timeout`]);let g=new URLSearchParams(Object.entries(a).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),_=await s(`Creating`,async()=>h(`/accounts/${f}/browser-rendering/pdf${g?`?`+g:``}`,{method:`POST`,local:r.local===!0,persistTo:r.persistTo,body:Object.keys(p).length>0?p:void 0}));m(r.text===!0?_.toString(`utf-8`):_)}};function $(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const xe={command:`scrape`,describe:`Get meta attributes like height, width, text and others of selected elements.`,builder:$,handler:async r=>{let l={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action scrape`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/scrape`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}let f=await i(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.scrape({...e,account_id:p,...l})),{successLabel:`Created`});return}let m=u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.scrape({...m,account_id:p,...l})),{successLabel:`Created`})}};function Se(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`screenshot-options-capture-beyond-viewport`,{type:`boolean`,description:`The screenshotOptions.captureBeyondViewport field`}).option(`screenshot-options-clip-height`,{type:`number`,description:`The screenshotOptions.clip.height field`}).option(`screenshot-options-clip-scale`,{type:`number`,description:`The screenshotOptions.clip.scale field`}).option(`screenshot-options-clip-width`,{type:`number`,description:`The screenshotOptions.clip.width field`}).option(`screenshot-options-clip-x`,{type:`number`,description:`The screenshotOptions.clip.x field`}).option(`screenshot-options-clip-y`,{type:`number`,description:`The screenshotOptions.clip.y field`}).option(`screenshot-options-from-surface`,{type:`boolean`,description:`The screenshotOptions.fromSurface field`}).option(`screenshot-options-full-page`,{type:`boolean`,description:`The screenshotOptions.fullPage field`}).option(`screenshot-options-omit-background`,{type:`boolean`,description:`The screenshotOptions.omitBackground field`}).option(`screenshot-options-optimize-for-speed`,{type:`boolean`,description:`The screenshotOptions.optimizeForSpeed field`}).option(`screenshot-options-quality`,{type:`number`,description:`The screenshotOptions.quality field`}).option(`scroll-page`,{type:`boolean`,description:`The scrollPage field`}).option(`selector`,{type:`string`,description:`The selector field`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).option(`text`,{type:`boolean`,description:`Decode the response body as UTF-8 text instead of writing raw bytes`,default:!1}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`screenshot-options-capture-beyond-viewport`,`screenshot-options-clip-height`,`screenshot-options-clip-scale`,`screenshot-options-clip-width`,`screenshot-options-clip-x`,`screenshot-options-clip-y`,`screenshot-options-from-surface`,`screenshot-options-full-page`,`screenshot-options-omit-background`,`screenshot-options-optimize-for-speed`,`screenshot-options-quality`].some(t=>e[t]!==void 0)){let t=[`screenshot-options-clip-height`,`screenshot-options-clip-width`,`screenshot-options-clip-x`,`screenshot-options-clip-y`].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 --screenshotOptions-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const Ce={command:`screenshot`,describe:"Takes a screenshot of a webpage from provided URL or HTML. Control page loading with `gotoOptions` and `waitFor*` options. Customize screenshots with `viewport`, `fullPage`, `clip` and others.",builder:Se,handler:async r=>{let a={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action screenshot`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/screenshot`,pathParams:{},query:a,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],screenshotOptions:{captureBeyondViewport:r[`screenshot-options-capture-beyond-viewport`],clip:{height:r[`screenshot-options-clip-height`],scale:r[`screenshot-options-clip-scale`],width:r[`screenshot-options-clip-width`],x:r[`screenshot-options-clip-x`],y:r[`screenshot-options-clip-y`]},fromSurface:r[`screenshot-options-from-surface`],fullPage:r[`screenshot-options-full-page`],omitBackground:r[`screenshot-options-omit-background`],optimizeForSpeed:r[`screenshot-options-optimize-for-speed`],quality:r[`screenshot-options-quality`]},scrollPage:r[`scroll-page`],selector:d(r.selector,`selector`,`text`),setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}await i(r);let f=r.local?e:await t();if(r.accountId=f,r.body){let e=c(r.body),t=new URLSearchParams(Object.entries(a).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),n=await s(`Creating`,async()=>h(`/accounts/${f}/browser-rendering/screenshot${t?`?`+t:``}`,{method:`POST`,local:r.local===!0,persistTo:r.persistTo,body:JSON.stringify(e),contentType:`application/json`}));m(r.text===!0?n.toString(`utf-8`):n);return}let p={};r[`action-timeout`]!==void 0&&l(p,[`actionTimeout`],r[`action-timeout`]),r[`allow-request-pattern`]!==void 0&&l(p,[`allowRequestPattern`],r[`allow-request-pattern`]),r[`authenticate-password`]!==void 0&&l(p,[`authenticate`,`password`],d(r[`authenticate-password`],`authenticate-password`,`text`)),r[`authenticate-username`]!==void 0&&l(p,[`authenticate`,`username`],d(r[`authenticate-username`],`authenticate-username`,`text`)),r[`best-attempt`]!==void 0&&l(p,[`bestAttempt`],r[`best-attempt`]),r[`emulate-media-type`]!==void 0&&l(p,[`emulateMediaType`],d(r[`emulate-media-type`],`emulate-media-type`,`text`)),r[`goto-options-referer`]!==void 0&&l(p,[`gotoOptions`,`referer`],d(r[`goto-options-referer`],`goto-options-referer`,`text`)),r[`goto-options-referrer-policy`]!==void 0&&l(p,[`gotoOptions`,`referrerPolicy`],d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`)),r[`goto-options-timeout`]!==void 0&&l(p,[`gotoOptions`,`timeout`],r[`goto-options-timeout`]),r.html!==void 0&&l(p,[`html`],d(r.html,`html`,`text`)),r[`reject-request-pattern`]!==void 0&&l(p,[`rejectRequestPattern`],r[`reject-request-pattern`]),r[`screenshot-options-capture-beyond-viewport`]!==void 0&&l(p,[`screenshotOptions`,`captureBeyondViewport`],r[`screenshot-options-capture-beyond-viewport`]),r[`screenshot-options-clip-height`]!==void 0&&l(p,[`screenshotOptions`,`clip`,`height`],r[`screenshot-options-clip-height`]),r[`screenshot-options-clip-scale`]!==void 0&&l(p,[`screenshotOptions`,`clip`,`scale`],r[`screenshot-options-clip-scale`]),r[`screenshot-options-clip-width`]!==void 0&&l(p,[`screenshotOptions`,`clip`,`width`],r[`screenshot-options-clip-width`]),r[`screenshot-options-clip-x`]!==void 0&&l(p,[`screenshotOptions`,`clip`,`x`],r[`screenshot-options-clip-x`]),r[`screenshot-options-clip-y`]!==void 0&&l(p,[`screenshotOptions`,`clip`,`y`],r[`screenshot-options-clip-y`]),r[`screenshot-options-from-surface`]!==void 0&&l(p,[`screenshotOptions`,`fromSurface`],r[`screenshot-options-from-surface`]),r[`screenshot-options-full-page`]!==void 0&&l(p,[`screenshotOptions`,`fullPage`],r[`screenshot-options-full-page`]),r[`screenshot-options-omit-background`]!==void 0&&l(p,[`screenshotOptions`,`omitBackground`],r[`screenshot-options-omit-background`]),r[`screenshot-options-optimize-for-speed`]!==void 0&&l(p,[`screenshotOptions`,`optimizeForSpeed`],r[`screenshot-options-optimize-for-speed`]),r[`screenshot-options-quality`]!==void 0&&l(p,[`screenshotOptions`,`quality`],r[`screenshot-options-quality`]),r[`scroll-page`]!==void 0&&l(p,[`scrollPage`],r[`scroll-page`]),r.selector!==void 0&&l(p,[`selector`],d(r.selector,`selector`,`text`)),r[`set-java-script-enabled`]!==void 0&&l(p,[`setJavaScriptEnabled`],r[`set-java-script-enabled`]),r.url!==void 0&&l(p,[`url`],d(r.url,`url`,`text`)),r[`user-agent`]!==void 0&&l(p,[`userAgent`],d(r[`user-agent`],`user-agent`,`text`)),r[`viewport-device-scale-factor`]!==void 0&&l(p,[`viewport`,`deviceScaleFactor`],r[`viewport-device-scale-factor`]),r[`viewport-has-touch`]!==void 0&&l(p,[`viewport`,`hasTouch`],r[`viewport-has-touch`]),r[`viewport-height`]!==void 0&&l(p,[`viewport`,`height`],r[`viewport-height`]),r[`viewport-is-landscape`]!==void 0&&l(p,[`viewport`,`isLandscape`],r[`viewport-is-landscape`]),r[`viewport-is-mobile`]!==void 0&&l(p,[`viewport`,`isMobile`],r[`viewport-is-mobile`]),r[`viewport-width`]!==void 0&&l(p,[`viewport`,`width`],r[`viewport-width`]),r[`wait-for-selector-hidden`]!==void 0&&l(p,[`waitForSelector`,`hidden`],r[`wait-for-selector-hidden`]),r[`wait-for-selector-selector`]!==void 0&&l(p,[`waitForSelector`,`selector`],d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`)),r[`wait-for-selector-timeout`]!==void 0&&l(p,[`waitForSelector`,`timeout`],r[`wait-for-selector-timeout`]),r[`wait-for-selector-visible`]!==void 0&&l(p,[`waitForSelector`,`visible`],r[`wait-for-selector-visible`]),r[`wait-for-timeout`]!==void 0&&l(p,[`waitForTimeout`],r[`wait-for-timeout`]);let g=new URLSearchParams(Object.entries(a).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),_=await s(`Creating`,async()=>h(`/accounts/${f}/browser-rendering/screenshot${g?`?`+g:``}`,{method:`POST`,local:r.local===!0,persistTo:r.persistTo,body:Object.keys(p).length>0?p:void 0}));m(r.text===!0?_.toString(`utf-8`):_)}};function we(e){return e.option(`cache-ttl`,{type:`number`,description:`Cache TTL default is 5s. Set to 0 to disable.`}).option(`action-timeout`,{type:`number`,description:`The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.`}).option(`allow-request-pattern`,{type:`string`,array:!0,description:`Only allow requests that match the provided regex patterns, eg. '/^.*\\.(css)'. Reject rules are applied first.`}).option(`authenticate-password`,{type:`string`,description:`The authenticate.password field`}).option(`authenticate-username`,{type:`string`,description:`The authenticate.username field`}).option(`best-attempt`,{type:`boolean`,description:`Attempt to proceed when 'awaited' events fail or timeout.`}).option(`emulate-media-type`,{type:`string`,description:`The emulateMediaType field`}).option(`formats`,{type:`string`,array:!0,description:`The formats field`}).option(`goto-options-referer`,{type:`string`,description:`The gotoOptions.referer field`}).option(`goto-options-referrer-policy`,{type:`string`,description:`The gotoOptions.referrerPolicy field`}).option(`goto-options-timeout`,{type:`number`,description:`The gotoOptions.timeout field`}).option(`html`,{type:`string`,description:"Set the content of the page, eg: `<h1>Hello World!!</h1>`. Either `html` or `url` must be set."}).option(`reject-request-pattern`,{type:`string`,array:!0,description:`Block undesired requests that match the provided regex patterns, eg. '/^.*\\.(css)'.`}).option(`screenshot-options-capture-beyond-viewport`,{type:`boolean`,description:`The screenshotOptions.captureBeyondViewport field`}).option(`screenshot-options-clip-height`,{type:`number`,description:`The screenshotOptions.clip.height field`}).option(`screenshot-options-clip-scale`,{type:`number`,description:`The screenshotOptions.clip.scale field`}).option(`screenshot-options-clip-width`,{type:`number`,description:`The screenshotOptions.clip.width field`}).option(`screenshot-options-clip-x`,{type:`number`,description:`The screenshotOptions.clip.x field`}).option(`screenshot-options-clip-y`,{type:`number`,description:`The screenshotOptions.clip.y field`}).option(`screenshot-options-from-surface`,{type:`boolean`,description:`The screenshotOptions.fromSurface field`}).option(`screenshot-options-full-page`,{type:`boolean`,description:`The screenshotOptions.fullPage field`}).option(`screenshot-options-omit-background`,{type:`boolean`,description:`The screenshotOptions.omitBackground field`}).option(`screenshot-options-optimize-for-speed`,{type:`boolean`,description:`The screenshotOptions.optimizeForSpeed field`}).option(`screenshot-options-quality`,{type:`number`,description:`The screenshotOptions.quality field`}).option(`set-java-script-enabled`,{type:`boolean`,description:`The setJavaScriptEnabled field`}).option(`url`,{type:`string`,description:"URL to navigate to, eg. `https://example.com`."}).option(`user-agent`,{type:`string`,description:`The userAgent field`,default:`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36`}).option(`viewport-device-scale-factor`,{type:`number`,description:`The viewport.deviceScaleFactor field`}).option(`viewport-has-touch`,{type:`boolean`,description:`The viewport.hasTouch field`}).option(`viewport-height`,{type:`number`,description:`The viewport.height field`}).option(`viewport-is-landscape`,{type:`boolean`,description:`The viewport.isLandscape field`}).option(`viewport-is-mobile`,{type:`boolean`,description:`The viewport.isMobile field`}).option(`viewport-width`,{type:`number`,description:`The viewport.width field`}).option(`wait-for-selector-hidden`,{type:`boolean`,description:`The waitForSelector.hidden field`}).option(`wait-for-selector-selector`,{type:`string`,description:`The waitForSelector.selector field`}).option(`wait-for-selector-timeout`,{type:`number`,description:`The waitForSelector.timeout field`}).option(`wait-for-selector-visible`,{type:`boolean`,description:`The waitForSelector.visible field`}).option(`wait-for-timeout`,{type:`number`,description:`Waits for a specified timeout before continuing.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`}).check(e=>{if([`authenticate-password`,`authenticate-username`].some(t=>e[t]!==void 0)){let t=[`authenticate-password`,`authenticate-username`].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 --authenticate-* flag is set`)}return!0}).check(e=>{if([`screenshot-options-capture-beyond-viewport`,`screenshot-options-clip-height`,`screenshot-options-clip-scale`,`screenshot-options-clip-width`,`screenshot-options-clip-x`,`screenshot-options-clip-y`,`screenshot-options-from-surface`,`screenshot-options-full-page`,`screenshot-options-omit-background`,`screenshot-options-optimize-for-speed`,`screenshot-options-quality`].some(t=>e[t]!==void 0)){let t=[`screenshot-options-clip-height`,`screenshot-options-clip-width`,`screenshot-options-clip-x`,`screenshot-options-clip-y`].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 --screenshotOptions-* flag is set`)}return!0}).check(e=>{if([`viewport-device-scale-factor`,`viewport-has-touch`,`viewport-height`,`viewport-is-landscape`,`viewport-is-mobile`,`viewport-width`].some(t=>e[t]!==void 0)){let t=[`viewport-height`,`viewport-width`].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 --viewport-* flag is set`)}return!0}).check(e=>{if([`wait-for-selector-hidden`,`wait-for-selector-selector`,`wait-for-selector-timeout`,`wait-for-selector-visible`].some(t=>e[t]!==void 0)){let t=[`wait-for-selector-selector`].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 --waitForSelector-* flag is set`)}return!0})}const Te={command:`snapshot`,describe:"Returns the page's HTML content and screenshot. Control page loading with `gotoOptions` and `waitFor*` options. Customize screenshots with `viewport`, `fullPage`, `clip` and others.",builder:we,handler:async r=>{let l={cacheTTL:r[`cache-ttl`]};if(r.dryRun){o({command:`cf browser-run quick-action snapshot`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/browser-rendering/snapshot`,pathParams:{},query:l,bodyKind:`json`,body:r.body===void 0?u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),formats:r.formats,gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],screenshotOptions:{captureBeyondViewport:r[`screenshot-options-capture-beyond-viewport`],clip:{height:r[`screenshot-options-clip-height`],scale:r[`screenshot-options-clip-scale`],width:r[`screenshot-options-clip-width`],x:r[`screenshot-options-clip-x`],y:r[`screenshot-options-clip-y`]},fromSurface:r[`screenshot-options-from-surface`],fullPage:r[`screenshot-options-full-page`],omitBackground:r[`screenshot-options-omit-background`],optimizeForSpeed:r[`screenshot-options-optimize-for-speed`],quality:r[`screenshot-options-quality`]},setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]}):c(r.body)});return}let f=await i(r),p=r.local?e:await t();if(r.accountId=p,r.body){let e=c(r.body);new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.snapshot({...e,account_id:p,...l})),{successLabel:`Created`});return}let m=u({actionTimeout:r[`action-timeout`],allowRequestPattern:r[`allow-request-pattern`],authenticate:{password:d(r[`authenticate-password`],`authenticate-password`,`text`),username:d(r[`authenticate-username`],`authenticate-username`,`text`)},bestAttempt:r[`best-attempt`],emulateMediaType:d(r[`emulate-media-type`],`emulate-media-type`,`text`),formats:r.formats,gotoOptions:{referer:d(r[`goto-options-referer`],`goto-options-referer`,`text`),referrerPolicy:d(r[`goto-options-referrer-policy`],`goto-options-referrer-policy`,`text`),timeout:r[`goto-options-timeout`]},html:d(r.html,`html`,`text`),rejectRequestPattern:r[`reject-request-pattern`],screenshotOptions:{captureBeyondViewport:r[`screenshot-options-capture-beyond-viewport`],clip:{height:r[`screenshot-options-clip-height`],scale:r[`screenshot-options-clip-scale`],width:r[`screenshot-options-clip-width`],x:r[`screenshot-options-clip-x`],y:r[`screenshot-options-clip-y`]},fromSurface:r[`screenshot-options-from-surface`],fullPage:r[`screenshot-options-full-page`],omitBackground:r[`screenshot-options-omit-background`],optimizeForSpeed:r[`screenshot-options-optimize-for-speed`],quality:r[`screenshot-options-quality`]},setJavaScriptEnabled:r[`set-java-script-enabled`],url:d(r.url,`url`,`text`),userAgent:d(r[`user-agent`],`user-agent`,`text`),viewport:{deviceScaleFactor:r[`viewport-device-scale-factor`],hasTouch:r[`viewport-has-touch`],height:r[`viewport-height`],isLandscape:r[`viewport-is-landscape`],isMobile:r[`viewport-is-mobile`],width:r[`viewport-width`]},waitForSelector:{hidden:r[`wait-for-selector-hidden`],selector:d(r[`wait-for-selector-selector`],`wait-for-selector-selector`,`text`),timeout:r[`wait-for-selector-timeout`],visible:r[`wait-for-selector-visible`]},waitForTimeout:r[`wait-for-timeout`]});new URLSearchParams(Object.entries(l).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])).toString(),a(await s(`Creating`,async()=>f.browserRun.quickAction.snapshot({...m,account_id:p,...l})),{successLabel:`Created`})}},Ee={command:`quick-action`,describe:`Operations for quick-action`,builder:e=>e.command(ue).command(fe).command(me).command(ge).command(ve).command(be).command(xe).command(Ce).command(Te).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},De={command:`browser-run`,describe:`browser-run`,builder:e=>e.command(x).command(ce).command(Ee).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{De as default};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{n as e}from"./chunk-vbHwaUoU.mjs";import{t}from"./src-CgAVPA4I.mjs";import{U as n}from"./chunk-LQW53VED-Xakf_rUn.mjs";import{a as r,o as i}from"./theme-BePJemMn.mjs";import"./ui-DjQ4AQww.mjs";import{i as a,n as o,r as s}from"./dist-COfwjT96.mjs";import{c}from"./interactive-CM2G03lr.mjs";import{a as l,i as u,n as d,r as f,t as p}from"./spawn-Bj8QRFJ5.mjs";import*as m from"node:fs";import h from"node:fs";import*as g from"node:path";import _ from"node:path";import*as v from"node:fs/promises";const y=`config.json`,b=`default`;function x(e){return g.resolve(e,`.cloudflare/output`)}function S(e){return g.join(x(e),`v0`,y)}function C(e){return g.join(x(e),`v0`,`workers`)}function w(e,t=b){if(t.length===0||t===`.`||t===`..`||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`))throw Error(`Worker directory names must be non-empty, single path segments.`);return g.join(C(e),t)}function T(e,t=b){return g.join(w(e,t),y)}function E(e,t=b){return g.join(w(e,t),`bundle`)}function D(e,t=b){return g.join(w(e,t),`assets`)}var O=Object.defineProperty,k=(e,t)=>O(e,`name`,{value:t,configurable:!0});function A(e){return h.statSync(e,{throwIfNoEntry:!1})?.isDirectory()??!1}k(A,`isDirectory`);function j(e,{fireAndForget:t=!1}={}){let n=h.promises.rm(e,{recursive:!0,force:!0,maxRetries:5,retryDelay:100});if(t)n.catch(()=>{});else return n}k(j,`removeDir`);function M(e){h.rmSync(e,{recursive:!0,force:!0,maxRetries:5,retryDelay:100})}k(M,`removeDirSync`);var N=class extends Error{constructor(e){super(`Build Output Specification: ${e}`),this.name=`BuildOutputError`}};async function P(e){let t=await z(e),n=await F(e,b),r=(await v.readdir(C(e),{withFileTypes:!0})).filter(e=>e.isDirectory()&&e.name!==`default`).map(e=>e.name).sort(),i=await Promise.all(r.map(async t=>[t,await F(e,t)]));return{root:e,version:`v0`,settings:t,workers:{default:n,...Object.fromEntries(i)}}}async function F(e,t){let n=T(e,t);if(!m.existsSync(n))throw new N(`no Worker config found at ${n}.`);let r=await v.readFile(n,`utf-8`),i=s.safeParse(B(r,n));if(!i.success)throw new N(`invalid Worker config at ${n}.\n${i.error.message}`);let a=E(e,t),o=D(e,t),c=m.existsSync(a),l=m.existsSync(o);if(i.data.manifest&&!c)throw new N(`Worker config at ${n} contains a manifest, but no bundle directory exists at ${a}.`);if(c)return{configPath:n,config:await I(i.data,n,a),bundleDir:a,assetsDir:l?o:void 0};if(l){let{manifest:e,...t}=i.data;return{configPath:n,config:t,bundleDir:void 0,assetsDir:o}}throw new N(`Worker config at ${n} has neither a bundle directory (${a}) nor an assets directory (${o}).`)}async function I(e,t,n){let{manifest:r,...i}=e;if(r===void 0)return i;if(r.type===`complete`)return{...i,manifest:{...r,type:`complete`}};let a=await L(n);if(a[r.mainModule]?.type!==`esm`)throw new N(`partial manifest at ${t} has main module "${r.mainModule}", but it was not found as an ES module in the bundle.`);let o={...a,...r.modules};return{...i,manifest:{type:`complete`,mainModule:r.mainModule,modules:o}}}async function L(e){let t={},n=await v.readdir(e,{recursive:!0,withFileTypes:!0});for(let r of n){let n=r.isFile()?R(r.name):void 0;if(n!==void 0){let i=g.relative(e,g.join(r.parentPath,r.name)).split(g.sep).join(`/`);t[i]={type:n}}}return t}function R(e){switch(g.extname(e)){case`.js`:case`.mjs`:return`esm`;case`.map`:return`sourcemap`}}async function z(e){let t=S(e);if(!m.existsSync(t))return;let n=await v.readFile(t,`utf-8`),r=o.safeParse(B(n,t));if(!r.success)throw new N(`invalid settings config at ${t}.\n${r.error.message}`);return r.data}function B(e,t){try{return JSON.parse(e)}catch(e){throw new N(`could not parse JSON at ${t}.\n${e instanceof Error?e.message:String(e)}`)}}var V=class extends Error{constructor(e){super(e),this.name=`BuildOutputConfigError`}};function H(e,t){let n=e.config,r=a(n,t);n.manifest?.mainModule&&e.bundleDir&&(r.main=_.join(e.bundleDir,n.manifest.mainModule));let i=_.resolve(`cloudflare.config.ts`);return{wranglerConfig:U(r,e.configPath,i),builtConfig:n}}function U(e,t,r){let{config:i,diagnostics:a}=n(e,t,r,{});if(a.hasErrors())throw new V(a.renderErrors());return a.hasWarnings()&&console.warn(a.renderWarnings()),i}var W=e({default:()=>J,runBuild:()=>K});function G(e){return e.option(`mode`,{type:`string`,alias:`m`,description:`Build mode (e.g. production, staging, preview)`})}async function K(e){let n=process.cwd(),a=await f(n),o=a?.buildCommand;if(a&&!a.configured&&(o=(await u(a)).buildCommand),o&&e)throw Error(`--mode cannot currently be forwarded to the detected build command \`${o}\`. Run that command directly with the appropriate mode.`);c.message(r.bold(`Build`),{symbol:i.dim(`├`),spacing:0});let s;if(o)s=await l(o,n,a?.env);else{let t=d(n);c.message(`Delegating to ${q(t)}`,{spacing:0}),s=await p(t,`build`,e?[`--mode`,e]:[])}if(s!==0)throw new t(s);let{workers:{default:m},settings:h}=await P(n);H(m,h),c.success(`Build complete`,{spacing:0})}function q(e){switch(e.impl.pkg){case`@cloudflare/vite-plugin`:return`Vite`;case`wrangler`:return`Wrangler`;case`cloudflare-py-dev-server`:return`the Python dev server`;case`cloudflare-rs-dev-server`:return`the Rust dev server`;default:return e.impl.pkg}}const J={command:`build`,describe:`Build a project for Cloudflare`,builder:G,handler:async e=>{await K(e.mode)}};export{P as a,H as i,K as n,V as r,W as t};
2
+ import{n as e}from"./chunk-vbHwaUoU.mjs";import{t}from"./src-D_HETJNy.mjs";import{U as n}from"./chunk-LQW53VED-DLrXV-hE.mjs";import{a as r,o as i}from"./theme-CeVf-5qG.mjs";import"./ui-DE8CNn6c.mjs";import{i as a,n as o,r as s}from"./dist-CgrMkXFx.mjs";import{c}from"./interactive-DtsCYfrK.mjs";import{a as l,i as u,n as d,r as f,t as p}from"./spawn-O1RS01vr.mjs";import*as m from"node:fs";import h from"node:fs";import*as g from"node:path";import _ from"node:path";import*as v from"node:fs/promises";const y=`config.json`,b=`default`;function x(e){return g.resolve(e,`.cloudflare/output`)}function S(e){return g.join(x(e),`v0`,y)}function C(e){return g.join(x(e),`v0`,`workers`)}function w(e,t=b){if(t.length===0||t===`.`||t===`..`||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`))throw Error(`Worker directory names must be non-empty, single path segments.`);return g.join(C(e),t)}function T(e,t=b){return g.join(w(e,t),y)}function E(e,t=b){return g.join(w(e,t),`bundle`)}function D(e,t=b){return g.join(w(e,t),`assets`)}var O=Object.defineProperty,k=(e,t)=>O(e,`name`,{value:t,configurable:!0});function A(e){return h.statSync(e,{throwIfNoEntry:!1})?.isDirectory()??!1}k(A,`isDirectory`);function j(e,{fireAndForget:t=!1}={}){let n=h.promises.rm(e,{recursive:!0,force:!0,maxRetries:5,retryDelay:100});if(t)n.catch(()=>{});else return n}k(j,`removeDir`);function M(e){h.rmSync(e,{recursive:!0,force:!0,maxRetries:5,retryDelay:100})}k(M,`removeDirSync`);var N=class extends Error{constructor(e){super(`Build Output Specification: ${e}`),this.name=`BuildOutputError`}};async function P(e){let t=await z(e),n=await F(e,b),r=(await v.readdir(C(e),{withFileTypes:!0})).filter(e=>e.isDirectory()&&e.name!==`default`).map(e=>e.name).sort(),i=await Promise.all(r.map(async t=>[t,await F(e,t)]));return{root:e,version:`v0`,settings:t,workers:{default:n,...Object.fromEntries(i)}}}async function F(e,t){let n=T(e,t);if(!m.existsSync(n))throw new N(`no Worker config found at ${n}.`);let r=await v.readFile(n,`utf-8`),i=s.safeParse(B(r,n));if(!i.success)throw new N(`invalid Worker config at ${n}.\n${i.error.message}`);let a=E(e,t),o=D(e,t),c=m.existsSync(a),l=m.existsSync(o);if(i.data.manifest&&!c)throw new N(`Worker config at ${n} contains a manifest, but no bundle directory exists at ${a}.`);if(c)return{configPath:n,config:await I(i.data,n,a),bundleDir:a,assetsDir:l?o:void 0};if(l){let{manifest:e,...t}=i.data;return{configPath:n,config:t,bundleDir:void 0,assetsDir:o}}throw new N(`Worker config at ${n} has neither a bundle directory (${a}) nor an assets directory (${o}).`)}async function I(e,t,n){let{manifest:r,...i}=e;if(r===void 0)return i;if(r.type===`complete`)return{...i,manifest:{...r,type:`complete`}};let a=await L(n);if(a[r.mainModule]?.type!==`esm`)throw new N(`partial manifest at ${t} has main module "${r.mainModule}", but it was not found as an ES module in the bundle.`);let o={...a,...r.modules};return{...i,manifest:{type:`complete`,mainModule:r.mainModule,modules:o}}}async function L(e){let t={},n=await v.readdir(e,{recursive:!0,withFileTypes:!0});for(let r of n){let n=r.isFile()?R(r.name):void 0;if(n!==void 0){let i=g.relative(e,g.join(r.parentPath,r.name)).split(g.sep).join(`/`);t[i]={type:n}}}return t}function R(e){switch(g.extname(e)){case`.js`:case`.mjs`:return`esm`;case`.map`:return`sourcemap`}}async function z(e){let t=S(e);if(!m.existsSync(t))return;let n=await v.readFile(t,`utf-8`),r=o.safeParse(B(n,t));if(!r.success)throw new N(`invalid settings config at ${t}.\n${r.error.message}`);return r.data}function B(e,t){try{return JSON.parse(e)}catch(e){throw new N(`could not parse JSON at ${t}.\n${e instanceof Error?e.message:String(e)}`)}}var V=class extends Error{constructor(e){super(e),this.name=`BuildOutputConfigError`}};function H(e,t){let n=e.config,r=a(n,t);n.manifest?.mainModule&&e.bundleDir&&(r.main=_.join(e.bundleDir,n.manifest.mainModule));let i=_.resolve(`cloudflare.config.ts`);return{wranglerConfig:U(r,e.configPath,i),builtConfig:n}}function U(e,t,r){let{config:i,diagnostics:a}=n(e,t,r,{});if(a.hasErrors())throw new V(a.renderErrors());return a.hasWarnings()&&console.warn(a.renderWarnings()),i}var W=e({default:()=>J,runBuild:()=>K});function G(e){return e.option(`mode`,{type:`string`,alias:`m`,description:`Build mode (e.g. production, staging, preview)`})}async function K(e){let n=process.cwd(),a=await f(n),o=a?.buildCommand;if(a&&!a.configured&&(o=(await u(a)).buildCommand),o&&e)throw Error(`--mode cannot currently be forwarded to the detected build command \`${o}\`. Run that command directly with the appropriate mode.`);c.message(r.bold(`Build`),{symbol:i.dim(`├`),spacing:0});let s;if(o)s=await l(o,n,a?.env);else{let t=d(n);c.message(`Delegating to ${q(t)}`,{spacing:0}),s=await p(t,`build`,e?[`--mode`,e]:[])}if(s!==0)throw new t(s);let{workers:{default:m},settings:h}=await P(n);H(m,h),c.success(`Build complete`,{spacing:0})}function q(e){switch(e.impl.pkg){case`@cloudflare/vite-plugin`:return`Vite`;case`wrangler`:return`Wrangler`;case`cloudflare-py-dev-server`:return`the Python dev server`;case`cloudflare-rs-dev-server`:return`the Rust dev server`;default:return e.impl.pkg}}const J={command:`build`,describe:`Build a project for Cloudflare`,builder:G,handler:async e=>{await K(e.mode)}};export{P as a,H as i,K as n,V as r,W as t};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{h as e}from"./oauth-BjHjJtnn.mjs";import{a as t,r as n}from"./auth-C6MhC9EZ.mjs";import{t as r}from"./output-DgW1hQGX.mjs";import{n as i,t as a}from"./progress-C-oFUtvC.mjs";import{n as o,t as s}from"./body-parser-CYD7PKFC.mjs";import{n as c}from"./input-validation-BBKJRoRB.mjs";import{i as l,n as u}from"./prompt-DM4z101s.mjs";function d(e){return e.positional(`environment-id`,{type:`string`,description:`Environment 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}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const f={command:`purge-environment <environment-id>`,describe:`Purge cached content scoped to a specific environment. Supports the same purge types as the zone-level endpoint (purge everything, by URL, by tag, host, or prefix). ### Availability and limits Please refer to [purge cache availability and limits documentation page](https://developers.cloudflare.com/cache/how-to/purge-cache/#availability-and-limits).`,builder:d,handler:async s=>{if(s.dryRun){i({command:`cf cache purge-environment`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${s.zone??s.zoneId??`<zone>`}/environments/${s[`environment-id`]==null?`<environment-id>`:encodeURIComponent(String(s[`environment-id`]))}/purge_cache`,pathParams:{"zone-id":String(s.zone??s[`zone-id`]??``),"environment-id":String(s[`environment-id`]??``)},bodyKind:`json`,body:s.body===void 0?void 0:o(s.body)});return}let c=await n(s),l=await e({zone:s.zone},c,{quiet:s.quiet});if(s.zoneId=l,!await u({force:!!s.force,message:`Are you sure you want to purge cache for this environment?`})){process.stderr.write(`Aborted.
2
+ import{h as e}from"./oauth-B0ETkNcX.mjs";import{a as t,r as n}from"./auth-MQEamPN9.mjs";import{t as r}from"./output-DrpYYfnB.mjs";import{n as i,t as a}from"./progress-CsHIt3Tp.mjs";import{n as o,t as s}from"./body-parser-C-c9gfH1.mjs";import{n as c}from"./input-validation-Bav2M9F-.mjs";import{i as l,n as u}from"./prompt-DdegNPpg.mjs";function d(e){return e.positional(`environment-id`,{type:`string`,description:`Environment 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}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const f={command:`purge-environment <environment-id>`,describe:`Purge cached content scoped to a specific environment. Supports the same purge types as the zone-level endpoint (purge everything, by URL, by tag, host, or prefix). ### Availability and limits Please refer to [purge cache availability and limits documentation page](https://developers.cloudflare.com/cache/how-to/purge-cache/#availability-and-limits).`,builder:d,handler:async s=>{if(s.dryRun){i({command:`cf cache purge-environment`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${s.zone??s.zoneId??`<zone>`}/environments/${s[`environment-id`]==null?`<environment-id>`:encodeURIComponent(String(s[`environment-id`]))}/purge_cache`,pathParams:{"zone-id":String(s.zone??s[`zone-id`]??``),"environment-id":String(s[`environment-id`]??``)},bodyKind:`json`,body:s.body===void 0?void 0:o(s.body)});return}let c=await n(s),l=await e({zone:s.zone},c,{quiet:s.quiet});if(s.zoneId=l,!await u({force:!!s.force,message:`Are you sure you want to purge cache for this environment?`})){process.stderr.write(`Aborted.
3
3
  `);return}if(s.body){let e=o(s.body);r(await a(`Deleting`,async()=>c.cache.purgeEnvironment({body:e,zone_id:l,environment_id:s[`environment-id`]})),{successLabel:`Deleted`});return}r(await a(`Deleting`,async()=>t(c,`POST`,`/zones/${s.zoneId}/environments/${encodeURIComponent(String(s[`environment-id`]))}/purge_cache`)),{successLabel:`Deleted`})}};function p(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const m={command:`purge`,describe:'### Purge All Cached Content Removes ALL files from Cloudflare\'s cache. All tiers can purge everything. ``` {"purge_everything": true} ``` ### Purge Cached Content by URL Granularly removes one or more files from Cloudflare\'s cache by specifying URLs. All tiers can purge by URL. To purge files with custom cache keys, include the headers used to compute the cache key as in the example. If you have a device type or geo in your cache key, you will need to include the CF-Device-Type or CF-IPCountry headers. If you have lang in your cache key, you will need to include the Accept-Language header. **NB:** When including the Origin header, be sure to include the **scheme** and **hostname**. The port number can be omitted if it is the default port (80 for http, 443 for https), but must be included otherwise. Single file purge example with files: ``` {"files": ["http://www.example.com/css/styles.css", "http://www.example.com/js/index.js"]} ``` Single file purge example with url and header pairs: ``` {"files": [{"url": "http://www.example.com/cat_picture.jpg", "headers": {"CF-IPCountry": "US", "CF-Device-Type": "desktop", "Accept-Language": "zh-CN"}}, {"url": "http://www.example.com/dog_picture.jpg", "headers": {"CF-IPCountry": "EU", "CF-Device-Type": "mobile", "Accept-Language": "en-US"}}]} ``` ### Purge Cached Content by Tag, Host or Prefix Granularly removes one or more files from Cloudflare\'s cache either by specifying the host, the associated Cache-Tag, or a Prefix. Flex purge with tags: ``` {"tags": ["a-cache-tag", "another-cache-tag"]} ``` Flex purge with hosts: ``` {"hosts": ["www.example.com", "images.example.com"]} ``` Flex purge with prefixes: ``` {"prefixes": ["www.example.com/foo", "images.example.com/bar/baz"]} ``` ### Availability and limits Please refer to [purge cache availability and limits documentation page](https://developers.cloudflare.com/cache/how-to/purge-cache/#availability-and-limits).',builder:p,handler:async s=>{if(s.dryRun){i({command:`cf cache purge`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${s.zone??s.zoneId??`<zone>`}/purge_cache`,pathParams:{"zone-id":String(s.zone??s[`zone-id`]??``)},bodyKind:`json`,body:s.body===void 0?void 0:o(s.body)});return}let c=await n(s),l=await e({zone:s.zone},c,{quiet:s.quiet});if(s.zoneId=l,!await u({force:!!s.force,message:`This operation will delete cached content for the zone.`})){process.stderr.write(`Aborted.
4
4
  `);return}if(s.body){let e=o(s.body);r(await a(`Deleting`,async()=>c.cache.purge({body:e,zone_id:l})),{successLabel:`Deleted`});return}r(await a(`Deleting`,async()=>t(c,`POST`,`/zones/${s.zoneId}/purge_cache`)),{successLabel:`Deleted`})}};function h(e){return e.option(`value`,{type:`string`,description:`Value of the Regional Tiered Cache zone setting.`,choices:[`on`,`off`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const g={command:`edit`,describe:`Instructs Cloudflare to check a regional hub data center on the way to your upper tier. This can help improve performance for smart and custom tiered cache topologies.`,builder:h,handler:async t=>{if(t.dryRun){i({command:`cf cache settings regional-tiered-cache edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/cache/regional_tiered_cache`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`json`,body:t.body===void 0?s({value:c(t.value,`value`,`text`)}):o(t.body)});return}let u=await n(t),d=await e({zone:t.zone},u,{quiet:t.quiet});if(t.zoneId=d,t.body){let e=o(t.body);r(await a(`Updating`,async()=>u.cache.settings.regionalTieredCache.edit({...e,zone_id:d})),{successLabel:`Updated`});return}t.value===void 0&&(t.value=await l(`value`,`Value of the Regional Tiered Cache zone setting.`,[`on`,`off`]));let f=s({value:c(t.value,`value`,`text`)});r(await a(`Updating`,async()=>u.cache.settings.regionalTieredCache.edit({...f,zone_id:d})),{successLabel:`Updated`})}};function _(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const v={command:`get`,describe:`Instructs Cloudflare to check a regional hub data center on the way to your upper tier. This can help improve performance for smart and custom tiered cache topologies.`,builder:_,handler:async t=>{if(t.dryRun){i({command:`cf cache settings regional-tiered-cache get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/cache/regional_tiered_cache`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.cache.settings.regionalTieredCache.get({zone_id:s})),{successLabel:`Loaded`})}},y={command:`regional-tiered-cache`,describe:`Operations for settings.regional-tiered-cache`,builder:e=>e.command(g).command(v).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function b(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const x={command:`clear`,describe:`You can use Cache Reserve Clear to clear your Cache Reserve, but you must first disable Cache Reserve. In most cases, this will be accomplished within 24 hours. You cannot re-enable Cache Reserve while this process is ongoing. Keep in mind that you cannot undo or cancel this operation.`,builder:b,handler:async t=>{if(t.dryRun){i({command:`cf cache settings reserve clear`,method:`POST`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/cache/cache_reserve_clear`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});if(t.zoneId=s,!await u({force:!!t.force,message:`This operation permanently clears Cache Reserve for this zone and cannot be undone.`})){process.stderr.write(`Aborted.
5
5
  `);return}r(await a(`Deleting`,async()=>o.cache.settings.reserve.clear({zone_id:s})),{successLabel:`Deleted`})}};function S(e){return e.option(`value`,{type:`string`,description:`Value of the Cache Reserve zone setting.`,choices:[`on`,`off`]}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const C={command:`edit`,describe:`Increase cache lifetimes by automatically storing all cacheable files into Cloudflare's persistent object storage buckets. Requires Cache Reserve subscription. Note: using Tiered Cache with Cache Reserve is highly recommended to reduce Reserve operations costs. See the [developer docs](https://developers.cloudflare.com/cache/about/cache-reserve) for more information.`,builder:S,handler:async t=>{if(t.dryRun){i({command:`cf cache settings reserve edit`,method:`PATCH`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/cache/cache_reserve`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`json`,body:t.body===void 0?s({value:c(t.value,`value`,`text`)}):o(t.body)});return}let u=await n(t),d=await e({zone:t.zone},u,{quiet:t.quiet});if(t.zoneId=d,t.body){let e=o(t.body);r(await a(`Updating`,async()=>u.cache.settings.reserve.edit({...e,zone_id:d})),{successLabel:`Updated`});return}t.value===void 0&&(t.value=await l(`value`,`Value of the Cache Reserve zone setting.`,[`on`,`off`]));let f=s({value:c(t.value,`value`,`text`)});r(await a(`Updating`,async()=>u.cache.settings.reserve.edit({...f,zone_id:d})),{successLabel:`Updated`})}};function w(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const T={command:`get`,describe:`Increase cache lifetimes by automatically storing all cacheable files into Cloudflare's persistent object storage buckets. Requires Cache Reserve subscription. Note: using Tiered Cache with Cache Reserve is highly recommended to reduce Reserve operations costs. See the [developer docs](https://developers.cloudflare.com/cache/about/cache-reserve) for more information.`,builder:w,handler:async t=>{if(t.dryRun){i({command:`cf cache settings reserve get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/cache/cache_reserve`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.cache.settings.reserve.get({zone_id:s})),{successLabel:`Loaded`})}};function E(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const D={command:`status`,describe:`You can use Cache Reserve Clear to clear your Cache Reserve, but you must first disable Cache Reserve. In most cases, this will be accomplished within 24 hours. You cannot re-enable Cache Reserve while this process is ongoing. Keep in mind that you cannot undo or cancel this operation.`,builder:E,handler:async t=>{if(t.dryRun){i({command:`cf cache settings reserve status`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/cache/cache_reserve_clear`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});t.zoneId=s,r(await a(`Loading`,async()=>o.cache.settings.reserve.status({zone_id:s})),{successLabel:`Loaded`})}},O={command:`reserve`,describe:`Operations for settings.reserve`,builder:e=>e.command(x).command(C).command(T).command(D).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function k(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const A={command:`delete`,describe:`Smart Tiered Cache dynamically selects the single closest upper tier for each of your website’s origins with no configuration required, using our in-house performance and routing data. Cloudflare collects latency data for each request to an origin, and uses the latency data to determine how well any upper-tier data center is connected with an origin. As a result, Cloudflare can select the data center with the lowest latency to be the upper-tier for an origin.`,builder:k,handler:async t=>{if(t.dryRun){i({command:`cf cache settings smart-tiered-cache delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/zones/${t.zone??t.zoneId??`<zone>`}/cache/tiered_cache_smart_topology_enable`,pathParams:{"zone-id":String(t.zone??t[`zone-id`]??``)},bodyKind:`none`});return}let o=await n(t),s=await e({zone:t.zone},o,{quiet:t.quiet});if(t.zoneId=s,!await u({force:!!t.force})){process.stderr.write(`Aborted.
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import{t as e}from"./local-eEF0NF51.mjs";import{f as t,g as n}from"./oauth-BjHjJtnn.mjs";import{r}from"./auth-C6MhC9EZ.mjs";import{t as i}from"./output-DgW1hQGX.mjs";import{n as a,t as o}from"./progress-C-oFUtvC.mjs";import{n as s,t as c}from"./body-parser-CYD7PKFC.mjs";import{n as l}from"./input-validation-BBKJRoRB.mjs";import{n as u}from"./prompt-DM4z101s.mjs";function d(e){return e.option(`name`,{type:`string`,description:`A short description of Calls app, not shown to end users.`,default:``}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const f={command:`create`,describe:`Creates a new Cloudflare calls app. An app is an unique enviroment where each Session can access all Tracks within the app.`,builder:d,handler:async u=>{if(u.dryRun){a({command:`cf calls sfu create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/apps`,pathParams:{},bodyKind:`json`,body:u.body===void 0?c({name:l(u.name,`name`,`text`)}):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.calls.sfu.create({body:e,account_id:f})),{successLabel:`Created`});return}let p=c({name:l(u.name,`name`,`text`)});i(await o(`Creating`,async()=>d.calls.sfu.create({body:p,account_id:f})),{successLabel:`Created`})}};function p(e){return e.positional(`app-id`,{type:`string`,description:`A Cloudflare-generated unique identifier for a item.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const m={command:`delete <app-id>`,describe:`Deletes an app from Cloudflare Calls`,builder:p,handler:async s=>{if(s.dryRun){a({command:`cf calls sfu delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/apps/${s[`app-id`]==null?`<app-id>`:encodeURIComponent(String(s[`app-id`]))}`,pathParams:{"app-id":String(s[`app-id`]??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();if(s.accountId=l,!await u({force:!!s.force})){process.stderr.write(`Aborted.
2
+ import{t as e}from"./local-D-aVNu6A.mjs";import{f as t,g as n}from"./oauth-B0ETkNcX.mjs";import{r}from"./auth-MQEamPN9.mjs";import{t as i}from"./output-DrpYYfnB.mjs";import{n as a,t as o}from"./progress-CsHIt3Tp.mjs";import{n as s,t as c}from"./body-parser-C-c9gfH1.mjs";import{n as l}from"./input-validation-Bav2M9F-.mjs";import{n as u}from"./prompt-DdegNPpg.mjs";function d(e){return e.option(`name`,{type:`string`,description:`A short description of Calls app, not shown to end users.`,default:``}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const f={command:`create`,describe:`Creates a new Cloudflare calls app. An app is an unique enviroment where each Session can access all Tracks within the app.`,builder:d,handler:async u=>{if(u.dryRun){a({command:`cf calls sfu create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/apps`,pathParams:{},bodyKind:`json`,body:u.body===void 0?c({name:l(u.name,`name`,`text`)}):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.calls.sfu.create({body:e,account_id:f})),{successLabel:`Created`});return}let p=c({name:l(u.name,`name`,`text`)});i(await o(`Creating`,async()=>d.calls.sfu.create({body:p,account_id:f})),{successLabel:`Created`})}};function p(e){return e.positional(`app-id`,{type:`string`,description:`A Cloudflare-generated unique identifier for a item.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`force`,{type:`boolean`,alias:`f`,description:`Skip confirmation (useful in scripts and CI)`,default:!1})}const m={command:`delete <app-id>`,describe:`Deletes an app from Cloudflare Calls`,builder:p,handler:async s=>{if(s.dryRun){a({command:`cf calls sfu delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/apps/${s[`app-id`]==null?`<app-id>`:encodeURIComponent(String(s[`app-id`]))}`,pathParams:{"app-id":String(s[`app-id`]??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();if(s.accountId=l,!await u({force:!!s.force})){process.stderr.write(`Aborted.
3
3
  `);return}i(await o(`Deleting`,async()=>c.calls.sfu.delete({account_id:l,app_id:s[`app-id`]})),{successLabel:`Deleted`})}};function h(e){return e.positional(`app-id`,{type:`string`,description:`A Cloudflare-generated unique identifier for a item.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const g={command:`get <app-id>`,describe:`Fetches details for a single Calls app.`,builder:h,handler:async s=>{if(s.dryRun){a({command:`cf calls sfu get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/apps/${s[`app-id`]==null?`<app-id>`:encodeURIComponent(String(s[`app-id`]))}`,pathParams:{"app-id":String(s[`app-id`]??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.calls.sfu.get({account_id:l,app_id:s[`app-id`]})),{successLabel:`Loaded`})}};function _(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const v={command:`list`,describe:`Lists all apps in the Cloudflare account`,builder:_,handler:async s=>{if(s.dryRun){a({command:`cf calls sfu list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/apps`,pathParams:{},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.calls.sfu.list({account_id:l})),{successLabel:`Loaded`})}};function y(e){return e.positional(`app-id`,{type:`string`,description:`A Cloudflare-generated unique identifier for a item.`,demandOption:!0}).option(`name`,{type:`string`,description:`A short description of Calls app, not shown to end users.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const b={command:`update <app-id>`,describe:`Edit details for a single app.`,builder:y,handler:async u=>{if(u.dryRun){a({command:`cf calls sfu update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/apps/${u[`app-id`]==null?`<app-id>`:encodeURIComponent(String(u[`app-id`]))}`,pathParams:{"app-id":String(u[`app-id`]??``)},bodyKind:`json`,body:u.body===void 0?c({name:l(u.name,`name`,`text`)}):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(`Updating`,async()=>d.calls.sfu.update({body:e,account_id:f,app_id:u[`app-id`]})),{successLabel:`Updated`});return}let p=c({name:l(u.name,`name`,`text`)});i(await o(`Updating`,async()=>d.calls.sfu.update({body:p,account_id:f,app_id:u[`app-id`]})),{successLabel:`Updated`})}},x={command:`sfu`,describe:`Selective Forwarding Unit apps that route WebRTC media between participants`,builder:e=>e.command(f).command(m).command(g).command(v).command(b).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};function S(e){return e.option(`name`,{type:`string`,description:`A short description of a TURN key, not shown to end users.`,default:``}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const C={command:`create`,describe:`Creates a new Cloudflare Calls TURN key.`,builder:S,handler:async u=>{if(u.dryRun){a({command:`cf calls turn create`,method:`POST`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/turn_keys`,pathParams:{},bodyKind:`json`,body:u.body===void 0?c({name:l(u.name,`name`,`text`)}):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.calls.turn.create({body:e,account_id:f})),{successLabel:`Created`});return}let p=c({name:l(u.name,`name`,`text`)});i(await o(`Creating`,async()=>d.calls.turn.create({body:p,account_id:f})),{successLabel:`Created`})}};function w(e){return e.positional(`key-id`,{type:`string`,description:`A Cloudflare-generated unique identifier for a item.`,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 T={command:`delete <key-id>`,describe:`Deletes a TURN key from Cloudflare Calls`,builder:w,handler:async s=>{if(s.dryRun){a({command:`cf calls turn delete`,method:`DELETE`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/turn_keys/${s[`key-id`]==null?`<key-id>`:encodeURIComponent(String(s[`key-id`]))}`,pathParams:{"key-id":String(s[`key-id`]??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();if(s.accountId=l,!await u({force:!!s.force})){process.stderr.write(`Aborted.
4
4
  `);return}i(await o(`Deleting`,async()=>c.calls.turn.delete({account_id:l,key_id:s[`key-id`]})),{successLabel:`Deleted`})}};function E(e){return e.positional(`key-id`,{type:`string`,description:`A Cloudflare-generated unique identifier for a item.`,demandOption:!0}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const D={command:`get <key-id>`,describe:`Fetches details for a single TURN key.`,builder:E,handler:async s=>{if(s.dryRun){a({command:`cf calls turn get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/turn_keys/${s[`key-id`]==null?`<key-id>`:encodeURIComponent(String(s[`key-id`]))}`,pathParams:{"key-id":String(s[`key-id`]??``)},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.calls.turn.get({account_id:l,key_id:s[`key-id`]})),{successLabel:`Loaded`})}};function O(e){return e.option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const k={command:`list`,describe:`Lists all TURN keys in the Cloudflare account`,builder:O,handler:async s=>{if(s.dryRun){a({command:`cf calls turn list`,method:`GET`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/turn_keys`,pathParams:{},bodyKind:`none`});return}let c=await r(s),l=s.local?e:await t();s.accountId=l,i(await o(`Loading`,async()=>c.calls.turn.list({account_id:l})),{successLabel:`Loaded`})}};function A(e){return e.positional(`key-id`,{type:`string`,description:`A Cloudflare-generated unique identifier for a item.`,demandOption:!0}).option(`name`,{type:`string`,description:`A short description of a TURN key, not shown to end users.`}).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 <key-id>`,describe:`Edit details for a single TURN key.`,builder:A,handler:async u=>{if(u.dryRun){a({command:`cf calls turn update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/accounts/${await n()??`<account-id>`}/calls/turn_keys/${u[`key-id`]==null?`<key-id>`:encodeURIComponent(String(u[`key-id`]))}`,pathParams:{"key-id":String(u[`key-id`]??``)},bodyKind:`json`,body:u.body===void 0?c({name:l(u.name,`name`,`text`)}):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(`Updating`,async()=>d.calls.turn.update({body:e,account_id:f,key_id:u[`key-id`]})),{successLabel:`Updated`});return}let p=c({name:l(u.name,`name`,`text`)});i(await o(`Updating`,async()=>d.calls.turn.update({body:p,account_id:f,key_id:u[`key-id`]})),{successLabel:`Updated`})}},M={command:`turn`,describe:`TURN relay keys that help clients traverse NATs and firewalls for peer-to-peer connectivity`,builder:e=>e.command(C).command(T).command(D).command(k).command(j).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},N={command:`calls`,describe:`Real-time audio/video communication infrastructure — SFU apps for WebRTC and TURN relay keys`,builder:e=>e.command(x).command(M).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{N as default};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{h as e}from"./oauth-BjHjJtnn.mjs";import{r as t}from"./auth-C6MhC9EZ.mjs";import{t as n}from"./output-DgW1hQGX.mjs";import{n as r,t as i}from"./progress-C-oFUtvC.mjs";import{n as a,t as o}from"./body-parser-CYD7PKFC.mjs";import{n as s}from"./input-validation-BBKJRoRB.mjs";function c(e){return e.option(`mtls-certificate-id`,{type:`string`,description:`The UUID to match against for a certificate that was uploaded to the mTLS Certificate Management endpoint. If no mtls_certificate_id is given, the results will be the hostnames associated to your active Cloudflare Managed CA.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const l={command:`get`,describe:`List Hostname Associations.`,builder:c,handler:async a=>{let o={mtls_certificate_id:a[`mtls-certificate-id`]};if(a.dryRun){r({command:`cf certificate-authorities hostname-associations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/certificate_authorities/hostname_associations`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},query:o,bodyKind:`none`});return}let s=await t(a),c=await e({zone:a.zone},s,{quiet:a.quiet});a.zoneId=c,n(await i(`Loading`,async()=>s.certificateAuthorities.hostnameAssociations.get({zone_id:c,...o})),{successLabel:`Loaded`})}};function u(e){return e.option(`hostnames`,{type:`string`,array:!0,description:`The hostnames field`}).option(`mtls-certificate-id`,{type:`string`,description:`The UUID for a certificate that was uploaded to the mTLS Certificate Management endpoint. If no mtls_certificate_id is given, the hostnames will be associated to your active Cloudflare Managed CA.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const d={command:`update`,describe:`Replace Hostname Associations.`,builder:u,handler:async c=>{if(c.dryRun){r({command:`cf certificate-authorities hostname-associations update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${c.zone??c.zoneId??`<zone>`}/certificate_authorities/hostname_associations`,pathParams:{"zone-id":String(c.zone??c[`zone-id`]??``)},bodyKind:`json`,body:c.body===void 0?o({hostnames:c.hostnames,mtls_certificate_id:s(c[`mtls-certificate-id`],`mtls-certificate-id`,`text`)}):a(c.body)});return}let l=await t(c),u=await e({zone:c.zone},l,{quiet:c.quiet});if(c.zoneId=u,c.body){let e=a(c.body);n(await i(`Updating`,async()=>l.certificateAuthorities.hostnameAssociations.update({...e,zone_id:u})),{successLabel:`Updated`});return}let d=o({hostnames:c.hostnames,mtls_certificate_id:s(c[`mtls-certificate-id`],`mtls-certificate-id`,`text`)});n(await i(`Updating`,async()=>l.certificateAuthorities.hostnameAssociations.update({...d,zone_id:u})),{successLabel:`Updated`})}},f={command:`hostname-associations`,describe:`Operations for hostname-associations`,builder:e=>e.command(l).command(d).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},p={command:`certificate-authorities`,describe:`certificate-authorities`,builder:e=>e.command(f).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{p as default};
2
+ import{h as e}from"./oauth-B0ETkNcX.mjs";import{r as t}from"./auth-MQEamPN9.mjs";import{t as n}from"./output-DrpYYfnB.mjs";import{n as r,t as i}from"./progress-CsHIt3Tp.mjs";import{n as a,t as o}from"./body-parser-C-c9gfH1.mjs";import{n as s}from"./input-validation-Bav2M9F-.mjs";function c(e){return e.option(`mtls-certificate-id`,{type:`string`,description:`The UUID to match against for a certificate that was uploaded to the mTLS Certificate Management endpoint. If no mtls_certificate_id is given, the results will be the hostnames associated to your active Cloudflare Managed CA.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1})}const l={command:`get`,describe:`List Hostname Associations.`,builder:c,handler:async a=>{let o={mtls_certificate_id:a[`mtls-certificate-id`]};if(a.dryRun){r({command:`cf certificate-authorities hostname-associations get`,method:`GET`,url:`https://api.cloudflare.com/client/v4/zones/${a.zone??a.zoneId??`<zone>`}/certificate_authorities/hostname_associations`,pathParams:{"zone-id":String(a.zone??a[`zone-id`]??``)},query:o,bodyKind:`none`});return}let s=await t(a),c=await e({zone:a.zone},s,{quiet:a.quiet});a.zoneId=c,n(await i(`Loading`,async()=>s.certificateAuthorities.hostnameAssociations.get({zone_id:c,...o})),{successLabel:`Loaded`})}};function u(e){return e.option(`hostnames`,{type:`string`,array:!0,description:`The hostnames field`}).option(`mtls-certificate-id`,{type:`string`,description:`The UUID for a certificate that was uploaded to the mTLS Certificate Management endpoint. If no mtls_certificate_id is given, the hostnames will be associated to your active Cloudflare Managed CA.`}).option(`dry-run`,{type:`boolean`,description:`Validate and show what would happen without executing`,default:!1}).option(`body`,{type:`string`,description:`Raw JSON request body (bypasses individual flags)`})}const d={command:`update`,describe:`Replace Hostname Associations.`,builder:u,handler:async c=>{if(c.dryRun){r({command:`cf certificate-authorities hostname-associations update`,method:`PUT`,url:`https://api.cloudflare.com/client/v4/zones/${c.zone??c.zoneId??`<zone>`}/certificate_authorities/hostname_associations`,pathParams:{"zone-id":String(c.zone??c[`zone-id`]??``)},bodyKind:`json`,body:c.body===void 0?o({hostnames:c.hostnames,mtls_certificate_id:s(c[`mtls-certificate-id`],`mtls-certificate-id`,`text`)}):a(c.body)});return}let l=await t(c),u=await e({zone:c.zone},l,{quiet:c.quiet});if(c.zoneId=u,c.body){let e=a(c.body);n(await i(`Updating`,async()=>l.certificateAuthorities.hostnameAssociations.update({...e,zone_id:u})),{successLabel:`Updated`});return}let d=o({hostnames:c.hostnames,mtls_certificate_id:s(c[`mtls-certificate-id`],`mtls-certificate-id`,`text`)});n(await i(`Updating`,async()=>l.certificateAuthorities.hostnameAssociations.update({...d,zone_id:u})),{successLabel:`Updated`})}},f={command:`hostname-associations`,describe:`Operations for hostname-associations`,builder:e=>e.command(l).command(d).demandCommand(1,`Please specify a subcommand`),handler:()=>{}},p={command:`certificate-authorities`,describe:`certificate-authorities`,builder:e=>e.command(f).demandCommand(1,`Please specify a subcommand`),handler:()=>{}};export{p as default};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{B as e,D as t,Dt as n,R as r,W as i,a,c as o,ct as s,d as c,et as l,f as u,h as d,i as f,kt as p,l as m,m as h,n as g,o as _,ot as v,p as ee,q as te,r as y,s as ne,t as re,tt as ie,u as b,w as ae,z as oe}from"./chunk-LQW53VED-Xakf_rUn.mjs";import{chmodSync as x,existsSync as S,mkdirSync as C,readFileSync as w,readdirSync as T,rmSync as E,writeFileSync as D}from"node:fs";import O from"node:path";import{URLSearchParams as se}from"node:url";function k(e){function t(){return O.resolve(e(),`preferences.json`)}d(t,`getUserPreferencesPath`);function n(){try{let e=w(t(),`utf8`),n=JSON.parse(e);return typeof n==`object`&&n?n:{}}catch{return{}}}d(n,`readUserPreferences`);function r(e){let r={...n(),...e},i=t();C(O.dirname(i),{recursive:!0}),D(i,JSON.stringify(r,null,` `),{encoding:`utf-8`})}return d(r,`updateUserPreferences`),{readUserPreferences:n,updateUserPreferences:r}}d(k,`createPreferences`);var A=6e4,j=525600,M=43200,N=1440,P=Symbol.for(`constructDateFrom`);function F(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&P in e?e[P](t):e instanceof Date?new e.constructor(t):new Date(t)}d(F,`constructFrom`);function I(e,t){return F(t||e,e)}d(I,`toDate`);var L={};function R(){return L}d(R,`getDefaultOptions`);function z(e){let t=I(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),e-+n}d(z,`getTimezoneOffsetInMilliseconds`);function B(e,...t){let n=F.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}d(B,`normalizeDates`);function V(e,t){let n=I(e)-+I(t);return n<0?-1:n>0?1:n}d(V,`compareAsc`);function H(e){return F(e,Date.now())}d(H,`constructNow`);function ce(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}d(ce,`getRoundingMethod`);var le={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},ue=d((e,t,n)=>{let r,i=le[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r},`formatDistance`);function U(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}d(U,`buildFormatLongFn`);var de={date:U({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:U({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:U({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},fe={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},pe=d((e,t,n,r)=>fe[e],`formatRelative`);function W(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}d(W,`buildLocalizeFn`);var me={ordinalNumber:d((e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},`ordinalNumber`),era:W({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:W({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:d(e=>e-1,`argumentCallback`)}),month:W({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:W({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:W({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function G(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?ge(s,e=>e.test(o)):he(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}d(G,`buildMatchFn`);function he(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}d(he,`findKey`);function ge(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}d(ge,`findIndex`);function _e(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}d(_e,`buildMatchPatternFn`);var ve={code:`en-US`,formatDistance:ue,formatLong:de,formatRelative:pe,localize:me,match:{ordinalNumber:_e({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:d(e=>parseInt(e,10),`valueCallback`)}),era:G({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:G({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:d(e=>e+1,`valueCallback`)}),month:G({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:G({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:G({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function ye(e,t,n){let r=R(),i=n?.locale??r.locale??ve,a=V(e,t);if(isNaN(a))throw RangeError(`Invalid time value`);let o=Object.assign({},n,{addSuffix:n?.addSuffix,comparison:a}),[s,c]=B(n?.in,...a>0?[t,e]:[e,t]),l=ce(n?.roundingMethod??`round`),u=c.getTime()-s.getTime(),d=u/A,f=(u-(z(c)-z(s)))/A,p=n?.unit,m;if(m=p||(d<1?`second`:d<60?`minute`:d<N?`hour`:f<M?`day`:f<j?`month`:`year`),m===`second`){let e=l(u/1e3);return i.formatDistance(`xSeconds`,e,o)}else if(m===`minute`){let e=l(d);return i.formatDistance(`xMinutes`,e,o)}else if(m===`hour`){let e=l(d/60);return i.formatDistance(`xHours`,e,o)}else if(m===`day`){let e=l(f/N);return i.formatDistance(`xDays`,e,o)}else if(m===`month`){let e=l(f/M);return e===12&&p!==`month`?i.formatDistance(`xYears`,1,o):i.formatDistance(`xMonths`,e,o)}else{let e=l(f/j);return i.formatDistance(`xYears`,e,o)}}d(ye,`formatDistanceStrict`);function be(e,t){return ye(e,H(e),t)}d(be,`formatDistanceToNowStrict`);function K(e,t){return{read:d(()=>{let r=t();if(!S(r))return;let i=n(r);try{return b(e,i)}catch{return}},`read`),write(n){let r=t();C(O.dirname(r),{recursive:!0}),D(r,u(e,n),{encoding:`utf-8`,mode:384}),x(r,384)},clear(){let e=t(),n=S(e);return E(e,{force:!0}),n},path:t}}d(K,`createFileStorage`);function q(t){let{logger:n,prompt:r}=t;return d(async function(t,i){if(e())return n.log(i),!0;let a=await r(t);return typeof a==`string`&&a.trim().toLowerCase()===`yes`},`ensureTemporaryTermsAccepted`)}d(q,`createTemporaryTermsPrompt`);var xe=[9106,1e4];function J(e){return e?.code}d(J,`getErrorCode`);function Se(e){let t=J(e);return t!==void 0&&xe.includes(t)}d(Se,`isMembershipsInaccessible`);function Ce(e){return{"no-credentials-non-interactive":`Could not authenticate because no credentials were found and the environment is non-interactive. Set a CLOUDFLARE_API_TOKEN environment variable or run \`${e}\` in an interactive terminal first.`,"no-credentials-login-failed":`No credentials were found and the login attempt was unsuccessful. Run \`${e}\` to try again.`,"token-expired-non-interactive":`Your auth token has expired and could not be refreshed, and the environment is non-interactive. Run \`${e}\` in an interactive terminal or set a CLOUDFLARE_API_TOKEN.`,"token-expired-login-failed":`Your auth token has expired and could not be refreshed, and the login attempt was unsuccessful. Run \`${e}\` to try again.`}}d(Ce,`notLoggedInErrorBodies`);function we(e,t,n){let r=new Date(t.claim.expiresAt);e.log(f`
2
+ import{B as e,D as t,Dt as n,R as r,W as i,a,c as o,ct as s,d as c,et as l,f as u,h as d,i as f,kt as p,l as m,m as h,n as g,o as _,ot as v,p as ee,q as te,r as y,s as ne,t as re,tt as ie,u as b,w as ae,z as oe}from"./chunk-LQW53VED-DLrXV-hE.mjs";import{chmodSync as x,existsSync as S,mkdirSync as C,readFileSync as w,readdirSync as T,rmSync as E,writeFileSync as D}from"node:fs";import O from"node:path";import{URLSearchParams as se}from"node:url";function k(e){function t(){return O.resolve(e(),`preferences.json`)}d(t,`getUserPreferencesPath`);function n(){try{let e=w(t(),`utf8`),n=JSON.parse(e);return typeof n==`object`&&n?n:{}}catch{return{}}}d(n,`readUserPreferences`);function r(e){let r={...n(),...e},i=t();C(O.dirname(i),{recursive:!0}),D(i,JSON.stringify(r,null,` `),{encoding:`utf-8`})}return d(r,`updateUserPreferences`),{readUserPreferences:n,updateUserPreferences:r}}d(k,`createPreferences`);var A=6e4,j=525600,M=43200,N=1440,P=Symbol.for(`constructDateFrom`);function F(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&P in e?e[P](t):e instanceof Date?new e.constructor(t):new Date(t)}d(F,`constructFrom`);function I(e,t){return F(t||e,e)}d(I,`toDate`);var L={};function R(){return L}d(R,`getDefaultOptions`);function z(e){let t=I(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),e-+n}d(z,`getTimezoneOffsetInMilliseconds`);function B(e,...t){let n=F.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}d(B,`normalizeDates`);function V(e,t){let n=I(e)-+I(t);return n<0?-1:n>0?1:n}d(V,`compareAsc`);function H(e){return F(e,Date.now())}d(H,`constructNow`);function ce(e){return t=>{let n=(e?Math[e]:Math.trunc)(t);return n===0?0:n}}d(ce,`getRoundingMethod`);var le={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},ue=d((e,t,n)=>{let r,i=le[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r},`formatDistance`);function U(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}d(U,`buildFormatLongFn`);var de={date:U({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:U({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:U({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},fe={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},pe=d((e,t,n,r)=>fe[e],`formatRelative`);function W(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}d(W,`buildLocalizeFn`);var me={ordinalNumber:d((e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},`ordinalNumber`),era:W({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:W({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:d(e=>e-1,`argumentCallback`)}),month:W({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:W({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:W({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function G(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?ge(s,e=>e.test(o)):he(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}d(G,`buildMatchFn`);function he(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}d(he,`findKey`);function ge(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}d(ge,`findIndex`);function _e(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}d(_e,`buildMatchPatternFn`);var ve={code:`en-US`,formatDistance:ue,formatLong:de,formatRelative:pe,localize:me,match:{ordinalNumber:_e({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:d(e=>parseInt(e,10),`valueCallback`)}),era:G({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:G({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:d(e=>e+1,`valueCallback`)}),month:G({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:G({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:G({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function ye(e,t,n){let r=R(),i=n?.locale??r.locale??ve,a=V(e,t);if(isNaN(a))throw RangeError(`Invalid time value`);let o=Object.assign({},n,{addSuffix:n?.addSuffix,comparison:a}),[s,c]=B(n?.in,...a>0?[t,e]:[e,t]),l=ce(n?.roundingMethod??`round`),u=c.getTime()-s.getTime(),d=u/A,f=(u-(z(c)-z(s)))/A,p=n?.unit,m;if(m=p||(d<1?`second`:d<60?`minute`:d<N?`hour`:f<M?`day`:f<j?`month`:`year`),m===`second`){let e=l(u/1e3);return i.formatDistance(`xSeconds`,e,o)}else if(m===`minute`){let e=l(d);return i.formatDistance(`xMinutes`,e,o)}else if(m===`hour`){let e=l(d/60);return i.formatDistance(`xHours`,e,o)}else if(m===`day`){let e=l(f/N);return i.formatDistance(`xDays`,e,o)}else if(m===`month`){let e=l(f/M);return e===12&&p!==`month`?i.formatDistance(`xYears`,1,o):i.formatDistance(`xMonths`,e,o)}else{let e=l(f/j);return i.formatDistance(`xYears`,e,o)}}d(ye,`formatDistanceStrict`);function be(e,t){return ye(e,H(e),t)}d(be,`formatDistanceToNowStrict`);function K(e,t){return{read:d(()=>{let r=t();if(!S(r))return;let i=n(r);try{return b(e,i)}catch{return}},`read`),write(n){let r=t();C(O.dirname(r),{recursive:!0}),D(r,u(e,n),{encoding:`utf-8`,mode:384}),x(r,384)},clear(){let e=t(),n=S(e);return E(e,{force:!0}),n},path:t}}d(K,`createFileStorage`);function q(t){let{logger:n,prompt:r}=t;return d(async function(t,i){if(e())return n.log(i),!0;let a=await r(t);return typeof a==`string`&&a.trim().toLowerCase()===`yes`},`ensureTemporaryTermsAccepted`)}d(q,`createTemporaryTermsPrompt`);var xe=[9106,1e4];function J(e){return e?.code}d(J,`getErrorCode`);function Se(e){let t=J(e);return t!==void 0&&xe.includes(t)}d(Se,`isMembershipsInaccessible`);function Ce(e){return{"no-credentials-non-interactive":`Could not authenticate because no credentials were found and the environment is non-interactive. Set a CLOUDFLARE_API_TOKEN environment variable or run \`${e}\` in an interactive terminal first.`,"no-credentials-login-failed":`No credentials were found and the login attempt was unsuccessful. Run \`${e}\` to try again.`,"token-expired-non-interactive":`Your auth token has expired and could not be refreshed, and the environment is non-interactive. Run \`${e}\` in an interactive terminal or set a CLOUDFLARE_API_TOKEN.`,"token-expired-login-failed":`Your auth token has expired and could not be refreshed, and the login attempt was unsuccessful. Run \`${e}\` to try again.`}}d(Ce,`notLoggedInErrorBodies`);function we(e,t,n){let r=new Date(t.claim.expiresAt);e.log(f`
3
3
  Temporary account ready:
4
4
  Account: ${t.account.name} (${n?`reused`:`created`})
5
5
  Claim within: ${be(r)}
@@ -15,4 +15,4 @@ Alternatively, try running \`${n.commands.login}\` to re-authenticate.`,{telemet
15
15
  Please set the appropriate \`account_id\` in your ${n.getConfigFileLabel()} file or assign it to the \`CLOUDFLARE_ACCOUNT_ID\` environment variable.
16
16
  Available accounts are (\`<name>\`: \`<account_id>\`):
17
17
  ${r.map(t=>` \`${e?`(redacted)`:t.name}\`: \`${t.id}\``).join(`
18
- `)}`,{telemetryMessage:`user account selection unavailable`})}throw e}}d(B,`getOrSelectAccountId`);async function V(e){if(v.isTemporaryAllowed()){if(ie(e)!==`public`)throw new p(`Temporary accounts aren't available when the compliance region is not set to public.`,{telemetryMessage:`user temporary account unavailable in compliance region`});let t=v.getActiveTemporaryAccount();if(t)return t.account.id;if(C())throw new p("You're already authenticated with Cloudflare, so `--temporary` can't be used. Temporary preview accounts are only for unauthenticated use. Either remove `--temporary` to use your existing account, or log out (and unset CLOUDFLARE_API_TOKEN) first.",{telemetryMessage:`user temporary account already authenticated`});let{account:n,cached:r}=await v.activateTemporaryAccount();return we(o,n,r),n.account.id}let t=await O(e);if(!t.loggedIn)throw t.reason===`no-credentials-non-interactive`||t.reason===`token-expired-non-interactive`?new p(`In a non-interactive environment, it's necessary to set a CLOUDFLARE_API_TOKEN environment variable for ${s} to work. Please go to https://developers.cloudflare.com/fundamentals/api/get-started/create-token/ for instructions on how to create an api token, and assign its value to CLOUDFLARE_API_TOKEN.`,{telemetryMessage:`user auth missing api token non interactive`}):new p(`Did not login, quitting...`,{telemetryMessage:`user login cancelled`});let n=await B(e);if(!n)throw new p(`No account id found, quitting...`,{telemetryMessage:`user auth missing account id`});return n}return d(V,`requireAuth`),{setProfile:y,getActiveProfile:b,getCredentialStore:x,setTemporaryAllowed:S,getAPIToken:C,requireApiToken:w,login:E,logout:D,loginOrRefreshIfRequired:O,getOAuthTokenFromLocalState:A,getScopes:j,readAuthCredentials:M,writeAuthCredentials:N,getActiveAccountId:z,getOrSelectAccountId:B,getAccountFromCache:I,fetchAllAccounts:R,requireAuth:V}}d(Te,`createCloudflareAuth`);var Ee=`profiles/directory-bindings.json`,De=`.enc`;function Y(e){let{logger:t,getConfigPath:n,keyringServiceName:r,format:i}=e,o=`.${i}`;function s(e){return a(n(),e,i)}d(s,`plaintextPath`);function l(e){return m(n(),e)}d(l,`encryptedPath`);function u(){return O.dirname(s(`default`))}d(u,`getProfileConfigDirectory`);let f={exists(e){return S(s(e))||S(l(e))},list(){let e=u();if(!S(e))return[];let t=new Set;for(let n of T(e))n.endsWith(o)?t.add(n.slice(0,-o.length)):n.endsWith(De)&&t.add(n.slice(0,-De.length));return[...t]},delete(e){let{backendAvailable:a,encryptedFileExisted:o}=c({serviceName:r,configPath:n(),profile:e,format:i});K(i,()=>s(e)).clear(),o&&!a&&t.warn(`Removed the credential files for profile "${e}", but the keyring backend was not reachable on this host so its keyring entry could not be cleared. Clear it manually if it persists.`)}};function p(){return O.join(n(),Ee)}return d(p,`getDirectoryBindingsPath`),y({configs:f,bindings:{read(){try{let e=w(p(),`utf-8`);return JSON.parse(e)}catch{return{}}},write(e){let t=p();C(O.dirname(t),{recursive:!0}),D(t,JSON.stringify(e,null,` `),`utf-8`)}}})}d(Y,`createCloudflareProfileStore`);function Oe(e){let{loginCommand:t,createProfileCommand:n,keyringServiceName:r,getConfigPath:i,format:a,preferences:s}=e,{readUserPreferences:l,updateUserPreferences:u}=s;function f(e){return e??`default`}d(f,`describeProfile`);function p(e){let t=[];S(m(i()))&&t.push(void 0);let n=Y({logger:e,getConfigPath:i,keyringServiceName:r,format:a});for(let e of n.configs.list()){try{h(e)}catch{continue}S(m(i(),e))&&t.push(e)}return t}d(p,`listEncryptedProfiles`);function g(e){let o=p(e);if(o.length===0)return;let s=[],l=[];for(let t of o)try{let{backendAvailable:e}=c({serviceName:r,configPath:i(),profile:t,format:a});s.push(f(t)),e||l.push(f(t))}catch(n){e.warn(`Failed to remove encrypted credentials for profile "${f(t)}": ${n instanceof Error?n.message:String(n)}. You may need to clear them manually.`)}if(s.length>0){let r=n?`Re-authenticate with \`${t}\` (default profile) or \`${n} <name>\` (named profiles).`:`Re-authenticate with \`${t}\`.`;e.log(`Removed encrypted credentials for ${s.map(e=>`"${e}"`).join(`, `)}. ${r}`)}l.length>0&&e.warn(`The keyring backend was not reachable on this host, so the keyring entry for ${l.map(e=>`"${e}"`).join(`, `)} could not be cleared. Clear it manually if it persists.`)}d(g,`scrubAllEncryptedProfiles`);function _(e,t){let{logger:n,getCredentialStore:r}=t,i=l().keyring_enabled===!0,a=o();if(a!==void 0&&a!==e&&n.warn(`CLOUDFLARE_AUTH_USE_KEYRING=${a} overrides ${e?`enabling`:`disabling`} keyring storage for this command.`),!e&&a!==!0&&g(n),u({keyring_enabled:e}),e&&a!==!1)try{r().kind!==`encrypted-file`&&(u({keyring_enabled:i}),n.warn(`Keyring storage isn't available on this host (see warning above), so it was not enabled. Try again once the keyring backend is reachable.`))}catch(e){throw u({keyring_enabled:i}),e}return{enabled:l().keyring_enabled===!0}}return d(_,`setKeyringPreference`),{setKeyringPreference:_}}d(Oe,`createKeyringPreference`);function ke(e){let{getConfigPath:t,format:n}=e;function r(e){return a(t(),e,n)}d(r,`getAuthConfigFilePath`);function i(e){return m(t(),e)}d(i,`getEncryptedAuthConfigFilePath`);function o(e){return K(n,()=>r(e))}d(o,`defaultAuthConfigStorage`);function s(e,t){o(t).write(e)}d(s,`writeAuthConfigFile`);function c(e){return o(e).read()}return d(c,`readAuthConfigFile`),{getAuthConfigFilePath:r,getEncryptedAuthConfigFilePath:i,defaultAuthConfigStorage:o,readAuthConfigFile:c,writeAuthConfigFile:s}}d(ke,`createAuthConfigFileHelpers`);var X=`cloudflare`,Ae=`cf`,je=`cf`,Me=`http://localhost:8877/oauth/callback`,Ne={granted:{url:`https://welcome.developers.workers.dev/cf-oauth-consent-granted`},denied:{url:`https://welcome.developers.workers.dev/cf-oauth-consent-denied`,error:"Error: Consent denied. You must grant consent to cf in order to login.\nIf you don't want to do this consider passing an API token via the `CLOUDFLARE_API_TOKEN` environment variable"}},Pe=s({variableName:`CLOUDFLARE_CLIENT_ID`,defaultValue:d(()=>`cbca97e7-c331-4cdd-8fd8-e25a451b98bf`,`defaultValue`)});function Z(){return v({appName:`cloudflare`,leadingDot:!1,useLegacyHomeDir:!1})}d(Z,`getCfConfigPath`);var Fe=`openid.offline.user:read.account:read.access:read.access:write.agw:read.agw:run.agw:write.ai:read.ai:write.ai-search:read.ai-search:run.ai-search:write.aiaudit:read.aiaudit:write.aig:read.aig:write.auditlogs:read.browser:read.browser:write.cfone:read.cfone:write.cloudchamber:write.connectivity:admin.connectivity:bind.connectivity:read.constellation:write.containers:write.d1:write.dex:read.dex:write.dns_analytics:read.dns_records:edit.dns_records:read.dns_settings:read.email_routing:read.email_routing:write.email_sending:read.email_sending:write.firstpartytags:write.images:read.images:write.lb:edit.lb:read.logpush:read.logpush:write.mcp_portals:read.mcp_portals:write.notebook-examples:read.notification:read.notification:write.pages:read.pages:write.pipelines:read.pipelines:setup.pipelines:write.query_cache:write.queues:write.r2_catalog:write.radar:read.rag:read.rag:write.registrar:read.registrar:write.secrets_store:read.secrets_store:write.sso-connector:read.sso-connector:write.ssl_certs:write.teams:pii.teams:read.teams:secure_location.teams:write.url_scanner:read.url_scanner:write.vectorize:write.workers:read.workers:write.workers_builds:read.workers_builds:write.workers_deployments:read.workers_kv:write.workers_observability:read.workers_observability:write.workers_observability_telemetry:write.workers_routes:write.workers_scripts:write.workers_tail:read.zone:read`.split(`.`),Ie=[...Fe];function Le(e){Ie=e}d(Le,`setLoginScopeKeys`);var Re=new Set(Fe);function ze(e){return e.every(e=>Re.has(e))}d(ze,`validateScopeKeys`);function Q(){let e=l();return e===`production`?`cloudflare-temporary-account.json`:`cloudflare-temporary-account.${e}.json`}d(Q,`getTemporaryAccountConfigFile`);function Be(){return O.join(Z(),Q())}d(Be,`getCfTemporaryAccountConfigPath`);function Ve(e){return K(`json`,e)}d(Ve,`createJsonFileStorage`);var{getAuthConfigFilePath:He,getEncryptedAuthConfigFilePath:Ue,defaultAuthConfigStorage:We,readAuthConfigFile:Ge,writeAuthConfigFile:Ke}=ke({getConfigPath:Z,format:`json`}),$={cliName:Ae,displayName:je,commands:{login:`cf auth login`,whoami:`cf auth whoami`,createProfile:`cf auth create`,deviceLogin:`cf auth login --device`},keyringServiceName:X,clientId:Pe,consent:Ne,redirectUri:Me,allowGlobalAuthKey:!1,getConfigPath:Z,getTemporaryAccountConfigPath:Be,fileFormat:`json`,accountCachePrefix:`cloudflare-account`,cacheNamespace:`cloudflare`,getConfigFileLabel:d(()=>`cf config`,`getConfigFileLabel`),getDefaultScopeKeys:d(()=>Ie,`getDefaultScopeKeys`)},qe=k(Z),{readUserPreferences:Je,updateUserPreferences:Ye}=qe;function Xe(e){return Te($,e)}d(Xe,`createCfAuth`);function Ze(e){return Y({logger:e.logger,getConfigPath:Z,keyringServiceName:X,format:`json`})}d(Ze,`createCfProfileStore`);var Qe=Oe({loginCommand:$.commands.login,createProfileCommand:$.commands.createProfile,keyringServiceName:X,getConfigPath:Z,format:`json`,preferences:qe});function $e(e,t){return Qe.setKeyringPreference(e,t)}d($e,`setKeyringPreference`);export{ze as a,Z as i,Ze as n,Ve as r,Xe as t};
18
+ `)}`,{telemetryMessage:`user account selection unavailable`})}throw e}}d(B,`getOrSelectAccountId`);async function V(e){if(v.isTemporaryAllowed()){if(ie(e)!==`public`)throw new p(`Temporary accounts aren't available when the compliance region is not set to public.`,{telemetryMessage:`user temporary account unavailable in compliance region`});let t=v.getActiveTemporaryAccount();if(t)return t.account.id;if(C())throw new p("You're already authenticated with Cloudflare, so `--temporary` can't be used. Temporary preview accounts are only for unauthenticated use. Either remove `--temporary` to use your existing account, or log out (and unset CLOUDFLARE_API_TOKEN) first.",{telemetryMessage:`user temporary account already authenticated`});let{account:n,cached:r}=await v.activateTemporaryAccount();return we(o,n,r),n.account.id}let t=await O(e);if(!t.loggedIn)throw t.reason===`no-credentials-non-interactive`||t.reason===`token-expired-non-interactive`?new p(`In a non-interactive environment, it's necessary to set a CLOUDFLARE_API_TOKEN environment variable for ${s} to work. Please go to https://developers.cloudflare.com/fundamentals/api/get-started/create-token/ for instructions on how to create an api token, and assign its value to CLOUDFLARE_API_TOKEN.`,{telemetryMessage:`user auth missing api token non interactive`}):new p(`Did not login, quitting...`,{telemetryMessage:`user login cancelled`});let n=await B(e);if(!n)throw new p(`No account id found, quitting...`,{telemetryMessage:`user auth missing account id`});return n}return d(V,`requireAuth`),{setProfile:y,getActiveProfile:b,getCredentialStore:x,setTemporaryAllowed:S,getAPIToken:C,requireApiToken:w,login:E,logout:D,loginOrRefreshIfRequired:O,getOAuthTokenFromLocalState:A,getScopes:j,readAuthCredentials:M,writeAuthCredentials:N,getActiveAccountId:z,getOrSelectAccountId:B,getAccountFromCache:I,fetchAllAccounts:R,requireAuth:V}}d(Te,`createCloudflareAuth`);var Ee=`profiles/directory-bindings.json`,De=`.enc`;function Y(e){let{logger:t,getConfigPath:n,keyringServiceName:r,format:i}=e,o=`.${i}`;function s(e){return a(n(),e,i)}d(s,`plaintextPath`);function l(e){return m(n(),e)}d(l,`encryptedPath`);function u(){return O.dirname(s(`default`))}d(u,`getProfileConfigDirectory`);let f={exists(e){return S(s(e))||S(l(e))},list(){let e=u();if(!S(e))return[];let t=new Set;for(let n of T(e))n.endsWith(o)?t.add(n.slice(0,-o.length)):n.endsWith(De)&&t.add(n.slice(0,-De.length));return[...t]},delete(e){let{backendAvailable:a,encryptedFileExisted:o}=c({serviceName:r,configPath:n(),profile:e,format:i});K(i,()=>s(e)).clear(),o&&!a&&t.warn(`Removed the credential files for profile "${e}", but the keyring backend was not reachable on this host so its keyring entry could not be cleared. Clear it manually if it persists.`)}};function p(){return O.join(n(),Ee)}return d(p,`getDirectoryBindingsPath`),y({configs:f,bindings:{read(){try{let e=w(p(),`utf-8`);return JSON.parse(e)}catch{return{}}},write(e){let t=p();C(O.dirname(t),{recursive:!0}),D(t,JSON.stringify(e,null,` `),`utf-8`)}}})}d(Y,`createCloudflareProfileStore`);function Oe(e){let{loginCommand:t,createProfileCommand:n,keyringServiceName:r,getConfigPath:i,format:a,preferences:s}=e,{readUserPreferences:l,updateUserPreferences:u}=s;function f(e){return e??`default`}d(f,`describeProfile`);function p(e){let t=[];S(m(i()))&&t.push(void 0);let n=Y({logger:e,getConfigPath:i,keyringServiceName:r,format:a});for(let e of n.configs.list()){try{h(e)}catch{continue}S(m(i(),e))&&t.push(e)}return t}d(p,`listEncryptedProfiles`);function g(e){let o=p(e);if(o.length===0)return;let s=[],l=[];for(let t of o)try{let{backendAvailable:e}=c({serviceName:r,configPath:i(),profile:t,format:a});s.push(f(t)),e||l.push(f(t))}catch(n){e.warn(`Failed to remove encrypted credentials for profile "${f(t)}": ${n instanceof Error?n.message:String(n)}. You may need to clear them manually.`)}if(s.length>0){let r=n?`Re-authenticate with \`${t}\` (default profile) or \`${n} <name>\` (named profiles).`:`Re-authenticate with \`${t}\`.`;e.log(`Removed encrypted credentials for ${s.map(e=>`"${e}"`).join(`, `)}. ${r}`)}l.length>0&&e.warn(`The keyring backend was not reachable on this host, so the keyring entry for ${l.map(e=>`"${e}"`).join(`, `)} could not be cleared. Clear it manually if it persists.`)}d(g,`scrubAllEncryptedProfiles`);function _(e,t){let{logger:n,getCredentialStore:r}=t,i=l().keyring_enabled===!0,a=o();if(a!==void 0&&a!==e&&n.warn(`CLOUDFLARE_AUTH_USE_KEYRING=${a} overrides ${e?`enabling`:`disabling`} keyring storage for this command.`),!e&&a!==!0&&g(n),u({keyring_enabled:e}),e&&a!==!1)try{r().kind!==`encrypted-file`&&(u({keyring_enabled:i}),n.warn(`Keyring storage isn't available on this host (see warning above), so it was not enabled. Try again once the keyring backend is reachable.`))}catch(e){throw u({keyring_enabled:i}),e}return{enabled:l().keyring_enabled===!0}}return d(_,`setKeyringPreference`),{setKeyringPreference:_}}d(Oe,`createKeyringPreference`);function ke(e){let{getConfigPath:t,format:n}=e;function r(e){return a(t(),e,n)}d(r,`getAuthConfigFilePath`);function i(e){return m(t(),e)}d(i,`getEncryptedAuthConfigFilePath`);function o(e){return K(n,()=>r(e))}d(o,`defaultAuthConfigStorage`);function s(e,t){o(t).write(e)}d(s,`writeAuthConfigFile`);function c(e){return o(e).read()}return d(c,`readAuthConfigFile`),{getAuthConfigFilePath:r,getEncryptedAuthConfigFilePath:i,defaultAuthConfigStorage:o,readAuthConfigFile:c,writeAuthConfigFile:s}}d(ke,`createAuthConfigFileHelpers`);var X=`cloudflare`,Ae=`cf`,je=`cf`,Me=`http://localhost:8877/oauth/callback`,Ne={granted:{url:`https://welcome.developers.workers.dev/cf-oauth-consent-granted`},denied:{url:`https://welcome.developers.workers.dev/cf-oauth-consent-denied`,error:"Error: Consent denied. You must grant consent to cf in order to login.\nIf you don't want to do this consider passing an API token via the `CLOUDFLARE_API_TOKEN` environment variable"}},Pe=s({variableName:`CLOUDFLARE_CLIENT_ID`,defaultValue:d(()=>`cbca97e7-c331-4cdd-8fd8-e25a451b98bf`,`defaultValue`)});function Z(){return v({appName:`cloudflare`,leadingDot:!1,useLegacyHomeDir:!1})}d(Z,`getCfConfigPath`);var Fe=`openid.offline.user:read.account:read.access:read.access:write.agw:read.agw:run.agw:write.ai:read.ai:write.ai-search:read.ai-search:run.ai-search:write.aiaudit:read.aiaudit:write.aig:read.aig:write.auditlogs:read.browser:read.browser:write.cfone:read.cfone:write.cloudchamber:write.connectivity:admin.connectivity:bind.connectivity:read.constellation:write.containers:write.d1:write.dex:read.dex:write.dns_analytics:read.dns_records:edit.dns_records:read.dns_settings:read.email_routing:write.email_sending:write.firstpartytags:write.images:read.images:write.lb:edit.lb:read.logpush:read.logpush:write.mcp_portals:read.mcp_portals:write.notebook-examples:read.notification:read.notification:write.pages:read.pages:write.pipelines:read.pipelines:setup.pipelines:write.query_cache:write.queues:write.r2_catalog:write.radar:read.rag:read.rag:write.registrar:read.registrar:write.secrets_store:read.secrets_store:write.sso-connector:read.sso-connector:write.ssl_certs:write.teams:pii.teams:read.teams:secure_location.teams:write.url_scanner:read.url_scanner:write.vectorize:write.workers:read.workers:write.workers_builds:read.workers_builds:write.workers_deployments:read.workers_kv:write.workers_observability:read.workers_observability:write.workers_observability_telemetry:write.workers_routes:write.workers_scripts:write.workers_tail:read.zone:read`.split(`.`),Ie=[...Fe];function Le(e){Ie=e}d(Le,`setLoginScopeKeys`);var Re=new Set(Fe);function ze(e){return e.every(e=>Re.has(e))}d(ze,`validateScopeKeys`);function Q(){let e=l();return e===`production`?`cloudflare-temporary-account.json`:`cloudflare-temporary-account.${e}.json`}d(Q,`getTemporaryAccountConfigFile`);function Be(){return O.join(Z(),Q())}d(Be,`getCfTemporaryAccountConfigPath`);function Ve(e){return K(`json`,e)}d(Ve,`createJsonFileStorage`);var{getAuthConfigFilePath:He,getEncryptedAuthConfigFilePath:Ue,defaultAuthConfigStorage:We,readAuthConfigFile:Ge,writeAuthConfigFile:Ke}=ke({getConfigPath:Z,format:`json`}),$={cliName:Ae,displayName:je,commands:{login:`cf auth login`,whoami:`cf auth whoami`,createProfile:`cf auth create`,deviceLogin:`cf auth login --device`},keyringServiceName:X,clientId:Pe,consent:Ne,redirectUri:Me,allowGlobalAuthKey:!1,getConfigPath:Z,getTemporaryAccountConfigPath:Be,fileFormat:`json`,accountCachePrefix:`cloudflare-account`,cacheNamespace:`cloudflare`,getConfigFileLabel:d(()=>`cf config`,`getConfigFileLabel`),getDefaultScopeKeys:d(()=>Ie,`getDefaultScopeKeys`)},qe=k(Z),{readUserPreferences:Je,updateUserPreferences:Ye}=qe;function Xe(e){return Te($,e)}d(Xe,`createCfAuth`);function Ze(e){return Y({logger:e.logger,getConfigPath:Z,keyringServiceName:X,format:`json`})}d(Ze,`createCfProfileStore`);var Qe=Oe({loginCommand:$.commands.login,createProfileCommand:$.commands.createProfile,keyringServiceName:X,getConfigPath:Z,format:`json`,preferences:qe});function $e(e,t){return Qe.setKeyringPreference(e,t)}d($e,`setKeyringPreference`);export{ze as a,Z as i,Ze as n,Ve as r,Xe as t};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{r as e,t}from"./chunk-vbHwaUoU.mjs";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-Q72B4Q5Z-CPy_WJKU.mjs";import{createRequire as s}from"node:module";import c,{accessSync as l,appendFileSync as u,chmodSync as d,constants as f,existsSync as p,mkdirSync as m,readFileSync as h,renameSync as g,rmSync as _,statSync as v,unlinkSync as y,writeFileSync as b}from"node:fs";import x from"node:assert";import{TextEncoder as S,stripVTControlCharacters as C}from"node:util";import*as w from"node:path";import T,{basename as E,dirname as D,isAbsolute as O,join as k,resolve as A}from"node:path";import j,{arch as M}from"node:os";import ee from"node:process";import N from"node:tty";import{execFileSync as te,spawn as ne,spawnSync as re}from"node:child_process";import{createCipheriv as ie,createDecipheriv as ae,createHash as oe,randomBytes as se,webcrypto as ce}from"node:crypto";import le from"node:http";import ue,{URLSearchParams as de}from"node:url";import{assert as fe}from"node:console";import*as pe from"node:timers/promises";import{setTimeout as me}from"node:timers/promises";function he(e){var t=[...arguments].slice(1),n=Array.from(typeof e==`string`?[e]:e);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,``);var r=n.reduce(function(e,t){var n=t.match(/\n([\t ]+|(?!\s).)/g);return n?e.concat(n.map(function(e){return e.match(/[\t ]/g)?.length??0})):e},[]);if(r.length){var i=RegExp(`
2
+ import{r as e,t}from"./chunk-vbHwaUoU.mjs";import{a as n,i as r,n as i,r as a,t as o}from"./chunk-Q72B4Q5Z-DVMMVVEs.mjs";import{createRequire as s}from"node:module";import c,{accessSync as l,appendFileSync as u,chmodSync as d,constants as f,existsSync as p,mkdirSync as m,readFileSync as h,renameSync as g,rmSync as _,statSync as v,unlinkSync as y,writeFileSync as b}from"node:fs";import x from"node:assert";import{TextEncoder as S,stripVTControlCharacters as C}from"node:util";import*as w from"node:path";import T,{basename as E,dirname as D,isAbsolute as O,join as k,resolve as A}from"node:path";import j,{arch as M}from"node:os";import ee from"node:process";import N from"node:tty";import{execFileSync as te,spawn as ne,spawnSync as re}from"node:child_process";import{createCipheriv as ie,createDecipheriv as ae,createHash as oe,randomBytes as se,webcrypto as ce}from"node:crypto";import le from"node:http";import ue,{URLSearchParams as de}from"node:url";import{assert as fe}from"node:console";import*as pe from"node:timers/promises";import{setTimeout as me}from"node:timers/promises";function he(e){var t=[...arguments].slice(1),n=Array.from(typeof e==`string`?[e]:e);n[n.length-1]=n[n.length-1].replace(/\r?\n([\t ]*)$/,``);var r=n.reduce(function(e,t){var n=t.match(/\n([\t ]+|(?!\s).)/g);return n?e.concat(n.map(function(e){return e.match(/[\t ]/g)?.length??0})):e},[]);if(r.length){var i=RegExp(`
3
3
  [ ]{`+Math.min.apply(Math,r)+`}`,`g`);n=n.map(function(e){return e.replace(i,`
4
4
  `)})}n[0]=n[0].replace(/^\r?\n/,``);var a=n[0];return t.forEach(function(e,t){var r=a.match(/(?:^|\n)( *)$/),i=r?r[1]:``,o=e;typeof e==`string`&&e.includes(`
5
5
  `)&&(o=String(e).split(`
@@ -376,7 +376,7 @@ The local dev server started at ${n.href}
376
376
 
377
377
  ${n}- ${CT(e,t+1)}`).join(`
378
378
  `)??``:``;return(e.code?`${r} [code: ${e.code}]`:r)+(e.documentation_url?`
379
- ${n}To learn more about this error, visit: ${e.documentation_url}`:``)+i}a(CT,`renderError`);function wT(e,t,n=!1){if(!e.has(`Authorization`)||n)if(`apiToken`in t){let n=`Bearer ${t.apiToken}`;TT(n),e.set(`Authorization`,n)}else e.set(`X-Auth-Key`,t.authKey),e.set(`X-Auth-Email`,t.authEmail)}a(wT,`addAuthorizationHeader`);function TT(e){for(let t of e){let e=t.codePointAt(0);if(e===void 0||e>255)throw new F(`The configured Cloudflare API token contains a character that cannot be used in an HTTP Authorization header: ${ET(t,e)}. Recreate or copy the token again, making sure it does not include characters such as ellipses.`,{telemetryMessage:`cfetch auth invalid authorization header`})}}a(TT,`validateAuthorizationHeaderValue`);function ET(e,t){if(t===void 0)return`"\\u{unknown}"`;let n=`U+${t.toString(16).toUpperCase().padStart(4,`0`)}`;return`${DT(e)?`"${e}"`:`"${OT(e)}"`} (${n})`}a(ET,`formatAuthorizationHeaderCharacter`);function DT(e){return!/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u.test(e)}a(DT,`isPrintableCharacter`);function OT(e){return Array.from(e).map(e=>{let t=e.codePointAt(0);return t===void 0?``:t<=65535?`\\u${t.toString(16).toUpperCase().padStart(4,`0`)}`:`\\u{${t.toString(16).toUpperCase()}}`}).join(``)}a(OT,`escapeCharacter`);function kT(e,t,n,r){let i=t.errors??[];for(let e of i)uT(e);let a=[...i.map(e=>({text:CT(e)})),...t.messages?.map(e=>({text:typeof e==`string`?e:e.message??String(e)}))??[]];if(a.length===0){let e=t,n=typeof e.error==`string`?`${e.error}${e.code?` [code: ${e.code}]`:``}`:void 0;n&&a.push({text:n})}r!==void 0&&a.push({text:`The API responded with a "Retry-After" header indicating you should wait ${Math.ceil(r/1e3)} second(s) before retrying.`});let o=new It({text:`A request to the Cloudflare API (${e}) failed.`,notes:a,status:n,retryAfterMs:r,telemetryMessage:!1}),s=i[0]?.code;s&&(o.code=s);let c=i[0]?.meta;throw c&&(o.meta=c),o.accountTag=xT(e),o}a(kT,`throwFetchError`);function AT(e,t,n,r,i,a){let o=bT(e);throw new It({text:`The Cloudflare API responded with a WAF block page instead of the expected JSON response`,notes:[{text:`Cloudflare's firewall (WAF) blocked this API request. This is usually a false positive.`},...o?[{text:`Cloudflare Ray ID: ${o}`}]:[],{text:o?`If the issue persists, please open a Cloudflare Support ticket and include the Ray ID above.`:`If the issue persists, please open a Cloudflare Support ticket. You can find the Cloudflare Ray ID on the block page in your browser.`},{text:`${t} ${n} -> ${r} ${i}`}],status:r,retryAfterMs:a,telemetryMessage:!1})}a(AT,`throwWAFBlockError`);async function jT(e,t,n,r,i,a,o){let s=new ro.Headers;wT(s,o),s.set(`User-Agent`,i),NT(s);let c=`${sr(e)}/accounts/${t}/storage/kv/namespaces/${n}/values/${r}`;a.debug(`-- START CF API REQUEST: GET ${c}`),a.debug(`-- END CF API REQUEST`);let l=await(0,ro.fetch)(c,{method:`GET`,headers:s});if(l.ok)return await l.arrayBuffer();throw Error(`Failed to fetch ${c} - ${l.status}: ${l.statusText}`)}a(jT,`fetchKVGetValueBase`);function MT(e){let t=e?.cursor;return t!=null&&t!==``}a(MT,`hasCursor`);function NT(e){let t=_r();t&&e.set(`Cf-Trace-Id`,t)}a(NT,`maybeAddTraceHeader`);function PT(e){return new ro.Headers(e)}a(PT,`cloneHeaders`);var FT=n(yo()),IT=3e3,LT=Symbol(`timed_out`);async function RT(e,t){let n=null;try{n=await Promise.race([(0,FT.default)({name:e,version:t},{distTag:t.startsWith(`0.0.0`)?`beta`:`latest`}),pe.setTimeout(IT,LT,{ref:!1})])}catch{return{status:`failed`}}return n===LT?{status:`failed`}:n===null?{status:`up-to-date`}:{status:`update-available`,latest:n.latest}}a(RT,`fetchLatestNpmVersion`);var zT={none:-1,error:0,warn:1,info:2,log:3,debug:4};async function BT(e,t){try{let{default:n}=await import(`./open-PBXRGS4R-C46yIm3u.mjs`);(await n(e)).on(`error`,n=>{VT(e,n,t)})}catch(n){if(n.code===`ENOENT`)VT(e,n,t);else throw n}}a(BT,`openInBrowser`);function VT(e,t,n){let r=t.code===`ENOENT`,i=process.platform===`linux`&&r?" You may need to install `xdg-utils` (e.g. `apt install xdg-utils`) or set a default browser.":``;n.warn(`Failed to open a browser automatically.${i}
379
+ ${n}To learn more about this error, visit: ${e.documentation_url}`:``)+i}a(CT,`renderError`);function wT(e,t,n=!1){if(!e.has(`Authorization`)||n)if(`apiToken`in t){let n=`Bearer ${t.apiToken}`;TT(n),e.set(`Authorization`,n)}else e.set(`X-Auth-Key`,t.authKey),e.set(`X-Auth-Email`,t.authEmail)}a(wT,`addAuthorizationHeader`);function TT(e){for(let t of e){let e=t.codePointAt(0);if(e===void 0||e>255)throw new F(`The configured Cloudflare API token contains a character that cannot be used in an HTTP Authorization header: ${ET(t,e)}. Recreate or copy the token again, making sure it does not include characters such as ellipses.`,{telemetryMessage:`cfetch auth invalid authorization header`})}}a(TT,`validateAuthorizationHeaderValue`);function ET(e,t){if(t===void 0)return`"\\u{unknown}"`;let n=`U+${t.toString(16).toUpperCase().padStart(4,`0`)}`;return`${DT(e)?`"${e}"`:`"${OT(e)}"`} (${n})`}a(ET,`formatAuthorizationHeaderCharacter`);function DT(e){return!/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u.test(e)}a(DT,`isPrintableCharacter`);function OT(e){return Array.from(e).map(e=>{let t=e.codePointAt(0);return t===void 0?``:t<=65535?`\\u${t.toString(16).toUpperCase().padStart(4,`0`)}`:`\\u{${t.toString(16).toUpperCase()}}`}).join(``)}a(OT,`escapeCharacter`);function kT(e,t,n,r){let i=t.errors??[];for(let e of i)uT(e);let a=[...i.map(e=>({text:CT(e)})),...t.messages?.map(e=>({text:typeof e==`string`?e:e.message??String(e)}))??[]];if(a.length===0){let e=t,n=typeof e.error==`string`?`${e.error}${e.code?` [code: ${e.code}]`:``}`:void 0;n&&a.push({text:n})}r!==void 0&&a.push({text:`The API responded with a "Retry-After" header indicating you should wait ${Math.ceil(r/1e3)} second(s) before retrying.`});let o=new It({text:`A request to the Cloudflare API (${e}) failed.`,notes:a,status:n,retryAfterMs:r,telemetryMessage:!1}),s=i[0]?.code;s&&(o.code=s);let c=i[0]?.meta;throw c&&(o.meta=c),o.accountTag=xT(e),o}a(kT,`throwFetchError`);function AT(e,t,n,r,i,a){let o=bT(e);throw new It({text:`The Cloudflare API responded with a WAF block page instead of the expected JSON response`,notes:[{text:`Cloudflare's firewall (WAF) blocked this API request. This is usually a false positive.`},...o?[{text:`Cloudflare Ray ID: ${o}`}]:[],{text:o?`If the issue persists, please open a Cloudflare Support ticket and include the Ray ID above.`:`If the issue persists, please open a Cloudflare Support ticket. You can find the Cloudflare Ray ID on the block page in your browser.`},{text:`${t} ${n} -> ${r} ${i}`}],status:r,retryAfterMs:a,telemetryMessage:!1})}a(AT,`throwWAFBlockError`);async function jT(e,t,n,r,i,a,o){let s=new ro.Headers;wT(s,o),s.set(`User-Agent`,i),NT(s);let c=`${sr(e)}/accounts/${t}/storage/kv/namespaces/${n}/values/${r}`;a.debug(`-- START CF API REQUEST: GET ${c}`),a.debug(`-- END CF API REQUEST`);let l=await(0,ro.fetch)(c,{method:`GET`,headers:s});if(l.ok)return await l.arrayBuffer();throw Error(`Failed to fetch ${c} - ${l.status}: ${l.statusText}`)}a(jT,`fetchKVGetValueBase`);function MT(e){let t=e?.cursor;return t!=null&&t!==``}a(MT,`hasCursor`);function NT(e){let t=_r();t&&e.set(`Cf-Trace-Id`,t)}a(NT,`maybeAddTraceHeader`);function PT(e){return new ro.Headers(e)}a(PT,`cloneHeaders`);var FT=n(yo()),IT=3e3,LT=Symbol(`timed_out`);async function RT(e,t){let n=null;try{n=await Promise.race([(0,FT.default)({name:e,version:t},{distTag:t.startsWith(`0.0.0`)?`beta`:`latest`}),pe.setTimeout(IT,LT,{ref:!1})])}catch{return{status:`failed`}}return n===LT?{status:`failed`}:n===null?{status:`up-to-date`}:{status:`update-available`,latest:n.latest}}a(RT,`fetchLatestNpmVersion`);var zT={none:-1,error:0,warn:1,info:2,log:3,debug:4};async function BT(e,t){try{let{default:n}=await import(`./open-PBXRGS4R-R-qesf18.mjs`);(await n(e)).on(`error`,n=>{VT(e,n,t)})}catch(n){if(n.code===`ENOENT`)VT(e,n,t);else throw n}}a(BT,`openInBrowser`);function VT(e,t,n){let r=t.code===`ENOENT`,i=process.platform===`linux`&&r?" You may need to install `xdg-utils` (e.g. `apt install xdg-utils`) or set a default browser.":``;n.warn(`Failed to open a browser automatically.${i}
380
380
  Please visit the following URL in your browser:
381
381
  ${e}`),n.debug(t instanceof Error?t.stack??String(t):String(t))}a(VT,`handleBrowserOpenError`);function HT(e){if(WT===void 0&&(WT=GT()),WT!==null){m(D(WT),{recursive:!0});let t=JSON.stringify({...e,timestamp:new Date().toISOString()});u(WT,t+`
382
382
  `)}}a(HT,`writeOutput`);function UT(){WT=void 0}a(UT,`clearOutputFilePath`);var WT=void 0;function GT(){let e=fr();if(e)return e;let t=dr();return t?A(t,`wrangler-output-${new Date().toISOString().replaceAll(`:`,`-`).replace(`.`,`_`).replace(`T`,`_`).replace(`Z`,``)}-${se(3).toString(`hex`)}.json`):null}a(GT,`getOutputFilePath`);var KT=3,qT=6e4;async function JT(e,t,n=0,r=KT,i){try{return await e()}catch(a){if(a instanceof It){if(!a.isRetryable()&&a.status!==429)throw a}else if(!(a instanceof DOMException&&a.name===`TimeoutError`)&&!(a instanceof TypeError))throw a;let o=a instanceof It?a.retryAfterMs:void 0;if(o!==void 0&&o>qT||r<=1)throw a;let s=Math.random()*1e3,c=n;return o===void 0?a instanceof It&&a.status===429&&(c=Math.max(n,1e3)+s):c=o+s,o===void 0?(t.debug(`Retrying API call after error...`),t.debug(a)):t.info(`Received a "Retry-After" header from the Cloudflare API. Waiting ${Math.ceil(o/1e3)} second(s) before retrying...`),await me(c,void 0,{signal:i}),JT(e,t,n+1e3,r-1,i)}}a(JT,`retryOnAPIFailure`);function YT(e){return`(${(e/1e3).toFixed(2)} sec)`}a(YT,`formatTime`);function XT(e){let t;return typeof e==`string`?t=QT(e):typeof e==`object`&&(t=QT(e.pattern),t===void 0&&`zone_name`in e&&(t=QT(e.zone_name))),t}a(XT,`getHostFromRoute`);function ZT(e){return typeof e==`object`&&`zone_name`in e&&e.zone_name?e.zone_name:XT(e)}a(ZT,`getZoneFromRoute`);function QT(e){if(!(e.startsWith(`*/`)||e.startsWith(`http://*/`)||e.startsWith(`https://*/`))){e=e.replace(/\*(\.)?/g,``),e.startsWith(`http://`)||e.startsWith(`https://`)||(e=`http://`+e);try{return new URL(e).host}catch{return}}}a(QT,`getHostFromUrl`);var $T={type:`npm`,npx:`npx`,dlx:[`npx`],lockFiles:[`package-lock.json`]},eE={type:`pnpm`,npx:`pnpm`,lockFiles:[`pnpm-lock.yaml`],dlx:[`pnpm`,`dlx`]},tE={type:`yarn`,npx:`yarn`,dlx:[`yarn`,`dlx`],lockFiles:[`yarn.lock`]},nE={type:`bun`,npx:`bunx`,dlx:[`bunx`],lockFiles:[`bun.lockb`,`bun.lock`]},rE={type:`nub`,npx:`nubx`,dlx:[`nubx`],lockFiles:[`nub.lock`]},iE=/[^a-z0-9- ]/g,aE=/^(-+)|(-+)$/g,oE=63;function sE(e){return e?e.match(aE)?{valid:!1,cause:`Worker names cannot start or end with a dash.`}:e.match(iE)?{valid:!1,cause:`Project names must only contain lowercase characters, numbers, and dashes.`}:e.length>oE?{valid:!1,cause:`Project names must be less than 63 characters.`}:{valid:!0}:{valid:!1,cause:`Worker names cannot be empty.`}}a(sE,`checkWorkerNameValidity`);function cE(e){return sE(e).valid?e:(e=e.replaceAll(`_`,`-`).replace(iE,`-`).replace(aE,``).slice(0,oE),e.length?e:`my-worker`)}a(cE,`toValidWorkerName`);function lE(e=``,t){return cE(mr()??(e||E(t)))}a(lE,`getWorkerName`);function uE(e){let t=A(e,`package.json`),n;try{n=Rt(Ht(t),t).name}catch{}return lE(n,e)}a(uE,`getWorkerNameFromProject`);function dE(e){return fe(!/^[a-z]:/i.test(e),`Tried to convert a Windows file path with a drive to a URL path.`),e.replace(/\\/g,`/`)}a(dE,`toUrlPath`);var fE=Object.defineProperty,$=(e,t)=>fE(e,`name`,{value:t,configurable:!0}),pE=!1;function mE(e){let{configOverride:t,warningLogger:n,storage:r}=e,{oauth_token:i,refresh_token:a,expiration_time:o,scopes:s,api_token:c}=t??r.read()??{};return i?{accessToken:{value:i,expiry:o??`2000-01-01:00:00:00+00:00`},refreshToken:{value:a??``},scopes:s}:c?(!pE&&n&&(pE=!0,n.warn(`It looks like you have used Wrangler v1's \`config\` command to login with an API token