@vercel/cli-support 65.11.0 → 65.12.0-snapshot-801db9d533c3

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 (369) hide show
  1. package/README.md +8 -120
  2. package/dist/chunks/add-BDJYCIBT.js +8 -0
  3. package/dist/chunks/add-LZR4CD7O.js +8 -0
  4. package/dist/chunks/add-MR6YZTRQ.js +8 -0
  5. package/dist/chunks/{alerts-JGRRCQA4.js → alerts-VOYMO6NJ.js} +1 -1
  6. package/dist/chunks/build-H2U56DYB.js +7 -0
  7. package/dist/chunks/{chunk-UF2E5BDE.js → chunk-23PO6JK6.js} +1 -1
  8. package/dist/chunks/{chunk-PUKYAALC.js → chunk-24SIHFEW.js} +1 -1
  9. package/dist/chunks/{chunk-EBIJ26IV.js → chunk-2C6TLXE5.js} +1 -1
  10. package/dist/chunks/{chunk-QROI2U32.js → chunk-2CQJKBKV.js} +2 -4
  11. package/dist/chunks/{chunk-7MZLV3KK.js → chunk-2CZL3GJU.js} +1 -1
  12. package/dist/chunks/{chunk-XH2R2EIK.js → chunk-2EV53VB5.js} +1 -1
  13. package/dist/chunks/{chunk-5B5CLOKM.js → chunk-2FNOYPRB.js} +1 -1
  14. package/dist/chunks/{chunk-4E6BGQWR.js → chunk-2LOA3LC6.js} +1 -1
  15. package/dist/chunks/{chunk-M3Z6NSC2.js → chunk-2V6UURUN.js} +1 -1
  16. package/dist/chunks/{chunk-B6QVH6IG.js → chunk-32EEQITR.js} +1 -1
  17. package/dist/chunks/{chunk-4VP57TOJ.js → chunk-33OMDQTW.js} +1 -1
  18. package/dist/chunks/{chunk-CFYLTZSV.js → chunk-3AGRCSWN.js} +1 -1
  19. package/dist/chunks/{chunk-42J2KCDF.js → chunk-3EFPSM6M.js} +1 -1
  20. package/dist/chunks/{chunk-DQASZDQT.js → chunk-3SNWIYU7.js} +1 -1
  21. package/dist/chunks/{chunk-EVBGFSK5.js → chunk-42Y46TZ3.js} +1 -1
  22. package/dist/chunks/{chunk-KV3QXTRZ.js → chunk-4OO6TXBM.js} +1 -1
  23. package/dist/chunks/{chunk-UUDE44NV.js → chunk-54FY6GJ5.js} +1 -1
  24. package/dist/chunks/{chunk-RIJ45N7C.js → chunk-5HQEYPDO.js} +1 -1
  25. package/dist/chunks/chunk-5KL6UFII.js +7 -0
  26. package/dist/chunks/{chunk-ECFLIVEE.js → chunk-5L566FZB.js} +1 -1
  27. package/dist/chunks/{chunk-NZW3RIQM.js → chunk-5MFGTXWC.js} +1 -1
  28. package/dist/chunks/{chunk-4ELZOAQH.js → chunk-5TMHRECT.js} +1 -1
  29. package/dist/chunks/{chunk-74VQ7PQV.js → chunk-5YLKPSZI.js} +1 -1
  30. package/dist/chunks/chunk-66TKNVRG.js +60 -0
  31. package/dist/chunks/{chunk-RDWLLSPU.js → chunk-6737KAJP.js} +1 -1
  32. package/dist/chunks/{chunk-V5TOMLK4.js → chunk-6Q2XEYCJ.js} +1 -1
  33. package/dist/chunks/{chunk-7VGBGUX7.js → chunk-6S6UZV3V.js} +1 -1
  34. package/dist/chunks/{chunk-EZLPMOHM.js → chunk-6WTGR7UP.js} +1 -1
  35. package/dist/chunks/chunk-7BDQUBSO.js +7 -0
  36. package/dist/chunks/chunk-7M6EHM5B.js +7 -0
  37. package/dist/chunks/{chunk-42FOKWGX.js → chunk-7PGDJTAH.js} +1 -1
  38. package/dist/chunks/{chunk-BZIC36KP.js → chunk-7TVNKTN2.js} +1 -1
  39. package/dist/chunks/{chunk-IIGNDMLO.js → chunk-ABSFPYM4.js} +1 -1
  40. package/dist/chunks/{chunk-MBXLL2HF.js → chunk-AGLOVMPC.js} +3 -3
  41. package/dist/chunks/{chunk-B56SRT5W.js → chunk-AIZIVXNX.js} +1 -1
  42. package/dist/chunks/{chunk-WBSFE6IE.js → chunk-AQBK55BT.js} +1 -1
  43. package/dist/chunks/chunk-AW33SRYY.js +7 -0
  44. package/dist/chunks/{chunk-UNPK7LVC.js → chunk-B3IBBNIR.js} +1 -1
  45. package/dist/chunks/{chunk-VRH7LWOC.js → chunk-B4KA3ZH2.js} +1 -1
  46. package/dist/chunks/{chunk-2J35YKA2.js → chunk-BC74BRVP.js} +12 -12
  47. package/dist/chunks/{chunk-PFZCGMJ7.js → chunk-BH5OASEJ.js} +1 -1
  48. package/dist/chunks/chunk-BIGJEDOA.js +11 -0
  49. package/dist/chunks/chunk-BOJDM3O7.js +7 -0
  50. package/dist/chunks/{chunk-375JVQYK.js → chunk-CJZE7647.js} +1 -1
  51. package/dist/chunks/{chunk-YZKARZ2B.js → chunk-CKJZSRAC.js} +1 -1
  52. package/dist/chunks/{chunk-TUAS3L5I.js → chunk-D5JRYYTT.js} +1 -1
  53. package/dist/chunks/{chunk-SF4E3AQ3.js → chunk-E3WP42P2.js} +1 -1
  54. package/dist/chunks/{chunk-6UMVJ7RL.js → chunk-E7CEQ2PO.js} +1 -1
  55. package/dist/chunks/chunk-E7IFYSQT.js +12 -0
  56. package/dist/chunks/chunk-EDO66J3L.js +7 -0
  57. package/dist/chunks/{chunk-C5QEQSEX.js → chunk-EIFBF3JQ.js} +1 -1
  58. package/dist/chunks/chunk-EM3U6PRB.js +7 -0
  59. package/dist/chunks/{chunk-AMPJ6RWT.js → chunk-EZVNGJN5.js} +1 -1
  60. package/dist/chunks/{chunk-ZPBGAZC2.js → chunk-F6KURUPQ.js} +1 -1
  61. package/dist/chunks/{chunk-5DXC4TE2.js → chunk-F7L5SXJM.js} +1 -1
  62. package/dist/chunks/{chunk-ZTHW5VNH.js → chunk-FFS3QJCU.js} +2 -2
  63. package/dist/chunks/{chunk-FNH3T3CF.js → chunk-FGZXIHGN.js} +1 -1
  64. package/dist/chunks/chunk-FXOKM2RM.js +7 -0
  65. package/dist/chunks/{chunk-NUSKXXZZ.js → chunk-FZLCDLWD.js} +1 -1
  66. package/dist/chunks/{chunk-CD6ZWCKT.js → chunk-G63MSB6N.js} +1 -1
  67. package/dist/chunks/{chunk-HNH3DPIZ.js → chunk-GAILIG45.js} +1 -1
  68. package/dist/chunks/{chunk-FVVOHGQE.js → chunk-GHNHUSVK.js} +1 -1
  69. package/dist/chunks/{chunk-4DMKP6AO.js → chunk-GOI2VVI7.js} +2 -2
  70. package/dist/chunks/chunk-GORL5DZC.js +11 -0
  71. package/dist/chunks/{chunk-WMWB7QKG.js → chunk-GP3KGUCK.js} +1 -1
  72. package/dist/chunks/{chunk-GL66K54F.js → chunk-GPDERS2D.js} +1 -1
  73. package/dist/chunks/{chunk-CU3LNJZV.js → chunk-GUSOYIW6.js} +1 -1
  74. package/dist/chunks/{chunk-AO6AMYBF.js → chunk-GY44CQXK.js} +1 -1
  75. package/dist/chunks/chunk-H64GR57G.js +7 -0
  76. package/dist/chunks/{chunk-VKCBEW6R.js → chunk-HBWRIR42.js} +1 -1
  77. package/dist/chunks/{chunk-4U6ACPA4.js → chunk-HR66URIC.js} +1 -1
  78. package/dist/chunks/chunk-HRGJO4HK.js +7 -0
  79. package/dist/chunks/chunk-HU5NUOWH.js +7 -0
  80. package/dist/chunks/{chunk-4KM733OB.js → chunk-HVJN2SSK.js} +1 -1
  81. package/dist/chunks/chunk-HXLOBW75.js +10 -0
  82. package/dist/chunks/{chunk-4T57TXQ3.js → chunk-IBBLLUXD.js} +1 -1
  83. package/dist/chunks/{chunk-MO2G2ND2.js → chunk-IJBRT2AD.js} +1 -1
  84. package/dist/chunks/{chunk-NT2N5UR4.js → chunk-IRIFXCZW.js} +1 -1
  85. package/dist/chunks/{chunk-ECGY67NB.js → chunk-J7RNU6AO.js} +1 -1
  86. package/dist/chunks/{chunk-SDYCW5JM.js → chunk-JONZUKWX.js} +1 -1
  87. package/dist/chunks/{chunk-P24YBQ6H.js → chunk-JVGENO2R.js} +1 -1
  88. package/dist/chunks/{chunk-PKNEWN4W.js → chunk-K46QQRUN.js} +1 -1
  89. package/dist/chunks/{chunk-BJXLR2RE.js → chunk-KKYNEEM7.js} +1 -1
  90. package/dist/chunks/{chunk-3TDFSO4X.js → chunk-KPSINH7T.js} +1 -1
  91. package/dist/chunks/chunk-KR4DMT3I.js +7 -0
  92. package/dist/chunks/{chunk-RCUDI7OF.js → chunk-M32HBBPK.js} +1 -1
  93. package/dist/chunks/{chunk-ZQXXESKG.js → chunk-MAA5GRIM.js} +1 -1
  94. package/dist/chunks/chunk-MCYG7CCE.js +7 -0
  95. package/dist/chunks/{chunk-VAZ7JG2Z.js → chunk-MNZYFYYH.js} +1 -1
  96. package/dist/chunks/{chunk-HDISAMDF.js → chunk-MQJ4MINN.js} +1 -1
  97. package/dist/chunks/{chunk-ITQPDXXA.js → chunk-MTZYPCZ7.js} +1 -1
  98. package/dist/chunks/{chunk-NE6PKR2J.js → chunk-MWWMY5R6.js} +1 -1
  99. package/dist/chunks/{chunk-UBJVL3NJ.js → chunk-MWXL6HYB.js} +3 -3
  100. package/dist/chunks/{chunk-UFXIPUNI.js → chunk-MXALPSIX.js} +1 -1
  101. package/dist/chunks/{chunk-7JMN657A.js → chunk-NBTFAXL4.js} +1 -1
  102. package/dist/chunks/{chunk-HYOWFNOP.js → chunk-NIZW6D6D.js} +1 -1
  103. package/dist/chunks/{chunk-KBVYN635.js → chunk-NREH4VSU.js} +1 -1
  104. package/dist/chunks/{chunk-TPJV5UNE.js → chunk-NTYBDY24.js} +1 -1
  105. package/dist/chunks/{chunk-NDMQVBTV.js → chunk-NYJTWSSD.js} +1 -1
  106. package/dist/chunks/{chunk-7ZJ7VUIR.js → chunk-O3DAPRJ3.js} +1 -1
  107. package/dist/chunks/chunk-O7TFWXLZ.js +13 -0
  108. package/dist/chunks/{chunk-K7ARJYAG.js → chunk-OFOZ5DBA.js} +1 -1
  109. package/dist/chunks/{chunk-FYE7ILRR.js → chunk-OFZUWHZW.js} +1 -1
  110. package/dist/chunks/{chunk-RI6DJAFI.js → chunk-OHEM2CSW.js} +1 -1
  111. package/dist/chunks/{chunk-6ORJPXDQ.js → chunk-OHK3Y5NS.js} +1 -1
  112. package/dist/chunks/{chunk-IHTWZEQW.js → chunk-OKKG2FUS.js} +1 -1
  113. package/dist/chunks/{chunk-7NMC4E66.js → chunk-OR3ZEVBW.js} +1 -1
  114. package/dist/chunks/{chunk-QDHTI5WK.js → chunk-POR6KNXT.js} +1 -1
  115. package/dist/chunks/{chunk-JUSNW3IF.js → chunk-PSFHYOLD.js} +1 -1
  116. package/dist/chunks/{chunk-TZE4CS4K.js → chunk-QBHTNUM5.js} +1 -1
  117. package/dist/chunks/chunk-QJDWNTYH.js +7 -0
  118. package/dist/chunks/{chunk-YUHKH4TK.js → chunk-QKOLFLLP.js} +1 -1
  119. package/dist/chunks/chunk-REJLEESP.js +10 -0
  120. package/dist/chunks/{chunk-EIMHC5UY.js → chunk-ROKZIMRO.js} +1 -1
  121. package/dist/chunks/{chunk-DR6OJB6P.js → chunk-RPIBJRIT.js} +1 -1
  122. package/dist/chunks/chunk-SEHERY6U.js +7 -0
  123. package/dist/chunks/{chunk-RR5SDYNN.js → chunk-SHMHL6W7.js} +1 -1
  124. package/dist/chunks/{chunk-5FIY443M.js → chunk-SMETSNPH.js} +1 -1
  125. package/dist/chunks/{chunk-NMIZSQDN.js → chunk-SP6E7PHW.js} +1 -1
  126. package/dist/chunks/chunk-SQBDW5FO.js +10 -0
  127. package/dist/chunks/chunk-SWFG73OS.js +8 -0
  128. package/dist/chunks/{chunk-CHIYT3V4.js → chunk-TA7KTIDV.js} +1 -1
  129. package/dist/chunks/{chunk-W24TLPO5.js → chunk-TJBVFVXK.js} +1 -1
  130. package/dist/chunks/{chunk-JTAUWH5V.js → chunk-TJUZVODP.js} +1 -1
  131. package/dist/chunks/{chunk-VWJXV5ZM.js → chunk-TKVUWTBK.js} +1 -1
  132. package/dist/chunks/chunk-U7ZEFVSQ.js +8 -0
  133. package/dist/chunks/{chunk-WTFD4MDT.js → chunk-UZQJQXGJ.js} +1 -1
  134. package/dist/chunks/{chunk-UIMJNASP.js → chunk-V7G4VDZI.js} +1 -1
  135. package/dist/chunks/{chunk-WNDR5HCU.js → chunk-VCJIB3FB.js} +1 -1
  136. package/dist/chunks/{chunk-EGTJTCCW.js → chunk-VFBELAGX.js} +1 -1
  137. package/dist/chunks/{chunk-AYZ52QDF.js → chunk-VM6X5BTK.js} +1 -1
  138. package/dist/chunks/{chunk-HZEKH3RO.js → chunk-VVTMF2AY.js} +1 -1
  139. package/dist/chunks/{chunk-N65H4JMJ.js → chunk-W25UARQV.js} +1 -1
  140. package/dist/chunks/chunk-WLMW7K7F.js +7 -0
  141. package/dist/chunks/{chunk-IHCYNUI2.js → chunk-XJYDISH3.js} +1 -1
  142. package/dist/chunks/chunk-XSQZ35V6.js +7 -0
  143. package/dist/chunks/{chunk-YODQLETL.js → chunk-XVDUP67R.js} +1 -1
  144. package/dist/chunks/{chunk-SLCPSRDR.js → chunk-Y2FVJ7YO.js} +1 -1
  145. package/dist/chunks/chunk-Y2SQC4GV.js +10 -0
  146. package/dist/chunks/{chunk-FVTRIRML.js → chunk-Y5S2OEJH.js} +1 -1
  147. package/dist/chunks/{chunk-EJN55YDV.js → chunk-YANOBY2G.js} +1 -1
  148. package/dist/chunks/{chunk-2RXUQ72I.js → chunk-YIOMTAUF.js} +1 -1
  149. package/dist/chunks/{chunk-BW25OFQG.js → chunk-YLCIOXSX.js} +1 -1
  150. package/dist/chunks/{chunk-GZLYNPNU.js → chunk-YNCWSPPJ.js} +1 -1
  151. package/dist/chunks/chunk-YQQ3A3YC.js +13 -0
  152. package/dist/chunks/{chunk-UI2H2EIM.js → chunk-YTRKHRL3.js} +1 -1
  153. package/dist/chunks/{chunk-MIIHBRKV.js → chunk-Z2K2JR7F.js} +1 -1
  154. package/dist/chunks/{chunk-F7AVGV4Y.js → chunk-Z73UJVGD.js} +1 -1
  155. package/dist/chunks/{chunk-6Y2ZL5XJ.js → chunk-ZKNEIE44.js} +2 -2
  156. package/dist/chunks/chunk-ZXEWWSTH.js +10 -0
  157. package/dist/chunks/chunk-ZZLCRSES.js +11 -0
  158. package/dist/chunks/clear-7QUM5KH7.js +8 -0
  159. package/dist/chunks/{cli-embedded-Y74S252S.js → cli-embedded-ABHGJLYX.js} +1 -1
  160. package/dist/chunks/compile-vercel-config-RDISBTDC.js +7 -0
  161. package/dist/chunks/config-2YNYR6YI.js +7 -0
  162. package/dist/chunks/config-4AOTKKGI.js +8 -0
  163. package/dist/chunks/config-validator.mjs +1 -1
  164. package/dist/chunks/{connect-git-provider-GFAJLQLU.js → connect-git-provider-BMUUC7ND.js} +1 -1
  165. package/dist/chunks/contract-3VSUIBEY.js +10 -0
  166. package/dist/chunks/delete-EJNR4UYC.js +10 -0
  167. package/dist/chunks/delete-OYOBFPEG.js +9 -0
  168. package/dist/chunks/describe-ORIEHT3R.js +25 -0
  169. package/dist/chunks/detect-projects-AKK2XI76.js +7 -0
  170. package/dist/chunks/detect-services-3LYPKUVL.js +7 -0
  171. package/dist/chunks/disable-U6JU546S.js +7 -0
  172. package/dist/chunks/discard-6SHAFQ2H.js +14 -0
  173. package/dist/chunks/edit-YMWKFN3H.js +8 -0
  174. package/dist/chunks/edit-YTTKJFTG.js +9 -0
  175. package/dist/chunks/enable-A6KBPFXJ.js +7 -0
  176. package/dist/chunks/{esm-4ZHGYTUV.js → esm-CF5UHWPM.js} +1 -1
  177. package/dist/chunks/{esm-LNIAU767.js → esm-EYOXGOVF.js} +1 -1
  178. package/dist/chunks/{esm-IBY43SSX.js → esm-FSME24KA.js} +1 -1
  179. package/dist/chunks/{esm-7FVTQHRH.js → esm-IUATPKKB.js} +1 -1
  180. package/dist/chunks/{esm-GTSUYLKG.js → esm-L6OKDFWP.js} +1 -1
  181. package/dist/chunks/{esm-TEM4KPXZ.js → esm-ORQC2ZSA.js} +1 -1
  182. package/dist/chunks/{esm-TLAM7FSK.js → esm-PYIZNQIK.js} +1 -1
  183. package/dist/chunks/{exec-H3X7U4P3.js → exec-RQ257MTR.js} +1 -1
  184. package/dist/chunks/{export-25TQ3YBT.js → export-MMU6VVFK.js} +1 -1
  185. package/dist/chunks/future-ANILGGFQ.js +7 -0
  186. package/dist/chunks/generate-cert-for-deploy-LKKZUKWF.js +7 -0
  187. package/dist/chunks/image-OWWKVBTU.js +7 -0
  188. package/dist/chunks/import-builders-VENL23EH.js +7 -0
  189. package/dist/chunks/{inspect-3W3TUJ6P.js → inspect-BPIJT4OX.js} +1 -1
  190. package/dist/chunks/inspect-GDZJZGHW.js +13 -0
  191. package/dist/chunks/{inspect-TN2QY3BP.js → inspect-H7JGEVL7.js} +1 -1
  192. package/dist/chunks/inspect-I6LQLOBG.js +8 -0
  193. package/dist/chunks/{inspect-BRYVSQBD.js → inspect-IGFAKTAX.js} +1 -1
  194. package/dist/chunks/inspect-U6V4UQXC.js +9 -0
  195. package/dist/chunks/list-763XVNFH.js +8 -0
  196. package/dist/chunks/{list-WA6Q7DUN.js → list-OX2N4JK7.js} +1 -1
  197. package/dist/chunks/list-WHZXMZJ5.js +12 -0
  198. package/dist/chunks/{list-6W4UQBY4.js → list-XLPMNNI7.js} +1 -1
  199. package/dist/chunks/login-2PGWWOKB.js +7 -0
  200. package/dist/chunks/login-T63WJL4S.js +9 -0
  201. package/dist/chunks/logs-S2KJGEIG.js +7 -0
  202. package/dist/chunks/ls-5HXYPIFR.js +11 -0
  203. package/dist/chunks/ls-M4GJOBZP.js +8 -0
  204. package/dist/chunks/ls-N56BWH2L.js +8 -0
  205. package/dist/chunks/{ls-L5LLKZBV.js → ls-O5B3LY4D.js} +1 -1
  206. package/dist/chunks/{ls-MAJ4QZTY.js → ls-PNGTHVUK.js} +1 -1
  207. package/dist/chunks/{ls-UXE5RSZN.js → ls-Q7FAOSVD.js} +1 -1
  208. package/dist/chunks/{ls-4WP6LHLL.js → ls-R4UDBWS3.js} +1 -1
  209. package/dist/chunks/migrate-experimental-services-HWJXO4AJ.js +7 -0
  210. package/dist/chunks/mutate-FM6BLE46.js +9 -0
  211. package/dist/chunks/{native-self-update-DEVBYOH2.js → native-self-update-7LL6RPJW.js} +1 -1
  212. package/dist/chunks/notifications-ZSZN35BQ.js +7 -0
  213. package/dist/chunks/open-4RXUUYQP.js +7 -0
  214. package/dist/chunks/openapi-457MABMI.js +7 -0
  215. package/dist/chunks/permissions-UJRTMOT7.js +7 -0
  216. package/dist/chunks/{plugin-offer-JUYWL4I7.js → plugin-offer-KJCRPUU5.js} +1 -1
  217. package/dist/chunks/prompt-missing-credentials-B5DGQFI7.js +7 -0
  218. package/dist/chunks/publish-I3APOD3N.js +15 -0
  219. package/dist/chunks/pull-2YUNTVPQ.js +7 -0
  220. package/dist/chunks/purchase-domain-if-available-3YOXUXII.js +7 -0
  221. package/dist/chunks/push-4QQJQRGZ.js +7 -0
  222. package/dist/chunks/query-2JO6HH5N.js +12 -0
  223. package/dist/chunks/reauthenticate-COYQMMAG.js +7 -0
  224. package/dist/chunks/remove-PWS5EJ7F.js +9 -0
  225. package/dist/chunks/reorder-COZQX64R.js +10 -0
  226. package/dist/chunks/reply-XDYZNHW2.js +9 -0
  227. package/dist/chunks/resolve-6KUFCZRX.js +12 -0
  228. package/dist/chunks/resolve-agent-team-NOT235ZN.js +7 -0
  229. package/dist/chunks/{resolve-deployment-framework-preset-AXXYBFCL.js → resolve-deployment-framework-preset-4TKUU6AH.js} +1 -1
  230. package/dist/chunks/restore-GSSD4ZWH.js +16 -0
  231. package/dist/chunks/rm-AUNVZPJ5.js +8 -0
  232. package/dist/chunks/rm-EIMUYBJT.js +8 -0
  233. package/dist/chunks/rm-EJH37HYN.js +8 -0
  234. package/dist/chunks/rm-O5NMCBC3.js +8 -0
  235. package/dist/chunks/rm-PHTOXG4E.js +8 -0
  236. package/dist/chunks/{routes-BP54NO3Z.js → routes-NEZJKMR5.js} +1 -1
  237. package/dist/chunks/rule-inspect-7HNYKQ6X.js +8 -0
  238. package/dist/chunks/{schema-753JMRZA.js → schema-5P7HROXE.js} +1 -1
  239. package/dist/chunks/schema-MZM5MN5V.js +14 -0
  240. package/dist/chunks/select-org-3BZWQD6R.js +7 -0
  241. package/dist/chunks/set-2RH74ZC3.js +7 -0
  242. package/dist/chunks/set-Q2EJ3V44.js +9 -0
  243. package/dist/chunks/setup-and-link-BT5TNY4J.js +7 -0
  244. package/dist/chunks/{skills-QZ4AMS2K.js → skills-DUOUHPBY.js} +1 -1
  245. package/dist/chunks/{statuspage-KHTMA4WL.js → statuspage-K5SC7KAQ.js} +1 -1
  246. package/dist/chunks/{detect-projects-K7SVMH5T.js → table-W6LOHWWF.js} +1 -1
  247. package/dist/chunks/tags-QOJEEMKS.js +7 -0
  248. package/dist/chunks/{types-NPUAHKSK.js → types-7L6HBXAU.js} +1 -1
  249. package/dist/chunks/{update-7XH7HM5F.js → update-HS6QFTQK.js} +1 -1
  250. package/dist/chunks/usage-3N6IA5SX.js +13 -0
  251. package/dist/chunks/validate-config-YLL6RPCP.js +7 -0
  252. package/dist/commands/build/index.js +1 -1
  253. package/dist/commands/deploy/index.js +19 -37
  254. package/dist/commands/dev/index.js +4 -4
  255. package/dist/commands/env/index.js +1 -1
  256. package/dist/commands/link/index.js +1 -1
  257. package/dist/commands/list/index.js +1 -1
  258. package/dist/commands/project/index.js +1 -1
  259. package/dist/commands-account.js +3 -3
  260. package/dist/commands-ai.js +6 -6
  261. package/dist/commands-blob.js +1 -1
  262. package/dist/commands-core.js +20 -20
  263. package/dist/commands-deployments.js +5 -5
  264. package/dist/commands-flags.js +1 -1
  265. package/dist/commands-integrations.js +1 -1
  266. package/dist/commands-observability.js +15 -8
  267. package/dist/commands-routing.js +5 -4
  268. package/dist/help.js +1 -1
  269. package/dist/index.js +5 -5
  270. package/dist/internal-build.js +1 -1
  271. package/dist/package.json +45 -245
  272. package/dist/vc.js +47 -695
  273. package/dist/version.mjs +1 -1
  274. package/package.json +51 -196
  275. package/dist/chunks/add-4R6FUHQT.js +0 -8
  276. package/dist/chunks/add-F3H4BFJZ.js +0 -8
  277. package/dist/chunks/add-TCOJ4SIQ.js +0 -8
  278. package/dist/chunks/build-GOLTZF6S.js +0 -7
  279. package/dist/chunks/chunk-3KJ6HWSX.js +0 -7
  280. package/dist/chunks/chunk-5X635INY.js +0 -11
  281. package/dist/chunks/chunk-7LPNDK2O.js +0 -7
  282. package/dist/chunks/chunk-A3M2BHWR.js +0 -13
  283. package/dist/chunks/chunk-BUFEV3T4.js +0 -11
  284. package/dist/chunks/chunk-BVR6OIU5.js +0 -7
  285. package/dist/chunks/chunk-D7BB5BPA.js +0 -10
  286. package/dist/chunks/chunk-DBT6PGEH.js +0 -7
  287. package/dist/chunks/chunk-DRZVM7CB.js +0 -12
  288. package/dist/chunks/chunk-EICEQXVS.js +0 -7
  289. package/dist/chunks/chunk-F2R7L3ZB.js +0 -7
  290. package/dist/chunks/chunk-FHMCTV5E.js +0 -7
  291. package/dist/chunks/chunk-FOE3MWES.js +0 -7
  292. package/dist/chunks/chunk-HKU6D7DU.js +0 -8
  293. package/dist/chunks/chunk-IOTKHTZH.js +0 -7
  294. package/dist/chunks/chunk-K4JTCVNW.js +0 -13
  295. package/dist/chunks/chunk-LALPOYIA.js +0 -8
  296. package/dist/chunks/chunk-M3R7F2N4.js +0 -7
  297. package/dist/chunks/chunk-MUKXOI2K.js +0 -8
  298. package/dist/chunks/chunk-NIS66BFX.js +0 -63
  299. package/dist/chunks/chunk-NSPW47RU.js +0 -7
  300. package/dist/chunks/chunk-NTDP6RTQ.js +0 -11
  301. package/dist/chunks/chunk-Q2QVK3TH.js +0 -7
  302. package/dist/chunks/chunk-RM3ZDRYE.js +0 -7
  303. package/dist/chunks/chunk-UCRMJMH6.js +0 -10
  304. package/dist/chunks/chunk-XQDHMFQY.js +0 -7
  305. package/dist/chunks/chunk-XRIM4BUF.js +0 -7
  306. package/dist/chunks/chunk-Z64MQIOE.js +0 -10
  307. package/dist/chunks/chunk-ZS2WS4AM.js +0 -7
  308. package/dist/chunks/clear-PECHXMV5.js +0 -8
  309. package/dist/chunks/compile-vercel-config-EM3HYOQC.js +0 -7
  310. package/dist/chunks/config-DA2NZUDH.js +0 -8
  311. package/dist/chunks/config-X6O3DT7V.js +0 -7
  312. package/dist/chunks/contract-RHMWRX4W.js +0 -10
  313. package/dist/chunks/delete-5RN5VW5L.js +0 -9
  314. package/dist/chunks/delete-MT6I7R7K.js +0 -10
  315. package/dist/chunks/detect-services-HSA4JHJX.js +0 -7
  316. package/dist/chunks/disable-LXPZDQMC.js +0 -7
  317. package/dist/chunks/discard-PW65T65S.js +0 -14
  318. package/dist/chunks/edit-WFSONASO.js +0 -8
  319. package/dist/chunks/edit-YID3FOJ3.js +0 -9
  320. package/dist/chunks/enable-X2EKQCIY.js +0 -7
  321. package/dist/chunks/future-DQBK457G.js +0 -7
  322. package/dist/chunks/generate-cert-for-deploy-OMEACY5G.js +0 -7
  323. package/dist/chunks/image-AO2OZG4W.js +0 -7
  324. package/dist/chunks/import-builders-GSDV4K4A.js +0 -7
  325. package/dist/chunks/inspect-4244CRHI.js +0 -13
  326. package/dist/chunks/inspect-C43IV7X4.js +0 -9
  327. package/dist/chunks/inspect-RP5KXOYQ.js +0 -8
  328. package/dist/chunks/list-2SY6PZLC.js +0 -12
  329. package/dist/chunks/list-WBKZGIMQ.js +0 -8
  330. package/dist/chunks/login-K6XBWOFD.js +0 -9
  331. package/dist/chunks/login-OGMXEW5N.js +0 -7
  332. package/dist/chunks/logs-R3ZERQ7M.js +0 -7
  333. package/dist/chunks/ls-EVAQD3LI.js +0 -8
  334. package/dist/chunks/ls-O5DKK3TY.js +0 -8
  335. package/dist/chunks/ls-PTHGXQLK.js +0 -11
  336. package/dist/chunks/mutate-EKZWPQQJ.js +0 -9
  337. package/dist/chunks/notifications-F5S3RKZF.js +0 -7
  338. package/dist/chunks/open-KGVG54NN.js +0 -7
  339. package/dist/chunks/openapi-7TPDTMCU.js +0 -7
  340. package/dist/chunks/permissions-5K7JZOMB.js +0 -7
  341. package/dist/chunks/prompt-missing-credentials-DX2KJB5X.js +0 -7
  342. package/dist/chunks/publish-KIRTO2ZO.js +0 -15
  343. package/dist/chunks/pull-3CRJK7BX.js +0 -7
  344. package/dist/chunks/purchase-domain-if-available-55IXEF43.js +0 -7
  345. package/dist/chunks/push-4YG5HKSD.js +0 -7
  346. package/dist/chunks/query-67KQVLTR.js +0 -12
  347. package/dist/chunks/reauthenticate-SWSBFGDU.js +0 -7
  348. package/dist/chunks/remove-SYTIFVWW.js +0 -9
  349. package/dist/chunks/reorder-TX5MXJEB.js +0 -10
  350. package/dist/chunks/reply-XVK33N5T.js +0 -9
  351. package/dist/chunks/resolve-JZ262ZF4.js +0 -12
  352. package/dist/chunks/resolve-agent-team-BG5YW55B.js +0 -7
  353. package/dist/chunks/restore-IPFL7TKT.js +0 -16
  354. package/dist/chunks/rm-2BCAZGQU.js +0 -8
  355. package/dist/chunks/rm-3CCU3CE6.js +0 -8
  356. package/dist/chunks/rm-5CQV5LYG.js +0 -8
  357. package/dist/chunks/rm-OV4OU6H2.js +0 -8
  358. package/dist/chunks/rm-WFGMOZ3G.js +0 -8
  359. package/dist/chunks/rule-inspect-RFJIIXZH.js +0 -8
  360. package/dist/chunks/schema-SUNFQGUL.js +0 -14
  361. package/dist/chunks/select-org-MPHPWWPU.js +0 -7
  362. package/dist/chunks/set-BR6EEOPB.js +0 -7
  363. package/dist/chunks/set-I3NWZRSI.js +0 -9
  364. package/dist/chunks/setup-and-link-MRTKVOWD.js +0 -7
  365. package/dist/chunks/tags-7DIZEAVE.js +0 -7
  366. package/dist/chunks/usage-3BS7JCCU.js +0 -13
  367. package/dist/chunks/validate-config-LAD7BU3B.js +0 -7
  368. package/dist/launcher-errors.js +0 -11
  369. package/dist/native-download.js +0 -8
@@ -1,13 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{formatTriggerOperator,getGroupStartedAt,getGroupTitle,getGroupType,humanizeReference,normalizeTimestamp,renderAlertTable}from"./chunk-FVVOHGQE.js";import{resolveRulesTeam}from"./chunk-XQDHMFQY.js";import{resolveAlertsScope,scopeFromLinkedProject}from"./chunk-EICEQXVS.js";import{formatGranularity}from"./chunk-IVSSTHB6.js";import"./chunk-GZNDA6SV.js";import{outputError}from"./chunk-42FOKWGX.js";import"./chunk-GHAY4PSD.js";import{formatDate}from"./chunk-HRR57QNP.js";import"./chunk-PFD7LETF.js";import{truncateEnd,truncateMiddle}from"./chunk-TOTTVS5P.js";import"./chunk-D3M2JG5C.js";import"./chunk-375JVQYK.js";import{inspectSubcommand}from"./chunk-4E6BGQWR.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import{buildCommandWithGlobalFlags,outputAgentError}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import{getLinkedProject}from"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import{packageName}from"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import{AGENT_REASON}from"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);var aggregationLabels={sum:"Sum",avg:"Average",min:"Min",max:"Max",p50:"P50",p75:"P75",p90:"P90",p95:"P95",p99:"P99",stddev:"Std Dev",unique:"Unique",persecond:"Per Second",percent:"Percent"},formatCustomAlertRatioBelowFivePercent=new Intl.NumberFormat("en-US",{maximumFractionDigits:2,minimumFractionDigits:2,style:"percent"}),formatCustomAlertRatioThresholdValue=new Intl.NumberFormat("en-US",{maximumFractionDigits:4,minimumFractionDigits:0,style:"percent"});function getGroupStatus(group){if(group.status)return group.status;let alerts=group.alerts??[];return alerts.some(alert=>alert.status==="active")?"active":alerts.length>0?"resolved":"-"}function humanizeLabel(value){return humanizeReference(value,{case:"title"})}function formatAlertFieldValue(value,maxLength=64){if(value==null)return;let displayValue=typeof value=="number"?formatNumber(value):String(value);if(displayValue)return truncateMiddle(displayValue,maxLength)}function formatNumber(value){let absValue=Math.abs(value),sign=value<0?"-":"";for(let[threshold,suffix]of[[1e9,"B"],[1e6,"M"],[1e3,"k"]])if(absValue>=threshold)return`${sign}${(absValue/threshold).toFixed(1).replace(/\.0$/,"")}${suffix}`;return Number.isInteger(value)?String(value):value.toFixed(2).replace(/\.?0+$/,"")}function parseFormattedNumber(value){let trimmed=value.trim();if(!trimmed)return;let number=Number(trimmed.replace(/,/g,""));return Number.isFinite(number)?number:void 0}function formatRatio(value){if(value.trim().endsWith("%"))return value;let number=parseFormattedNumber(value);if(number===void 0)return value;let percent=number*100;return percent>=5?`${Math.floor(percent)}%`:formatCustomAlertRatioBelowFivePercent.format(number)}function formatRatioThreshold(value){if(value.trim().endsWith("%"))return value;let number=parseFormattedNumber(value);return number===void 0?value:formatCustomAlertRatioThresholdValue.format(number)}function getAlertSonarQuery(alert){return alert.sonarQuery??alert.data?.sonarQuery}function getCustomAlertBaselineTitle(alert){let granularity=getAlertSonarQuery(alert)?.granularity;return(granularity&&("hours"in granularity||"days"in granularity)?"7-day baseline":"24-hour baseline").replace(/\b[a-z]/g,character=>character.toUpperCase())}function appendUnit(value,unit){return!unit||unit==="score"?value:unit==="ratio"?formatRatio(value):unit==="%"?value.endsWith("%")?value:`${value}%`:value.toLowerCase().includes(unit.toLowerCase())?value:`${value} ${unit}`}function formatThreshold(alert){let data=alert.data,formatted=alert.formattedValues?.formattedThreshold??(data?.triggerThreshold===void 0?void 0:formatNumber(data.triggerThreshold));if(!formatted)return;let operator=formatTriggerOperator(data?.triggerOperator),threshold=data?.triggerType==="anomaly"?`${formatted} z-score`:alert.unit==="ratio"?formatRatioThreshold(formatted):appendUnit(formatted,alert.unit);return[operator,threshold].filter(Boolean).join(" ")}function getRuleIds(alert){let ids=new Set,dataRuleId=alert.data?.ruleId;dataRuleId&&ids.add(dataRuleId);for(let ruleId of alert.rules??[])ruleId&&ids.add(ruleId);return[...ids]}function getAlertResolvedAt(alert){return normalizeTimestamp(alert.recordedResolvedAt??alert.resolvedAt)}function getSignalRows(alert){let rows=[],formattedValues=alert.formattedValues??{},observed=formattedValues.formattedCount,baseline=formattedValues.formattedAvg,change=[formattedValues.changeDirection,formattedValues.changeAmount].filter(Boolean).join(" "),zscore=alert.data?.zscore,threshold=formatThreshold(alert),minThreshold=alert.data?.minThreshold,isRatioFormulaAlert=!!getCustomAlertFormula(alert);return alert.eventLabel&&rows.push(["Event",alert.eventLabel]),alert.measureLabel&&rows.push(["Measure",alert.measureLabel]),observed&&rows.push(["Observed Value",appendUnit(observed,alert.unit)]),baseline&&rows.push([alert.type==="custom_alert"&&alert.data?.triggerType==="anomaly"?getCustomAlertBaselineTitle(alert):"Baseline",appendUnit(baseline,alert.unit)]),change&&rows.push(["Change",change]),zscore!==void 0&&rows.push(["Observed Deviation",`${formatNumber(zscore)} z-score`]),threshold&&rows.push(["Threshold",threshold]),minThreshold!==void 0&&!isRatioFormulaAlert&&rows.push(["Minimum",alert.unit==="ratio"?formatNumber(minThreshold):appendUnit(formatNumber(minThreshold),alert.unit)]),formattedValues.errorRate&&rows.push(["Error Rate",formattedValues.errorRate]),formattedValues.avgErrorRate&&rows.push(["Baseline Error Rate",formattedValues.avgErrorRate]),rows.push(...getFieldRows(alert)),rows}function getFieldRows(alert){let fields=alert.data?.fields;if(!fields)return[];let groupBy=getAlertSonarQuery(alert)?.groupBy??[];return[...groupBy,...Object.keys(fields).filter(key=>!groupBy.includes(key))].flatMap(key=>{let value=fields[key],displayValue=formatAlertFieldValue(value);return displayValue?[[humanizeLabel(key),displayValue]]:[]})}function formatAggregation(value){return value?aggregationLabels[value]??humanizeLabel(value):void 0}function formatQueryReference(value){return value?humanizeLabel(value):void 0}function formatRollupDetail(rollup,fallbackMeasure){if(!rollup)return;let aggregation=formatAggregation(rollup.aggregation),measure=fallbackMeasure??formatQueryReference(rollup.measure);return[aggregation,measure].filter(Boolean).join(" ")||void 0}function getPrimaryRollup(rollups){return Object.values(rollups??{})[0]}function getCustomAlertFormula(alert){let formula=alert.data?.formula;if(formula?.operator==="divide"&&formula.left&&formula.right)return{operator:formula.operator,left:formula.left,right:formula.right}}function getQueryRows(alert){if(alert.type!=="custom_alert")return[];let query=getAlertSonarQuery(alert);if(!query)return[];let formula=getCustomAlertFormula(alert),rows=[],addRow=(label,value)=>{value&&rows.push([label,truncateMiddle(value,120)])};if(addRow("Event",alert.eventLabel??formatQueryReference(query.event)),formula)addRow("Numerator",formatRollupDetail(query.rollups?.[formula.left])),addRow("Denominator",formatRollupDetail(query.rollups?.[formula.right]));else{let primaryRollup=getPrimaryRollup(query.rollups);addRow("Measure",alert.measureLabel??formatQueryReference(primaryRollup?.measure)),addRow("Aggregation",formatAggregation(primaryRollup?.aggregation))}addRow("Granularity",formatGranularity(query.granularity));let groupBy=query.groupBy?.filter(Boolean)??[];if(groupBy.length>0&&addRow("Group by",groupBy.map(humanizeLabel).join(", ")),formula&&typeof alert.data?.minThreshold=="number"&&addRow("Minimum Numerator",formatNumber(alert.data.minThreshold)),addRow("Filter by",query.filter?.trim()),formula)for(let[label,rollupName]of[["Numerator filter",formula.left],["Denominator filter",formula.right]])addRow(label,query.rollups?.[rollupName]?.filter?.trim());return rows}function getDetailRows(alert){let data=alert.data;if(!data)return[];let rows=[],addRow=(label,value)=>{let displayValue=formatAlertFieldValue(value);displayValue&&rows.push([label,displayValue])};return addRow("Route",data.route),addRow("Status Group",data.statusGroup),addRow("Deployment ID",data.deploymentId),rows}function renderAlertSections(alert){let lines=[],signalRows=getSignalRows(alert);signalRows.length>0&&(lines.push(import_chalk.default.cyan("Signals")),lines.push(renderAlertTable(signalRows,3)));let queryRows=getQueryRows(alert);return queryRows.length>0&&(lines.push(import_chalk.default.cyan("Query")),lines.push(renderAlertTable(queryRows,3))),lines.join(`
8
- `)}function renderAlert(alert,index,totalAlerts){let title=alert.title||`Alert ${index+1}`,ruleIds=getRuleIds(alert),resolvedAt=getAlertResolvedAt(alert),sections=renderAlertSections(alert),summaryRows=[["Alert id",alert.id||"-"],["Type",alert.type||"-"],["Status",alert.status||"-"],["Started At",formatDate(normalizeTimestamp(alert.recordedStartedAt??alert.startedAt))],...resolvedAt!==void 0?[["Resolved At",formatDate(resolvedAt)]]:[],...ruleIds.length>0?[["Rule id",ruleIds.map(id=>truncateMiddle(id,48)).join(", ")]]:[],...getDetailRows(alert)];return[import_chalk.default.bold(totalAlerts>1?`Alert ${index+1}: ${title}`:title),renderAlertTable(summaryRows,3),...sections?[sections]:[]].join(`
9
- `)}function printAlertGroup(group,groupId){let alerts=group.alerts??[],singleAlert=alerts.length===1?alerts[0]:void 0,singleAlertRuleIds=singleAlert?getRuleIds(singleAlert):[],singleAlertResolvedAt=singleAlert?getAlertResolvedAt(singleAlert):void 0,summaryRows=[["Title",truncateEnd(getGroupTitle(group),80)],["Group id",group.id||groupId],["Type",getGroupType(group)],["Status",getGroupStatus(group)],["Started At",formatDate(getGroupStartedAt(group))],...singleAlertResolvedAt!==void 0?[["Resolved At",formatDate(singleAlertResolvedAt)]]:[],["Alerts",String(alerts.length)],...singleAlert?.id?[["Alert id",singleAlert.id]]:[],...singleAlertRuleIds.length>0?[["Rule id",singleAlertRuleIds.map(id=>truncateMiddle(id,48)).join(", ")]]:[],...singleAlert?getDetailRows(singleAlert):[]],renderedAlerts=alerts.length>0?alerts.length===1?renderAlertSections(alerts[0]):alerts.map((alert,index)=>renderAlert(alert,index,alerts.length)).join(`
10
-
11
- `):"No alerts in this group.";output_manager_default.print(["",`${import_chalk.default.bold("Alert group")} ${import_chalk.default.cyan(group.id||groupId)}`,renderAlertTable(summaryRows,3),"",renderedAlerts,""].join(`
12
- `))}async function inspect(client,argv){let parsedArgs,spec=getFlagsSpecification(inspectSubcommand.options);try{parsedArgs=parseArguments(argv,spec)}catch(e){let msg=e instanceof Error?e.message:String(e),projectFlagMissingArg=msg.includes("--project")&&msg.includes("requires argument");return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:projectFlagMissingArg?"`--project` requires a project name or id (for example `--project my-app`).":msg,next:projectFlagMissingArg?[{command:buildCommandWithGlobalFlags(client.argv,"alerts inspect <groupId> --project <name-or-id>"),when:"Re-run with placeholders replaced"}]:[{command:buildCommandWithGlobalFlags(client.argv,"alerts inspect --help"),when:"See valid `alerts inspect` usage"}]},2),printError(e),2}let groupId=parsedArgs.args[0],fr=validateJsonOutput(parsedArgs.flags);if(!fr.valid)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:fr.error},2),output_manager_default.error(fr.error),2;if(!groupId)return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message:`Missing group id. Example: ${packageName} alerts inspect <groupId>`,next:[{command:buildCommandWithGlobalFlags(client.argv,"alerts inspect <groupId>"),when:"Replace <groupId> with a group id from `vercel alerts`"}]},2),outputError(client,fr.jsonOutput,"MISSING_ARGUMENTS","Usage: `vercel alerts inspect <groupId>`");let scope=await resolveInspectScope(client,{project:parsedArgs.flags["--project"],all:parsedArgs.flags["--all"],jsonOutput:fr.jsonOutput,command:`alerts inspect ${groupId}`});if(typeof scope=="number")return scope;let query=new URLSearchParams({teamId:scope.teamId});scope.projectId&&query.set("projectId",scope.projectId);let path=`/alerts/v3/groups/${encodeURIComponent(groupId)}?${query.toString()}`;output_manager_default.spinner("Fetching alert group...");try{let group=await client.fetch(path);return fr.jsonOutput?client.stdout.write(`${JSON.stringify({group},null,2)}
13
- `):printAlertGroup(group,groupId),0}catch(err){if(isAPIError(err)){let msg=err.serverMessage||`API error (${err.status}).`,reason=err.status===401?"not_authorized":err.status===403?"forbidden":err.status===404?AGENT_REASON.NOT_FOUND:err.status===429?"rate_limited":AGENT_REASON.API_ERROR;return outputAgentError(client,{status:"error",reason,message:msg,...err.status===401||err.status===403||err.status===404?{hint:scope.projectId?"The request was scoped to a project. Use --all, and --scope <team-slug> if the group belongs to another team.":"Confirm team scope; use --scope <team-slug> if the group belongs to another team.",next:[{command:buildCommandWithGlobalFlags(client.argv,"whoami"),when:"See current user and team"},{command:buildCommandWithGlobalFlags(client.argv,scope.projectId?`alerts inspect ${groupId} --all`:`alerts inspect ${groupId}`),when:"Retry after fixing scope or permissions"}]}:{}},1),outputError(client,fr.jsonOutput,err.code||"API_ERROR",msg)}throw err}finally{output_manager_default.stopSpinner()}}async function resolveInspectScope(client,opts){if(opts.project||opts.all)return resolveAlertsScope(client,opts);let linkedProject=await getLinkedProject(client);return linkedProject.status==="error"?linkedProject.exitCode:linkedProject.status==="linked"?scopeFromLinkedProject(linkedProject):resolveRulesTeam(client,opts.jsonOutput)}export{inspect as default};
@@ -1,9 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{actorLabel,displayPath,renderThreadDetail,threadAge,truncate}from"./chunk-CHIYT3V4.js";import{parseThreadArg}from"./chunk-2S6PE6GB.js";import{getThread,handleCommentsParseError,inferBranch,listMessages,listThreads,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts}from"./chunk-UF2E5BDE.js";import"./chunk-UNPK7LVC.js";import{outputError}from"./chunk-42FOKWGX.js";import"./chunk-AKOYIH3A.js";import"./chunk-TOTTVS5P.js";import"./chunk-D3M2JG5C.js";import{canPrompt}from"./chunk-IQ7FPAI4.js";import"./chunk-JUSNW3IF.js";import{inspectSubcommand}from"./chunk-6UMVJ7RL.js";import"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";async function pickThread(client,jsonOutput){if(!canPrompt(client)||jsonOutput)return outputError(client,jsonOutput,"MISSING_THREAD","Pass a thread ID or URL: `vercel comments inspect <thread>`.");let scope=await resolveCommentsScope(client,{requireProject:!0,jsonOutput});if(typeof scope=="number")return scope;let focus=scope.linked?inferBranch(client.cwd):void 0;output_manager_default.spinner("Fetching comments\u2026");let response;try{response=await listThreads(client,scope.teamId,{projectId:scope.projectId,status:"unresolved",branch:focus?[focus.value]:void 0,limit:20})}finally{output_manager_default.stopSpinner()}return response.threads.length===0?outputError(client,jsonOutput,"NO_COMMENTS",`No unresolved comments${focus?` on ${focus.value}`:""} to pick from.`):client.input.select({message:"Select a comment",choices:response.threads.map(thread=>({name:`${threadAge(thread)} ${actorLabel(thread.messages[0]?.author)} ${displayPath(thread)} \u201C${truncate(thread.messages[0]?.text??"",48)}\u201D`,value:thread.id}))})}async function fetchAllMessages(client,teamId,thread){if(thread.messageCount<=thread.messages.length)return thread.messages;let all=[],cursor;do{let page=await listMessages(client,teamId,thread.id,{limit:100,cursor});all.push(...page.messages),cursor=page.pagination?.nextCursor}while(cursor&&all.length<thread.messageCount);return all}async function inspect(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(inspectSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"inspect")}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput,showContext=!!parsedArgs.flags["--context"];telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliFlagContext(parsedArgs.flags["--context"]),telemetry.trackCliOptionProject(parsedArgs.flags["--project"]);let threadInput=parsedArgs.args[2];telemetry.trackCliArgumentThread(threadInput);let threadId,urlTeamSlug;if(threadInput){let parsed=parseThreadArg(threadInput);if(!parsed)return outputError(client,jsonOutput,"INVALID_THREAD",`Could not extract a thread ID from "${threadInput}". Pass the thread ID or its vercel.com URL.`);threadId=parsed.id,urlTeamSlug=parsed.teamSlug}else{let picked=await pickThread(client,jsonOutput);if(typeof picked=="number")return picked;threadId=picked}let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput,urlTeamSlug});if(typeof scope=="number")return scope;jsonOutput||output_manager_default.spinner("Fetching comment\u2026");let thread,messages;try{thread=await getThread(client,scope.teamId,threadId),messages=await fetchAllMessages(client,scope.teamId,thread)}catch(err){if(isAPIError(err)){let{code,message}=toApiErrorParts(err);return outputError(client,jsonOutput,code,err.status===404?threadNotFoundMessage(threadId,scope):message)}throw err}finally{output_manager_default.stopSpinner()}return jsonOutput?(client.stdout.write(`${JSON.stringify({...thread,messages},null,2)}
8
- `),0):(output_manager_default.print(`${renderThreadDetail(thread,messages,{showContext})}
9
- `),0)}export{inspect as default};
@@ -1,8 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{scopedBudgetCommand}from"./chunk-5FIY443M.js";import{printBudgetAlertsTable,printBudgetsTable,warnUnavailableWebhooks}from"./chunk-ZPBGAZC2.js";import{rejectUnexpectedArgs,resolveBudgetTeam}from"./chunk-CFYLTZSV.js";import{NO_RETRY,TEAM_BUDGET,budgetStatePayload,findBudget,formatUsd,getTeamSpend,listBudgetAlerts,spendDollars,spendPayload,toBudgetState}from"./chunk-RAQ6EUNL.js";import"./chunk-375JVQYK.js";import{inspectSubcommand}from"./chunk-74VQ7PQV.js";import{printError}from"./chunk-NDMQVBTV.js";import{TelemetryClient}from"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var BudgetInspectTelemetryClient=class extends TelemetryClient{trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function inspect(client,argv){let telemetry=new BudgetInspectTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(inspectSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"billing budgets"))return 2;let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliOptionFormat(opts["--format"]?"json":void 0),telemetry.trackCliFlagJson(opts["--json"]);let team=await resolveBudgetTeam(client);if(!team)return 2;let selector=TEAM_BUDGET;output_manager_default.spinner("Fetching spend\u2026");let spend,state,recentAlerts=null;try{let[budget,teamSpend]=await Promise.all([findBudget(client,selector),getTeamSpend(client,team.id,selector,{retry:NO_RETRY}).catch(()=>null)]);spend=teamSpend,budget&&([state,recentAlerts]=await Promise.all([toBudgetState(client,budget,selector),fetchRecentAlerts(client,selector,budget.id)]))}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}output_manager_default.stopSpinner();let spent=spendDollars(spend);if(asJson)return client.stdout.write(`${JSON.stringify({teamId:team.id,teamSlug:team.slug,spend:spendPayload(spent,state?.amount??null),budget:state?budgetStatePayload(state):null,recentAlerts},null,2)}
8
- `),0;if(!state){let spentLine=spent===null?"":` Current spend is ${formatUsd(spent)}.`;return output_manager_default.log(`No budget set on team ${team.slug}.${spentLine} Create one with ${scopedBudgetCommand(client,team,"billing budgets set --amount <dollars>")}.`),0}return warnUnavailableWebhooks([state]),client.stdout.write(printBudgetsTable([state],()=>spent)),recentAlerts===null?0:recentAlerts.length===0?(output_manager_default.log("No alerts on this budget yet."),0):(output_manager_default.log("Recent alerts"),client.stdout.write(printBudgetAlertsTable(recentAlerts)),0)}var RECENT_ALERTS_LIMIT=3;async function fetchRecentAlerts(client,selector,budgetId){try{return(await listBudgetAlerts(client,selector,{budgetId,limit:RECENT_ALERTS_LIMIT},{retry:NO_RETRY})).data}catch(err){return output_manager_default.debug(`Could not load recent budget alerts: ${err}`),null}}export{inspect as default};
@@ -1,12 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{renderThreadRow}from"./chunk-CHIYT3V4.js";import{handleCommentsParseError,inferBranch,listThreads,resolveCommentsScope}from"./chunk-UF2E5BDE.js";import{applyDeprecatedGitBranchFlag}from"./chunk-KBVYN635.js";import"./chunk-UNPK7LVC.js";import{handleValidationError,outputError,validateIntegerRangeWithDefault}from"./chunk-42FOKWGX.js";import"./chunk-AKOYIH3A.js";import"./chunk-TOTTVS5P.js";import"./chunk-D3M2JG5C.js";import{printNextPageCommand}from"./chunk-TZE4CS4K.js";import"./chunk-JUSNW3IF.js";import{getRenamedOption,withWarnings}from"./chunk-3KJ6HWSX.js";import{listSubcommand}from"./chunk-6UMVJ7RL.js";import"./chunk-NDMQVBTV.js";import{getScope}from"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import{getCommandName,getCommandNamePlain}from"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification,stripSensitiveAuthArgs}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function validateStatus(value){let status=value??"unresolved";if(["unresolved","resolved","all"].includes(status))return status}async function resolveAuthors(client,authors,jsonOutput){if(!authors||authors.length===0)return;if(!authors.includes("me"))return authors;let{user}=await getScope(client);return user?authors.map(author=>author==="me"?user.id:author):outputError(client,jsonOutput,"USER_REQUIRED","Can't resolve `--author me` when authenticated as an app. Use an author ID with `--author`, or authenticate with a user token.")}function statusWord(status){return status==="all"?"":` ${status}`}function printActiveFilters(flags){let parts=[];flags["--author"]?.length&&parts.push(`--author ${flags["--author"].join(", ")} (takes a user ID or \`me\` \u2014 usernames match nothing)`);let pagePaths=flags["--page-path"]??flags["--page"];pagePaths?.length&&parts.push(`--page-path ${pagePaths.join(", ")}`),flags["--query"]&&parts.push(`--query ${flags["--query"]}`),flags["--content"]?.length&&parts.push(`--content ${flags["--content"].join(", ")}`),parts.length>0&&output_manager_default.log(`Filters: ${parts.join(" \xB7 ")}`)}function countLine(count,status){return`${count}${statusWord(status)} comment${count===1?"":"s"}`}var SCOPE_FLAG_NAMES=new Set(["--scope","-S","--project","-p","--team","-T"]);function argvFlagTokens(client){return stripSensitiveAuthArgs(client.argv.slice(3))}function scopeFlagsSuffix(client){let tokens=argvFlagTokens(client),out=[];for(let i=0;i<tokens.length;i++){let token=tokens[i],name=token.split("=")[0];SCOPE_FLAG_NAMES.has(name)&&(out.push(token),!token.includes("=")&&i+1<tokens.length&&out.push(tokens[++i]))}return out.length>0?` ${out.join(" ")}`:""}var RENAMED_LIST_FLAGS={"--page":"--page-path","--branch":"--git-branch","--content-id":"--content","--search":"--query"};function nextPageFlagsSuffix(client){let tokens=argvFlagTokens(client),out=[];for(let i=0;i<tokens.length;i++){let token=tokens[i];if(!token.startsWith("-"))continue;let name=token.split("=")[0];if(name==="--next"||name==="-N"){!token.includes("=")&&i+1<tokens.length&&i++;continue}let renamed=RENAMED_LIST_FLAGS[name];out.push(renamed?`${renamed}${token.slice(name.length)}`:token),!token.includes("=")&&i+1<tokens.length&&!tokens[i+1].startsWith("-")&&out.push(tokens[++i])}return out.length>0?` ${out.join(" ")}`:""}function shellSafe(value){return/^[A-Za-z0-9._/-]+$/.test(value)?value:`'${value.replace(/'/g,"'\\''")}'`}async function printEmptyState(client,scope,focus,params,status,flags){let probe;try{probe=await listThreads(client,scope.teamId,{...params,branch:void 0,cursor:void 0,limit:20})}catch{output_manager_default.log(`No${statusWord(status)} comments on ${focus.value}.`);return}let branches=new Map;for(let thread of probe.threads){let branch=thread.branch??"(no branch)";branches.set(branch,(branches.get(branch)??0)+1)}if(branches.size===0){output_manager_default.log(`No${statusWord(status)} comments in ${scope.projectName??"this project"} on any branch.`),printActiveFilters(flags);return}output_manager_default.log(`No${statusWord(status)} comments on ${focus.value}.`);let suffix=probe.pagination.nextCursor?"+":"",scopeSuffix=scopeFlagsSuffix(client);if(branches.size===1){let[branch,count]=[...branches.entries()][0];output_manager_default.log(`${count}${suffix}${statusWord(status)} on ${import_chalk.default.bold(branch)} \u2014 run ${getCommandName(`comments --git-branch ${shellSafe(branch)}${scopeSuffix}`)}`);return}let total=[...branches.values()].reduce((a,b)=>a+b,0);output_manager_default.log(`${total}${suffix}${statusWord(status)} on other branches \u2014 run ${getCommandName(`comments --all-branches${scopeSuffix}`)}`)}async function list(client,telemetry,defaultInvocation){let parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"list")}let flags=parsedArgs.flags,pagePaths=flags["--page-path"]??flags["--page"],expectedPositionals=defaultInvocation?1:2;if(parsedArgs.args.length>expectedPositionals)return output_manager_default.error(`Unknown ${defaultInvocation?"subcommand":"argument"} "${parsedArgs.args[expectedPositionals]}". Run \`vercel comments --help\` for usage.`),1;let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput;telemetry.trackCliOptionProject(flags["--project"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionBranch(flags["--branch"]),telemetry.trackCliFlagAllBranches(flags["--all-branches"]),telemetry.trackCliOptionStatus(flags["--status"]),telemetry.trackCliOptionPagePath(flags["--page-path"]),telemetry.trackCliOptionPage(flags["--page"]),telemetry.trackCliOptionAuthor(flags["--author"]),telemetry.trackCliOptionContent(flags["--content"]),telemetry.trackCliOptionContentId(flags["--content-id"]),telemetry.trackCliOptionQuery(flags["--query"]),telemetry.trackCliOptionSearch(flags["--search"]),telemetry.trackCliOptionLimit(flags["--limit"]),telemetry.trackCliOptionNext(flags["--next"]),telemetry.trackCliOptionFormat(flags["--format"]);let branchError=applyDeprecatedGitBranchFlag(client,flags,"--branch");if(branchError)return outputError(client,jsonOutput,"MUTUAL_EXCLUSIVITY",branchError);let content=getRenamedOption(parsedArgs.flags,"--content","--content-id",{json:jsonOutput});if("error"in content)return outputError(client,jsonOutput,"INVALID_ARGUMENTS",content.error);let query=getRenamedOption(parsedArgs.flags,"--query","--search",{json:jsonOutput});if("error"in query)return outputError(client,jsonOutput,"INVALID_ARGUMENTS",query.error);flags["--content"]=content.value,delete flags["--content-id"],flags["--query"]=query.value,delete flags["--search"];let status=validateStatus(flags["--status"]);if(!status)return outputError(client,jsonOutput,"INVALID_STATUS",`Invalid --status "${flags["--status"]}". Valid values: unresolved, resolved, all.`);let limitResult=validateIntegerRangeWithDefault(flags["--limit"],{flag:"--limit",min:1,max:100,defaultValue:20});if(!limitResult.valid)return handleValidationError(limitResult,jsonOutput,client);if(flags["--git-branch"]&&flags["--all-branches"])return outputError(client,jsonOutput,"MUTUAL_EXCLUSIVITY","Cannot specify both --git-branch and --all-branches.");let scope=await resolveCommentsScope(client,{project:flags["--project"],requireProject:!0,jsonOutput});if(typeof scope=="number")return scope;let focus,branchFilter;if(flags["--git-branch"]&&flags["--git-branch"].length>0)branchFilter=flags["--git-branch"],focus={value:branchFilter.join(", "),source:"flag"};else if(!flags["--all-branches"]&&scope.linked){let inferred=inferBranch(client.cwd);inferred&&(focus=inferred,branchFilter=[inferred.value])}let authors=await resolveAuthors(client,flags["--author"],jsonOutput);if(typeof authors=="number")return authors;let params={projectId:scope.projectId,branch:branchFilter,status:status==="all"?void 0:status,page:pagePaths,author:authors,contentId:flags["--content"],search:flags["--query"],limit:limitResult.value,cursor:flags["--next"]};jsonOutput||output_manager_default.spinner("Fetching comments\u2026");let response;try{response=await listThreads(client,scope.teamId,params)}catch(err){if(isAPIError(err))return outputError(client,jsonOutput,err.code||"API_ERROR",err.serverMessage||`API error (${err.status}).`);throw err}finally{output_manager_default.stopSpinner()}let threads=response.threads??[],nextCursor=response.pagination?.nextCursor??null;if(jsonOutput){let envelope={scope:{teamId:scope.teamId,...scope.teamSlug&&{teamSlug:scope.teamSlug},...scope.projectId&&{projectId:scope.projectId},...scope.projectName&&{projectName:scope.projectName},...focus&&focus.source!=="flag"&&{inferredBranch:focus.value}},filters:{...status!=="all"&&{status},...focus&&{branch:{value:focus.value,source:focus.source}}},pagination:{nextCursor,next:nextCursor},threads};return client.stdout.write(`${JSON.stringify(withWarnings(envelope,[content.warning,query.warning]),null,2)}
8
- `),0}let branchLabel=focus?focus.value:"all branches";if(output_manager_default.log(`Comments in ${import_chalk.default.bold(scope.projectName??scope.projectId??"")} \xB7 ${branchLabel}`),threads.length===0)return focus?await printEmptyState(client,scope,focus,params,status,flags):(output_manager_default.log(`No${statusWord(status)} comments in ${scope.projectName??"this project"}.`),printActiveFilters(flags)),0;output_manager_default.print(`
9
- `);for(let thread of threads)output_manager_default.print(`${renderThreadRow(thread,{showBranch:!focus})}
10
-
11
- `);return output_manager_default.log(countLine(threads.length,status)),output_manager_default.log(`To read a thread, run ${getCommandName(`comments inspect <id>${scopeFlagsSuffix(client)}`)}`),nextCursor&&(output_manager_default.print(`
12
- `),printNextPageCommand(getCommandNamePlain(`comments${nextPageFlagsSuffix(client)} --next ${nextCursor}`))),0}export{list as default};
@@ -1,8 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{scopedBudgetCommand}from"./chunk-5FIY443M.js";import{printBudgetsTable,warnUnavailableWebhooks}from"./chunk-ZPBGAZC2.js";import{rejectUnexpectedArgs,resolveBudgetTeam}from"./chunk-CFYLTZSV.js";import{budgetStatePayload,listBudgets,toBudgetState}from"./chunk-RAQ6EUNL.js";import"./chunk-375JVQYK.js";import{listSubcommand}from"./chunk-74VQ7PQV.js";import{printError}from"./chunk-NDMQVBTV.js";import{TelemetryClient}from"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var BudgetListTelemetryClient=class extends TelemetryClient{trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function list(client,argv){let telemetry=new BudgetListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs;if(rejectUnexpectedArgs(args,"billing budgets list"))return 2;let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliOptionFormat(opts["--format"]?"json":void 0),telemetry.trackCliFlagJson(opts["--json"]);let team=await resolveBudgetTeam(client);if(!team)return 2;output_manager_default.spinner("Fetching budgets\u2026");try{let budgets=await listBudgets(client),states=await Promise.all(budgets.map(budget=>toBudgetState(client,budget)));return output_manager_default.stopSpinner(),printTeamList(client,{asJson,states,team})}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}}function printTeamList(client,{asJson,states,team}){return asJson?(client.stdout.write(`${JSON.stringify({teamId:team.id,teamSlug:team.slug,budgets:states.map(budgetStatePayload)},null,2)}
8
- `),0):states.length===0?(output_manager_default.log(`No budgets found on team ${team.slug}. Set one with ${scopedBudgetCommand(client,team,"billing budgets set --amount <dollars>")}.`),0):(output_manager_default.log("Budgets"),warnUnavailableWebhooks(states),client.stdout.write(printBudgetsTable(states)),0)}export{list as default};
@@ -1,9 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{AUTH_FAILURE,CREDENTIAL_STORE_CONFLICT,VCR_ENGINES,VCR_LOGIN_USERNAME,emitVcrArgParseError,engineLogin,engineLogout,handleVcrApiError,isEngineInstalled,resolveRegistry,resolveVcrScope,stderrTail,validateVcrChoice,validateVcrJsonOutput}from"./chunk-Z64MQIOE.js";import{outputError}from"./chunk-42FOKWGX.js";import"./chunk-RCUDI7OF.js";import"./chunk-GD7AV7BO.js";import"./chunk-D3M2JG5C.js";import{loginSubcommand}from"./chunk-P24YBQ6H.js";import"./chunk-NMIZSQDN.js";import"./chunk-K7ARJYAG.js";import"./chunk-V5TOMLK4.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import{buildCommandWithGlobalFlags,outputAgentError}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import{AGENT_REASON}from"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var LOGIN_VALID_HOURS=12;async function login(client,argv,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(loginSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr login <engine> --project <name-or-id>"),printError(err),2}let fr=validateVcrJsonOutput(client,parsedArgs.flags);if(typeof fr=="number")return fr;let engineArg=parsedArgs.args[0],project=parsedArgs.flags["--project"];if(telemetry.trackCliArgumentEngine(engineArg),telemetry.trackCliOptionProject(project),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),!engineArg){let message=`Missing engine. Choose one of: ${VCR_ENGINES.join(", ")}.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr login docker"),when:"Replace docker with the container tool you use"}]},2),outputError(client,fr.jsonOutput,"MISSING_ARGUMENTS",message)}let choiceError=validateVcrChoice(client,"engine",engineArg,VCR_ENGINES,fr.jsonOutput);if(typeof choiceError=="number")return choiceError;let engine=engineArg;if(!isEngineInstalled(engine)){let message=`\`${engine}\` is not installed or not on your PATH. Install it and try again.`;return outputAgentError(client,{status:"error",reason:"engine_not_found",message},1),outputError(client,fr.jsonOutput,"ENGINE_NOT_FOUND",message)}let scope=await resolveVcrScope(client,{project,jsonOutput:fr.jsonOutput});if(typeof scope=="number")return scope;let registry=resolveRegistry();output_manager_default.spinner(`Authenticating ${engine} with ${registry}...`);try{let{token}=await client.fetch(`/projects/${scope.projectId}/token`,{method:"POST",accountId:scope.teamId,body:JSON.stringify({source:"vercel-cli"}),headers:{"Content-Type":"application/json"}}),result=await engineLogin(engine,registry,token);if(result.exitCode!==0&&CREDENTIAL_STORE_CONFLICT.test(result.stderr)&&(output_manager_default.debug(`Stale ${registry} credential in the ${engine} credential store; running \`${engine} logout\` and retrying`),await engineLogout(engine,registry),result=await engineLogin(engine,registry,token)),result.exitCode!==0){let message=AUTH_FAILURE.test(result.stderr)?`Authentication to ${registry} as "${VCR_LOGIN_USERNAME}" was rejected. The OIDC token may be expired or lack access to this project.`:`\`${engine} login\` failed (exit code ${result.exitCode}).${stderrTail(result.stderr)?`
8
- ${stderrTail(result.stderr)}`:""}`;return outputAgentError(client,{status:"error",reason:AUTH_FAILURE.test(result.stderr)?"not_authorized":"command_failed",message,next:[{command:buildCommandWithGlobalFlags(client.argv,"whoami"),when:"See current user and team"}]},1),outputError(client,fr.jsonOutput,AUTH_FAILURE.test(result.stderr)?"NOT_AUTHORIZED":"COMMAND_FAILED",message)}return fr.jsonOutput?client.stdout.write(`${JSON.stringify({status:"success",engine,registry,username:VCR_LOGIN_USERNAME,validForHours:LOGIN_VALID_HOURS},null,2)}
9
- `):(output_manager_default.success(`Logged in to ${registry} as ${VCR_LOGIN_USERNAME} (${engine}).`),output_manager_default.log(`Credentials are valid for ~${LOGIN_VALID_HOURS} hours. Re-run \`${buildCommandWithGlobalFlags(client.argv,`vcr login ${engine}`)}\` to refresh.`)),0}catch(err){if(isAPIError(err))return handleVcrApiError(client,err,fr.jsonOutput);throw err}finally{output_manager_default.stopSpinner()}}export{login as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{login}from"./chunk-EIMHC5UY.js";import"./chunk-4T57TXQ3.js";import"./chunk-PVASGBEF.js";import"./chunk-SLCPSRDR.js";import"./chunk-5DXC4TE2.js";import"./chunk-NDMQVBTV.js";import"./chunk-HZEKH3RO.js";import"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";export{login as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{collectBuildLogs,displayBuildLogs,displayBuildLogsUntilFinalError,parseLogLines}from"./chunk-VAZ7JG2Z.js";import"./chunk-XH2R2EIK.js";import"./chunk-7JMN657A.js";import"./chunk-JTAUWH5V.js";import"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";export{collectBuildLogs,displayBuildLogs,displayBuildLogsUntilFinalError,parseLogLines};
@@ -1,8 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{RULE_LIMIT,formatPath,formatRate,readTracingConfig,subcommandArguments,writeConfigJson}from"./chunk-FNH3T3CF.js";import{handleTracingApiError,resolveConfigScope}from"./chunk-F2R7L3ZB.js";import"./chunk-UNPK7LVC.js";import{validateLsArgs}from"./chunk-42J2KCDF.js";import{formatTable}from"./chunk-2RXUQ72I.js";import"./chunk-JUSNW3IF.js";import"./chunk-375JVQYK.js";import{lsSubcommand}from"./chunk-IHTWZEQW.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import{TelemetryClient}from"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import{getCommandName,getCommandNamePlain}from"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);var TracesConfigLsTelemetryClient=class extends TelemetryClient{trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var SET_HINT="traces config set <rate> [requestPath] --environment <environment>";function ruleCountLabel(count){return`${count} of ${RULE_LIMIT} rules`}function printTable(projectName,rows){output_manager_default.log(`Trace sampling rules for ${import_chalk.default.bold(projectName)} (${ruleCountLabel(rows.length)})`),output_manager_default.print(`${formatTable(["environment","path","rate"],["l","l","l"],[{rows:rows.map(row=>[row.environment,formatPath(row.requestPath),formatRate(row.sampleRate)])}])}
8
- `)}async function ls(client){let telemetry=new TracesConfigLsTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(lsSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return printError(err),2}let{flags}=parsedArgs;telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),telemetry.trackCliOptionProject(flags["--project"]);let argsResult=validateLsArgs({commandName:"traces config ls",args:subcommandArguments(parsedArgs.args),maxArgs:0,exitCode:2});if(argsResult!==0)return argsResult;let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput||client.nonInteractive,scope=await resolveConfigScope(client,{project:flags["--project"]});if("exitCode"in scope)return scope.exitCode;asJson||output_manager_default.spinner("Fetching trace sampling rules\u2026");let project,enabled,entries;try{({project,enabled,entries}=await readTracingConfig({client,...scope}))}catch(err){return output_manager_default.stopSpinner(),handleTracingApiError(client,err)}output_manager_default.stopSpinner();let rows=entries.map(entry=>entry.row),message=rows.length===0?`No trace sampling rules for ${project.name}.`:`Listed ${ruleCountLabel(rows.length)}.`;return asJson?(writeConfigJson(client,{project,bare:rows,envelope:{rules:rows,enabled},message,next:[{command:getCommandNamePlain(SET_HINT),when:"Add or replace a sampling rule"}]}),0):(enabled||output_manager_default.log(`Tracing is disabled for ${import_chalk.default.bold(project.name)}.`),rows.length===0?(output_manager_default.log(`No trace sampling rules for ${import_chalk.default.bold(project.name)}.`),output_manager_default.dim(`Add one with ${getCommandName(SET_HINT)}`),0):(printTable(project.name,rows),0))}export{ls as default};
@@ -1,8 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{printRules}from"./chunk-FVTRIRML.js";import"./chunk-FVVOHGQE.js";import{parseRulesFlagsAndScope}from"./chunk-XQDHMFQY.js";import"./chunk-EICEQXVS.js";import"./chunk-GZNDA6SV.js";import{emitRulesArgParseError,handleRulesApiError,outputRulesError,rulesCollectionPath}from"./chunk-HDISAMDF.js";import{normalizeRepeatableStringFilters}from"./chunk-42FOKWGX.js";import"./chunk-GHAY4PSD.js";import"./chunk-HRR57QNP.js";import"./chunk-PFD7LETF.js";import"./chunk-TOTTVS5P.js";import"./chunk-D3M2JG5C.js";import"./chunk-375JVQYK.js";import{monitorsLsSubcommand}from"./chunk-N65H4JMJ.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var BUILT_IN_ALERT_TYPES=["usage_anomaly","error_anomaly","botId_anomaly","firewallSystemRule_anomaly","firewallCustomRule_anomaly","testAlert_anomaly","buildTime_anomaly"];var BUILT_IN_ALERT_TYPE_SET=new Set(BUILT_IN_ALERT_TYPES);function parseRuleTypeFilter(client,values,jsonOutput){let types=normalizeRepeatableStringFilters(values);if(types.length===0)return;let invalidType=types.find(type=>type!=="built-in"&&type!=="custom"&&type!=="custom_alert"&&!BUILT_IN_ALERT_TYPE_SET.has(type));if(invalidType)return outputRulesError(client,jsonOutput,"INVALID_RULE_TYPE",`Invalid monitor type "${invalidType}". Expected a supported monitor type or built-in trigger type.`);let includeCustom=types.includes("custom")||types.includes("custom_alert"),includeAllBuiltIn=types.includes("built-in"),builtInAlertTypes=new Set(types.filter(type=>BUILT_IN_ALERT_TYPE_SET.has(type))),includeBuiltIn=includeAllBuiltIn||builtInAlertTypes.size>0;return{apiType:includeCustom===includeBuiltIn?void 0:includeCustom?"custom":"built-in",matches(rule){return rule.type==="custom"?includeCustom:includeAllBuiltIn?!0:includeBuiltIn?rule.triggers.mode==="all"?!0:rule.triggers.items.some(trigger=>builtInAlertTypes.has(trigger.type)):!1}}}async function ls(client,argv,api,telemetry){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(monitorsLsSubcommand.options))}catch(error){return emitRulesArgParseError(client,error,"monitors ls --project <name-or-id>"),printError(error),2}let flags=parsedArgs.flags;telemetry?.trackCliOptionType(flags["--type"]),telemetry?.trackCliFlagAll(flags["--all"]),telemetry?.trackCliFlagJson(flags["--json"]);let format=validateJsonOutput(flags);if(!format.valid)return outputRulesError(client,!1,"INVALID_ARGUMENTS",format.error);let typeFilter=parseRuleTypeFilter(client,flags["--type"],format.jsonOutput);if(typeof typeFilter=="number")return typeFilter;let scope=await parseRulesFlagsAndScope(client,{"--project":flags["--project"],"--all":flags["--all"]},format.jsonOutput,"monitors ls");if(typeof scope=="number")return scope;output_manager_default.spinner("Fetching monitors\u2026");try{let rules=[],cursor;do{let page=await client.fetch(rulesCollectionPath(api,scope.teamId,{limit:100,cursor,projectId:scope.projectId,type:typeFilter?.apiType}));rules.push(...page[api.listKey]),cursor=page.pagination.next??void 0}while(cursor);let filteredRules=typeFilter?rules.filter(typeFilter.matches):rules;return format.jsonOutput?client.stdout.write(`${JSON.stringify({[api.listKey]:filteredRules},null,2)}
8
- `):filteredRules.length===0?output_manager_default.log("No monitors found for this scope"):printRules(filteredRules),0}catch(error){if(isAPIError(error))return handleRulesApiError(client,error,format.jsonOutput);throw error}finally{output_manager_default.stopSpinner()}}export{ls as default};
@@ -1,11 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{printRuleNotifications,printRulesNotifications}from"./chunk-IHCYNUI2.js";import{resolveRulesTeam}from"./chunk-XQDHMFQY.js";import"./chunk-EICEQXVS.js";import{emitRulesArgParseError,handleRulesApiError,outputRulesError,ruleNotificationsPath,rulesNotificationsPath}from"./chunk-HDISAMDF.js";import"./chunk-42FOKWGX.js";import"./chunk-D3M2JG5C.js";import{monitorsNotificationsLsSubcommand}from"./chunk-N65H4JMJ.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import{buildCommandWithGlobalFlags}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification,quoteArg}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import{AGENT_STATUS}from"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var PAGE_LIMIT=100;async function fetchRulesNotifications(client,api,teamId){let notifications={},cursor;do{let page=await client.fetch(rulesNotificationsPath(api,teamId,{limit:PAGE_LIMIT,cursor}));Object.assign(notifications,page.notifications),cursor=page.pagination.next??void 0}while(cursor);return{notifications}}async function ls(client,argv,api){let parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(monitorsNotificationsLsSubcommand.options))}catch(error){return emitRulesArgParseError(client,error,"monitors notifications [monitor-id]"),printError(error),2}let format=validateJsonOutput(parsedArgs.flags);if(!format.valid)return outputRulesError(client,!1,"INVALID_ARGUMENTS",format.error);let[ruleId,extraArg]=parsedArgs.args;if(extraArg)return outputRulesError(client,format.jsonOutput,"INVALID_ARGUMENTS","Expected exactly one monitor ID.");let scope=await resolveRulesTeam(client,format.jsonOutput);if(typeof scope=="number")return scope;client.nonInteractive||output_manager_default.spinner(ruleId?"Fetching notification destinations\u2026":"Fetching monitor notification destinations\u2026");try{if(!ruleId){let result=await fetchRulesNotifications(client,api,scope.teamId);if(client.nonInteractive){let ruleCount=Object.keys(result.notifications).length,notificationCount=Object.values(result.notifications).reduce((count,notifications)=>count+notifications.length,0);client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.OK,...result,message:`Listed ${notificationCount} notification destination${notificationCount===1?"":"s"} across ${ruleCount} readable monitor${ruleCount===1?"":"s"}.`,next:[{command:buildCommandWithGlobalFlags(client.argv,"monitors notifications link <monitor-id> --slack-channel <channel-id> --slack-installation-id <installation-id>"),when:"Link a Slack channel to a monitor"},{command:buildCommandWithGlobalFlags(client.argv,"monitors notifications link <monitor-id> --webhook <webhook-id>"),when:"Link an account webhook to a monitor"}]},null,2)}
8
- `)}else format.jsonOutput?client.stdout.write(`${JSON.stringify(result,null,2)}
9
- `):printRulesNotifications(result);return 0}let response=await client.fetch(ruleNotificationsPath(api,scope.teamId,ruleId));if(client.nonInteractive){let count=response.notifications.length;client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.OK,[api.idKey]:ruleId,notifications:response.notifications,message:`${count} notification destination${count===1?"":"s"} linked to monitor ${ruleId}.`,next:[{command:buildCommandWithGlobalFlags(client.argv,`monitors notifications link ${quoteArg(ruleId)} --webhook <webhook-id>`),when:"Link an account webhook"},{command:buildCommandWithGlobalFlags(client.argv,`monitors notifications link ${quoteArg(ruleId)} --slack-channel <channel-id>`),when:"Link a Slack channel"}]},null,2)}
10
- `)}else format.jsonOutput?client.stdout.write(`${JSON.stringify(response,null,2)}
11
- `):printRuleNotifications(ruleId,response.notifications);return 0}catch(error){if(isAPIError(error))return handleRulesApiError(client,error,format.jsonOutput);throw error}finally{client.nonInteractive||output_manager_default.stopSpinner()}}export{ls as default};
@@ -1,9 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{buildRuleNotificationsInspectCommand,printRuleNotificationMutationReceipt}from"./chunk-IHCYNUI2.js";import{resolveRulesTeam}from"./chunk-XQDHMFQY.js";import"./chunk-EICEQXVS.js";import{emitRulesArgParseError,handleRulesApiError,outputRulesError,rulesNotificationLinksPath}from"./chunk-HDISAMDF.js";import"./chunk-42FOKWGX.js";import"./chunk-D3M2JG5C.js";import{monitorsNotificationsLinkSubcommand,monitorsNotificationsUnlinkSubcommand,monitorsNotificationsUpdateSubcommand}from"./chunk-N65H4JMJ.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import{packageName}from"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import{AGENT_STATUS}from"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var API_SLACK_INSTALLATION_REQUIRED_MESSAGE="configId is required unless the team has exactly one Slack configuration.",CLI_SLACK_INSTALLATION_REQUIRED_MESSAGE="A Slack installation ID is required unless the team has exactly one completed Slack installation. Pass --slack-installation-id <installation-id>.";function getTarget(client,flags,jsonOutput){let webhookId=flags["--webhook"],channelId=flags["--slack-channel"],configId=flags["--slack-installation-id"];return webhookId&&(channelId||configId)?outputRulesError(client,jsonOutput,"INVALID_ARGUMENTS","Specify either --webhook or --slack-channel, not both."):configId&&!channelId?outputRulesError(client,jsonOutput,"INVALID_ARGUMENTS","--slack-installation-id requires --slack-channel."):webhookId?{type:"webhook",webhookId}:channelId?configId?{type:"slack",channelId,configId}:{type:"slack",channelId}:outputRulesError(client,jsonOutput,"MISSING_ARGUMENTS","Specify a notification destination with --webhook or --slack-channel.")}function applyDeliverySetting(client,target,flags,action,jsonOutput){let criticalOnly=flags["--critical-only"],noCriticalOnly=flags["--no-critical-only"];return criticalOnly&&noCriticalOnly?outputRulesError(client,jsonOutput,"MUTUAL_EXCLUSIVITY","Specify either --critical-only or --no-critical-only, not both."):action==="update"&&!criticalOnly&&!noCriticalOnly?outputRulesError(client,jsonOutput,"MISSING_ARGUMENTS","Specify --critical-only or --no-critical-only."):criticalOnly?{...target,minimumSeverityLevel:"critical"}:action==="update"&&noCriticalOnly?{...target,minimumSeverityLevel:null}:target}async function mutate(client,argv,api,action){let command={link:monitorsNotificationsLinkSubcommand,update:monitorsNotificationsUpdateSubcommand,unlink:monitorsNotificationsUnlinkSubcommand}[action],parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(command.options))}catch(error){return emitRulesArgParseError(client,error,`monitors notifications ${action} <monitor-id> --webhook <webhook-id>`),printError(error),2}let flags=parsedArgs.flags,format=validateJsonOutput(flags);if(!format.valid)return outputRulesError(client,!1,"INVALID_ARGUMENTS",format.error);let[ruleId,extraArg]=parsedArgs.args;if(!ruleId)return outputRulesError(client,format.jsonOutput,"MISSING_ARGUMENTS",`Missing monitor ID. Example: ${packageName} monitors notifications ${action} <monitor-id> --webhook <webhook-id>`);if(extraArg)return outputRulesError(client,format.jsonOutput,"INVALID_ARGUMENTS","Expected exactly one monitor ID.");let target=getTarget(client,flags,format.jsonOutput);if(typeof target=="number")return target;let notification=applyDeliverySetting(client,target,flags,action,format.jsonOutput);if(typeof notification=="number")return notification;let scope=await resolveRulesTeam(client,format.jsonOutput);if(typeof scope=="number")return scope;client.nonInteractive||output_manager_default.spinner(`${action==="link"?"Linking":action==="update"?"Updating":"Unlinking"} notification destination\u2026`);try{let response=await client.fetch(rulesNotificationLinksPath(api,scope.teamId,ruleId),{method:action==="link"?"POST":action==="update"?"PATCH":"DELETE",body:notification});if(client.nonInteractive){let actionPastTense=action==="link"?"Linked":action==="update"?"Updated":"Unlinked",preposition=action==="link"?"to":action==="update"?"for":"from";client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.OK,success:response.success,action,[api.idKey]:ruleId,notification:response.notification,message:`${actionPastTense} notification destination ${preposition} monitor ${ruleId}.`,next:[{command:buildRuleNotificationsInspectCommand(client.argv,ruleId),when:"Inspect linked notification destinations"}]},null,2)}
8
- `)}else format.jsonOutput?client.stdout.write(`${JSON.stringify(response,null,2)}
9
- `):printRuleNotificationMutationReceipt(action==="link"?"Linked":action==="update"?"Updated":"Unlinked",ruleId,notification,client.argv);return 0}catch(error){if(isAPIError(error))return error.serverMessage===API_SLACK_INSTALLATION_REQUIRED_MESSAGE?outputRulesError(client,format.jsonOutput,error.code||"bad_request",CLI_SLACK_INSTALLATION_REQUIRED_MESSAGE):handleRulesApiError(client,error,format.jsonOutput);throw error}finally{client.nonInteractive||output_manager_default.stopSpinner()}}export{mutate as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{monitorsRoutingFlags}from"./chunk-BVR6OIU5.js";import{getSubcommand}from"./chunk-ETV3C2CV.js";import"./chunk-N65H4JMJ.js";import"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import{buildCommandWithGlobalFlags,outputAgentError}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-4NTBYNFR.js";import{takeCommand}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{warnDeprecatedSubcommand}from"./chunk-SDYCW5JM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import{AGENT_REASON}from"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var NOTIFICATIONS_CONFIG={ls:["ls","list"],link:["link"],update:["update","patch"],unlink:["unlink"]};async function notifications(client,argv,api,telemetry){let{command,args:argsWithoutCommand}=takeCommand(argv,monitorsRoutingFlags);if(!command||command.startsWith("ar_"))return telemetry.trackCliSubcommandNotifications(command?"inspect":"ls"),(await import("./ls-PTHGXQLK.js")).default(client,argv,api);let{subcommand,subcommandOriginal}=getSubcommand([command],NOTIFICATIONS_CONFIG),args=argsWithoutCommand;if(subcommand==null)return telemetry.trackCliSubcommandNotifications("unknown"),outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:`Unknown "monitors notifications" subcommand "${command}".`,next:[{command:buildCommandWithGlobalFlags(client.argv,"monitors notifications --help"),when:"Show valid notification subcommands"}]},2),output_manager_default.error(`Unknown "monitors notifications" subcommand "${command}". Run \`vercel monitors notifications --help\`.`),2;switch(subcommand){case"ls":return telemetry.trackCliSubcommandNotifications(args[0]?.startsWith("ar_")?"inspect":"ls"),(await import("./ls-PTHGXQLK.js")).default(client,args,api);case"link":case"update":case"unlink":return telemetry.trackCliSubcommandNotifications(subcommandOriginal),subcommandOriginal==="patch"&&warnDeprecatedSubcommand(client,"monitors notifications patch","monitors notifications update"),(await import("./mutate-EKZWPQQJ.js")).default(client,args,api,subcommand);default:return output_manager_default.error(`Unhandled notifications subcommand: ${String(subcommand)}`),1}}export{notifications as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{parseThreadArg}from"./chunk-2S6PE6GB.js";import{getThread,handleCommentsParseError,resolveCommentsScope,threadNotFoundMessage,toApiErrorParts}from"./chunk-UF2E5BDE.js";import"./chunk-UNPK7LVC.js";import{outputError}from"./chunk-42FOKWGX.js";import"./chunk-D3M2JG5C.js";import{require_open}from"./chunk-PVASGBEF.js";import"./chunk-JUSNW3IF.js";import{openSubcommand}from"./chunk-6UMVJ7RL.js";import"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_open=__toESM(require_open(),1);async function openThread(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(openSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return handleCommentsParseError(err,"open")}let threadInput=parsedArgs.args[2];if(telemetry.trackCliArgumentThread(threadInput),!threadInput)return output_manager_default.error("Pass a thread ID or URL: `vercel comments open <thread>`."),2;let threadRef=parseThreadArg(threadInput);if(!threadRef)return output_manager_default.error(`Could not extract a thread ID from "${threadInput}". Pass the thread ID or its vercel.com URL.`),2;let threadId=threadRef.id;telemetry.trackCliOptionProject(parsedArgs.flags["--project"]);let scope=await resolveCommentsScope(client,{project:parsedArgs.flags["--project"],requireProject:!1,jsonOutput:!1,urlTeamSlug:threadRef.teamSlug});if(typeof scope=="number")return scope;let webUrl;try{webUrl=(await getThread(client,scope.teamId,threadId)).webUrl}catch(err){if(isAPIError(err)){let{code,message}=toApiErrorParts(err);return outputError(client,!1,code,err.status===404?threadNotFoundMessage(threadId,scope):message)}throw err}return webUrl?(output_manager_default.log(`Opening ${webUrl}`),await(0,import_open.default)(webUrl),0):(output_manager_default.error(`The API returned no web URL for ${threadId}.`),1)}export{openThread as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{createOpenApiCache,fetchSpecUrl,foldNamingStyle,formatAsCard,formatAsDataTable,inferCliSubcommandAliases,operationIdToKebabCase,resolveEndpointByTagAndOperationId,tryOpenApiFallback}from"./chunk-HYOWFNOP.js";import{humanReadableColumnLabel,humanizeIdentifier}from"./chunk-GHAY4PSD.js";import{CACHE_FILE,CACHE_TTL_MS,FETCH_TIMEOUT_MS,MAX_OPENAPI_SPEC_BYTES,OPENAPI_URL,OpenApiCache,SSO_API_URL,VERCEL_CLI_ROOT_DISPLAY_KEY,assertAllowedSpecUrl,matchesCliApiTag,readSpecResponse,resolveOpenApiTagForProjectsCli}from"./chunk-NT2N5UR4.js";import"./chunk-375JVQYK.js";import"./chunk-EJN55YDV.js";import"./chunk-NDMQVBTV.js";import"./chunk-HZEKH3RO.js";import"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";export{CACHE_FILE,CACHE_TTL_MS,FETCH_TIMEOUT_MS,MAX_OPENAPI_SPEC_BYTES,OPENAPI_URL,OpenApiCache,SSO_API_URL,VERCEL_CLI_ROOT_DISPLAY_KEY,assertAllowedSpecUrl,createOpenApiCache,fetchSpecUrl,foldNamingStyle,formatAsCard,formatAsDataTable,humanReadableColumnLabel,humanizeIdentifier,inferCliSubcommandAliases,matchesCliApiTag,operationIdToKebabCase,readSpecResponse,resolveEndpointByTagAndOperationId,resolveOpenApiTagForProjectsCli,tryOpenApiFallback};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{getSubcommand}from"./chunk-ETV3C2CV.js";import{PERMISSIONS_ACTIONS,permissionsClearSubcommand,permissionsLsSubcommand}from"./chunk-NMIZSQDN.js";import{buildCommandWithGlobalFlags,outputAgentError}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import{AGENT_REASON}from"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var USAGE="vcr permissions <repository> <ls|add|remove|clear>",ROUTING_OPTIONS=[...permissionsLsSubcommand.options,...permissionsClearSubcommand.options];async function permissions(client,argv,telemetry){let positionals;try{positionals=parseArguments(argv,getFlagsSpecification(ROUTING_OPTIONS),{permissive:!0}).args}catch{positionals=argv.filter(arg=>!arg.startsWith("-"))}let repository=positionals[0],{subcommand}=getSubcommand(positionals.slice(1),PERMISSIONS_ACTIONS);if(!repository||subcommand==null){let message=repository?positionals.length<2?`Please specify an action. Usage: \`vercel ${USAGE}\`.`:`Unknown "vcr permissions" action "${positionals[1]}". Usage: \`vercel ${USAGE}\`.`:`Missing repository. Usage: \`vercel ${USAGE}\`.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr permissions --help"),when:"Show valid permissions actions"}]},2),output_manager_default.error(`${message} Run \`vercel vcr permissions --help\`.`),2}switch(subcommand){case"ls":return(await import("./ls-UXE5RSZN.js")).default(client,argv,telemetry);case"add":return(await import("./add-4R6FUHQT.js")).default(client,argv,telemetry);case"rm":return(await import("./rm-WFGMOZ3G.js")).default(client,argv,telemetry);case"clear":return(await import("./clear-PECHXMV5.js")).default(client,argv,telemetry);default:return output_manager_default.error(`Unhandled permissions action: ${subcommand}`),1}}export{permissions as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{login}from"./chunk-EIMHC5UY.js";import"./chunk-4T57TXQ3.js";import{writeJsonError}from"./chunk-UFXIPUNI.js";import"./chunk-PVASGBEF.js";import"./chunk-SLCPSRDR.js";import"./chunk-5DXC4TE2.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-HZEKH3RO.js";import{param}from"./chunk-3G3FQYMW.js";import"./chunk-MBXLL2HF.js";import{require_ci_info}from"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import{TOKENS_URL,withGlobalFlags}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import{humanizePath}from"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import{getGlobalPathConfig}from"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{wantsMachineReadableOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import{getCommandName,getCommandNamePlain}from"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import{AGENT_REASON}from"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_ci_info=__toESM(require_ci_info(),1);async function promptMissingCredentials(client,onLoginError){if(wantsMachineReadableOutput(void 0,client.argv))return writeJsonError(client,{status:"error",reason:AGENT_REASON.LOGIN_REQUIRED,message:"You're not logged in.",hint:`Run \`${getCommandNamePlain("login")}\`. It prints a URL and a code. A person opens the URL to approve the login. Or set VERCEL_TOKEN or pass --token, then retry. Create a token at ${TOKENS_URL}.`,retryable:!1,userActionRequired:!0,next:[{command:withGlobalFlags(client,"login"),when:"To sign in; a person approves it in a browser"}]});let isTTY=process.stdout.isTTY;if(!import_ci_info.default.isCI&&(isTTY||client.isAgent)){output_manager_default.log(isTTY?"No existing credentials found. Please log in:":"No existing credentials found. Starting login flow...");try{let result=await login(client,{shouldParseArgs:!1});if(result!==0)return result}catch(error){return printError(error),onLoginError?.(error),1}return output_manager_default.debug(`Saved credentials in "${humanizePath(getGlobalPathConfig())}"`),0}return output_manager_default.prettyError({message:`No existing credentials found. Please run ${getCommandName("login")} or pass ${param("--token")}`,link:"https://err.sh/vercel/no-credentials-found"}),1}export{promptMissingCredentials as default};
@@ -1,15 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{updateRouteVersion}from"./chunk-6QKS6QK7.js";import{getRouteVersions}from"./chunk-BVH2AEFE.js";import{confirmAction,getRoutes,parseSubcommandArgs,printDiffSummary,withGlobalFlags}from"./chunk-C5QEQSEX.js";import{requireProjectContext}from"./chunk-7LPNDK2O.js";import"./chunk-UNPK7LVC.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-Q7D7RGXM.js";import"./chunk-JUSNW3IF.js";import{publishSubcommand}from"./chunk-ECFLIVEE.js";import"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import{outputAgentError}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function publish(client,argv){let parsed=await parseSubcommandArgs(argv,publishSubcommand,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0;output_manager_default.spinner(`Fetching route versions for ${import_chalk.default.bold(project.name)}`);let{versions}=await getRouteVersions(client,project.id,{teamId}),version=versions.find(v=>v.isStaging);if(!version)return output_manager_default.warn(`No staged changes to publish. Make changes first with ${import_chalk.default.cyan(withGlobalFlags(client,"routes add"))}.`),0;output_manager_default.spinner("Fetching changes");let{routes:diffRoutes}=await getRoutes(client,project.id,{teamId,versionId:version.id,diff:!0}),changedRoutes=diffRoutes.filter(r=>r.action!==void 0);if(changedRoutes.length>0?(output_manager_default.print(`
8
- ${import_chalk.default.bold("Changes to be published:")}
9
-
10
- `),printDiffSummary(changedRoutes),output_manager_default.print(`
11
- `)):output_manager_default.print(`
12
- ${import_chalk.default.gray("No changes detected from current production version.")}
13
-
14
- `),!await confirmAction(client,parsed.flags["--yes"],"Publish these changes to production?",`This will make them live for ${import_chalk.default.bold(project.name)}.`))return output_manager_default.log("Canceled"),0;let updateStamp=stamp_default();output_manager_default.spinner("Publishing to production");try{let{version:newVersion}=await updateRouteVersion(client,project.id,version.id,"promote",{teamId});return output_manager_default.log(`${import_chalk.default.cyan("Success!")} Routes published to production ${import_chalk.default.gray(updateStamp())}`),newVersion.ruleCount!==void 0&&output_manager_default.print(` ${import_chalk.default.bold("Active routes:")} ${newVersion.ruleCount}
15
- `),0}catch(e){let msg=e.message||"Failed to publish routes";return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"api_error",message:msg,next:[{command:withGlobalFlags(client,"routes publish --yes")}]}),process.exit(1),1):(output_manager_default.error(msg),1)}}export{publish as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{SENSITIVE_PLACEHOLDER,envPullCommandLogic,pull}from"./chunk-MO2G2ND2.js";import"./chunk-TPJV5UNE.js";import"./chunk-6Y2ZL5XJ.js";import"./chunk-YZKARZ2B.js";import"./chunk-7YKFF6CE.js";import"./chunk-UNPK7LVC.js";import"./chunk-NE6PKR2J.js";import"./chunk-4T57TXQ3.js";import"./chunk-25565AGS.js";import"./chunk-UCRMJMH6.js";import"./chunk-7JMN657A.js";import"./chunk-JTAUWH5V.js";import"./chunk-PVASGBEF.js";import"./chunk-JUSNW3IF.js";import"./chunk-3KJ6HWSX.js";import"./chunk-SLCPSRDR.js";import"./chunk-BZIC36KP.js";import"./chunk-NDMQVBTV.js";import"./chunk-3G3FQYMW.js";import"./chunk-NSPW47RU.js";import"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";export{SENSITIVE_PLACEHOLDER,pull as default,envPullCommandLogic};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{purchaseDomainIfAvailable}from"./chunk-EGTJTCCW.js";import"./chunk-FHMCTV5E.js";import"./chunk-IOTKHTZH.js";import"./chunk-A2RZZQEP.js";import"./chunk-Q7D7RGXM.js";import"./chunk-3G3FQYMW.js";import"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";export{purchaseDomainIfAvailable as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{DEFAULT_TAG,buildRepositoryReference,parseNameArg,validateImageParts}from"./chunk-HEGJZJO7.js";import{VCR_ENGINES,emitVcrArgParseError,isEngineInstalled,pushCompressionArgs,reportEnginePushFailure,resolveRegistry,resolveVcrScope,runEngine,splitPassthrough,validateVcrChoice}from"./chunk-Z64MQIOE.js";import{outputError}from"./chunk-42FOKWGX.js";import"./chunk-RCUDI7OF.js";import"./chunk-GD7AV7BO.js";import"./chunk-D3M2JG5C.js";import{pushSubcommand}from"./chunk-P24YBQ6H.js";import"./chunk-NMIZSQDN.js";import"./chunk-K7ARJYAG.js";import"./chunk-V5TOMLK4.js";import{printError}from"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import{buildCommandWithGlobalFlags,outputAgentError}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import{AGENT_REASON}from"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";async function push(client,telemetry){let{own,passthrough}=splitPassthrough(client.argv),parsedArgs;try{parsedArgs=parseArguments(own,getFlagsSpecification(pushSubcommand.options))}catch(err){return emitVcrArgParseError(client,err,"vcr push <engine> [name[:tag]]"),printError(err),2}let[engineArg,nameArg]=parsedArgs.args.slice(2),project=parsedArgs.flags["--project"];if(telemetry.trackCliArgumentEngine(engineArg),telemetry.trackCliArgumentName(nameArg),telemetry.trackCliOptionProject(project),!engineArg){let message=`Missing engine. Choose one of: ${VCR_ENGINES.join(", ")}.`;return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,"vcr push docker"),when:"Replace docker with the container tool you use"}]},2),outputError(client,!1,"MISSING_ARGUMENTS",message)}let choiceError=validateVcrChoice(client,"engine",engineArg,VCR_ENGINES,!1);if(typeof choiceError=="number")return choiceError;let engine=engineArg;if(!isEngineInstalled(engine)){let message=`\`${engine}\` is not installed or not on your PATH. Install it and try again.`;return outputAgentError(client,{status:"error",reason:"engine_not_found",message},1),outputError(client,!1,"ENGINE_NOT_FOUND",message)}let scope=await resolveVcrScope(client,{project,jsonOutput:!1});if(typeof scope=="number")return scope;let parsed=parseNameArg(nameArg,scope.projectName);if("error"in parsed)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:parsed.error},2),outputError(client,!1,"INVALID_ARGUMENTS",parsed.error);let validationError=validateImageParts(parsed);if(validationError)return outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:validationError},2),outputError(client,!1,"INVALID_ARGUMENTS",validationError);let ref=`${buildRepositoryReference({registry:resolveRegistry(),teamSlug:scope.teamSlug,projectName:scope.projectName,repository:parsed.repository})}:${parsed.tag??DEFAULT_TAG}`,engineArgs=["push",...pushCompressionArgs(engine),...passthrough,ref];output_manager_default.log(`Running: ${engine} ${engineArgs.join(" ")}`);let result=await runEngine(engine,engineArgs,{cwd:client.cwd,captureStderr:!0});return result.exitCode!==0?reportEnginePushFailure(client,engine,"push",result):(output_manager_default.success(`Pushed ${ref}`),0)}export{push as default};
@@ -1,12 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{warnIfFidMetric}from"./chunk-YUHKH4TK.js";import{FILTER_DEPRECATION_WARNING,alignTimeRangeToGranularity,canonicalResponseToMetricsResponse,createCanonicalMetricsRequest,usesODataSyntax}from"./chunk-HNH3DPIZ.js";import{computeGranularity,formatText,getDefaultCustomMetricAggregation}from"./chunk-BW25OFQG.js";import{OBSERVABILITY_METRICS_PATH,fetchCatalogMetricDetailOrExit,fetchMetricDetailOrExit,formatErrorJson,formatQueryJson,getDefaultAggregation,getRollupColumnName,handleApiError}from"./chunk-NTDP6RTQ.js";import"./chunk-IVSSTHB6.js";import"./chunk-GZNDA6SV.js";import{warnDeprecatedProdFlag}from"./chunk-YZKARZ2B.js";import{validateAllProjectMutualExclusivity}from"./chunk-42FOKWGX.js";import"./chunk-TOTTVS5P.js";import{resolveTimeRange}from"./chunk-D3M2JG5C.js";import"./chunk-Q7D7RGXM.js";import"./chunk-375JVQYK.js";import{getRenamedOption}from"./chunk-3KJ6HWSX.js";import{metricsCommand}from"./chunk-M3R7F2N4.js";import{printError}from"./chunk-NDMQVBTV.js";import{getScope}from"./chunk-NSPW47RU.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import{getLinkedProject,getProjectByNameOrId}from"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import{getTypedOptionName,parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import{ProjectNotFound,isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);function validateRequiredMetric(metric){return metric?{valid:!0,value:metric}:{valid:!1,code:"MISSING_METRIC",message:`Missing required metric. Specify the metric to query.
8
-
9
- Run 'vercel metrics schema' to see available metrics.`}}function validateOrderDirection(orderDirection){return orderDirection===void 0?{valid:!0,value:void 0}:orderDirection==="asc"||orderDirection==="desc"?{valid:!0,value:orderDirection}:{valid:!1,code:"INVALID_ORDER",message:`Invalid order "${orderDirection}". Use "asc" or "desc".`,allowedValues:["asc","desc"]}}function validateOrderBy(orderBy){return orderBy===void 0?{valid:!0,value:void 0}:orderBy==="value"||orderBy==="count"?{valid:!0,value:orderBy}:{valid:!1,code:"INVALID_ORDER_BY",message:`Invalid order-by "${orderBy}". Use "value" or "count".`,allowedValues:["value","count"]}}function handleValidationError(result,jsonOutput,client,telemetry){return telemetry.trackCliError(result.code),jsonOutput?client.stdout.write(formatErrorJson(result.code,result.message,result.allowedValues)):(output_manager_default.error(result.message),result.allowedValues&&result.allowedValues.length>0&&output_manager_default.print(`
10
- Available values: ${result.allowedValues.join(", ")}
11
- `)),1}var ENVIRONMENT_PATTERN=/^[a-z0-9][a-z0-9-]*$/i,SUM_DEFAULT_METRIC_UNITS=new Set(["bytes","count","usd","units"]);function combineFilters(filters,environment,syntax="odata"){let nonEmptyFilters=[...filters?.filter(filter=>filter.length>0)??[],...environment?[syntax==="kql"?`environment:${environment}`:`environment eq '${environment}'`]:[]];if(nonEmptyFilters.length===0)return;if(nonEmptyFilters.length===1)return nonEmptyFilters[0];let conjunction=syntax==="kql"?" AND ":" and ";return nonEmptyFilters.map(filter=>`(${filter})`).join(conjunction)}function getRequestOrderBy(metric,aggregation,orderBy){return orderBy==="value"?getRollupColumnName(metric,aggregation):void 0}function getCatalogDefaultAggregation(metric,isPlatformMetric){if(!isPlatformMetric)return getDefaultCustomMetricAggregation(metric.unit,metric.aggregations);let defaultAggregation=SUM_DEFAULT_METRIC_UNITS.has(metric.unit)?"sum":"avg";return metric.aggregations.includes(defaultAggregation)?defaultAggregation:defaultAggregation==="sum"&&metric.aggregations.includes("count")?"count":metric.aggregations.includes("sum")?"sum":metric.aggregations[0]}function getUndiscoveredDefaultAggregation(metric){return metric.startsWith("vercel.")&&metric.endsWith(".count")?"count":"sum"}function toCanonicalMetricSelection(metric,aggregation,supportedAggregations){let[aggregationName,...dimensionParts]=aggregation.split("/"),dimension=dimensionParts.join("/")||void 0,additiveAggregation=supportedAggregations?supportedAggregations.includes("count")&&!supportedAggregations.includes("sum")?"count":"sum":getUndiscoveredDefaultAggregation(metric);return aggregation==="persecond"?{metric,aggregation:additiveAggregation,per:"second"}:aggregation==="percent"?{metric,aggregation:additiveAggregation,normalize:"percent"}:aggregationName==="unique"&&dimension?{metric,aggregation:"unique",dimensions:[dimension]}:{metric,aggregation}}function getCanonicalOrderBy(orderBy,selection,supportedAggregations){if(orderBy)return orderBy;let supportsCount=supportedAggregations===void 0||supportedAggregations.includes("count");return selection.aggregation==="count"||supportsCount?"count":"value"}async function resolveQueryScope(client,telemetry,opts){if(opts.project||opts.all){let{team}=await getScope(client);if(!team)return handleValidationError({valid:!1,code:"NO_TEAM",message:"No team context found. Run `vercel switch` to select a team, or use `vercel link` in a project directory."},opts.jsonOutput,client,telemetry);if(opts.all)return{scope:{type:"owner",ownerId:team.id},accountId:team.id,teamName:team.slug};let project=await getProjectByNameOrId(client,opts.project,team.id);if(project instanceof ProjectNotFound){let errMsg=`Project "${opts.project}" was not found in team "${team.slug}".`;return handleValidationError({valid:!1,code:"PROJECT_NOT_FOUND",message:errMsg},opts.jsonOutput,client,telemetry)}return{scope:{type:"project",ownerId:team.id,projectIds:[project.id]},accountId:team.id,teamName:team.slug,projectName:project.name}}let linkedProject=await getLinkedProject(client);return linkedProject.status==="error"?(telemetry.trackCliError("LINK_ERROR"),linkedProject.exitCode):linkedProject.status==="not_linked"?handleValidationError({valid:!1,code:"NOT_LINKED",message:"No linked project found. Run `vercel link` to link a project, or use --project <name-or-id> or --all."},opts.jsonOutput,client,telemetry):{scope:{type:"project",ownerId:linkedProject.org.id,projectIds:[linkedProject.project.id]},accountId:linkedProject.org.id,teamName:linkedProject.org.slug,projectName:linkedProject.project.name}}async function query(client,telemetry){let parsedArgs,flagsSpecification=getFlagsSpecification(metricsCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(err){return telemetry.trackCliError("INVALID_ARGUMENTS"),printError(err,client),2}let flags=parsedArgs.flags,positionalArgs=parsedArgs.args.slice(1),positionalMetric=positionalArgs[0]==="query"?positionalArgs[1]:positionalArgs[0],formatResult=validateJsonOutput(flags);if(!formatResult.valid)return telemetry.trackCliError("INVALID_OUTPUT_FORMAT"),output_manager_default.error(formatResult.error),2;let jsonOutput=formatResult.jsonOutput,metricFlag=positionalMetric,aggregationFlag=flags["--aggregation"],groupBy=flags["--group-by"]??[],limit=flags["--limit"],orderByInput=typeof flags["--order-by"]=="string"?flags["--order-by"].trim().toLowerCase():void 0,orderInput=typeof flags["--order"]=="string"?flags["--order"].trim().toLowerCase():void 0,environmentFlag=flags["--environment"],prod=flags["--prod"],since=flags["--since"],until=flags["--until"],granularity=flags["--granularity"],bucketTimezone=flags["--bucket-timezone"]?.trim(),project=flags["--project"],all=flags["--all"];telemetry.trackCliArgumentMetricId(metricFlag),telemetry.trackCliOptionAggregation(aggregationFlag),telemetry.trackCliOptionGroupBy(groupBy.length>0?groupBy:void 0),telemetry.trackCliOptionLimit(limit),telemetry.trackCliOptionOrderBy(orderByInput),telemetry.trackCliOptionOrder(orderInput),telemetry.trackCliOptionQuery(flags["--query"]),telemetry.trackCliOptionFilter(flags["--filter"]),telemetry.trackCliOptionEnvironment(environmentFlag),telemetry.trackCliFlagProd(prod),telemetry.trackCliOptionSince(since),telemetry.trackCliOptionUntil(until),telemetry.trackCliOptionGranularity(granularity),telemetry.trackCliOptionBucketTimezone(bucketTimezone),telemetry.trackCliOptionProject(project),telemetry.trackCliFlagAll(all),telemetry.trackCliOptionFormat(flags["--format"]);let queryOption=getRenamedOption(flags,"--query","--filter",{json:jsonOutput,typedName:getTypedOptionName(client.argv.slice(2),getFlagsSpecification(metricsCommand.options),"--filter")});if("error"in queryOption)return handleValidationError({valid:!1,code:"CONFLICTING_OPTIONS",message:queryOption.error},jsonOutput,client,telemetry),2;let filters=queryOption.value;if(prod&&environmentFlag!==void 0)return handleValidationError({valid:!1,code:"CONFLICTING_OPTIONS",message:"Can't use --prod with --environment. Use --environment."},jsonOutput,client,telemetry),2;if(environmentFlag!==void 0&&!ENVIRONMENT_PATTERN.test(environmentFlag))return handleValidationError({valid:!1,code:"INVALID_ENVIRONMENT",message:`Can't query metrics for environment ${JSON.stringify(environmentFlag)}. Environments use letters, numbers, and hyphens, like production or preview.`},jsonOutput,client,telemetry),2;warnDeprecatedProdFlag(client,flags);let environment=environmentFlag??(prod?"production":void 0),orderByResult=validateOrderBy(orderByInput);if(!orderByResult.valid)return handleValidationError(orderByResult,jsonOutput,client,telemetry);let orderByMode=orderByResult.value,requiredMetric=validateRequiredMetric(metricFlag);if(!requiredMetric.valid)return handleValidationError(requiredMetric,jsonOutput,client,telemetry);let metric=requiredMetric.value;warnIfFidMetric(metric);let mutualResult=validateAllProjectMutualExclusivity(all,project);if(!mutualResult.valid)return handleValidationError(mutualResult,jsonOutput,client,telemetry);let orderDirectionResult=validateOrderDirection(orderInput);if(!orderDirectionResult.valid)return handleValidationError(orderDirectionResult,jsonOutput,client,telemetry);let orderDirection=orderDirectionResult.value,scopeResult=await resolveQueryScope(client,telemetry,{project,all,jsonOutput});if(typeof scopeResult=="number")return scopeResult;let{scope,accountId,teamName,projectName}=scopeResult,isPlatformMetric=metric.startsWith("vercel."),useCanonicalQuery=!isPlatformMetric||!process.env.FF_LEGACY_METRICS,filterUsesOData=usesODataSyntax(filters);useCanonicalQuery&&filterUsesOData&&output_manager_default.print(`${import_chalk.default.yellow("!")} ${FILTER_DEPRECATION_WARNING}
12
- `);let filter=combineFilters(filters,environment,useCanonicalQuery&&!filterUsesOData?"kql":"odata"),startTime,endTime;try{({startTime,endTime}=resolveTimeRange(since,until))}catch(err){let errMsg=err instanceof Error?err.message:String(err);return handleValidationError({valid:!1,code:"INVALID_TIME",message:errMsg},jsonOutput,client,telemetry)}let metricUnit,aggregationInput,canonicalAggregations;if(useCanonicalQuery){let catalogOrExitCode=await fetchCatalogMetricDetailOrExit(client,accountId,jsonOutput,metric,isPlatformMetric?"system":"custom",startTime.toISOString());if(typeof catalogOrExitCode=="number")return telemetry.trackCliError("SCHEMA_FETCH_FAILED"),catalogOrExitCode;let catalogMetric=catalogOrExitCode.find(item=>item.id===metric);metricUnit=catalogMetric?.unit,canonicalAggregations=catalogMetric?.aggregations,aggregationInput=aggregationFlag??(catalogMetric&&getCatalogDefaultAggregation(catalogMetric,isPlatformMetric))??getUndiscoveredDefaultAggregation(metric)}else{let detailOrExitCode=await fetchMetricDetailOrExit(client,accountId,metric,jsonOutput);if(typeof detailOrExitCode=="number")return telemetry.trackCliError("SCHEMA_FETCH_FAILED"),detailOrExitCode;aggregationInput=aggregationFlag??getDefaultAggregation(detailOrExitCode,metric)??"sum",metricUnit=detailOrExitCode.find(item=>item.id===metric)?.unit??"count"}let aggregation=aggregationInput,orderBy=getRequestOrderBy(metric,aggregation,orderByMode),rangeMs=endTime.getTime()-startTime.getTime(),granResult=computeGranularity(rangeMs,granularity),queryTimeRange=useCanonicalQuery?alignTimeRangeToGranularity(startTime,endTime,granResult.duration):{startTime,endTime};!jsonOutput&&granResult.adjusted&&granResult.notice&&output_manager_default.log(`Notice: ${granResult.notice}`);let body,canonicalOrderBy;if(!useCanonicalQuery)body={scope,metric,aggregation,startTime:startTime.toISOString(),endTime:endTime.toISOString(),granularity:granResult.duration,...bucketTimezone?{bucketTimezone}:{},...groupBy.length>0?{groupBy}:{},...filter?{filter}:{},limit:limit??10,...orderBy?{orderBy}:{},...orderDirection?{orderDirection}:{}};else{if(bucketTimezone)return handleValidationError({valid:!1,code:"UNSUPPORTED_BUCKET_TIMEZONE",message:"--bucket-timezone is not supported by the new Observability query API yet."},jsonOutput,client,telemetry);let selection=toCanonicalMetricSelection(metric,aggregation,canonicalAggregations);canonicalOrderBy=groupBy.length>0?getCanonicalOrderBy(orderByMode,selection,canonicalAggregations):void 0,body=createCanonicalMetricsRequest({scope,metric,selection,startTime:queryTimeRange.startTime,endTime:queryTimeRange.endTime,granularity:granResult.duration,groupBy,filter,limit:limit??10,orderBy:canonicalOrderBy,orderDirection})}let resolvedOrderBy=canonicalOrderBy??orderByMode;jsonOutput||output_manager_default.spinner("Querying metrics...");let response;try{if(!useCanonicalQuery)response=await client.fetch("/v2/observability/query",{method:"POST",body:JSON.stringify(body),headers:{"Content-Type":"application/json"},accountId,bailOn429:!0});else{let canonicalResponse=await client.fetch(OBSERVABILITY_METRICS_PATH,{method:"POST",body:JSON.stringify(body),headers:{"Content-Type":"application/json"},accountId,bailOn429:!0});response=canonicalResponseToMetricsResponse(canonicalResponse,getRollupColumnName(metric,aggregation),canonicalOrderBy,groupBy.length>0?orderDirection??"desc":void 0)}}catch(err){if(isAPIError(err))return telemetry.trackCliError(err.code??"API_ERROR",err.status),handleApiError(err,jsonOutput,client,{},{scope:accountId.startsWith("team_")?teamName||accountId:void 0,projectName});let errMsg=err instanceof Error?err.message:String(err);return telemetry.trackCliError("NETWORK_ERROR"),jsonOutput?client.stdout.write(formatErrorJson("NETWORK_ERROR",errMsg)):output_manager_default.error(errMsg),1}finally{jsonOutput||output_manager_default.stopSpinner()}return jsonOutput?client.stdout.write(formatQueryJson({metric,aggregation,groupBy,filter,startTime:queryTimeRange.startTime.toISOString(),endTime:queryTimeRange.endTime.toISOString(),granularity:granResult.duration,...bucketTimezone?{bucketTimezone}:{},...resolvedOrderBy?{orderBy:resolvedOrderBy}:{},...orderDirection?{orderDirection}:{}},response,[queryOption.warning])):client.stdout.write(formatText(response,{metric,metricUnit,aggregation,groupBy,filter,scope,projectName,teamName,periodStart:queryTimeRange.startTime.toISOString(),periodEnd:queryTimeRange.endTime.toISOString(),granularity:granResult.duration,bucketTimezone,orderBy:resolvedOrderBy,orderDirection})),0}export{query as default};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{performDeviceCodeFlow}from"./chunk-4T57TXQ3.js";import"./chunk-PVASGBEF.js";import"./chunk-SLCPSRDR.js";import"./chunk-NDMQVBTV.js";import"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function reauthenticate(client,error){let{tokenSource}=client.authConfig,reauthAction=error.enforced?"SAML re-authentication is required":"Re-authentication is required";if(tokenSource==="flag")throw new Error(`${reauthAction} for ${(0,import_chalk.bold)(error.scope)} scope, but the token provided via \`--token\` does not have access. Provide a token that is authorized for that scope.`);if(tokenSource==="env")throw new Error(`${reauthAction} for ${(0,import_chalk.bold)(error.scope)} scope, but the token provided via the VERCEL_TOKEN environment variable does not have access. Set VERCEL_TOKEN to a token that is authorized for that scope.`);if(!client.stdin.isTTY&&process.env.CI)throw new Error(`${reauthAction} for ${(0,import_chalk.bold)(error.scope)} scope, but the current environment is non-interactive so the device-code flow cannot be completed. Run \`vercel login\` in an interactive shell, or set VERCEL_TOKEN / pass \`--token\` with a token that is authorized for that scope.`);error.teamId&&error.enforced?output_manager_default.log(`You must re-authenticate with SAML to use ${(0,import_chalk.bold)(error.scope)} scope.`):output_manager_default.log(`You must re-authenticate to use ${(0,import_chalk.bold)(error.scope)} scope.`);let tokens=await performDeviceCodeFlow(client,{teamId:error.teamId||void 0});return tokens?(client.updateAuthConfig({token:tokens.access_token,userId:void 0,expiresAt:Math.floor(Date.now()/1e3)+tokens.expires_in,refreshToken:tokens.refresh_token,dpop:tokens.dpop}),client.persistAuthConfig(),output_manager_default.success(`Authentication complete for ${(0,import_chalk.bold)(error.scope)} scope.`),{token:tokens.access_token,email:""}):1}export{reauthenticate as default};
@@ -1,9 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{rejectUnexpectedArgs,resolveBudgetTeam}from"./chunk-CFYLTZSV.js";import{TEAM_BUDGET,budgetAmountDollars,findBudget,formatUsdWhole,removeBudget,removeReceipt}from"./chunk-RAQ6EUNL.js";import{removeSubcommand}from"./chunk-74VQ7PQV.js";import{printError}from"./chunk-NDMQVBTV.js";import{TelemetryClient}from"./chunk-MBXLL2HF.js";import"./chunk-2EYYB6YN.js";import"./chunk-NWGBDBZI.js";import"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-4NTBYNFR.js";import{parseArguments}from"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import{validateJsonOutput}from"./chunk-SDYCW5JM.js";import"./chunk-4SAVH3H7.js";import{isAPIError}from"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-PUKYAALC.js";import{getFlagsSpecification}from"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-Q2QVK3TH.js";import"./chunk-BZENIQ7N.js";var BudgetRemoveTelemetryClient=class extends TelemetryClient{trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliOptionFormat(format){format&&this.trackCliOption({option:"format",value:format})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};async function remove(client,argv){let telemetry=new BudgetRemoveTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(removeSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{flags:opts,args}=parsedArgs,yes=opts["--yes"];if(rejectUnexpectedArgs(args,"billing budgets remove"))return 2;let formatResult=validateJsonOutput(opts);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliFlagYes(yes),telemetry.trackCliOptionFormat(opts["--format"]?"json":void 0),telemetry.trackCliFlagJson(opts["--json"]);let team=await resolveBudgetTeam(client);if(!team)return 2;let selector=TEAM_BUDGET;output_manager_default.spinner("Fetching budgets\u2026");let target;try{target=await findBudget(client,selector)}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}if(output_manager_default.stopSpinner(),!target)return asJson?client.stdout.write(`${JSON.stringify(removeReceipt({team,alreadyAbsent:!0,disabled:null,scope:selector.scope}),null,2)}
8
- `):output_manager_default.log(`No budget to remove on team ${team.slug}.`),0;let amountLabel=formatUsdWhole(budgetAmountDollars(target));if(!yes){if(!client.stdin.isTTY||client.nonInteractive)return output_manager_default.error("To remove in non-interactive mode, re-run with --yes."),2;if(!await client.input.confirm(`Remove the ${amountLabel} budget on team ${team.slug}?`,!1))return output_manager_default.log("Canceled."),0}output_manager_default.spinner(`Removing budget on team ${team.slug}\u2026`);try{await removeBudget(client,target.id)}catch(err){if(output_manager_default.stopSpinner(),isAPIError(err))return output_manager_default.error(err.message),1;throw err}return output_manager_default.stopSpinner(),asJson?(client.stdout.write(`${JSON.stringify(removeReceipt({team,alreadyAbsent:!1,disabled:target.id,scope:selector.scope}),null,2)}
9
- `),0):(output_manager_default.success(`Removed the ${amountLabel} budget on team ${team.slug}.`),0)}export{remove as default};
@@ -1,10 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{getRouteVersions}from"./chunk-BVH2AEFE.js";import{getRoutes,offerAutoPromote,parsePosition,parseSubcommandArgs,resolveRoute,shellQuoteRouteIdentifierForSuggestion,withGlobalFlags}from"./chunk-C5QEQSEX.js";import{requireProjectContext}from"./chunk-7LPNDK2O.js";import"./chunk-UNPK7LVC.js";import{stamp_default}from"./chunk-A2RZZQEP.js";import"./chunk-Q7D7RGXM.js";import"./chunk-JUSNW3IF.js";import{reorderSubcommand}from"./chunk-ECFLIVEE.js";import"./chunk-NDMQVBTV.js";import"./chunk-NSPW47RU.js";import{outputAgentError}from"./chunk-5X635INY.js";import"./chunk-FYE7ILRR.js";import"./chunk-2J35YKA2.js";import"./chunk-4HR3I3ML.js";import"./chunk-PKNEWN4W.js";import"./chunk-ITQPDXXA.js";import"./chunk-GL66K54F.js";import"./chunk-4NTBYNFR.js";import"./chunk-AYZ52QDF.js";import"./chunk-2VBFQZ72.js";import"./chunk-SDYCW5JM.js";import"./chunk-LUX4PBJL.js";import"./chunk-OPORM35X.js";import"./chunk-MXTC4ZAQ.js";import"./chunk-ZS2WS4AM.js";import"./chunk-4SAVH3H7.js";import"./chunk-4DMKP6AO.js";import"./chunk-VRH7LWOC.js";import"./chunk-DBT6PGEH.js";import{output_manager_default}from"./chunk-GZLYNPNU.js";import"./chunk-BLUPZPAS.js";import"./chunk-5MDNVAE6.js";import"./chunk-OCR5CRTH.js";import"./chunk-RM3ZDRYE.js";import"./chunk-YHPPP3SF.js";import"./chunk-AMPJ6RWT.js";import"./chunk-2BKALEOP.js";import{require_source}from"./chunk-NB2WLB3J.js";import"./chunk-ISWW3DKF.js";import"./chunk-BULSRTQE.js";import"./chunk-BRQUZ5NC.js";import"./chunk-D6REP5QQ.js";import"./chunk-FBYA6LLM.js";import"./chunk-MY4MONOH.js";import"./chunk-7EJQLVWX.js";import"./chunk-SCV7XEEO.js";import"./chunk-Q2QVK3TH.js";import{__toESM}from"./chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);async function stageRoutes(client,projectId,routes,overwrite,options={}){let{teamId}=options,query=new URLSearchParams;teamId&&query.set("teamId",teamId);let queryString=query.toString(),url=`/v1/projects/${projectId}/routes${queryString?`?${queryString}`:""}`;return await client.fetch(url,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({routes,overwrite})})}async function reorder(client,argv){let parsed=await parseSubcommandArgs(argv,reorderSubcommand,client);if(typeof parsed=="number")return parsed;let link=await requireProjectContext(client,"routes",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,teamId=org.type==="team"?org.id:void 0,{args,flags}=parsed,skipConfirmation=flags["--yes"],identifier=args[0];if(!identifier)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"missing_arguments",message:"Route name or ID and position are required.",next:[{command:withGlobalFlags(client,"routes move <name-or-id> --position <pos> --yes"),when:"replace placeholders; --first/--last or numeric position"}]},2),output_manager_default.error(`Route name or ID is required. Usage: ${withGlobalFlags(client,"routes move <name-or-id> --position <pos>")}`),2;let{versions}=await getRouteVersions(client,project.id,{teamId}),existingStagingVersion=versions.find(v=>v.isStaging);output_manager_default.spinner("Fetching routes");let{routes}=await getRoutes(client,project.id,{teamId});if(output_manager_default.stopSpinner(),routes.length===0)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"not_found",message:"No routes found in this project."},1),output_manager_default.error("No routes found in this project."),1;if(routes.length===1)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:"Cannot move a route when there is only one route."},2),output_manager_default.error("Cannot move a route when there is only one route."),2;let route=await resolveRoute(client,routes,identifier);if(!route)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"not_found",message:`No route found matching "${identifier}".`,next:[{command:withGlobalFlags(client,"routes list"),when:"list routes"}]},1),output_manager_default.error(`No route found matching "${identifier}". Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see all routes.`),1;let currentIndex=routes.findIndex(r=>r.id===route.id),currentPosition=currentIndex+1,targetIndex,positionFlag=flags["--position"],firstFlag=flags["--first"],lastFlag=flags["--last"];if(firstFlag)targetIndex=0;else if(lastFlag)targetIndex=routes.length;else if(positionFlag)if(positionFlag==="first")targetIndex=0;else if(positionFlag==="last")targetIndex=routes.length;else{let num=parseInt(positionFlag,10);if(!isNaN(num)&&String(num)===positionFlag){if(num<1){let msg="Position must be 1 or greater. Positions are 1-based (e.g. --position 1 for first). Use --first or --last instead of 0.";return client.nonInteractive?(outputAgentError(client,{status:"error",reason:"invalid_arguments",message:msg,next:[{command:withGlobalFlags(client,`routes move ${shellQuoteRouteIdentifierForSuggestion(identifier)} --first --yes`),when:"move to first position"},{command:withGlobalFlags(client,`routes move ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position 1 --yes`),when:"same as first (1-based index)"},{command:withGlobalFlags(client,`routes move ${shellQuoteRouteIdentifierForSuggestion(identifier)} --last --yes`),when:"move to last position"}],hint:"Numeric --position uses 1-based indices; there is no position 0."},2),2):(output_manager_default.error(msg),2)}targetIndex=Math.min(num-1,routes.length)}else try{let pos=parsePosition(positionFlag);if(pos.placement==="start")targetIndex=0;else if(pos.placement==="end")targetIndex=routes.length;else if(pos.placement==="after"&&pos.referenceId){let refIndex=routes.findIndex(r=>r.id===pos.referenceId);if(refIndex===-1)return output_manager_default.error(`Reference route "${pos.referenceId}" not found. Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see route IDs.`),1;targetIndex=refIndex+1}else if(pos.placement==="before"&&pos.referenceId){let refIndex=routes.findIndex(r=>r.id===pos.referenceId);if(refIndex===-1)return output_manager_default.error(`Reference route "${pos.referenceId}" not found. Run ${import_chalk.default.cyan(withGlobalFlags(client,"routes list"))} to see route IDs.`),1;targetIndex=refIndex}else return output_manager_default.error("Invalid position specification."),1}catch(e){return output_manager_default.error(`${e instanceof Error?e.message:"Invalid position"}. Usage: ${withGlobalFlags(client,"routes move <name-or-id> --position <pos>")}`),2}}else{client.nonInteractive&&outputAgentError(client,{status:"error",reason:"missing_arguments",message:"Target position is required. Use --position <n|first|last|after:id|before:id> or --first / --last.",next:[{command:withGlobalFlags(client,`routes move ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position <pos> --yes`),when:"replace <pos> with numeric position or first/last"}]},2),output_manager_default.print(`
8
- `),output_manager_default.log("Current route order:");for(let i=0;i<routes.length;i++){let r=routes[i],isCurrent=r.id===route.id,prefix=isCurrent?import_chalk.default.cyan("\u2192"):" ",num=import_chalk.default.gray(`${i+1}.`),name=isCurrent?import_chalk.default.bold(r.name):r.name,src=import_chalk.default.gray(`(${r.route.src})`),marker=isCurrent?import_chalk.default.cyan(" \u2190 current"):"";output_manager_default.print(` ${prefix} ${num} ${name} ${src}${marker}
9
- `)}output_manager_default.print(`
10
- `);let input=await client.input.text({message:`Move "${route.name}" to position (1-${routes.length}, "first", or "last"):`,validate:val=>{if(!val)return"Position is required";if(val==="first"||val==="last")return!0;let num=parseInt(val,10);return isNaN(num)||num<1||num>routes.length?`Enter a number between 1 and ${routes.length}, "first", or "last"`:!0}});input==="first"?targetIndex=0:input==="last"?targetIndex=routes.length:targetIndex=parseInt(input,10)-1}let adjustedTarget=currentIndex<targetIndex?targetIndex-1:targetIndex,clampedTarget=Math.max(0,Math.min(adjustedTarget,routes.length-1));if(currentIndex===clampedTarget)return output_manager_default.log(`Route "${route.name}" is already at position ${currentPosition}.`),0;let finalPosition=clampedTarget+1;if(!skipConfirmation&&(client.nonInteractive&&outputAgentError(client,{status:"error",reason:"confirmation_required",message:"Move requires confirmation. Pass --yes in non-interactive mode.",next:[{command:withGlobalFlags(client,`routes move ${shellQuoteRouteIdentifierForSuggestion(identifier)} --position ${finalPosition} --yes`),when:"re-run with --yes"}]},1),!await client.input.confirm(`Move "${route.name}" from position ${currentPosition} to position ${finalPosition}?`,!0)))return output_manager_default.log("Aborted."),0;let reordered=[...routes];reordered.splice(currentIndex,1),reordered.splice(clampedTarget,0,route);let reorderStamp=stamp_default();output_manager_default.spinner(`Moving route "${route.name}"`);try{let{version}=await stageRoutes(client,project.id,reordered,!0,{teamId});return output_manager_default.log(`${import_chalk.default.cyan("Moved")} "${route.name}" from position ${currentPosition} to ${finalPosition} ${import_chalk.default.gray(reorderStamp())}`),await offerAutoPromote(client,project.id,version,!!existingStagingVersion,{teamId,skipPrompts:skipConfirmation}),0}catch(e){let error=e;return output_manager_default.error(error.message||"Failed to move route"),1}}export{reorder as default};