@vercel/cli-support 65.3.1 → 65.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/add-7NS6HIWC.js +8 -0
  3. package/dist/chunks/add-NMYFDVXW.js +8 -0
  4. package/dist/chunks/add-PMJ5BECU.js +8 -0
  5. package/dist/chunks/build-BCY6HQJG.js +7 -0
  6. package/dist/chunks/{chunk-SKYDLHEZ.js → chunk-2K3ISCQ6.js} +1 -1
  7. package/dist/chunks/{chunk-BL3HBRF6.js → chunk-2TUVL6WE.js} +1 -1
  8. package/dist/chunks/{chunk-22FDWPWY.js → chunk-363SJ4TN.js} +1 -1
  9. package/dist/chunks/chunk-462YCCJZ.js +7 -0
  10. package/dist/chunks/{chunk-KNLGWGUE.js → chunk-4N6LMERQ.js} +6 -6
  11. package/dist/chunks/chunk-527GBU3K.js +7 -0
  12. package/dist/chunks/chunk-5IWFRZQT.js +10 -0
  13. package/dist/chunks/chunk-5KUUMQ3M.js +7 -0
  14. package/dist/chunks/{chunk-IVSC7ZFJ.js → chunk-5V53NA6C.js} +1 -1
  15. package/dist/chunks/chunk-6I6QJHCY.js +7 -0
  16. package/dist/chunks/chunk-6TXEVQA4.js +7 -0
  17. package/dist/chunks/{chunk-2PKEEQ5W.js → chunk-6YXIWZ3X.js} +1 -1
  18. package/dist/chunks/{chunk-7HV7O6DM.js → chunk-7E3WREH5.js} +1 -1
  19. package/dist/chunks/{chunk-Y6AGOERS.js → chunk-7L5QUDUR.js} +1 -1
  20. package/dist/chunks/{chunk-X4762EE4.js → chunk-7QAGSRCU.js} +1 -1
  21. package/dist/chunks/{chunk-NTZ5WWYV.js → chunk-7R6TRRG5.js} +1 -1
  22. package/dist/chunks/{chunk-WCWP4GBR.js → chunk-AYUUSAB7.js} +1 -1
  23. package/dist/chunks/chunk-BVGGTBYE.js +7 -0
  24. package/dist/chunks/{chunk-YN3C5BL5.js → chunk-C7FQMC6D.js} +1 -1
  25. package/dist/chunks/{chunk-2U7DJZSQ.js → chunk-CBVKB3DT.js} +1 -1
  26. package/dist/chunks/{chunk-FDNYYENK.js → chunk-CC6FLKIP.js} +1 -1
  27. package/dist/chunks/chunk-CR3NBTHV.js +7 -0
  28. package/dist/chunks/{chunk-BBKEP7RO.js → chunk-CWM2F235.js} +1 -1
  29. package/dist/chunks/{chunk-IUXSJWL3.js → chunk-DKJL2KV7.js} +1 -1
  30. package/dist/chunks/{chunk-2ACMWVTB.js → chunk-DQ2SVW4R.js} +1 -1
  31. package/dist/chunks/{chunk-SLI2O5X7.js → chunk-EAXMWCOL.js} +2 -2
  32. package/dist/chunks/{chunk-LRYGNQ6C.js → chunk-ECEDD646.js} +1 -1
  33. package/dist/chunks/{chunk-IGDG5CWT.js → chunk-EEUJLJEJ.js} +1 -1
  34. package/dist/chunks/{chunk-VQSLPYAF.js → chunk-EGNR2DEI.js} +1 -1
  35. package/dist/chunks/chunk-EISD3RG7.js +11 -0
  36. package/dist/chunks/{chunk-GVTXA6HG.js → chunk-EKZTFGDX.js} +1 -1
  37. package/dist/chunks/{chunk-CEMPU323.js → chunk-EU2GBIPC.js} +1 -1
  38. package/dist/chunks/{chunk-3ADDGPEN.js → chunk-F6EBOT64.js} +1 -1
  39. package/dist/chunks/chunk-FHU2O7ZJ.js +8 -0
  40. package/dist/chunks/{chunk-KH6565YH.js → chunk-FLHO75XC.js} +1 -1
  41. package/dist/chunks/chunk-FSPPKNKN.js +7 -0
  42. package/dist/chunks/{chunk-43GBAKL2.js → chunk-GCZVIDNG.js} +1 -1
  43. package/dist/chunks/{chunk-G4T7VBGN.js → chunk-HSFKISDH.js} +1 -1
  44. package/dist/chunks/{chunk-OQCMRU3J.js → chunk-HTXDC7E2.js} +2 -2
  45. package/dist/chunks/{chunk-76SVVWPH.js → chunk-IOZ3I765.js} +1 -1
  46. package/dist/chunks/{chunk-UKQMYTWW.js → chunk-JLE7K4SY.js} +1 -1
  47. package/dist/chunks/{chunk-3JGBBS6V.js → chunk-JP33AIDQ.js} +1 -1
  48. package/dist/chunks/{chunk-ULHNMQ7C.js → chunk-JRPNHWA3.js} +1 -1
  49. package/dist/chunks/{chunk-D2BZMGHP.js → chunk-JUSR7V2L.js} +1 -1
  50. package/dist/chunks/{chunk-XB4SKARZ.js → chunk-JWCEHQQF.js} +1 -1
  51. package/dist/chunks/chunk-K5U47EVH.js +7 -0
  52. package/dist/chunks/{chunk-VOCZ34ON.js → chunk-KCKYPLIH.js} +1 -1
  53. package/dist/chunks/{chunk-2WYYGGEO.js → chunk-KGBIRIFF.js} +1 -1
  54. package/dist/chunks/{chunk-RRREFECI.js → chunk-KJA2GKPT.js} +1 -1
  55. package/dist/chunks/{chunk-S5IWVPYT.js → chunk-KPQLUGFI.js} +1 -1
  56. package/dist/chunks/{chunk-S4SJ7GIZ.js → chunk-KQCFC2JL.js} +1 -1
  57. package/dist/chunks/{chunk-XXXRTHTP.js → chunk-KQCROPL3.js} +1 -1
  58. package/dist/chunks/{chunk-3KKFLKQG.js → chunk-KY335KWI.js} +1 -1
  59. package/dist/chunks/{chunk-OWOWPOIE.js → chunk-L3JYCXVB.js} +1 -1
  60. package/dist/chunks/chunk-LFOWP74R.js +7 -0
  61. package/dist/chunks/{chunk-PFNYWWLI.js → chunk-LOBA3E72.js} +1 -1
  62. package/dist/chunks/{chunk-XZV4BFM5.js → chunk-LQVSU5HR.js} +1 -1
  63. package/dist/chunks/{chunk-2H3SB5RP.js → chunk-LW4N3CW6.js} +1 -1
  64. package/dist/chunks/{chunk-6ISAISGD.js → chunk-M2NXKZKX.js} +1 -1
  65. package/dist/chunks/{chunk-F2SWJEYV.js → chunk-MBEKRUTQ.js} +1 -1
  66. package/dist/chunks/{chunk-UJSW56GS.js → chunk-N2FLYCCO.js} +1 -1
  67. package/dist/chunks/{chunk-ZH6KHD55.js → chunk-N6JBQMOF.js} +2 -2
  68. package/dist/chunks/{chunk-OCQPXOTX.js → chunk-NAX6IARA.js} +1 -1
  69. package/dist/chunks/{chunk-4UGHFESV.js → chunk-NGKO2OOU.js} +1 -1
  70. package/dist/chunks/chunk-NW7WWUCQ.js +9 -0
  71. package/dist/chunks/chunk-O4WNSKQR.js +15 -0
  72. package/dist/chunks/{chunk-7Z3WUAO5.js → chunk-O72YDZKD.js} +1 -1
  73. package/dist/chunks/{chunk-LKLH6DZP.js → chunk-OHEOYFBU.js} +1 -1
  74. package/dist/chunks/{chunk-LJBUJ23M.js → chunk-OZCQTXI4.js} +1 -1
  75. package/dist/chunks/{chunk-LCHECISY.js → chunk-Q4KTAQB3.js} +1 -1
  76. package/dist/chunks/{chunk-TZFDVQ72.js → chunk-QIVX6SCR.js} +1 -1
  77. package/dist/chunks/{chunk-7Y46LB43.js → chunk-QVHXFHBV.js} +1 -1
  78. package/dist/chunks/chunk-QVXS234E.js +7 -0
  79. package/dist/chunks/{chunk-SXOSF4O6.js → chunk-QVZAAMGQ.js} +1 -1
  80. package/dist/chunks/chunk-R2BUF6Z7.js +7 -0
  81. package/dist/chunks/{chunk-OGPENBY2.js → chunk-R2XHJDAP.js} +1 -1
  82. package/dist/chunks/{chunk-E6CO6TUM.js → chunk-RMZTB2IU.js} +1 -1
  83. package/dist/chunks/{chunk-LT3UK4K6.js → chunk-SLGUYM42.js} +1 -1
  84. package/dist/chunks/{chunk-7BGKE3JW.js → chunk-SYFG2RM6.js} +1 -1
  85. package/dist/chunks/chunk-T6243EDS.js +7 -0
  86. package/dist/chunks/chunk-TAISZMA2.js +7 -0
  87. package/dist/chunks/{chunk-TO5PJDEN.js → chunk-TEYREL44.js} +1 -1
  88. package/dist/chunks/{chunk-6KVHNQW4.js → chunk-TIPQQ4TG.js} +1 -1
  89. package/dist/chunks/{chunk-DUT4U5YY.js → chunk-U2OBPULW.js} +1 -1
  90. package/dist/chunks/{chunk-OQPXJCMK.js → chunk-UGNIIDHR.js} +1 -1
  91. package/dist/chunks/{chunk-NQWGRKF4.js → chunk-UHBMX3OK.js} +1 -1
  92. package/dist/chunks/{chunk-QMCHGGDX.js → chunk-VNIKIQVE.js} +1 -1
  93. package/dist/chunks/{chunk-DGYHWXD2.js → chunk-WDXW6A4H.js} +2 -2
  94. package/dist/chunks/{chunk-L4NSF346.js → chunk-WEH6XC4Y.js} +1 -1
  95. package/dist/chunks/{chunk-TKBORMUF.js → chunk-WKZ6JSGZ.js} +1 -1
  96. package/dist/chunks/{chunk-WGXKX24Q.js → chunk-WVHCBDTB.js} +1 -1
  97. package/dist/chunks/{chunk-COM5YCHF.js → chunk-XC46OAAT.js} +1 -1
  98. package/dist/chunks/{chunk-WBF36MYT.js → chunk-XVDRGWXM.js} +1 -1
  99. package/dist/chunks/{chunk-IKQTP764.js → chunk-Y5ZMKL7E.js} +1 -1
  100. package/dist/chunks/{chunk-NEFDNROD.js → chunk-YEZJNXQX.js} +1 -1
  101. package/dist/chunks/{chunk-VMMMBWD3.js → chunk-YHULP2KK.js} +1 -1
  102. package/dist/chunks/{chunk-OMCGXRSA.js → chunk-YMZ6WBKB.js} +2 -2
  103. package/dist/chunks/{chunk-URPEIX6M.js → chunk-ZN6CQWVP.js} +1 -1
  104. package/dist/chunks/{chunk-YK7XLFU2.js → chunk-ZQBSAMFL.js} +1 -1
  105. package/dist/chunks/clear-FKVWDCVA.js +8 -0
  106. package/dist/chunks/{compile-vercel-config-3IYM2CHC.js → compile-vercel-config-GWAJE44R.js} +1 -1
  107. package/dist/chunks/config-5WVLG5SE.js +8 -0
  108. package/dist/chunks/{config-ZFIC7N4D.js → config-RMOHN5YT.js} +1 -1
  109. package/dist/chunks/config-validator.mjs +1 -1
  110. package/dist/chunks/{constants-ICJL2EO5.js → constants-JAB7MRSK.js} +1 -1
  111. package/dist/chunks/delete-5WMB4WFR.js +9 -0
  112. package/dist/chunks/delete-EM4JZPFA.js +10 -0
  113. package/dist/chunks/{detect-services-MOXTX5XG.js → detect-services-BSJGB4RM.js} +1 -1
  114. package/dist/chunks/disable-QOM7UHQC.js +7 -0
  115. package/dist/chunks/discard-L5ZH7P5B.js +14 -0
  116. package/dist/chunks/edit-F3VJGCG2.js +9 -0
  117. package/dist/chunks/edit-TM7YCWBU.js +8 -0
  118. package/dist/chunks/enable-72C3QX34.js +7 -0
  119. package/dist/chunks/{export-MHSH7QCX.js → export-EPLYZF2Q.js} +1 -1
  120. package/dist/chunks/{future-FFOGTKMF.js → future-V77DRMQG.js} +1 -1
  121. package/dist/chunks/generate-cert-for-deploy-Y3YHBMPU.js +7 -0
  122. package/dist/chunks/{image-7METSS6F.js → image-CVXEXU5R.js} +1 -1
  123. package/dist/chunks/{import-builders-GM2SERWV.js → import-builders-PGRKJOOE.js} +1 -1
  124. package/dist/chunks/inspect-BTRNXRJT.js +9 -0
  125. package/dist/chunks/{inspect-IAWVHJXQ.js → inspect-CZ7WXYE5.js} +1 -1
  126. package/dist/chunks/inspect-FGDVWAQP.js +13 -0
  127. package/dist/chunks/{inspect-A7WJQQZO.js → inspect-HFDGZNWC.js} +1 -1
  128. package/dist/chunks/{inspect-DI434TAM.js → inspect-T2AIREYK.js} +1 -1
  129. package/dist/chunks/list-CKRRHAOE.js +12 -0
  130. package/dist/chunks/{list-WWU734RK.js → list-FLREMGJR.js} +1 -1
  131. package/dist/chunks/{list-INRPH25K.js → list-ON4YTQRN.js} +1 -1
  132. package/dist/chunks/login-55LJ5ZA6.js +9 -0
  133. package/dist/chunks/{login-R5NQRPQC.js → login-DQRZSD4Z.js} +1 -1
  134. package/dist/chunks/logs-2HQXWOHM.js +7 -0
  135. package/dist/chunks/{ls-S5E2NQMI.js → ls-2HUJHVLA.js} +1 -1
  136. package/dist/chunks/{ls-V2ZSIVO3.js → ls-3DVM5HLK.js} +1 -1
  137. package/dist/chunks/ls-4B3QYHCI.js +8 -0
  138. package/dist/chunks/{ls-MCQ2NS65.js → ls-A7K4XDQB.js} +1 -1
  139. package/dist/chunks/{ls-LIGIBVAT.js → ls-FK5XEJEU.js} +1 -1
  140. package/dist/chunks/{ls-VXH4QYF5.js → ls-QGUKJJY5.js} +1 -1
  141. package/dist/chunks/ls-VTKHPDWS.js +11 -0
  142. package/dist/chunks/mutate-7ADZBCZM.js +9 -0
  143. package/dist/chunks/{notifications-KFZ333V5.js → notifications-XZJXE2K4.js} +1 -1
  144. package/dist/chunks/open-EE5IZQD7.js +7 -0
  145. package/dist/chunks/{openapi-JGYEFJJV.js → openapi-QBX62ZXC.js} +1 -1
  146. package/dist/chunks/{permissions-ZSHKMXBZ.js → permissions-VYJ4LL5R.js} +1 -1
  147. package/dist/chunks/{plugin-offer-Z6FCPQFD.js → plugin-offer-TEGYA3TA.js} +1 -1
  148. package/dist/chunks/{prompt-missing-credentials-KOA7C4QC.js → prompt-missing-credentials-VP6OVCFM.js} +1 -1
  149. package/dist/chunks/publish-2HEK5UMJ.js +15 -0
  150. package/dist/chunks/pull-WRTTSY7J.js +7 -0
  151. package/dist/chunks/purchase-domain-if-available-6S3NLTUI.js +7 -0
  152. package/dist/chunks/push-L3QRGGLC.js +7 -0
  153. package/dist/chunks/{query-JGPO7TNY.js → query-FXXLX6UB.js} +3 -3
  154. package/dist/chunks/{reauthenticate-OZRQFR66.js → reauthenticate-IXQDC4UZ.js} +1 -1
  155. package/dist/chunks/reorder-B4OXSYCI.js +10 -0
  156. package/dist/chunks/reply-F637K6XH.js +9 -0
  157. package/dist/chunks/resolve-E3F6NYQZ.js +12 -0
  158. package/dist/chunks/{resolve-agent-team-KX77HEAF.js → resolve-agent-team-EIPCH766.js} +1 -1
  159. package/dist/chunks/restore-Q25KRZPH.js +16 -0
  160. package/dist/chunks/rm-FWD2NUGX.js +8 -0
  161. package/dist/chunks/rm-JMQ4QKCC.js +8 -0
  162. package/dist/chunks/rm-PPG7P3GN.js +8 -0
  163. package/dist/chunks/rm-SH3DYKNS.js +8 -0
  164. package/dist/chunks/rm-UEBLKFVC.js +8 -0
  165. package/dist/chunks/{routes-P6LKQCWH.js → routes-PKTWMDWQ.js} +1 -1
  166. package/dist/chunks/rule-inspect-LKQA5I4V.js +8 -0
  167. package/dist/chunks/{schema-YOEAK4VX.js → schema-FBV42W7N.js} +1 -1
  168. package/dist/chunks/{schema-BEUO7G52.js → schema-ZWE5MNMG.js} +1 -1
  169. package/dist/chunks/{select-org-OMLGQEKK.js → select-org-WMB752Z6.js} +1 -1
  170. package/dist/chunks/set-UTYIPOLC.js +7 -0
  171. package/dist/chunks/setup-and-link-ZLY5XQW5.js +7 -0
  172. package/dist/chunks/{skills-4J2NC2QI.js → skills-RKIGVVNM.js} +2 -2
  173. package/dist/chunks/{tags-ZXZQEXOV.js → tags-UCLZ5UMX.js} +1 -1
  174. package/dist/chunks/{types-SK6J2HFE.js → types-YM7TMHXW.js} +1 -1
  175. package/dist/chunks/{update-25CKNOY5.js → update-BGDQ5TXO.js} +1 -1
  176. package/dist/commands/build/index.js +1 -1
  177. package/dist/commands/deploy/index.js +4 -4
  178. package/dist/commands/dev/index.js +4 -4
  179. package/dist/commands/env/index.js +1 -1
  180. package/dist/commands/link/index.js +1 -1
  181. package/dist/commands/list/index.js +1 -1
  182. package/dist/commands/project/index.js +8 -8
  183. package/dist/commands-account.js +8 -8
  184. package/dist/commands-ai.js +12 -12
  185. package/dist/commands-blob.js +8 -8
  186. package/dist/commands-core.js +11 -11
  187. package/dist/commands-deployments.js +1 -1
  188. package/dist/commands-flags.js +6 -6
  189. package/dist/commands-integrations.js +16 -16
  190. package/dist/commands-observability.js +5 -5
  191. package/dist/commands-routing.js +18 -18
  192. package/dist/help.js +1 -1
  193. package/dist/index.js +5 -3
  194. package/dist/internal-build.js +1 -1
  195. package/dist/package.json +60 -61
  196. package/dist/root-help-commands.mjs +1 -1
  197. package/dist/vc.js +148 -137
  198. package/dist/version.mjs +1 -1
  199. package/package.json +54 -54
  200. package/dist/chunks/add-5YZQTIQM.js +0 -8
  201. package/dist/chunks/add-A524QQ2H.js +0 -8
  202. package/dist/chunks/add-V4JMUHKO.js +0 -8
  203. package/dist/chunks/build-K2PVDJZ4.js +0 -7
  204. package/dist/chunks/chunk-3AYYFYZG.js +0 -7
  205. package/dist/chunks/chunk-5IASAERQ.js +0 -7
  206. package/dist/chunks/chunk-76KGQU2G.js +0 -7
  207. package/dist/chunks/chunk-ABZEMNDR.js +0 -7
  208. package/dist/chunks/chunk-APZULWJC.js +0 -8
  209. package/dist/chunks/chunk-AWMQGOS2.js +0 -7
  210. package/dist/chunks/chunk-B4UE4LVE.js +0 -7
  211. package/dist/chunks/chunk-B4YYOSPY.js +0 -7
  212. package/dist/chunks/chunk-E2SADN6I.js +0 -7
  213. package/dist/chunks/chunk-IA3MXJRC.js +0 -8
  214. package/dist/chunks/chunk-IEPW2YRH.js +0 -7
  215. package/dist/chunks/chunk-LUBUI5GF.js +0 -7
  216. package/dist/chunks/chunk-OKEBIUKZ.js +0 -7
  217. package/dist/chunks/chunk-QZX7VG2V.js +0 -9
  218. package/dist/chunks/chunk-RUXO73ON.js +0 -7
  219. package/dist/chunks/chunk-TPNOSQZ3.js +0 -15
  220. package/dist/chunks/chunk-UNEGQPD3.js +0 -7
  221. package/dist/chunks/chunk-V7BEC3E4.js +0 -10
  222. package/dist/chunks/chunk-YHQ7PPXP.js +0 -7
  223. package/dist/chunks/clear-ZS4KQ7OT.js +0 -8
  224. package/dist/chunks/config-N2SBVW4T.js +0 -8
  225. package/dist/chunks/delete-2ZE2NVHI.js +0 -10
  226. package/dist/chunks/delete-AL57HZDQ.js +0 -9
  227. package/dist/chunks/disable-MKI3BKNH.js +0 -7
  228. package/dist/chunks/discard-SI4H7ST3.js +0 -14
  229. package/dist/chunks/edit-DNWH6SPE.js +0 -8
  230. package/dist/chunks/edit-WYNWDFUJ.js +0 -9
  231. package/dist/chunks/enable-J6MMYPYF.js +0 -7
  232. package/dist/chunks/generate-cert-for-deploy-YZKNGAEQ.js +0 -7
  233. package/dist/chunks/inspect-H2Q7XOWN.js +0 -13
  234. package/dist/chunks/inspect-H5JC2XKI.js +0 -9
  235. package/dist/chunks/list-ELEUTZWJ.js +0 -12
  236. package/dist/chunks/login-ZF2TLCQB.js +0 -9
  237. package/dist/chunks/logs-UD7FEXZ7.js +0 -7
  238. package/dist/chunks/ls-5ZEAKKPQ.js +0 -8
  239. package/dist/chunks/ls-IXRLAJ4L.js +0 -11
  240. package/dist/chunks/mutate-OQWOKLIW.js +0 -9
  241. package/dist/chunks/open-HH6K7ZRC.js +0 -7
  242. package/dist/chunks/publish-FPNQ2US4.js +0 -15
  243. package/dist/chunks/pull-7OGOIKB3.js +0 -7
  244. package/dist/chunks/purchase-domain-if-available-F4LKHVBD.js +0 -7
  245. package/dist/chunks/push-NY3SIK2C.js +0 -7
  246. package/dist/chunks/reorder-4J2STFUS.js +0 -10
  247. package/dist/chunks/reply-EO4NTTPW.js +0 -9
  248. package/dist/chunks/resolve-RPHHRPNM.js +0 -12
  249. package/dist/chunks/restore-TEA6TSVK.js +0 -16
  250. package/dist/chunks/rm-BPILSPUI.js +0 -8
  251. package/dist/chunks/rm-F6XVUDBM.js +0 -8
  252. package/dist/chunks/rm-JCPXV2FN.js +0 -8
  253. package/dist/chunks/rm-LPQRGX7N.js +0 -8
  254. package/dist/chunks/rm-WHUGT6TE.js +0 -8
  255. package/dist/chunks/rule-inspect-BOETGPFO.js +0 -8
  256. package/dist/chunks/set-5XY27S7R.js +0 -7
  257. package/dist/chunks/setup-and-link-A7M3QT52.js +0 -7
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{require_dist as require_dist3}from"../../chunks/chunk-JELLVPCM.js";import{readStandardInput}from"../../chunks/chunk-PSOVLGHP.js";import"../../chunks/chunk-XOETL6DB.js";import{getCustomEnvironments}from"../../chunks/chunk-F7AVGV4Y.js";import{suggestNextCommands}from"../../chunks/chunk-ANMDN3EG.js";import{isGuidanceEnabled}from"../../chunks/chunk-TAAWMNNL.js";import{formatEnvironment}from"../../chunks/chunk-JLEJB6KM.js";import{ellipsis}from"../../chunks/chunk-F4KY2TOK.js";import"../../chunks/chunk-ID663OJ7.js";import{CHECKBOX_INSTRUCTIONS}from"../../chunks/chunk-OFDTADPQ.js";import{require_execa}from"../../chunks/chunk-BUJITHGZ.js";import{formatTable}from"../../chunks/chunk-LSQREJXO.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-Q7D7RGXM.js";import"../../chunks/chunk-FBYA6LLM.js";import{ENV_VISIBILITY_DEPRECATION_MESSAGE,SENSITIVE_ENV_VALUE_PLACEHOLDER,formatVisibilityLabel,getApiPublicPrefix,getEnvKeyWarnings,getFrameworkPublicPrefix,getLocalSecretFallbackMessage,getLocalSvelteKitPublicPrefixes,getPublicPrefix,getPublicPrefixSecretVisibilityError,getUnavailableSecretValuesMessage,isFlagsSecretNeedingSplit,isSecretEnvVar,looksLikeSecret,looksLikeSecretValue,normalizeStdinEnvValue,pull,removePublicPrefix,resolveEnvVarTypeOption,resolveEnvVarVisibility,shouldConfirmRotationBeforeDelete,validateEnvValue}from"../../chunks/chunk-OWOWPOIE.js";import{getEnvRecords,pullEnvRecords}from"../../chunks/chunk-YN3C5BL5.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import{parseTarget}from"../../chunks/chunk-X4762EE4.js";import"../../chunks/chunk-25565AGS.js";import{resolveProjectContext}from"../../chunks/chunk-3JGBBS6V.js";import"../../chunks/chunk-L4NSF346.js";import"../../chunks/chunk-IEPW2YRH.js";import{STANDARD_ENVIRONMENTS}from"../../chunks/chunk-7YKFF6CE.js";import{formatProject}from"../../chunks/chunk-6OVX3PWM.js";import"../../chunks/chunk-OQCMRU3J.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-BL3HBRF6.js";import"../../chunks/chunk-R6BEOVTU.js";import"../../chunks/chunk-HCRD3JFL.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-GD7AV7BO.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{validateLsArgs}from"../../chunks/chunk-KW6GSQXV.js";import"../../chunks/chunk-SCV7XEEO.js";import{getCommandAliases}from"../../chunks/chunk-TPNOSQZ3.js";import"../../chunks/chunk-LUBUI5GF.js";import"../../chunks/chunk-GVTXA6HG.js";import"../../chunks/chunk-5IASAERQ.js";import"../../chunks/chunk-WGXKX24Q.js";import"../../chunks/chunk-E2SADN6I.js";import"../../chunks/chunk-ABZEMNDR.js";import"../../chunks/chunk-3AYYFYZG.js";import"../../chunks/chunk-76KGQU2G.js";import"../../chunks/chunk-UNEGQPD3.js";import"../../chunks/chunk-YHQ7PPXP.js";import"../../chunks/chunk-NQWGRKF4.js";import"../../chunks/chunk-IGDG5CWT.js";import"../../chunks/chunk-QZX7VG2V.js";import"../../chunks/chunk-3ADDGPEN.js";import"../../chunks/chunk-B4YYOSPY.js";import"../../chunks/chunk-PFNYWWLI.js";import"../../chunks/chunk-NTZ5WWYV.js";import"../../chunks/chunk-JALVF3C2.js";import{addSubcommand,envCommand,envTargetChoices,getEnvTargetPlaceholder,isValidEnvTarget,listSubcommand,parseEnvTargetArg,pullSubcommand,removeSubcommand,resolveEnvTargetInput,runSubcommand,updateSubcommand}from"../../chunks/chunk-LJBUJ23M.js";import"../../chunks/chunk-OKEBIUKZ.js";import{help}from"../../chunks/chunk-KH6565YH.js";import"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-G4T7VBGN.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import{param}from"../../chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"../../chunks/chunk-2PKEEQ5W.js";import{require_dist as require_dist2}from"../../chunks/chunk-PUKYAALC.js";import"../../chunks/chunk-B4UE4LVE.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import"../../chunks/chunk-FGFLTLEA.js";import{buildCommandWithYes,buildEnvAddCommandWithPreservedArgs,buildEnvRmCommandWithPreservedArgs,buildEnvUpdateCommandWithPreservedArgs,getLinkSuggestionArgs,getPreservedArgsForEnvAdd,getPreservedArgsForEnvRm,getPreservedArgsForEnvUpdate,outputActionRequired,outputAgentError,redactEnvValueArgs,withGlobalFlags}from"../../chunks/chunk-DGYHWXD2.js";import"../../chunks/chunk-IUXSJWL3.js";import{getLinkFromDir,getVercelDirectory}from"../../chunks/chunk-KNLGWGUE.js";import{printAlignedLabel}from"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-BBKEP7RO.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-VOCZ34ON.js";import{getTeamByIdOrSlug,quoteArg}from"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,validateJsonOutput}from"../../chunks/chunk-AWMQGOS2.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import{isAPIError}from"../../chunks/chunk-6VH56CX2.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-JESNVRVR.js";import{emoji,output_manager_default,prependEmoji,require_build_utils}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);var import_constants=__toESM(require_dist2(),1);async function addEnvRecord(client,projectId,upsert,type,key,value,targets,gitBranch,visibility){let actionWord=upsert?"Overriding":"Adding";output_manager_default.debug(`${actionWord} ${type} Environment Variable ${key} to ${targets.length} targets`);let target=[],customEnvironmentIds=[];for(let t of targets)(import_constants.PROJECT_ENV_TARGET.includes(t)?target:customEnvironmentIds).push(t);let body={type,key,value,target,customEnvironmentIds:customEnvironmentIds.length>0?customEnvironmentIds:void 0,gitBranch:gitBranch||void 0,...visibility!==void 0?{visibility}:{}},args=upsert?`?upsert=${upsert}`:"",url=`/v10/projects/${projectId}/env${args}`;await client.fetch(url,{method:"POST",body})}var import_error_utils=__toESM(require_dist(),1),knownErrorsCodes=new Set(["BAD_REQUEST","ENV_ALREADY_EXISTS","ENV_CONFLICT","EXISTING_KEY_AND_TARGET","FORBIDDEN","ID_NOT_FOUND","INVALID_KEY","INVALID_VALUE","KEY_INVALID_CHARACTERS","KEY_INVALID_LENGTH","KEY_RESERVED","RESERVED_ENV_VARIABLE","MAX_ENVS_EXCEEDED","MISSING_ID","MISSING_KEY","MISSING_TARGET","MISSING_VALUE","NOT_AUTHORIZED","NOT_DECRYPTABLE","SYSTEM_ENV_WITH_VALUE","TEAM_NOT_FOUND","TOO_MANY_IDS","TOO_MANY_KEYS","UNKNOWN_ERROR","VALUE_INVALID_LENGTH","VALUE_INVALID_TYPE"]);function isKnownError(error){let code=(0,import_error_utils.isErrnoException)(error)?error.code:null;return code?knownErrorsCodes.has(code.toUpperCase()):!1}var EnvAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliArgumentEnvironment(environment){if(environment){let allStandard=environment.split(",").map(t=>t.trim()).every(t=>STANDARD_ENVIRONMENTS.includes(t));this.trackCliArgument({arg:"environment",value:allStandard?environment:this.redactedValue})}}trackCliArgumentGitBranch(gitBranch){gitBranch&&this.trackCliArgument({arg:"git-branch",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionEnvironment(environments){if(environments&&environments.length>0){let allStandard=environments.flatMap(environment=>environment.split(",")).map(t=>t.trim()).every(t=>STANDARD_ENVIRONMENTS.includes(t));this.trackCliOption({option:"environment",value:allStandard?environments.join(","):this.redactedValue})}}trackCliOptionValue(value){value&&this.trackCliOption({option:"value",value:this.redactedValue})}trackCliOptionVisibility(visibility){if(visibility){let validVisibilities=["config","secret"];this.trackCliOption({option:"visibility",value:validVisibilities.includes(visibility)?visibility:this.redactedValue})}}trackCliOptionType(type){if(type){let validTypes=["config","secret"];this.trackCliOption({option:"type",value:validTypes.includes(type)?type:this.redactedValue})}}trackCliFlagSensitive(sensitive){sensitive&&this.trackCliFlag("sensitive")}trackCliFlagNoSensitive(noSensitive){noSensitive&&this.trackCliFlag("no-sensitive")}trackCliFlagForce(force){force&&this.trackCliFlag("force")}trackCliFlagGuidance(guidance){guidance&&this.trackCliFlag("guidance")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};import{determineAgent}from"@vercel/detect-agent";function includesDevelopment(targets){return targets.length===0||targets.includes("development")}function getProductionSecretPolicyErrorKind(message){return/production secrets?.*different value|different value.*production secrets?/i.test(message)?"different-values":/production secrets?.*(?:own environment group|separat)|(?:own environment group|separat).*production secrets?/i.test(message)?"separate-environments":null}function getProductionSecretPolicyRecovery(kind){return kind==="different-values"?"Use different Secret values for Production and non-Production.":"Create separate Production and non-Production variables with different values."}function getSecretStorageChoice(targets,recommendedReason){let availability=includesDevelopment(targets)?"hidden in the dashboard; Development values can be pulled":"hidden in the dashboard and unavailable to pulls",recommendation=recommendedReason?`; recommended ${recommendedReason}`:"";return`Secret (${availability}${recommendation})`}function getDefaultSecretStorageGuidance(targets){return includesDevelopment(targets)?"Stored as Secret by default. This value is hidden in the dashboard; Development values can be pulled. Use `--type config` for other values you need to read later.":"Stored as Secret by default. This value is hidden in the dashboard and unavailable to pulls; use `--type config` for values you need to read later."}function looksLikeCredentialName(key,publicPrefix=getPublicPrefix(key)){return looksLikeSecret(publicPrefix?key.slice(publicPrefix.length):key)}function filterEnvChoicesForSensitivity(choices,opts){return opts.policyOn?choices.filter(c=>c.value==="development"):choices}function getTargetCompatibilityError(envTargets,isSensitive,policyOn){let hasSensitiveCapable=envTargets.some(t=>t!=="development");return!isSensitive&&policyOn&&hasSensitiveCapable?`Your team requires sensitive Environment Variables for Production and Preview. To add a non-sensitive value, add it to the Development Environment only. Run ${getCommandName("env add --environment development")} instead.`:null}function resolveFinalType(envTargets,isSensitive,opts){return envTargets.includes("development")&&!isSensitive||opts.forceEncrypted&&!opts.policyOn?"encrypted":isSensitive||opts.forceSensitive||opts.policyOn?"sensitive":"encrypted"}function fillEnvAddTemplate(template,opts){let targetPlaceholder=getEnvTargetPlaceholder();return template.replace(/<name>/g,opts.envName?quoteArg(opts.envName):"<name>").split(targetPlaceholder).join(opts.envTargetArg?quoteArg(opts.envTargetArg):targetPlaceholder).replace(/<BRANCH>/g,opts.envGitBranch?quoteArg(opts.envGitBranch):"<BRANCH>").replace(/<value>/g,"<value>")}function multiTargetSuggestion(argv,envName,targets,addNoSensitive){let flag=addNoSensitive?" --no-sensitive":"";return{command:buildEnvAddCommandWithPreservedArgs(argv,`env add ${envName} --environment ${targets.join(",")} --value "<value>"${flag} --yes`),when:addNoSensitive?"Add one non-sensitive variable to all listed environments":"Add one variable to multiple environments"}}function filterSensitiveMultiTargetSuggestionTargets(targets,_opts){return targets}function projectLabel(link){return`${link.org.slug}/${link.project.name}`}function formatEnvironmentTarget(target,customEnvironments){let standardTarget=envTargetChoices.find(choice=>choice.value===target);return standardTarget?standardTarget.name:customEnvironments.find(env=>env.id===target||env.slug===target)?.slug??target}function formatEnvironmentTargets(envTargets,customEnvironments){return envTargets.map(target=>formatEnvironmentTarget(target,customEnvironments)).join(", ")}function printEnvAddResult(link,envName,envTargets,envGitBranch,customEnvironments,finalType,force,visibility){output_manager_default.print(`
7
+ import{require_dist as require_dist3}from"../../chunks/chunk-JELLVPCM.js";import{readStandardInput}from"../../chunks/chunk-PSOVLGHP.js";import"../../chunks/chunk-XOETL6DB.js";import{getCustomEnvironments}from"../../chunks/chunk-F7AVGV4Y.js";import{suggestNextCommands}from"../../chunks/chunk-ANMDN3EG.js";import{isGuidanceEnabled}from"../../chunks/chunk-TAAWMNNL.js";import{formatEnvironment}from"../../chunks/chunk-JLEJB6KM.js";import{ellipsis}from"../../chunks/chunk-F4KY2TOK.js";import"../../chunks/chunk-ID663OJ7.js";import{CHECKBOX_INSTRUCTIONS}from"../../chunks/chunk-OFDTADPQ.js";import{require_execa}from"../../chunks/chunk-BUJITHGZ.js";import{formatTable}from"../../chunks/chunk-LSQREJXO.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-Q7D7RGXM.js";import"../../chunks/chunk-FBYA6LLM.js";import{ENV_VISIBILITY_DEPRECATION_MESSAGE,SENSITIVE_ENV_VALUE_PLACEHOLDER,formatVisibilityLabel,getApiPublicPrefix,getEnvKeyWarnings,getFrameworkPublicPrefix,getLocalSecretFallbackMessage,getLocalSvelteKitPublicPrefixes,getPublicPrefix,getPublicPrefixSecretVisibilityError,getUnavailableSecretValuesMessage,isFlagsSecretNeedingSplit,isSecretEnvVar,looksLikeSecret,looksLikeSecretValue,normalizeStdinEnvValue,pull,removePublicPrefix,resolveEnvVarTypeOption,resolveEnvVarVisibility,shouldConfirmRotationBeforeDelete,validateEnvValue}from"../../chunks/chunk-L3JYCXVB.js";import{getEnvRecords,pullEnvRecords}from"../../chunks/chunk-C7FQMC6D.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import{parseTarget}from"../../chunks/chunk-7QAGSRCU.js";import"../../chunks/chunk-25565AGS.js";import{resolveProjectContext}from"../../chunks/chunk-JP33AIDQ.js";import"../../chunks/chunk-WEH6XC4Y.js";import{STANDARD_ENVIRONMENTS}from"../../chunks/chunk-7YKFF6CE.js";import{formatProject}from"../../chunks/chunk-6OVX3PWM.js";import"../../chunks/chunk-HTXDC7E2.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-2TUVL6WE.js";import"../../chunks/chunk-R6BEOVTU.js";import"../../chunks/chunk-HCRD3JFL.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-GD7AV7BO.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import"../../chunks/chunk-T6243EDS.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{validateLsArgs}from"../../chunks/chunk-KW6GSQXV.js";import"../../chunks/chunk-FGFLTLEA.js";import"../../chunks/chunk-SCV7XEEO.js";import{getCommandAliases}from"../../chunks/chunk-O4WNSKQR.js";import"../../chunks/chunk-6I6QJHCY.js";import"../../chunks/chunk-EKZTFGDX.js";import"../../chunks/chunk-462YCCJZ.js";import"../../chunks/chunk-WVHCBDTB.js";import"../../chunks/chunk-TAISZMA2.js";import"../../chunks/chunk-527GBU3K.js";import"../../chunks/chunk-CR3NBTHV.js";import"../../chunks/chunk-BVGGTBYE.js";import"../../chunks/chunk-6TXEVQA4.js";import"../../chunks/chunk-5KUUMQ3M.js";import"../../chunks/chunk-UHBMX3OK.js";import"../../chunks/chunk-EEUJLJEJ.js";import"../../chunks/chunk-NW7WWUCQ.js";import"../../chunks/chunk-F6EBOT64.js";import"../../chunks/chunk-LFOWP74R.js";import"../../chunks/chunk-LOBA3E72.js";import"../../chunks/chunk-7R6TRRG5.js";import"../../chunks/chunk-JALVF3C2.js";import{addSubcommand,envCommand,envTargetChoices,getEnvTargetPlaceholder,isValidEnvTarget,listSubcommand,parseEnvTargetArg,pullSubcommand,removeSubcommand,resolveEnvTargetInput,runSubcommand,updateSubcommand}from"../../chunks/chunk-OZCQTXI4.js";import"../../chunks/chunk-FSPPKNKN.js";import{help}from"../../chunks/chunk-FLHO75XC.js";import"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-HSFKISDH.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import{param}from"../../chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"../../chunks/chunk-6YXIWZ3X.js";import{require_dist as require_dist2}from"../../chunks/chunk-PUKYAALC.js";import"../../chunks/chunk-K5U47EVH.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import{buildCommandWithYes,buildEnvAddCommandWithPreservedArgs,buildEnvRmCommandWithPreservedArgs,buildEnvUpdateCommandWithPreservedArgs,getLinkSuggestionArgs,getPreservedArgsForEnvAdd,getPreservedArgsForEnvRm,getPreservedArgsForEnvUpdate,outputActionRequired,outputAgentError,redactEnvValueArgs,withGlobalFlags}from"../../chunks/chunk-WDXW6A4H.js";import"../../chunks/chunk-DKJL2KV7.js";import{getLinkFromDir,getVercelDirectory}from"../../chunks/chunk-4N6LMERQ.js";import{printAlignedLabel}from"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-CWM2F235.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-KCKYPLIH.js";import{getTeamByIdOrSlug,quoteArg}from"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,validateJsonOutput}from"../../chunks/chunk-QVXS234E.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import{isAPIError}from"../../chunks/chunk-6VH56CX2.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-JESNVRVR.js";import{emoji,output_manager_default,prependEmoji,require_build_utils}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);var import_constants=__toESM(require_dist2(),1);async function addEnvRecord(client,projectId,upsert,type,key,value,targets,gitBranch,visibility){let actionWord=upsert?"Overriding":"Adding";output_manager_default.debug(`${actionWord} ${type} Environment Variable ${key} to ${targets.length} targets`);let target=[],customEnvironmentIds=[];for(let t of targets)(import_constants.PROJECT_ENV_TARGET.includes(t)?target:customEnvironmentIds).push(t);let body={type,key,value,target,customEnvironmentIds:customEnvironmentIds.length>0?customEnvironmentIds:void 0,gitBranch:gitBranch||void 0,...visibility!==void 0?{visibility}:{}},args=upsert?`?upsert=${upsert}`:"",url=`/v10/projects/${projectId}/env${args}`;await client.fetch(url,{method:"POST",body})}var import_error_utils=__toESM(require_dist(),1),knownErrorsCodes=new Set(["BAD_REQUEST","ENV_ALREADY_EXISTS","ENV_CONFLICT","EXISTING_KEY_AND_TARGET","FORBIDDEN","ID_NOT_FOUND","INVALID_KEY","INVALID_VALUE","KEY_INVALID_CHARACTERS","KEY_INVALID_LENGTH","KEY_RESERVED","RESERVED_ENV_VARIABLE","MAX_ENVS_EXCEEDED","MISSING_ID","MISSING_KEY","MISSING_TARGET","MISSING_VALUE","NOT_AUTHORIZED","NOT_DECRYPTABLE","SYSTEM_ENV_WITH_VALUE","TEAM_NOT_FOUND","TOO_MANY_IDS","TOO_MANY_KEYS","UNKNOWN_ERROR","VALUE_INVALID_LENGTH","VALUE_INVALID_TYPE"]);function isKnownError(error){let code=(0,import_error_utils.isErrnoException)(error)?error.code:null;return code?knownErrorsCodes.has(code.toUpperCase()):!1}var EnvAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliArgumentEnvironment(environment){if(environment){let allStandard=environment.split(",").map(t=>t.trim()).every(t=>STANDARD_ENVIRONMENTS.includes(t));this.trackCliArgument({arg:"environment",value:allStandard?environment:this.redactedValue})}}trackCliArgumentGitBranch(gitBranch){gitBranch&&this.trackCliArgument({arg:"git-branch",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionEnvironment(environments){if(environments&&environments.length>0){let allStandard=environments.flatMap(environment=>environment.split(",")).map(t=>t.trim()).every(t=>STANDARD_ENVIRONMENTS.includes(t));this.trackCliOption({option:"environment",value:allStandard?environments.join(","):this.redactedValue})}}trackCliOptionValue(value){value&&this.trackCliOption({option:"value",value:this.redactedValue})}trackCliOptionVisibility(visibility){if(visibility){let validVisibilities=["config","secret"];this.trackCliOption({option:"visibility",value:validVisibilities.includes(visibility)?visibility:this.redactedValue})}}trackCliOptionType(type){if(type){let validTypes=["config","secret"];this.trackCliOption({option:"type",value:validTypes.includes(type)?type:this.redactedValue})}}trackCliFlagSensitive(sensitive){sensitive&&this.trackCliFlag("sensitive")}trackCliFlagNoSensitive(noSensitive){noSensitive&&this.trackCliFlag("no-sensitive")}trackCliFlagForce(force){force&&this.trackCliFlag("force")}trackCliFlagGuidance(guidance){guidance&&this.trackCliFlag("guidance")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};import{determineAgent}from"@vercel/detect-agent";function includesDevelopment(targets){return targets.length===0||targets.includes("development")}function getProductionSecretPolicyErrorKind(message){return/production secrets?.*different value|different value.*production secrets?/i.test(message)?"different-values":/production secrets?.*(?:own environment group|separat)|(?:own environment group|separat).*production secrets?/i.test(message)?"separate-environments":null}function getProductionSecretPolicyRecovery(kind){return kind==="different-values"?"Use different Secret values for Production and non-Production.":"Create separate Production and non-Production variables with different values."}function getSecretStorageChoice(targets,recommendedReason){let availability=includesDevelopment(targets)?"hidden in the dashboard; Development values can be pulled":"hidden in the dashboard and unavailable to pulls",recommendation=recommendedReason?`; recommended ${recommendedReason}`:"";return`Secret (${availability}${recommendation})`}function getDefaultSecretStorageGuidance(targets){return includesDevelopment(targets)?"Stored as Secret by default. This value is hidden in the dashboard; Development values can be pulled. Use `--type config` for other values you need to read later.":"Stored as Secret by default. This value is hidden in the dashboard and unavailable to pulls; use `--type config` for values you need to read later."}function looksLikeCredentialName(key,publicPrefix=getPublicPrefix(key)){return looksLikeSecret(publicPrefix?key.slice(publicPrefix.length):key)}function filterEnvChoicesForSensitivity(choices,opts){return opts.policyOn?choices.filter(c=>c.value==="development"):choices}function getTargetCompatibilityError(envTargets,isSensitive,policyOn){let hasSensitiveCapable=envTargets.some(t=>t!=="development");return!isSensitive&&policyOn&&hasSensitiveCapable?`Your team requires sensitive Environment Variables for Production and Preview. To add a non-sensitive value, add it to the Development Environment only. Run ${getCommandName("env add --environment development")} instead.`:null}function resolveFinalType(envTargets,isSensitive,opts){return envTargets.includes("development")&&!isSensitive||opts.forceEncrypted&&!opts.policyOn?"encrypted":isSensitive||opts.forceSensitive||opts.policyOn?"sensitive":"encrypted"}function fillEnvAddTemplate(template,opts){let targetPlaceholder=getEnvTargetPlaceholder();return template.replace(/<name>/g,opts.envName?quoteArg(opts.envName):"<name>").split(targetPlaceholder).join(opts.envTargetArg?quoteArg(opts.envTargetArg):targetPlaceholder).replace(/<BRANCH>/g,opts.envGitBranch?quoteArg(opts.envGitBranch):"<BRANCH>").replace(/<value>/g,"<value>")}function multiTargetSuggestion(argv,envName,targets,addNoSensitive){let flag=addNoSensitive?" --no-sensitive":"";return{command:buildEnvAddCommandWithPreservedArgs(argv,`env add ${envName} --environment ${targets.join(",")} --value "<value>"${flag} --yes`),when:addNoSensitive?"Add one non-sensitive variable to all listed environments":"Add one variable to multiple environments"}}function filterSensitiveMultiTargetSuggestionTargets(targets,_opts){return targets}function projectLabel(link){return`${link.org.slug}/${link.project.name}`}function formatEnvironmentTarget(target,customEnvironments){let standardTarget=envTargetChoices.find(choice=>choice.value===target);return standardTarget?standardTarget.name:customEnvironments.find(env=>env.id===target||env.slug===target)?.slug??target}function formatEnvironmentTargets(envTargets,customEnvironments){return envTargets.map(target=>formatEnvironmentTarget(target,customEnvironments)).join(", ")}function printEnvAddResult(link,envName,envTargets,envGitBranch,customEnvironments,finalType,force,visibility){output_manager_default.print(`
8
8
  `),printAlignedLabel(force?"Overrode":"Added",envName,{gutter:"\u2713"}),printAlignedLabel("Project",projectLabel(link)),printAlignedLabel("Environments",formatEnvironmentTargets(envTargets,customEnvironments)),envGitBranch&&printAlignedLabel("Branch",envGitBranch);let visibilityLabel=formatVisibilityLabel(visibility,finalType);visibilityLabel&&printAlignedLabel("Type",visibilityLabel)}function printEnvAddWarning(message){output_manager_default.print(`${import_chalk.default.yellow("!")} ${message}
9
9
  `)}function promptEnvValue(client,opts){return client.input.text({message:"Value?",...opts.isSensitive?{transformer:value=>"*".repeat(value.length)}:{}})}function buildHumanEnvAddCommand(argv,commandTemplate){let globalFlags=getGlobalFlagsFromArgs(argv.slice(2),{preserveProject:!0}).filter(flag=>!flag.startsWith("--non-interactive")),suffix=globalFlags.length>0?` ${globalFlags.map(quoteArg).join(" ")}`:"";return getCommandNamePlain(`${commandTemplate}${suffix}`)}async function add(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(err){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:err instanceof Error?err.message:String(err)},2),printError(err),2}let{args,flags:opts}=parsedArgs,valueFromFlag=typeof opts["--value"]=="string"?opts["--value"]:void 0,stdInput=valueFromFlag===void 0?await readStandardInput(client.stdin):"",[envName]=args,positionalEnvironment=args[1],positionalGitBranch=args[2],optionGitBranch=typeof opts["--git-branch"]=="string"?opts["--git-branch"]:void 0,forceSensitive=!!opts["--sensitive"],forceEncrypted=!!opts["--no-sensitive"],typeOption=resolveEnvVarTypeOption({type:typeof opts["--type"]=="string"?opts["--type"]:void 0,visibility:typeof opts["--visibility"]=="string"?opts["--visibility"]:void 0}),explicitType=typeOption.explicitVisibility,typeSource=explicitType||forceSensitive||forceEncrypted?"argv":void 0,telemetryClient=new EnvAddTelemetryClient({opts:{store:client.telemetryEventStore}});if(telemetryClient.trackCliArgumentName(envName),telemetryClient.trackCliArgumentEnvironment(positionalEnvironment),telemetryClient.trackCliArgumentGitBranch(positionalGitBranch),telemetryClient.trackCliOptionEnvironment(opts["--environment"]),telemetryClient.trackCliOptionGitBranch(optionGitBranch),telemetryClient.trackCliOptionValue(valueFromFlag===void 0?void 0:"<redacted>"),telemetryClient.trackCliFlagSensitive(opts["--sensitive"]),telemetryClient.trackCliFlagNoSensitive(opts["--no-sensitive"]),telemetryClient.trackCliFlagForce(opts["--force"]),telemetryClient.trackCliFlagGuidance(opts["--guidance"]),telemetryClient.trackCliFlagYes(opts["--yes"]),telemetryClient.trackCliOptionType(typeof opts["--type"]=="string"?opts["--type"]:void 0),telemetryClient.trackCliOptionVisibility(typeof opts["--visibility"]=="string"?opts["--visibility"]:void 0),telemetryClient.trackCliOptionProject(opts["--project"]),typeOption.error)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:typeOption.errorReason??"invalid_type",message:typeOption.error},1),output_manager_default.fatal(typeOption.error),1;typeOption.usedDeprecatedVisibility&&printEnvAddWarning(ENV_VISIBILITY_DEPRECATION_MESSAGE);let typeConflictMessage=forceSensitive?forceEncrypted?"`--sensitive` and `--no-sensitive` cannot be used together. Pick one.":explicitType==="config"?"`--type config` cannot be used with `--sensitive`. Pick one.":null:forceEncrypted&&explicitType==="secret"?"`--type secret` cannot be used with `--no-sensitive`. Pick one.":null;if(typeConflictMessage)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"conflicting_type_flags",message:typeConflictMessage},2),output_manager_default.fatal(typeConflictMessage),2;let envTargetInput=resolveEnvTargetInput(client,{environment:opts["--environment"],gitBranch:optionGitBranch,legacyEnvironment:positionalEnvironment,legacyGitBranch:positionalGitBranch});if("error"in envTargetInput)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:envTargetInput.error},2),output_manager_default.error(envTargetInput.error),2;let envTargetArg=envTargetInput.environment,envGitBranch=envTargetInput.gitBranch;if(args.length>3)return output_manager_default.error(`Invalid number of arguments. Usage: ${getCommandName(`env add <name> --environment ${getEnvTargetPlaceholder()} --git-branch <BRANCH>`)}`),2;if(stdInput&&(!envName||!envTargetArg))return output_manager_default.error(`Can't read the value from stdin without a name and --environment. Usage: ${getCommandName("env add <name> --environment <environment> --git-branch <BRANCH> < <file>")}`),2;let envTargets=envTargetArg?parseEnvTargetArg(envTargetArg):[],resolvedLink,envRecordsAndCustomEnvironments;if(client.nonInteractive){let link2=await resolveProjectContext({client,projectNameOrId:opts["--project"]});if(link2.status==="error")return link2.exitCode;if(link2.status==="not_linked"){let preserved=getPreservedArgsForEnvAdd(client.argv),linkPreserved=preserved.filter((a,i)=>!(a==="--value"||a.startsWith("--value=")||i>0&&preserved[i-1]==="--value")),linkArgv=[...client.argv.slice(0,2),"link","--scope","<scope>",...getLinkSuggestionArgs(linkPreserved)],envAddRetryArgv=redactEnvValueArgs(client.argv);envTargetArg==="preview"&&envGitBranch===void 0&&(envAddRetryArgv=redactEnvValueArgs([...client.argv,"--git-branch","<BRANCH>"])),outputAgentError(client,{status:"error",reason:"not_linked",message:`Your codebase isn't linked to a project on Vercel. Run \`${getCommandNamePlain("link")}\` to begin. Use \`--yes\` for non-interactive mode; use \`--scope\` or \`--project\` to specify a team or project. Then run your \`env add\` command.`,next:[{command:buildCommandWithYes(linkArgv)},{command:buildCommandWithYes(envAddRetryArgv)}]},1)}if(link2.status!=="linked")return 1;resolvedLink=link2;let{project:project2}=link2,org=link2.org;client.config.currentTeam=org.type==="team"?org.id:void 0,envRecordsAndCustomEnvironments=await Promise.all([getEnvRecords(client,project2.id,"vercel-cli:env:add"),getCustomEnvironments(client,project2.id)]);let[{envs:envs2},customEnvironments2]=envRecordsAndCustomEnvironments,matchingEnvs2=envs2.filter(r=>r.key===envName),existingTargets2=new Set,existingCustomEnvs2=new Set;for(let env of matchingEnvs2){if(typeof env.target=="string")existingTargets2.add(env.target);else if(Array.isArray(env.target))for(let target of env.target)existingTargets2.add(target);if(env.customEnvironmentIds)for(let customEnvId of env.customEnvironmentIds)existingCustomEnvs2.add(customEnvId)}let choices2=[...envTargetChoices.filter(c=>!existingTargets2.has(c.value)),...customEnvironments2.filter(c=>!existingCustomEnvs2.has(c.id)).map(c=>({name:c.slug,value:c.id}))],missing=[];if(envName||missing.push("missing_name"),valueFromFlag===void 0&&!stdInput&&missing.push("missing_value"),!envTargetArg&&choices2.length>0&&missing.push("missing_environment"),envTargetArg==="preview"&&envGitBranch===void 0&&!(client.nonInteractive&&envName!==void 0)&&missing.push("git_branch_required"),missing.length>0){let parts=missing.map(m=>m==="missing_name"?"variable name":m==="missing_value"?"--value or stdin":m==="missing_environment"?"environment (production, preview, development, or a comma-separated list)":m==="git_branch_required"?"`--git-branch <BRANCH>` for Preview, or omit for all Preview branches":m),fullTemplate=`env add <name> --environment ${getEnvTargetPlaceholder()} --value "<value>" --yes`,filledTemplate=fillEnvAddTemplate(fullTemplate,{envName,envTargetArg,envGitBranch}),next=[];if(missing.length===1&&missing[0]==="git_branch_required"||next.push({command:buildEnvAddCommandWithPreservedArgs(client.argv,filledTemplate)}),missing.includes("git_branch_required")&&envName&&(valueFromFlag!==void 0||stdInput)){let branchSpecific=fillEnvAddTemplate('env add <name> --environment preview --git-branch <BRANCH> --value "<value>" --yes',{envName,envTargetArg:"preview"}),branchAll=fillEnvAddTemplate('env add <name> --environment preview --value "<value>" --yes',{envName,envTargetArg:"preview"});next.push({command:buildEnvAddCommandWithPreservedArgs(client.argv,branchSpecific),when:"Add to a specific Git branch"},{command:buildEnvAddCommandWithPreservedArgs(client.argv,branchAll),when:"Add to all Preview branches"})}if(missing.includes("missing_environment")){let standardAvailable=choices2.map(c=>c.value).filter(v=>isValidEnvTarget(v)),multiTargets=filterSensitiveMultiTargetSuggestionTargets(standardAvailable,{forceSensitive:!!opts["--sensitive"],policyOn:!1});multiTargets.length>1&&next.push(multiTargetSuggestion(client.argv,envName||"<name>",multiTargets,multiTargets.includes("development")&&!opts["--no-sensitive"]))}outputActionRequired(client,{status:"action_required",reason:"missing_requirements",missing,message:`Provide all required inputs for non-interactive mode: ${parts.join("; ")}. Example: \`${filledTemplate}\``,next},1)}}if(envName||(envName=await client.input.text({message:"Name?",validate:val=>val?!0:"Name cannot be empty"})),!resolvedLink){let link2=await resolveProjectContext({client,projectNameOrId:opts["--project"]});if(link2.status==="error")return link2.exitCode;if(link2.status==="not_linked"){if(client.nonInteractive){let preserved=getPreservedArgsForEnvAdd(client.argv),linkPreserved=preserved.filter((a,i)=>!(a==="--value"||a.startsWith("--value=")||i>0&&preserved[i-1]==="--value")),linkArgv=[...client.argv.slice(0,2),"link","--scope","<scope>",...getLinkSuggestionArgs(linkPreserved)];outputAgentError(client,{status:"error",reason:"not_linked",message:`Your codebase isn't linked to a project on Vercel. Run ${getCommandNamePlain("link")} to begin. Use --yes for non-interactive; use --scope or --project to specify team or project. Then run your env add command.`,next:[{command:buildCommandWithYes(linkArgv)},{command:buildCommandWithYes(redactEnvValueArgs(client.argv))}]},1)}else output_manager_default.error(`Your codebase isn\u2019t linked to a project on Vercel. Run ${getCommandName("link")} to begin.`);return 1}resolvedLink=link2}let link=resolvedLink;client.config.currentTeam=link.org.type==="team"?link.org.id:void 0;let{project}=link;if(explicitType==="secret"||forceSensitive){let publicPrefixError=getPublicPrefixSecretVisibilityError(envName,{visibility:explicitType==="secret"?"secret":void 0,type:"sensitive",context:"add"});if(publicPrefixError)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_type",message:publicPrefixError},2),output_manager_default.fatal(publicPrefixError),2}let keyAccepted=!1;for(;!keyAccepted;){let apiPublicPrefix2=getApiPublicPrefix(envName),frameworkPublicPrefix=getFrameworkPublicPrefix(project.framework,envName),globallyKnownPrefix=getPublicPrefix(envName),keyWarnings=frameworkPublicPrefix!==null&&(explicitType==="secret"||forceSensitive)||globallyKnownPrefix!==null&&apiPublicPrefix2===null&&frameworkPublicPrefix===null?[]:getEnvKeyWarnings(envName);if(!keyWarnings.find(w=>w.requiresConfirmation)){for(let warning of keyWarnings)printEnvAddWarning(warning.message);keyAccepted=!0;break}let nameWithoutPrefix=removePublicPrefix(envName),publicPrefix=getPublicPrefix(envName);if(typeSource==="argv"){for(let warning of keyWarnings)printEnvAddWarning(warning.message);keyAccepted=!0;break}let privateCommand=buildEnvAddCommandWithPreservedArgs(client.argv,`env add ${nameWithoutPrefix} --environment ${envTargetArg??getEnvTargetPlaceholder()} --type secret --value "<value>" --yes`),publicCommand=buildEnvAddCommandWithPreservedArgs(client.argv,`env add ${envName} --environment ${envTargetArg??getEnvTargetPlaceholder()} --type config --value "<value>" --yes`),humanTargetArg=envTargetArg?` --environment ${envTargetArg}`:"",privateHumanCommand=buildHumanEnvAddCommand(client.argv,`env add ${nameWithoutPrefix}${humanTargetArg} --type secret`),publicHumanCommand=buildHumanEnvAddCommand(client.argv,`env add ${envName}${humanTargetArg} --type config`),message=`\`${envName}\` looks like a credential, and \`${publicPrefix}\` exposes its value to anyone visiting your site. Choose explicitly: rename to \`${nameWithoutPrefix}\` with \`--type secret\` to keep it private, or keep the name with \`--type config\` to expose it.`;if(client.nonInteractive||opts["--yes"]||stdInput)return client.nonInteractive&&outputActionRequired(client,{status:"action_required",reason:"public_prefix_requires_type",message,choices:[{id:"private",name:`Keep private: rename to ${nameWithoutPrefix} and use Secret`},{id:"public",name:`Expose publicly: keep ${envName} as Config`}],next:[{command:privateCommand,when:"Keep it private; replace <value> before running"},{command:publicCommand,when:"Expose it publicly; replace <value> before running"}]}),output_manager_default.fatal(message),output_manager_default.print(` Keep it private:
10
10
  ${privateHumanCommand}
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{promptExperimentalServicesMigration}from"../../chunks/chunk-OQPXJCMK.js";import"../../chunks/chunk-RUXO73ON.js";import"../../chunks/chunk-7Y46LB43.js";import"../../chunks/chunk-J24BABG4.js";import"../../chunks/chunk-U4Z2MMOF.js";import"../../chunks/chunk-7L2K4OKM.js";import"../../chunks/chunk-OCR5CRTH.js";import{pull}from"../../chunks/chunk-OWOWPOIE.js";import"../../chunks/chunk-YN3C5BL5.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import"../../chunks/chunk-X4762EE4.js";import"../../chunks/chunk-25565AGS.js";import"../../chunks/chunk-3JGBBS6V.js";import"../../chunks/chunk-L4NSF346.js";import"../../chunks/chunk-IEPW2YRH.js";import"../../chunks/chunk-7YKFF6CE.js";import"../../chunks/chunk-6OVX3PWM.js";import{ensureLink}from"../../chunks/chunk-OQCMRU3J.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-BL3HBRF6.js";import"../../chunks/chunk-R6BEOVTU.js";import"../../chunks/chunk-HCRD3JFL.js";import"../../chunks/chunk-7EJQLVWX.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import"../../chunks/chunk-SCV7XEEO.js";import{getCommandAliases}from"../../chunks/chunk-TPNOSQZ3.js";import"../../chunks/chunk-LUBUI5GF.js";import"../../chunks/chunk-GVTXA6HG.js";import"../../chunks/chunk-5IASAERQ.js";import"../../chunks/chunk-WGXKX24Q.js";import"../../chunks/chunk-E2SADN6I.js";import"../../chunks/chunk-ABZEMNDR.js";import"../../chunks/chunk-3AYYFYZG.js";import"../../chunks/chunk-76KGQU2G.js";import"../../chunks/chunk-UNEGQPD3.js";import"../../chunks/chunk-YHQ7PPXP.js";import"../../chunks/chunk-NQWGRKF4.js";import"../../chunks/chunk-IGDG5CWT.js";import"../../chunks/chunk-QZX7VG2V.js";import"../../chunks/chunk-3ADDGPEN.js";import"../../chunks/chunk-B4YYOSPY.js";import"../../chunks/chunk-PFNYWWLI.js";import"../../chunks/chunk-NTZ5WWYV.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-LJBUJ23M.js";import"../../chunks/chunk-OKEBIUKZ.js";import{help}from"../../chunks/chunk-KH6565YH.js";import"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-G4T7VBGN.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import"../../chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"../../chunks/chunk-2PKEEQ5W.js";import"../../chunks/chunk-PUKYAALC.js";import{detectExplicitScope,getScope}from"../../chunks/chunk-B4UE4LVE.js";import"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import"../../chunks/chunk-FGFLTLEA.js";import"../../chunks/chunk-DGYHWXD2.js";import{addSubcommand,linkCommand}from"../../chunks/chunk-IUXSJWL3.js";import{addRepoLink,ensureRepoLink,findRepoRoot,isPromptCanceledError,resolveProjectCwd}from"../../chunks/chunk-KNLGWGUE.js";import"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-BBKEP7RO.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-VOCZ34ON.js";import"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification}from"../../chunks/chunk-AWMQGOS2.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import"../../chunks/chunk-6VH56CX2.js";import{cmd}from"../../chunks/chunk-JESNVRVR.js";import{output_manager_default}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);import{join}from"path";var LinkTelemetryClient=class extends TelemetryClient{trackCliArgumentCwd(){this.trackCliArgument({arg:"cwd",value:this.redactedValue})}trackCliFlagRepo(flag){flag&&this.trackCliFlag("repo")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliFlagConfirm(flag){flag&&this.trackCliFlag("confirm")}trackCliOptionTeam(value){value&&this.trackCliOption({option:"team",value:this.redactedValue})}trackCliOptionProjectId(value){value&&this.trackCliOption({option:"project-id",value:this.redactedValue})}trackCliSubcommandAdd(actual){this.trackCliSubcommand({subcommand:"add",value:actual})}};var COMMAND_CONFIG={add:getCommandAliases(addSubcommand)};function warnOidcRefreshFailed(){output_manager_default.print(`${import_chalk.default.yellow("!")} Linked project, but failed to refresh VERCEL_OIDC_TOKEN in .env.local. Rerun the link command to retry.
7
+ import{promptExperimentalServicesMigration}from"../../chunks/chunk-UGNIIDHR.js";import"../../chunks/chunk-R2BUF6Z7.js";import"../../chunks/chunk-QVHXFHBV.js";import"../../chunks/chunk-J24BABG4.js";import"../../chunks/chunk-U4Z2MMOF.js";import"../../chunks/chunk-7L2K4OKM.js";import"../../chunks/chunk-OCR5CRTH.js";import{pull}from"../../chunks/chunk-L3JYCXVB.js";import"../../chunks/chunk-C7FQMC6D.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import"../../chunks/chunk-7QAGSRCU.js";import"../../chunks/chunk-25565AGS.js";import"../../chunks/chunk-JP33AIDQ.js";import"../../chunks/chunk-WEH6XC4Y.js";import"../../chunks/chunk-7YKFF6CE.js";import"../../chunks/chunk-6OVX3PWM.js";import{ensureLink}from"../../chunks/chunk-HTXDC7E2.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-2TUVL6WE.js";import"../../chunks/chunk-R6BEOVTU.js";import"../../chunks/chunk-HCRD3JFL.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-T6243EDS.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import"../../chunks/chunk-FGFLTLEA.js";import"../../chunks/chunk-SCV7XEEO.js";import{getCommandAliases}from"../../chunks/chunk-O4WNSKQR.js";import"../../chunks/chunk-6I6QJHCY.js";import"../../chunks/chunk-EKZTFGDX.js";import"../../chunks/chunk-462YCCJZ.js";import"../../chunks/chunk-WVHCBDTB.js";import"../../chunks/chunk-TAISZMA2.js";import"../../chunks/chunk-527GBU3K.js";import"../../chunks/chunk-CR3NBTHV.js";import"../../chunks/chunk-BVGGTBYE.js";import"../../chunks/chunk-6TXEVQA4.js";import"../../chunks/chunk-5KUUMQ3M.js";import"../../chunks/chunk-UHBMX3OK.js";import"../../chunks/chunk-EEUJLJEJ.js";import"../../chunks/chunk-NW7WWUCQ.js";import"../../chunks/chunk-F6EBOT64.js";import"../../chunks/chunk-LFOWP74R.js";import"../../chunks/chunk-LOBA3E72.js";import"../../chunks/chunk-7R6TRRG5.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-OZCQTXI4.js";import"../../chunks/chunk-FSPPKNKN.js";import{help}from"../../chunks/chunk-FLHO75XC.js";import"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-HSFKISDH.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import"../../chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"../../chunks/chunk-6YXIWZ3X.js";import"../../chunks/chunk-PUKYAALC.js";import{detectExplicitScope,getScope}from"../../chunks/chunk-K5U47EVH.js";import"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import"../../chunks/chunk-WDXW6A4H.js";import{addSubcommand,linkCommand}from"../../chunks/chunk-DKJL2KV7.js";import{addRepoLink,ensureRepoLink,findRepoRoot,isPromptCanceledError,resolveProjectCwd}from"../../chunks/chunk-4N6LMERQ.js";import"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-CWM2F235.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-KCKYPLIH.js";import"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification}from"../../chunks/chunk-QVXS234E.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import"../../chunks/chunk-6VH56CX2.js";import{cmd}from"../../chunks/chunk-JESNVRVR.js";import{output_manager_default}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1);import{join}from"path";var LinkTelemetryClient=class extends TelemetryClient{trackCliArgumentCwd(){this.trackCliArgument({arg:"cwd",value:this.redactedValue})}trackCliFlagRepo(flag){flag&&this.trackCliFlag("repo")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliFlagConfirm(flag){flag&&this.trackCliFlag("confirm")}trackCliOptionTeam(value){value&&this.trackCliOption({option:"team",value:this.redactedValue})}trackCliOptionProjectId(value){value&&this.trackCliOption({option:"project-id",value:this.redactedValue})}trackCliSubcommandAdd(actual){this.trackCliSubcommand({subcommand:"add",value:actual})}};var COMMAND_CONFIG={add:getCommandAliases(addSubcommand)};function warnOidcRefreshFailed(){output_manager_default.print(`${import_chalk.default.yellow("!")} Linked project, but failed to refresh VERCEL_OIDC_TOKEN in .env.local. Rerun the link command to retry.
8
8
  `)}async function refreshOidcTokenAfterLink(client,cwd){let originalCwd=client.cwd;try{client.cwd=await resolveProjectCwd(cwd),output_manager_default.print(`
9
9
  `),await pull(client,["--yes"],"vercel-cli:link",{oidcTokenOnly:!0})!==0&&warnOidcRefreshFailed()}catch{warnOidcRefreshFailed()}finally{client.cwd=originalCwd}}async function link(client){try{return await client.withEscapePromptCancellation(()=>linkProject(client))}catch(error){if(isPromptCanceledError(error))return output_manager_default.print(` Canceled.
10
10
  `),0;throw error}}async function linkProject(client){let parsedArgs=null,flagsSpecification=getFlagsSpecification(linkCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}let{subcommand,subcommandOriginal}=getSubcommand(parsedArgs.args.slice(1),COMMAND_CONFIG),telemetry=new LinkTelemetryClient({opts:{store:client.telemetryEventStore}});function printHelp(command){output_manager_default.print(help(command,{parent:linkCommand,columns:client.stderr.columns}))}if(subcommand==="add"){if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("link",subcommandOriginal),printHelp(addSubcommand),0;telemetry.trackCliSubcommandAdd(subcommandOriginal);let yes2=!!parsedArgs.flags["--yes"];try{await addRepoLink(client,client.cwd,{yes:yes2})}catch(err){if(isPromptCanceledError(err))throw err;return output_manager_default.prettyError(err),1}return 0}try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("link"),output_manager_default.print(help(linkCommand,{columns:client.stderr.columns})),0;telemetry.trackCliFlagRepo(parsedArgs.flags["--repo"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionProject(parsedArgs.flags["--project"]),"--confirm"in parsedArgs.flags&&(telemetry.trackCliFlagConfirm(parsedArgs.flags["--confirm"]),output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"),parsedArgs.flags["--yes"]=parsedArgs.flags["--confirm"]);let yes=!!parsedArgs.flags["--yes"],cwd=parsedArgs.args[1];if(cwd?(telemetry.trackCliArgumentCwd(),output_manager_default.warn(`The ${cmd("vc link <directory>")} syntax is deprecated, please use ${cmd(`vc link --cwd ${cwd}`)} instead`)):cwd=client.cwd,parsedArgs.flags["--repo"]){output_manager_default.warn(`The ${cmd("--repo")} flag is in alpha, please report issues`);try{await ensureRepoLink(client,cwd,{yes,overwrite:!0})}catch(err){if(isPromptCanceledError(err))throw err;return output_manager_default.prettyError(err),1}}else{let selectedOrg=detectExplicitScope(client)?(await getScope(client,{resolveLocalScope:!0})).org:void 0,linkNonInteractive=client.nonInteractive||client.argv.includes("--non-interactive"),link2=await ensureLink("link",client,cwd,{autoConfirm:yes,forceDelete:!0,selectedOrg,projectName:parsedArgs.flags["--project"],successEmoji:"success",nonInteractive:linkNonInteractive,pullEnv:!1});if(typeof link2=="number")return link2;let projectCwd=await resolveProjectCwd(cwd),rootDirectory=link2.project.rootDirectory,repoRoot=link2.repoRoot??(rootDirectory?await findRepoRoot(projectCwd):void 0);await promptExperimentalServicesMigration({client,cwd:rootDirectory?join(repoRoot??projectCwd,rootDirectory):link2.repoRoot??projectCwd,autoConfirm:yes,nonInteractive:linkNonInteractive,allowConfigExecution:!1}),await refreshOidcTokenAfterLink(client,cwd)}return 0}export{link as default};
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{parseMeta}from"../../chunks/chunk-CZSOZKHX.js";import{formatEnvironment}from"../../chunks/chunk-JLEJB6KM.js";import{isValidName}from"../../chunks/chunk-PADL3C6Z.js";import{InvalidNextError,getPaginationOpts}from"../../chunks/chunk-C6GY2G73.js";import{elapsed}from"../../chunks/chunk-Q7D7RGXM.js";import{parseTarget,warnDeprecatedProdFlag}from"../../chunks/chunk-X4762EE4.js";import"../../chunks/chunk-7YKFF6CE.js";import{formatProject}from"../../chunks/chunk-6OVX3PWM.js";import{getDeployment,toHost}from"../../chunks/chunk-R6BEOVTU.js";import"../../chunks/chunk-HCRD3JFL.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{printNextPageCommand}from"../../chunks/chunk-QMCHGGDX.js";import{validateLsArgs}from"../../chunks/chunk-KW6GSQXV.js";import{listCommand}from"../../chunks/chunk-OKEBIUKZ.js";import{help}from"../../chunks/chunk-KH6565YH.js";import{table}from"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-G4T7VBGN.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import{TelemetryClient}from"../../chunks/chunk-2PKEEQ5W.js";import"../../chunks/chunk-PUKYAALC.js";import{getContextName}from"../../chunks/chunk-B4UE4LVE.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import"../../chunks/chunk-FGFLTLEA.js";import{exitWithNonInteractiveError}from"../../chunks/chunk-DGYHWXD2.js";import"../../chunks/chunk-IUXSJWL3.js";import{getLinkFromDir,getLinkedProject,getProjectByNameOrId,getVercelDirectory,sleep}from"../../chunks/chunk-KNLGWGUE.js";import"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-BBKEP7RO.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-VOCZ34ON.js";import"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,validateJsonOutput}from"../../chunks/chunk-AWMQGOS2.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import{ProjectNotFound}from"../../chunks/chunk-6VH56CX2.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-JESNVRVR.js";import{output_manager_default,require_build_utils}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_ms=__toESM(require_ms(),1),import_chalk=__toESM(require_source(),1),import_title=__toESM(require_lib(),1);function parsePolicy(policy){if(!policy)return{};typeof policy=="string"&&(policy=[policy]);let parsed={};for(let item of policy){let[key,...rest]=item.split("=");parsed[key]=rest.join("=")}return parsed}var import_error_utils=__toESM(require_dist(),1);var import_build_utils=__toESM(require_build_utils(),1);async function getLinkedProjectWithDeployments(client,getQuery){let early;if(getQuery){let localLink=await readLocalLink(client.cwd);localLink&&(early=requestDeployments(client,localLink,getQuery(localLink.projectId)))}let link;try{link=await getLinkedProject(client,{cwd:client.cwd})}catch(err){throw early?.cancel(),err}return early&&link.status==="linked"&&link.project.id===early.projectId&&link.org.id===early.orgId?{link,deployments:{pages:early.pages(),sentAt:early.sentAt}}:(early?.cancel(),{link})}async function readLocalLink(cwd){let orgId=(0,import_build_utils.getPlatformEnv)("ORG_ID"),projectId=(0,import_build_utils.getPlatformEnv)("PROJECT_ID");if(orgId||projectId)return orgId&&projectId?{orgId,projectId}:null;try{return await getLinkFromDir(getVercelDirectory(cwd))}catch{return null}}function requestDeployments(client,{orgId,projectId},query){query.set("teamId",orgId);let url=`/v6/deployments?${query}`,controller=new AbortController,sentAt=Date.now(),first=client.fetch(url,{signal:controller.signal,retry:{retries:0}}).catch(()=>null);return{orgId,projectId,sentAt,async*pages(){let page=await first;if(!page){yield*client.fetchPaginated(url);return}yield page;let next=page.pagination?.next;if(next){await sleep(100);let rest=new URLSearchParams(query);rest.set("until",String(next)),yield*client.fetchPaginated(`/v6/deployments?${rest}`)}},cancel(){controller.abort()}}}var ListTelemetryClient=class extends TelemetryClient{trackCliFlagAll(all){all&&this.trackCliFlag("all")}trackCliOptionMeta(meta){meta&&meta.length>0&&this.trackCliOption({option:"meta",value:this.redactedValue})}trackCliOptionPolicy(policy){policy&&policy.length>0&&this.trackCliOption({option:"policy",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionLimit(limit){limit&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliFlagProd(flag){flag&&this.trackCliFlag("prod")}trackCliFlagYes(flag){flag&&this.trackCliFlag("yes")}trackCliFlagConfirm(flag){flag&&this.trackCliFlag("confirm")}trackCliOptionStatus(status){status&&this.trackCliOption({option:"status",value:this.redactedValue})}trackCliArgumentApp(app){app&&this.trackCliArgument({arg:"app",value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function toDate(timestamp){let date=new Date(timestamp),options={year:"2-digit",month:"2-digit",day:"2-digit"};return date.toLocaleDateString("en-US",options)}async function list(client){let{print,log,warn,error,note,debug,spinner}=output_manager_default,parsedArgs=null,flagsSpecification=getFlagsSpecification(listCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error2){return printError(error2),2}let telemetry=new ListTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("list"),print(help(listCommand,{columns:client.stderr.columns})),0;let validationResult=validateLsArgs({commandName:"ls [app]",args:parsedArgs.args,maxArgs:2,exitCode:2});if(validationResult!==0)return validationResult;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliFlagAll(parsedArgs.flags["--all"]),telemetry.trackCliFlagProd(parsedArgs.flags["--prod"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),telemetry.trackCliOptionMeta(parsedArgs.flags["--meta"]),telemetry.trackCliOptionNext(parsedArgs.flags["--next"]),telemetry.trackCliOptionLimit(parsedArgs.flags["--limit"]),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliOptionPolicy(parsedArgs.flags["--policy"]),telemetry.trackCliOptionStatus(parsedArgs.flags["--status"]),"--confirm"in parsedArgs.flags&&(telemetry.trackCliFlagConfirm(parsedArgs.flags["--confirm"]),warn("`--confirm` is deprecated, please use `--yes` instead"),parsedArgs.flags["--yes"]=parsedArgs.flags["--confirm"]);let meta=parseMeta(parsedArgs.flags["--meta"]),policy=parsePolicy(parsedArgs.flags["--policy"]);warnDeprecatedProdFlag(client,parsedArgs.flags);let target=parseTarget({flagName:"environment",flags:parsedArgs.flags}),statusFlag=parsedArgs.flags["--status"],status;if(statusFlag){let validStatuses=["BUILDING","ERROR","INITIALIZING","QUEUED","READY","CANCELED","BLOCKED"],statusValues=statusFlag.split(",").map(s=>s.trim().toUpperCase()),invalidStatuses=statusValues.filter(s=>!validStatuses.includes(s));if(invalidStatuses.length>0)return error(`Invalid status values: ${invalidStatuses.join(", ")}. Valid values are: ${validStatuses.join(", ")}`),1;status=statusValues.join(",")}let paginationError,nextTimestamp,limitFlag;try{[nextTimestamp,limitFlag]=getPaginationOpts(parsedArgs.flags)}catch(err){paginationError=err}let limit=limitFlag??20,getDeploymentsQuery=projectId=>{let query=new URLSearchParams({limit:String(limit)});projectId&&query.set("projectId",projectId);for(let[k,v]of Object.entries(meta))query.set(`meta-${k}`,v);for(let[k,v]of Object.entries(policy))query.set(`policy-${k}`,v);return nextTimestamp&&query.set("until",String(nextTimestamp)),target&&query.set("target",target),status&&query.set("state",status),query},project,pagination,contextName="",app=parsedArgs.args[1],deployments=[],singleDeployment=!1,linkedDeployments,allFlag=parsedArgs.flags["--all"],showAllProjects=!1;if(allFlag&&app)return error("Cannot use --all flag with a project argument"),2;if(app){if(!isValidName(app))return error(`The provided argument "${app}" is not a valid project name`),2;if(telemetry.trackCliArgumentApp(app),app.includes(".")){try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(!contextName)return error("No context name found"),1;let host=toHost(app),deployment=await getDeployment(client,contextName,host);if(!deployment.projectId)return error(`Could not find a deployment for "${host}"`),1;app=deployment.projectId,note(`We suggest using ${getCommandName("inspect <deployment>")} for retrieving details about a single deployment`),deployments.push(deployment),singleDeployment=!0}let p=await getProjectByNameOrId(client,app);if(p instanceof ProjectNotFound)return exitWithNonInteractiveError(client,p,1,{variant:"list",projectName:app}),error(`The provided argument "${app}" is not a valid project name`),1;project=p}else if(allFlag)showAllProjects=!0;else{let linked=await getLinkedProjectWithDeployments(client,paginationError===void 0?getDeploymentsQuery:void 0),{link}=linked;if(linkedDeployments=linked.deployments,link.status==="error")return link.exitCode;link.status==="linked"?(project=link.project,client.config.currentTeam=link.org.id):showAllProjects=!0}if(!contextName)try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(paginationError!==void 0)return printError(paginationError),paginationError instanceof InvalidNextError?2:1;let projectSlugLink=project?formatProject(contextName,project.name):null;if(!singleDeployment){asJson||spinner(`Fetching deployments in ${import_chalk.default.bold(contextName)}`);let start=linkedDeployments?.sentAt??Date.now();debug("Fetching deployments");let pages=linkedDeployments?.pages??client.fetchPaginated(`/v6/deployments?${getDeploymentsQuery(project?.id)}`);for await(let chunk of pages)if(deployments.push(...chunk.deployments),pagination=chunk.pagination,deployments.length>=limit)break;if(deployments.length=Math.min(deployments.length,limit),!deployments.length){if(asJson){let jsonOutput={deployments:[],pagination,contextName};client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
7
+ import{parseMeta}from"../../chunks/chunk-CZSOZKHX.js";import{formatEnvironment}from"../../chunks/chunk-JLEJB6KM.js";import{isValidName}from"../../chunks/chunk-PADL3C6Z.js";import{InvalidNextError,getPaginationOpts}from"../../chunks/chunk-C6GY2G73.js";import{elapsed}from"../../chunks/chunk-Q7D7RGXM.js";import{parseTarget,warnDeprecatedProdFlag}from"../../chunks/chunk-7QAGSRCU.js";import"../../chunks/chunk-7YKFF6CE.js";import{formatProject}from"../../chunks/chunk-6OVX3PWM.js";import{getDeployment,toHost}from"../../chunks/chunk-R6BEOVTU.js";import"../../chunks/chunk-HCRD3JFL.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{printNextPageCommand}from"../../chunks/chunk-VNIKIQVE.js";import{validateLsArgs}from"../../chunks/chunk-KW6GSQXV.js";import{listCommand}from"../../chunks/chunk-FSPPKNKN.js";import{help}from"../../chunks/chunk-FLHO75XC.js";import{table}from"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-HSFKISDH.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import{TelemetryClient}from"../../chunks/chunk-6YXIWZ3X.js";import"../../chunks/chunk-PUKYAALC.js";import{getContextName}from"../../chunks/chunk-K5U47EVH.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import{exitWithNonInteractiveError}from"../../chunks/chunk-WDXW6A4H.js";import"../../chunks/chunk-DKJL2KV7.js";import{getLinkFromDir,getLinkedProject,getProjectByNameOrId,getVercelDirectory,sleep}from"../../chunks/chunk-4N6LMERQ.js";import"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-CWM2F235.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-KCKYPLIH.js";import"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,validateJsonOutput}from"../../chunks/chunk-QVXS234E.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import{ProjectNotFound}from"../../chunks/chunk-6VH56CX2.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-JESNVRVR.js";import{output_manager_default,require_build_utils}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_ms=__toESM(require_ms(),1),import_chalk=__toESM(require_source(),1),import_title=__toESM(require_lib(),1);function parsePolicy(policy){if(!policy)return{};typeof policy=="string"&&(policy=[policy]);let parsed={};for(let item of policy){let[key,...rest]=item.split("=");parsed[key]=rest.join("=")}return parsed}var import_error_utils=__toESM(require_dist(),1);var import_build_utils=__toESM(require_build_utils(),1);async function getLinkedProjectWithDeployments(client,getQuery){let early;if(getQuery){let localLink=await readLocalLink(client.cwd);localLink&&(early=requestDeployments(client,localLink,getQuery(localLink.projectId)))}let link;try{link=await getLinkedProject(client,{cwd:client.cwd})}catch(err){throw early?.cancel(),err}return early&&link.status==="linked"&&link.project.id===early.projectId&&link.org.id===early.orgId?{link,deployments:{pages:early.pages(),sentAt:early.sentAt}}:(early?.cancel(),{link})}async function readLocalLink(cwd){let orgId=(0,import_build_utils.getPlatformEnv)("ORG_ID"),projectId=(0,import_build_utils.getPlatformEnv)("PROJECT_ID");if(orgId||projectId)return orgId&&projectId?{orgId,projectId}:null;try{return await getLinkFromDir(getVercelDirectory(cwd))}catch{return null}}function requestDeployments(client,{orgId,projectId},query){query.set("teamId",orgId);let url=`/v6/deployments?${query}`,controller=new AbortController,sentAt=Date.now(),first=client.fetch(url,{signal:controller.signal,retry:{retries:0}}).catch(()=>null);return{orgId,projectId,sentAt,async*pages(){let page=await first;if(!page){yield*client.fetchPaginated(url);return}yield page;let next=page.pagination?.next;if(next){await sleep(100);let rest=new URLSearchParams(query);rest.set("until",String(next)),yield*client.fetchPaginated(`/v6/deployments?${rest}`)}},cancel(){controller.abort()}}}var ListTelemetryClient=class extends TelemetryClient{trackCliFlagAll(all){all&&this.trackCliFlag("all")}trackCliOptionMeta(meta){meta&&meta.length>0&&this.trackCliOption({option:"meta",value:this.redactedValue})}trackCliOptionPolicy(policy){policy&&policy.length>0&&this.trackCliOption({option:"policy",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionLimit(limit){limit&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliFlagProd(flag){flag&&this.trackCliFlag("prod")}trackCliFlagYes(flag){flag&&this.trackCliFlag("yes")}trackCliFlagConfirm(flag){flag&&this.trackCliFlag("confirm")}trackCliOptionStatus(status){status&&this.trackCliOption({option:"status",value:this.redactedValue})}trackCliArgumentApp(app){app&&this.trackCliArgument({arg:"app",value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function toDate(timestamp){let date=new Date(timestamp),options={year:"2-digit",month:"2-digit",day:"2-digit"};return date.toLocaleDateString("en-US",options)}async function list(client){let{print,log,warn,error,note,debug,spinner}=output_manager_default,parsedArgs=null,flagsSpecification=getFlagsSpecification(listCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error2){return printError(error2),2}let telemetry=new ListTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("list"),print(help(listCommand,{columns:client.stderr.columns})),0;let validationResult=validateLsArgs({commandName:"ls [app]",args:parsedArgs.args,maxArgs:2,exitCode:2});if(validationResult!==0)return validationResult;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return error(formatResult.error),2;let asJson=formatResult.jsonOutput;telemetry.trackCliFlagAll(parsedArgs.flags["--all"]),telemetry.trackCliFlagProd(parsedArgs.flags["--prod"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),telemetry.trackCliOptionMeta(parsedArgs.flags["--meta"]),telemetry.trackCliOptionNext(parsedArgs.flags["--next"]),telemetry.trackCliOptionLimit(parsedArgs.flags["--limit"]),telemetry.trackCliOptionFormat(parsedArgs.flags["--format"]),telemetry.trackCliOptionPolicy(parsedArgs.flags["--policy"]),telemetry.trackCliOptionStatus(parsedArgs.flags["--status"]),"--confirm"in parsedArgs.flags&&(telemetry.trackCliFlagConfirm(parsedArgs.flags["--confirm"]),warn("`--confirm` is deprecated, please use `--yes` instead"),parsedArgs.flags["--yes"]=parsedArgs.flags["--confirm"]);let meta=parseMeta(parsedArgs.flags["--meta"]),policy=parsePolicy(parsedArgs.flags["--policy"]);warnDeprecatedProdFlag(client,parsedArgs.flags);let target=parseTarget({flagName:"environment",flags:parsedArgs.flags}),statusFlag=parsedArgs.flags["--status"],status;if(statusFlag){let validStatuses=["BUILDING","ERROR","INITIALIZING","QUEUED","READY","CANCELED","BLOCKED"],statusValues=statusFlag.split(",").map(s=>s.trim().toUpperCase()),invalidStatuses=statusValues.filter(s=>!validStatuses.includes(s));if(invalidStatuses.length>0)return error(`Invalid status values: ${invalidStatuses.join(", ")}. Valid values are: ${validStatuses.join(", ")}`),1;status=statusValues.join(",")}let paginationError,nextTimestamp,limitFlag;try{[nextTimestamp,limitFlag]=getPaginationOpts(parsedArgs.flags)}catch(err){paginationError=err}let limit=limitFlag??20,getDeploymentsQuery=projectId=>{let query=new URLSearchParams({limit:String(limit)});projectId&&query.set("projectId",projectId);for(let[k,v]of Object.entries(meta))query.set(`meta-${k}`,v);for(let[k,v]of Object.entries(policy))query.set(`policy-${k}`,v);return nextTimestamp&&query.set("until",String(nextTimestamp)),target&&query.set("target",target),status&&query.set("state",status),query},project,pagination,contextName="",app=parsedArgs.args[1],deployments=[],singleDeployment=!1,linkedDeployments,allFlag=parsedArgs.flags["--all"],showAllProjects=!1;if(allFlag&&app)return error("Cannot use --all flag with a project argument"),2;if(app){if(!isValidName(app))return error(`The provided argument "${app}" is not a valid project name`),2;if(telemetry.trackCliArgumentApp(app),app.includes(".")){try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(!contextName)return error("No context name found"),1;let host=toHost(app),deployment=await getDeployment(client,contextName,host);if(!deployment.projectId)return error(`Could not find a deployment for "${host}"`),1;app=deployment.projectId,note(`We suggest using ${getCommandName("inspect <deployment>")} for retrieving details about a single deployment`),deployments.push(deployment),singleDeployment=!0}let p=await getProjectByNameOrId(client,app);if(p instanceof ProjectNotFound)return exitWithNonInteractiveError(client,p,1,{variant:"list",projectName:app}),error(`The provided argument "${app}" is not a valid project name`),1;project=p}else if(allFlag)showAllProjects=!0;else{let linked=await getLinkedProjectWithDeployments(client,paginationError===void 0?getDeploymentsQuery:void 0),{link}=linked;if(linkedDeployments=linked.deployments,link.status==="error")return link.exitCode;link.status==="linked"?(project=link.project,client.config.currentTeam=link.org.id):showAllProjects=!0}if(!contextName)try{contextName=await getContextName(client)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&(err.code==="NOT_AUTHORIZED"||err.code==="TEAM_DELETED"))return error(err.message),1}if(paginationError!==void 0)return printError(paginationError),paginationError instanceof InvalidNextError?2:1;let projectSlugLink=project?formatProject(contextName,project.name):null;if(!singleDeployment){asJson||spinner(`Fetching deployments in ${import_chalk.default.bold(contextName)}`);let start=linkedDeployments?.sentAt??Date.now();debug("Fetching deployments");let pages=linkedDeployments?.pages??client.fetchPaginated(`/v6/deployments?${getDeploymentsQuery(project?.id)}`);for await(let chunk of pages)if(deployments.push(...chunk.deployments),pagination=chunk.pagination,deployments.length>=limit)break;if(deployments.length=Math.min(deployments.length,limit),!deployments.length){if(asJson){let jsonOutput={deployments:[],pagination,contextName};client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
8
8
  `)}else log(`No deployments found under ${import_chalk.default.bold(contextName)}.`);return 0}if(!asJson){let deploymentsLabel=target==="production"?"Production deployments":"Deployments";log(showAllProjects?`${deploymentsLabel} under ${import_chalk.default.bold(contextName)} ${elapsed(Date.now()-start)}`:`${deploymentsLabel} for ${projectSlugLink} ${elapsed(Date.now()-start)}`)}}if(asJson){let jsonOutput={contextName,deployments:deployments.sort(sortByCreatedAt).map(dep=>({id:dep.id,url:dep.url,name:dep.name,state:dep.readyState,target:dep.target,customEnvironment:dep.customEnvironment?{id:dep.customEnvironment.id,slug:dep.customEnvironment.slug}:void 0,createdAt:dep.createdAt,buildingAt:dep.buildingAt,ready:dep.ready,creator:dep.creator?{uid:dep.creator.uid,username:dep.creator.username}:void 0,meta:dep.meta})),pagination};return client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
9
9
  `),0}let headers=["Age","Project","Deployment","Status","Environment"],showPolicy=Object.keys(policy).length>0;showPolicy||headers.push("Duration","Username"),showPolicy&&headers.push("Proposed Expiration");let urls=[],tablePrint=table([headers.map(header=>import_chalk.default.bold(import_chalk.default.cyan(header))),...deployments.sort(sortByCreatedAt).map(dep=>{urls.push(`https://${dep.url}`);let proposedExp=dep.proposedExpiration?toDate(Math.min(Date.now(),dep.proposedExpiration)):"No expiration",createdAt=(0,import_ms.default)(Date.now()-(dep?.undeletedAt??dep.createdAt)),targetName=dep.customEnvironment?.slug||(dep.target==="production"?"Production":"Preview"),targetSlug=dep.customEnvironment?.id||dep.target||"preview";return[import_chalk.default.gray(createdAt),formatProject(contextName,dep.name),`https://${dep.url}`,stateString(dep.readyState||""),formatEnvironment(contextName,dep.name,{id:targetSlug,slug:targetName}),...showPolicy?[]:[import_chalk.default.gray(getDeploymentDuration(dep))],...showPolicy?[]:[import_chalk.default.gray(dep.creator?.username)],...showPolicy?[import_chalk.default.gray(proposedExp)]:[]]}).filter(app2=>app2===null?filterUniqueApps():()=>!0)],{hsep:5}).replace(/^/gm," ");if(print(`
10
10
  ${tablePrint}
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{createProject}from"../../chunks/chunk-QHJLRTVY.js";import{handleCommandTypo}from"../../chunks/chunk-IA3MXJRC.js";import{getProjectByCwdOrLink}from"../../chunks/chunk-VMMMBWD3.js";import{joinWords}from"../../chunks/chunk-4VFYJU37.js";import{tryOpenApiFallback}from"../../chunks/chunk-S5IWVPYT.js";import"../../chunks/chunk-GHAY4PSD.js";import{did_you_mean_default}from"../../chunks/chunk-DWZBL4NK.js";import{resolveOpenApiTagForProjectsCli}from"../../chunks/chunk-22FDWPWY.js";import{email}from"../../chunks/chunk-6IDNVZZR.js";import{require_async_sema}from"../../chunks/chunk-NZ2TFADV.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"../../chunks/chunk-C6GY2G73.js";import{formatDate}from"../../chunks/chunk-HRR57QNP.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-Q7D7RGXM.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import{resolveProjectContext}from"../../chunks/chunk-3JGBBS6V.js";import{formatProject}from"../../chunks/chunk-6OVX3PWM.js";import"../../chunks/chunk-OQCMRU3J.js";import"../../chunks/chunk-BL3HBRF6.js";import{readOnOffOption,rewriteLegacyOnOffValues}from"../../chunks/chunk-IKQTP764.js";import{canPrompt}from"../../chunks/chunk-IQ7FPAI4.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{getNextPageCommand,printNextPageCommand}from"../../chunks/chunk-QMCHGGDX.js";import"../../chunks/chunk-PFD7LETF.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{PROJECT_MEMBER_ROLES,accessGroupsSubcommand,accessSummarySubcommand,addSubcommand8 as addSubcommand,checksAddFlags,checksRemoveFlags,checksSubcommand,dangerouslyDeleteImmutableStaticAssetSubcommand,getCommandAliases,inspectSubcommand13 as inspectSubcommand,listSubcommand19 as listSubcommand,membersAddFlags,membersRemoveFlags,membersSubcommand,observabilityDisableSubcommand,observabilitySubcommand,pauseSubcommand2 as pauseSubcommand,prioritySubcommand,projectCommand,protectionEnableSubcommand,protectionSubcommand,removeSubcommand13 as removeSubcommand,renameSubcommand,resumeSubcommand2 as resumeSubcommand,speedInsightsSubcommand,tokenSubcommand2 as tokenSubcommand,updateSubcommand10 as updateSubcommand,webAnalyticsDisableSubcommand,webAnalyticsSubcommand}from"../../chunks/chunk-TPNOSQZ3.js";import"../../chunks/chunk-LUBUI5GF.js";import"../../chunks/chunk-GVTXA6HG.js";import"../../chunks/chunk-5IASAERQ.js";import"../../chunks/chunk-WGXKX24Q.js";import"../../chunks/chunk-E2SADN6I.js";import"../../chunks/chunk-ABZEMNDR.js";import"../../chunks/chunk-3AYYFYZG.js";import"../../chunks/chunk-76KGQU2G.js";import"../../chunks/chunk-UNEGQPD3.js";import"../../chunks/chunk-YHQ7PPXP.js";import"../../chunks/chunk-NQWGRKF4.js";import"../../chunks/chunk-IGDG5CWT.js";import"../../chunks/chunk-QZX7VG2V.js";import"../../chunks/chunk-3ADDGPEN.js";import"../../chunks/chunk-B4YYOSPY.js";import"../../chunks/chunk-PFNYWWLI.js";import"../../chunks/chunk-NTZ5WWYV.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-LJBUJ23M.js";import"../../chunks/chunk-OKEBIUKZ.js";import{help}from"../../chunks/chunk-KH6565YH.js";import{table}from"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-G4T7VBGN.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import"../../chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"../../chunks/chunk-2PKEEQ5W.js";import"../../chunks/chunk-PUKYAALC.js";import{getContextName,getScope,scopeFlagPassed}from"../../chunks/chunk-B4UE4LVE.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import{getTeams}from"../../chunks/chunk-FGFLTLEA.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,BUY_PRO_COMMAND,PRIORITY_PROJECT_ENABLE_COMMAND,buildCommandWithGlobalFlags,buildCommandWithYes,buyProFix,exitWithNonInteractiveError,getExitCodeForReason,isProOrEnterprisePlan,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,targetRecovery,writeAgentError}from"../../chunks/chunk-DGYHWXD2.js";import"../../chunks/chunk-IUXSJWL3.js";import{getProjectByNameOrId,getUser,require_pluralize,sleep}from"../../chunks/chunk-KNLGWGUE.js";import{printAlignedLabel}from"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-BBKEP7RO.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-VOCZ34ON.js";import{getTeamByIdOrSlug,quoteArg}from"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,stripSensitiveAuthArgs,validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"../../chunks/chunk-AWMQGOS2.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import{LinkRequiredError,ProjectNotFound,isAPIError}from"../../chunks/chunk-6VH56CX2.js";import{getCommandName,getCommandNamePlain,packageName}from"../../chunks/chunk-JESNVRVR.js";import{emoji,output_manager_default,prependEmoji,require_build_utils}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);var ProjectAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}};async function add(client,argv){let telemetryClient=new ProjectAddTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==1){if(output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk.default.cyan(`${getCommandName("project create <name>")}`)}`),args.length>1){let example=import_chalk.default.cyan(`${getCommandName(`project create "${args.join(" ")}"`)}`);output_manager_default.log(`If your project name has spaces, make sure to wrap it in quotes. Example:
7
+ import{createProject}from"../../chunks/chunk-QHJLRTVY.js";import{handleCommandTypo}from"../../chunks/chunk-EISD3RG7.js";import{getProjectByCwdOrLink}from"../../chunks/chunk-YHULP2KK.js";import{joinWords}from"../../chunks/chunk-4VFYJU37.js";import{tryOpenApiFallback}from"../../chunks/chunk-KPQLUGFI.js";import"../../chunks/chunk-GHAY4PSD.js";import{did_you_mean_default}from"../../chunks/chunk-DWZBL4NK.js";import{resolveOpenApiTagForProjectsCli}from"../../chunks/chunk-363SJ4TN.js";import{email}from"../../chunks/chunk-6IDNVZZR.js";import{require_async_sema}from"../../chunks/chunk-NZ2TFADV.js";import{INVALID_NEXT_MESSAGE,InvalidNextError,getPaginationOpts,parseNumericCursor}from"../../chunks/chunk-C6GY2G73.js";import{formatDate}from"../../chunks/chunk-HRR57QNP.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-Q7D7RGXM.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import{resolveProjectContext}from"../../chunks/chunk-JP33AIDQ.js";import{formatProject}from"../../chunks/chunk-6OVX3PWM.js";import"../../chunks/chunk-HTXDC7E2.js";import"../../chunks/chunk-2TUVL6WE.js";import{readOnOffOption,rewriteLegacyOnOffValues}from"../../chunks/chunk-Y5ZMKL7E.js";import{canPrompt}from"../../chunks/chunk-IQ7FPAI4.js";import{getCommandFlags}from"../../chunks/chunk-XGTKHQTT.js";import{getNextPageCommand,printNextPageCommand}from"../../chunks/chunk-VNIKIQVE.js";import"../../chunks/chunk-PFD7LETF.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"../../chunks/chunk-T6243EDS.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getTeams}from"../../chunks/chunk-FGFLTLEA.js";import{PROJECT_MEMBER_ROLES,accessGroupsSubcommand,accessSummarySubcommand,addSubcommand8 as addSubcommand,checksAddFlags,checksRemoveFlags,checksSubcommand,dangerouslyDeleteImmutableStaticAssetSubcommand,getCommandAliases,inspectSubcommand13 as inspectSubcommand,listSubcommand19 as listSubcommand,membersAddFlags,membersRemoveFlags,membersSubcommand,observabilityDisableSubcommand,observabilitySubcommand,pauseSubcommand2 as pauseSubcommand,prioritySubcommand,projectCommand,protectionEnableSubcommand,protectionSubcommand,removeSubcommand13 as removeSubcommand,renameSubcommand,resumeSubcommand2 as resumeSubcommand,speedInsightsSubcommand,tokenSubcommand2 as tokenSubcommand,updateSubcommand10 as updateSubcommand,webAnalyticsDisableSubcommand,webAnalyticsSubcommand}from"../../chunks/chunk-O4WNSKQR.js";import"../../chunks/chunk-6I6QJHCY.js";import"../../chunks/chunk-EKZTFGDX.js";import"../../chunks/chunk-462YCCJZ.js";import"../../chunks/chunk-WVHCBDTB.js";import"../../chunks/chunk-TAISZMA2.js";import"../../chunks/chunk-527GBU3K.js";import"../../chunks/chunk-CR3NBTHV.js";import"../../chunks/chunk-BVGGTBYE.js";import"../../chunks/chunk-6TXEVQA4.js";import"../../chunks/chunk-5KUUMQ3M.js";import"../../chunks/chunk-UHBMX3OK.js";import"../../chunks/chunk-EEUJLJEJ.js";import"../../chunks/chunk-NW7WWUCQ.js";import"../../chunks/chunk-F6EBOT64.js";import"../../chunks/chunk-LFOWP74R.js";import"../../chunks/chunk-LOBA3E72.js";import"../../chunks/chunk-7R6TRRG5.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-OZCQTXI4.js";import"../../chunks/chunk-FSPPKNKN.js";import{help}from"../../chunks/chunk-FLHO75XC.js";import{table}from"../../chunks/chunk-773GOZIR.js";import{printError}from"../../chunks/chunk-HSFKISDH.js";import"../../chunks/chunk-67GZ5REA.js";import"../../chunks/chunk-BS32OUOC.js";import"../../chunks/chunk-3G3FQYMW.js";import{TelemetryClient}from"../../chunks/chunk-6YXIWZ3X.js";import"../../chunks/chunk-PUKYAALC.js";import{getContextName,getScope,scopeFlagPassed}from"../../chunks/chunk-K5U47EVH.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-NWGBDBZI.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,BUY_PRO_COMMAND,PRIORITY_PROJECT_ENABLE_COMMAND,buildCommandWithGlobalFlags,buildCommandWithYes,buyProFix,exitWithNonInteractiveError,getExitCodeForReason,isProOrEnterprisePlan,outputActionRequired,outputAgentError,shouldEmitNonInteractiveCommandError,targetRecovery,writeAgentError}from"../../chunks/chunk-WDXW6A4H.js";import"../../chunks/chunk-DKJL2KV7.js";import{getProjectByNameOrId,getUser,require_pluralize,sleep}from"../../chunks/chunk-4N6LMERQ.js";import{printAlignedLabel}from"../../chunks/chunk-ADLBLGT3.js";import"../../chunks/chunk-CWM2F235.js";import"../../chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,parseArguments}from"../../chunks/chunk-KCKYPLIH.js";import{getTeamByIdOrSlug,quoteArg}from"../../chunks/chunk-F53OKXYI.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,stripSensitiveAuthArgs,validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedSubcommand}from"../../chunks/chunk-QVXS234E.js";import"../../chunks/chunk-FUX6LKNP.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-4SAVH3H7.js";import{LinkRequiredError,ProjectNotFound,isAPIError}from"../../chunks/chunk-6VH56CX2.js";import{getCommandName,getCommandNamePlain,packageName}from"../../chunks/chunk-JESNVRVR.js";import{emoji,output_manager_default,prependEmoji,require_build_utils}from"../../chunks/chunk-XP3FT56R.js";import"../../chunks/chunk-BLUPZPAS.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-OO572JUC.js";import"../../chunks/chunk-D3AHZ5LI.js";import"../../chunks/chunk-2GHZGOWT.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BRQUZ5NC.js";import{__toESM}from"../../chunks/chunk-BZENIQ7N.js";var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);var ProjectAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}};async function add(client,argv){let telemetryClient=new ProjectAddTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==1){if(output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk.default.cyan(`${getCommandName("project create <name>")}`)}`),args.length>1){let example=import_chalk.default.cyan(`${getCommandName(`project create "${args.join(" ")}"`)}`);output_manager_default.log(`If your project name has spaces, make sure to wrap it in quotes. Example:
8
8
  ${example} `)}return 2}let start=Date.now(),[name]=args;telemetryClient.trackCliArgumentName(name);try{await createProject(client,{name})}catch(err){if(isAPIError(err)&&err.code==="too_many_projects")return output_manager_default.prettyError(err),1;if(!(isAPIError(err)&&err.status===409))throw err}let elapsed=(0,import_ms.default)(Date.now()-start),contextName=await getContextName(client);return output_manager_default.log(`${import_chalk.default.cyan("Success!")} Project ${import_chalk.default.bold(name.toLowerCase())} added (${import_chalk.default.bold(contextName)}) ${import_chalk.default.gray(`[${elapsed}]`)}`),0}var import_chalk2=__toESM(require_source(),1);async function accessSummary(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(accessSummarySubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return output_manager_default.error("Invalid number of arguments. Usage: `vercel project access-summary [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,summary;try{let project=await getProjectByCwdOrLink({client,commandName:"project access-summary",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0});summary=await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/members/summary`)}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"access-summary"}),printError(err),1}if(asJson)return client.stdout.write(`${JSON.stringify(summary,null,2)}
9
9
  `),0;let entries=Object.entries(summary).sort(([a],[b])=>a.localeCompare(b));if(entries.length===0)return output_manager_default.log("No summary data returned."),0;let rows=[["Role","Count"].map(h=>(0,import_chalk2.gray)(h)),...entries.map(([role,count])=>[role,String(count)])];return client.stderr.write(`${table(rows,{hsep:3})}
10
10
  `),0}var import_chalk3=__toESM(require_source(),1);import{readFileSync}from"fs";import{resolve}from"path";var REQUIRES=["build-ready","deployment-url","none"],BLOCKING_STAGES=["build-start","deployment-start","deployment-alias","deployment-promotion","none"];function emitValidationError(client,message,exitCode,extra){outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message,...extra},exitCode)}async function checksAdd(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification([...checksAddFlags]);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:AGENT_REASON.INVALID_ARGUMENTS,message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return emitValidationError(client,"Invalid number of arguments. Usage: `vercel project checks add [name]`",2),output_manager_default.error("Invalid number of arguments. Usage: `vercel project checks add [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return client.nonInteractive&&emitValidationError(client,formatResult.error,1),output_manager_default.error(formatResult.error),1;let asJson=formatResult.jsonOutput||!!client.nonInteractive,filePath=parsedArgs.flags["--file"],checkName=parsedArgs.flags["--check-name"],requires=parsedArgs.flags["--requires"],blocksFlag=parsedArgs.flags["--blocks"],timeout=parsedArgs.flags["--timeout"],targetsRaw=parsedArgs.flags["--targets"],sourceRaw=parsedArgs.flags["--source"],body;if(typeof filePath=="string"&&filePath.length>0)try{let raw=readFileSync(resolve(client.cwd,filePath),"utf8"),parsed=JSON.parse(raw);if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return emitValidationError(client,"`--file` must contain a JSON object.",1),output_manager_default.error("`--file` must contain a JSON object."),1;body=parsed}catch(err){let msg=err instanceof Error?err.message:String(err);return emitValidationError(client,`Failed to read \`--file\`: ${msg}`,1),output_manager_default.error(`Failed to read \`--file\`: ${msg}`),1}else{if(typeof checkName!="string"||!checkName.trim())return emitValidationError(client,"Provide `--check-name` and `--requires`, or a `--file` with the full JSON body.",1,{hint:'See `vercel project checks --help` and the REST API "Create a check" documentation.',next:[{command:buildCommandWithGlobalFlags(client.argv,"project checks add <name> --file <path>"),when:"Create from a JSON file (replace paths)"}]}),output_manager_default.error("Provide `--check-name` and `--requires`, or a `--file` with the full JSON body. See `vercel project checks add --help`."),1;if(typeof requires!="string"||!requires.trim())return emitValidationError(client,"`--requires` is required when using `--check-name` (build-ready, deployment-url, or none).",1),output_manager_default.error("`--requires` is required when using `--check-name` (build-ready, deployment-url, or none)."),2;if(!REQUIRES.includes(requires))return emitValidationError(client,`\`--requires\` must be one of: ${REQUIRES.join(", ")}`,1),output_manager_default.error(`\`--requires\` must be one of: ${REQUIRES.join(", ")}`),2;if(body={name:checkName.trim(),requires:requires.trim()},typeof blocksFlag=="string"&&blocksFlag.length>0){if(!BLOCKING_STAGES.includes(blocksFlag))return emitValidationError(client,`\`--blocks\` must be one of: ${BLOCKING_STAGES.join(", ")}`,1),output_manager_default.error(`\`--blocks\` must be one of: ${BLOCKING_STAGES.join(", ")}`),2;body.blocks=blocksFlag}if(typeof timeout=="number"&&(body.timeout=timeout),typeof targetsRaw=="string"&&targetsRaw.trim()&&(body.targets=targetsRaw.split(",").map(s=>s.trim()).filter(Boolean)),typeof sourceRaw=="string"&&sourceRaw.trim())try{body.source=JSON.parse(sourceRaw)}catch{return emitValidationError(client,"`--source` must be valid JSON.",1),output_manager_default.error("`--source` must be valid JSON."),1}}try{let project=await getProjectByCwdOrLink({client,commandName:"project checks add",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0}),result=await client.fetch(`/v2/projects/${encodeURIComponent(project.id)}/checks`,{method:"POST",body});if(asJson){let id2=String(result.id??"");return client.nonInteractive?client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.OK,check:result,projectId:project.id,projectName:project.name,message:id2?`Created deployment check ${id2} on ${project.name}.`:`Created deployment check on ${project.name}.`,next:[{command:buildCommandWithGlobalFlags(client.argv,"project checks"),when:"List checks for this project"},{command:buildCommandWithGlobalFlags(client.argv,"project checks remove <check_id>"),when:"Remove a check by id if needed"}]},null,2)}
@@ -37,10 +37,10 @@ import{createProject}from"../../chunks/chunk-QHJLRTVY.js";import{handleCommandTy
37
37
  `)),output_manager_default.print(` ${import_chalk4.default.cyan("Region")} ${project.sandbox?.region??import_chalk4.default.dim("Auto")}
38
38
  `),output_manager_default.print(` ${import_chalk4.default.cyan("Failover Regions")} ${failoverRegions.length>0?formatSandboxRegionList(failoverRegions):import_chalk4.default.dim("None")}
39
39
  `)),output_manager_default.print(`
40
- `),0}var import_ms2=__toESM(require_ms(),1),import_chalk5=__toESM(require_source(),1);var ProjectListTelemetryClient=class extends TelemetryClient{trackCliFlagUpdateRequired(updateRequired){updateRequired&&this.trackCliFlag("update-required")}trackCliFlagPaused(paused){paused&&this.trackCliFlag("paused")}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionLimit(limit){limit&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}trackCliOptionFilter(filter){filter&&this.trackCliOption({option:"filter",value:this.redactedValue})}};var PAUSED_PROJECTS_INCOMPLETE="Some paused projects may be missing. More than 100 projects were updated at the same moment, and the API can't list past the first 100 of them.";async function listPausedProjects(client,opts={}){let limit=opts.limit??1/0,query=new URLSearchParams({limit:"100"});opts.search&&query.set("search",opts.search),opts.deprecated&&query.set("deprecated","true");let projects=[],seen=new Set,until=opts.until,incomplete=!1;for(;;){until&&query.set("until",String(until));let page=await client.fetch(`/v9/projects?${query}`),unseen=0;for(let project of page.projects)if(!seen.has(project.id)&&(seen.add(project.id),unseen++,!!project.paused)){if(projects.length>=limit){let last=projects[projects.length-1];if(project.updatedAt!==last.updatedAt)return{projects,next:last.updatedAt,incomplete};let first=projects.findIndex(p=>p.updatedAt===last.updatedAt);if(first>0)return{projects:projects.slice(0,first),next:last.updatedAt+1,incomplete}}projects.push(project)}let next=page.pagination?.next;if(!next)return{projects,next:null,incomplete};unseen>0?until=next+1:(until=next,incomplete=!0),await sleep(100)}}var TABLE_HEADERS=["Project Name","Latest Production URL","Updated","Node Version","Status"],PAGINATION_FLAGS_TO_EXCLUDE=["_","--next","-N","-d","-y","--json","--format"],DEFAULT_PROJECTS_LIMIT=20;async function list(client,argv){let telemetryClient=new ProjectListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags:opts}=parsedArgs;if(args.length!==0)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk5.default.cyan(`${getCommandName("project ls")}`)}`),2;let start=Date.now(),contextName=await getContextName(client,{resolveLocalScope:!0});output_manager_default.spinner(`Fetching projects in ${import_chalk5.default.bold(contextName)}`);let flags=processFlags(opts,telemetryClient);if("error"in flags)return output_manager_default.stopSpinner(),output_manager_default.error(flags.error),flags.exitCode;let{projects:projectList,pagination,incomplete}=await fetchProjects(client,flags);output_manager_default.stopSpinner();let elapsed=(0,import_ms2.default)(Date.now()-start);return flags.json?outputJson(client,projectList,{pagination,contextName,elapsed,deprecated:flags.deprecated,incomplete}):(outputTable(projectList,{contextName,elapsed,deprecated:flags.deprecated,paused:flags.paused,opts,pagination}),incomplete&&output_manager_default.warning(PAUSED_PROJECTS_INCOMPLETE),flags.paused&&projectList.length>0&&!flags.filter&&!flags.deprecated&&output_manager_default.print(`
40
+ `),0}var import_ms2=__toESM(require_ms(),1),import_chalk5=__toESM(require_source(),1);var ProjectListTelemetryClient=class extends TelemetryClient{trackCliFlagUpdateRequired(updateRequired){updateRequired&&this.trackCliFlag("update-required")}trackCliFlagPaused(paused){paused&&this.trackCliFlag("paused")}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionLimit(limit){limit&&this.trackCliOption({option:"limit",value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}trackCliOptionQuery(query){query&&this.trackCliOption({option:"query",value:this.redactedValue})}trackCliOptionFilter(filter){filter&&this.trackCliOption({option:"filter",value:this.redactedValue})}};var PAUSED_PROJECTS_INCOMPLETE="Some paused projects may be missing. More than 100 projects were updated at the same moment, and the API can't list past the first 100 of them.";async function listPausedProjects(client,opts={}){let limit=opts.limit??1/0,query=new URLSearchParams({limit:"100"});opts.search&&query.set("search",opts.search),opts.deprecated&&query.set("deprecated","true");let projects=[],seen=new Set,until=opts.until,incomplete=!1;for(;;){until&&query.set("until",String(until));let page=await client.fetch(`/v9/projects?${query}`),unseen=0;for(let project of page.projects)if(!seen.has(project.id)&&(seen.add(project.id),unseen++,!!project.paused)){if(projects.length>=limit){let last=projects[projects.length-1];if(project.updatedAt!==last.updatedAt)return{projects,next:last.updatedAt,incomplete};let first=projects.findIndex(p=>p.updatedAt===last.updatedAt);if(first>0)return{projects:projects.slice(0,first),next:last.updatedAt+1,incomplete}}projects.push(project)}let next=page.pagination?.next;if(!next)return{projects,next:null,incomplete};unseen>0?until=next+1:(until=next,incomplete=!0),await sleep(100)}}var TABLE_HEADERS=["Project Name","Latest Production URL","Updated","Node Version","Status"],PAGINATION_FLAGS_TO_EXCLUDE=["_","--next","-N","-d","-y","--json","--format"],DEFAULT_PROJECTS_LIMIT=20;async function list(client,argv){let telemetryClient=new ProjectListTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(listSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags:opts}=parsedArgs;if(args.length!==0)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk5.default.cyan(`${getCommandName("project ls")}`)}`),2;let formatResult=validateJsonOutput(opts),query=getRenamedOption(opts,"--query","--filter",{json:formatResult.valid&&formatResult.jsonOutput,typedName:getTypedOptionName(argv,flagsSpecification,"--filter")});if("error"in query)return reportRenamedOptionError(client,query.error,{json:formatResult.valid&&formatResult.jsonOutput});let start=Date.now(),contextName=await getContextName(client,{resolveLocalScope:!0});output_manager_default.spinner(`Fetching projects in ${import_chalk5.default.bold(contextName)}`);let flags=processFlags(opts,telemetryClient,query.value);if("error"in flags)return output_manager_default.stopSpinner(),output_manager_default.error(flags.error),flags.exitCode;opts["--filter"]!==void 0&&(opts["--query"]=opts["--filter"],delete opts["--filter"]);let{projects:projectList,pagination,incomplete}=await fetchProjects(client,flags);output_manager_default.stopSpinner();let elapsed=(0,import_ms2.default)(Date.now()-start);return flags.json?outputJson(client,projectList,{pagination,contextName,elapsed,deprecated:flags.deprecated,incomplete,deprecation:query.warning}):(outputTable(projectList,{contextName,elapsed,deprecated:flags.deprecated,paused:flags.paused,opts,pagination}),incomplete&&output_manager_default.warning(PAUSED_PROJECTS_INCOMPLETE),flags.paused&&projectList.length>0&&!flags.filter&&!flags.deprecated&&output_manager_default.print(`
41
41
  Resume them all:
42
42
  ${buildCommandWithGlobalFlags(client.argv,"project resume --all")}
43
- `)),0}function processFlags(opts,telemetryClient){let deprecated=opts["--update-required"]||!1,paused=opts["--paused"]||!1,filter=opts["--filter"],limit=opts["--limit"],formatResult=validateJsonOutput(opts);if(!formatResult.valid)return{error:formatResult.error,exitCode:1};let json=formatResult.jsonOutput;telemetryClient.trackCliFlagUpdateRequired(deprecated),telemetryClient.trackCliFlagPaused(paused),telemetryClient.trackCliOptionNext(opts["--next"]),telemetryClient.trackCliOptionLimit(limit),telemetryClient.trackCliOptionFormat(opts["--format"]),telemetryClient.trackCliFlagJson(opts["--json"]),telemetryClient.trackCliOptionFilter(filter);let next;try{[next]=getPaginationOpts(opts)}catch(error){return{error:error instanceof Error?error.message:String(error),exitCode:error instanceof InvalidNextError?2:1}}return{deprecated,paused,next,json,filter,limit}}async function fetchProjects(client,flags){if(flags.paused){let{projects,next,incomplete}=await listPausedProjects(client,{limit:flags.limit??DEFAULT_PROJECTS_LIMIT,until:flags.next,search:flags.filter,deprecated:flags.deprecated});return{projects,pagination:{count:projects.length,next},incomplete}}return client.fetch(buildProjectsUrl(flags),{method:"GET"})}function buildProjectsUrl(flags){let query=new URLSearchParams({limit:String(flags.limit??DEFAULT_PROJECTS_LIMIT),latestDeployments:"0"});return flags.deprecated&&query.set("deprecated",String(flags.deprecated)),flags.next&&query.set("until",String(flags.next)),flags.filter&&query.set("search",flags.filter),`/v9/projects?${query}`}function createProjectJson(project,deprecated){return{name:project.name,id:project.id,latestProductionUrl:getLatestProdUrl(project),updatedAt:project.updatedAt,nodeVersion:project.nodeVersion??null,deprecated,paused:project.paused??!1}}function outputJson(client,projectList,metadata){let jsonOutput={projects:projectList.map(project=>createProjectJson(project,metadata.deprecated)),pagination:metadata.pagination,contextName:metadata.contextName,elapsed:metadata.elapsed,...metadata.incomplete&&{warnings:[{reason:AGENT_REASON.INCOMPLETE_RESULTS,message:PAUSED_PROJECTS_INCOMPLETE}]}};client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
43
+ `)),0}function processFlags(opts,telemetryClient,filter){let deprecated=opts["--update-required"]||!1,paused=opts["--paused"]||!1,limit=opts["--limit"],formatResult=validateJsonOutput(opts);if(!formatResult.valid)return{error:formatResult.error,exitCode:1};let json=formatResult.jsonOutput;telemetryClient.trackCliFlagUpdateRequired(deprecated),telemetryClient.trackCliFlagPaused(paused),telemetryClient.trackCliOptionNext(opts["--next"]),telemetryClient.trackCliOptionLimit(limit),telemetryClient.trackCliOptionFormat(opts["--format"]),telemetryClient.trackCliFlagJson(opts["--json"]),telemetryClient.trackCliOptionQuery(opts["--query"]),telemetryClient.trackCliOptionFilter(opts["--filter"]);let next;try{[next]=getPaginationOpts(opts)}catch(error){return{error:error instanceof Error?error.message:String(error),exitCode:error instanceof InvalidNextError?2:1}}return{deprecated,paused,next,json,filter,limit}}async function fetchProjects(client,flags){if(flags.paused){let{projects,next,incomplete}=await listPausedProjects(client,{limit:flags.limit??DEFAULT_PROJECTS_LIMIT,until:flags.next,search:flags.filter,deprecated:flags.deprecated});return{projects,pagination:{count:projects.length,next},incomplete}}return client.fetch(buildProjectsUrl(flags),{method:"GET"})}function buildProjectsUrl(flags){let query=new URLSearchParams({limit:String(flags.limit??DEFAULT_PROJECTS_LIMIT),latestDeployments:"0"});return flags.deprecated&&query.set("deprecated",String(flags.deprecated)),flags.next&&query.set("until",String(flags.next)),flags.filter&&query.set("search",flags.filter),`/v9/projects?${query}`}function createProjectJson(project,deprecated){return{name:project.name,id:project.id,latestProductionUrl:getLatestProdUrl(project),updatedAt:project.updatedAt,nodeVersion:project.nodeVersion??null,deprecated,paused:project.paused??!1}}function outputJson(client,projectList,metadata){let warnings=[...metadata.deprecation?[metadata.deprecation]:[],...metadata.incomplete?[{reason:AGENT_REASON.INCOMPLETE_RESULTS,message:PAUSED_PROJECTS_INCOMPLETE}]:[]],jsonOutput={projects:projectList.map(project=>createProjectJson(project,metadata.deprecated)),pagination:metadata.pagination,contextName:metadata.contextName,elapsed:metadata.elapsed,...warnings.length>0&&{warnings}};client.stdout.write(`${JSON.stringify(jsonOutput,null,2)}
44
44
  `)}function outputTable(projectList,options){let{contextName,elapsed,deprecated,paused,opts,pagination}=options,qualifiers=[paused&&"paused",deprecated&&"using a deprecated Node.js version"].filter(Boolean);output_manager_default.log(`${projectList.length>0?"Projects":"No projects"} found under ${import_chalk5.default.bold(contextName)} ${qualifiers.length>0?`that are ${qualifiers.join(" and ")}`:"\b"} ${import_chalk5.default.gray(`[${elapsed}]`)}`),projectList.length>0&&(printProjectsTable(projectList),printPaginationInstructions(opts,pagination))}function printProjectsTable(projectList){let tablePrint=table([TABLE_HEADERS.map(header=>import_chalk5.default.bold(import_chalk5.default.cyan(header))),...projectList.flatMap(project=>[[import_chalk5.default.bold(project.name),getLatestProdUrl(project),import_chalk5.default.gray((0,import_ms2.default)(Date.now()-project.updatedAt)),project.nodeVersion??"",project.paused?"Paused":""]])],{hsep:3}).replace(/^/gm," ");output_manager_default.print(`
45
45
  ${tablePrint}
46
46
 
@@ -56,13 +56,13 @@ ${tablePrint}
56
56
  `),0):(output_manager_default.log(`Added ${member} to ${project.name} as ${role}.`),0)}catch(err){if(isAPIError(err)&&err.status===400&&/not a confirmed member of the team/i.test(err.serverMessage)){let humanIntro=`${member} must be a confirmed member of the team before you can assign a project role.`,message=`${humanIntro} Invite them to the team first with \`${getCommandNamePlain("teams invite")}\`.`;return shouldEmitNonInteractiveCommandError(client)?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.NOT_TEAM_MEMBER,message}),1):jsonOutput||!canPrompt(client)?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:AGENT_REASON.NOT_TEAM_MEMBER,message},null,2)}
57
57
  `),1):(output_manager_default.error(humanIntro),output_manager_default.log(`Invite them to the team first with ${getCommandName("teams invite")}.`),1)}if(isAPIError(err)&&err.status===400&&/invalid role combination/i.test(err.serverMessage)){let humanIntro=`${member} can't be assigned the ${role} role because their team role does not permit it.`,pairs=Object.entries(PROJECT_ROLES_BY_TEAM_ROLE),footer="Team Members and Owners already have access to every project, so they cannot be given a project role.",message=`${humanIntro} Project roles map to team roles as: ${pairs.map(([teamRole,roles])=>`${teamRole} \u2192 ${roles.join("/")}`).join("; ")}. ${footer}`;if(shouldEmitNonInteractiveCommandError(client))return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ROLE_COMBINATION,message}),2;if(jsonOutput||!canPrompt(client))return client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ROLE_COMBINATION,message},null,2)}
58
58
  `),2;output_manager_default.error(humanIntro),output_manager_default.log("Project roles can only be assigned to these team roles:");for(let[teamRole,roles]of pairs)output_manager_default.log(` ${teamRole} \u2192 ${roles.join(", ")}`);return output_manager_default.log(footer),1}return exitWithNonInteractiveError(client,err,1,{variant:"members"}),jsonOutput||!canPrompt(client)?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message:err instanceof Error?err.message:String(err)},null,2)}
59
- `),1):(printError(err),1)}}async function members(client,argv){if(argv[0]==="add")return membersAdd(client,argv.slice(1));if(argv[0]==="remove"||argv[0]==="rm")return membersRemove(client,argv.slice(1));let parsedArgs,flagsSpecification=getFlagsSpecification(membersSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return output_manager_default.error("Invalid number of arguments. Usage: `vercel project members [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,limit=parsedArgs.flags["--limit"];if(typeof limit=="number"&&(limit<1||limit>100))return output_manager_default.error("`--limit` must be a number between 1 and 100."),2;let next=parseNumericCursor(parsedArgs.flags["--next"]);if(typeof next<"u"&&!Number.isInteger(next))return output_manager_default.error(INVALID_NEXT_MESSAGE),2;let result;try{let project=await getProjectByCwdOrLink({client,commandName:"project members",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0}),query=new URLSearchParams;parsedArgs.flags["--search"]&&query.set("search",String(parsedArgs.flags["--search"])),typeof limit=="number"&&query.set("limit",String(limit)),typeof next=="number"&&query.set("until",String(next));let qs=query.toString(),path=`/v1/projects/${encodeURIComponent(project.id)}/members${qs?`?${qs}`:""}`;result=await client.fetch(path)}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"members"}),printError(err),1}let projectMembers=result.members||[];if(asJson)return client.stdout.write(`${JSON.stringify({members:projectMembers,pagination:result.pagination},null,2)}
59
+ `),1):(printError(err),1)}}async function members(client,argv){if(argv[0]==="add")return membersAdd(client,argv.slice(1));if(argv[0]==="remove"||argv[0]==="rm")return membersRemove(client,argv.slice(1));let parsedArgs,flagsSpecification=getFlagsSpecification(membersSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return output_manager_default.error("Invalid number of arguments. Usage: `vercel project members [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,search=getRenamedOption(parsedArgs.flags,"--query","--search",{json:asJson});if("error"in search)return reportRenamedOptionError(client,search.error,{json:asJson});let limit=parsedArgs.flags["--limit"];if(typeof limit=="number"&&(limit<1||limit>100))return output_manager_default.error("`--limit` must be a number between 1 and 100."),2;let next=parseNumericCursor(parsedArgs.flags["--next"]);if(typeof next<"u"&&!Number.isInteger(next))return output_manager_default.error(INVALID_NEXT_MESSAGE),2;let result;try{let project=await getProjectByCwdOrLink({client,commandName:"project members",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0}),query=new URLSearchParams;search.value&&query.set("search",String(search.value)),typeof limit=="number"&&query.set("limit",String(limit)),typeof next=="number"&&query.set("until",String(next));let qs=query.toString(),path=`/v1/projects/${encodeURIComponent(project.id)}/members${qs?`?${qs}`:""}`;result=await client.fetch(path)}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"members"}),printError(err),1}let projectMembers=result.members||[];if(asJson)return client.stdout.write(`${JSON.stringify(withWarnings({members:projectMembers,pagination:result.pagination},[search.warning]),null,2)}
60
60
  `),0;let rows=[["uid","Identity","Role","Team Role"].map(str=>(0,import_chalk7.gray)(str)),...projectMembers.map(member=>[member.uid,member.username||member.email||"",member.computedProjectRole||member.role||"",member.teamRole||""])];if(client.stderr.write(`${table(rows,{hsep:3})}
61
- `),result.pagination?.next){let flags=getCommandFlags(parsedArgs.flags,["_","--next","-N","--search"]),projectName=parsedArgs.args[0]?` ${quoteArg(parsedArgs.args[0])}`:"",search=parsedArgs.flags["--search"],searchFlag=search?` --search ${quoteArg(String(search))}`:"",nextCmd=`${packageName} project members${projectName}${flags}${searchFlag} --next ${result.pagination.next}`;output_manager_default.print(`
62
- `),printNextPageCommand(nextCmd)}return 0}var import_chalk8=__toESM(require_source(),1);async function accessGroups(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(accessGroupsSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return output_manager_default.error("Invalid number of arguments. Usage: `vercel project access-groups [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,limit=parsedArgs.flags["--limit"];if(typeof limit=="number"&&(limit<1||limit>100))return output_manager_default.error("`--limit` must be a number between 1 and 100."),2;let result;try{let project=await getProjectByCwdOrLink({client,commandName:"project access-groups",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0}),query=new URLSearchParams;query.set("projectId",project.id),parsedArgs.flags["--search"]&&query.set("search",String(parsedArgs.flags["--search"])),typeof limit=="number"&&query.set("limit",String(limit)),parsedArgs.flags["--next"]!==void 0&&query.set("next",parsedArgs.flags["--next"]),result=await client.fetch(`/v1/access-groups?${query.toString()}`)}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"access-groups"}),printError(err),1}if(asJson)return client.stdout.write(`${JSON.stringify(result,null,2)}
61
+ `),result.pagination?.next){let flags=getCommandFlags(parsedArgs.flags,["_","--next","-N","--query","--search"]),projectName=parsedArgs.args[0]?` ${quoteArg(parsedArgs.args[0])}`:"",searchFlag=search.value?` --query ${quoteArg(String(search.value))}`:"",nextCmd=`${packageName} project members${projectName}${flags}${searchFlag} --next ${result.pagination.next}`;output_manager_default.print(`
62
+ `),printNextPageCommand(nextCmd)}return 0}var import_chalk8=__toESM(require_source(),1);async function accessGroups(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(accessGroupsSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}if(parsedArgs.args.length>1)return output_manager_default.error("Invalid number of arguments. Usage: `vercel project access-groups [name]`"),2;let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),2;let asJson=formatResult.jsonOutput,search=getRenamedOption(parsedArgs.flags,"--query","--search",{json:asJson});if("error"in search)return reportRenamedOptionError(client,search.error,{json:asJson});let limit=parsedArgs.flags["--limit"];if(typeof limit=="number"&&(limit<1||limit>100))return output_manager_default.error("`--limit` must be a number between 1 and 100."),2;let result;try{let project=await getProjectByCwdOrLink({client,commandName:"project access-groups",projectNameOrId:parsedArgs.args[0],forReadOnlyCommand:!0}),query=new URLSearchParams;query.set("projectId",project.id),search.value&&query.set("search",String(search.value)),typeof limit=="number"&&query.set("limit",String(limit)),parsedArgs.flags["--next"]!==void 0&&query.set("next",parsedArgs.flags["--next"]),result=await client.fetch(`/v1/access-groups?${query.toString()}`)}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"access-groups"}),printError(err),1}if(asJson)return client.stdout.write(`${JSON.stringify(withWarnings(result,[search.warning]),null,2)}
63
63
  `),0;let rows=[["id","Name","Role"].map(str=>(0,import_chalk8.gray)(str)),...(result.accessGroups||[]).map(group=>[group.id,group.name,group.role||""])];return client.stderr.write(`${table(rows,{hsep:3})}
64
64
  `),result.pagination?.next&&(output_manager_default.print(`
65
- `),printNextPageCommand(getNextPageCommand(client.argv,result.pagination.next))),0}var import_chalk9=__toESM(require_source(),1),import_ms3=__toESM(require_ms(),1);var ProjectRenameTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliArgumentNewName(newName){newName&&this.trackCliArgument({arg:"new-name",value:this.redactedValue})}};async function rename(client,argv){let telemetryClient=new ProjectRenameTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(renameSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==2)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk9.default.cyan(`${getCommandName("project rename <name> <new-name>")}`)}`),2;let[projectNameOrId,newName]=args;telemetryClient.trackCliArgumentName(projectNameOrId),telemetryClient.trackCliArgumentNewName(newName);let project=await getProjectByNameOrId(client,projectNameOrId);if(project instanceof ProjectNotFound)return output_manager_default.error("No such project exists"),1;let start=Date.now(),renamedProject;try{renamedProject=await client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{method:"PATCH",body:{name:newName}})}catch(err){if(isAPIError(err)&&err.status===409)return output_manager_default.error(`A project named "${newName}" already exists`),1;if(isAPIError(err)&&err.status===403)return output_manager_default.error(err.message),1;throw err}let elapsed=(0,import_ms3.default)(Date.now()-start);return output_manager_default.log(`${import_chalk9.default.cyan("Success!")} Project ${import_chalk9.default.bold(project.name)} renamed to ${import_chalk9.default.bold(renamedProject.name)} ${import_chalk9.default.gray(`[${elapsed}]`)}`),0}var import_chalk10=__toESM(require_source(),1);var ProjectUpdateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionFramework(framework){framework&&this.trackCliOption({option:"framework",value:this.redactedValue})}trackCliOptionBuildCommand(value){this.trackSettingOption("build-command",value)}trackCliOptionDevCommand(value){this.trackSettingOption("dev-command",value)}trackCliOptionInstallCommand(value){this.trackSettingOption("install-command",value)}trackCliOptionOutputDirectory(value){this.trackSettingOption("output-directory",value)}trackCliOptionRootDirectory(value){this.trackSettingOption("root-directory",value)}trackCliOptionAutoDetect(value){value?.length&&this.trackCliOption({option:"auto-detect",value:this.redactedValue})}trackCliOptionSandboxRegion(value){this.trackSandboxRegionOption("sandbox-region",value)}trackCliOptionSandboxFailoverRegions(value){this.trackSandboxRegionOption("sandbox-failover-regions",value)}trackSandboxRegionOption(option,value){value!==void 0&&this.trackCliOption({option,value:this.redactedValue})}trackSettingOption(option,value){value!==void 0&&this.trackCliOption({option,value:this.redactedValue})}trackCliOptionFluidCompute(value){this.trackChoiceOption("fluid-compute",value,["on","off"])}trackCliFlagFluidCompute(value){value&&this.trackCliFlag("fluid-compute")}trackCliFlagNoFluidCompute(value){value&&this.trackCliFlag("no-fluid-compute")}trackCliOptionFunctionCpu(value){this.trackChoiceOption("function-cpu",value,["standard_legacy","standard","performance","performance_xl"])}trackCliOptionBuildMachine(value){this.trackChoiceOption("build-machine",value,["basic","standard","enhanced","turbo","elastic"])}trackCliOptionElasticConcurrency(value){this.trackChoiceOption("elastic-concurrency",value,["on","off"])}trackCliFlagElasticConcurrency(value){value&&this.trackCliFlag("elastic-concurrency")}trackCliFlagNoElasticConcurrency(value){value&&this.trackCliFlag("no-elastic-concurrency")}trackCliOptionNodeVersion(value){this.trackChoiceOption("node-version",value,["24.x","22.x","20.x","18.x","16.x","14.x","12.x","10.x"])}trackChoiceOption(option,value,allowed){value!==void 0&&this.trackCliOption({option,value:allowed.includes(value)?value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};var import_frameworks2=__toESM(require_frameworks(),1);var OTHER_FRAMEWORK_SLUG="other",MAX_SETTING_LENGTH=256,CONTROL_CHARACTERS=/[\u0000-\u001f\u007f]/,frameworkSlugs=import_frameworks2.frameworkList.map(framework=>framework.slug??OTHER_FRAMEWORK_SLUG),buildSettingDefinitions=[{key:"buildCommand",flag:"--build-command",autoDetect:"build-command",label:"Build Command"},{key:"devCommand",flag:"--dev-command",autoDetect:"dev-command",label:"Dev Command"},{key:"installCommand",flag:"--install-command",autoDetect:"install-command",label:"Install Command"},{key:"outputDirectory",flag:"--output-directory",autoDetect:"output-directory",label:"Output Directory"},{key:"rootDirectory",flag:"--root-directory",autoDetect:"root-directory",label:"Root Directory"}],settingOrder=["framework",...buildSettingDefinitions.map(setting=>setting.key),"sandboxRegion","sandboxFailoverRegions"],autoDetectSettings=buildSettingDefinitions.map(setting=>setting.autoDetect),settingLabels={framework:"Framework",...Object.fromEntries(buildSettingDefinitions.map(setting=>[setting.key,setting.label])),sandboxRegion:"Sandbox Region",sandboxFailoverRegions:"Failover"};function isSandboxSettingKey(key){return key==="sandboxRegion"||key==="sandboxFailoverRegions"}function resolveFramework(input){let slug=input.trim().toLowerCase();return import_frameworks2.frameworkList.find(framework=>(framework.slug??OTHER_FRAMEWORK_SLUG)===slug)}function formatFramework(slug){let framework=import_frameworks2.frameworkList.find(item=>item.slug===slug);return framework?`${framework.name} (${framework.slug??OTHER_FRAMEWORK_SLUG})`:slug??OTHER_FRAMEWORK_SLUG}function formatSettingValue(key,value){return key==="sandboxRegion"?typeof value=="string"?value:"Auto":key==="sandboxFailoverRegions"?formatSandboxRegionList(Array.isArray(value)?value:[]):key==="framework"?formatFramework(typeof value=="string"?value:null):value===null?"Auto":value===""?'""':String(value)}function getCurrentSetting(project,key){return key==="sandboxRegion"?project.sandbox?.region??null:key==="sandboxFailoverRegions"?project.sandbox?.failoverRegions??null:project[key]??null}function isSameSettingValue(a,b){if(Array.isArray(a)||Array.isArray(b)){let left=Array.isArray(a)?a:[],right=Array.isArray(b)?b:[];return left.length===right.length&&left.every((value,index)=>value===right[index])}return a===b}function hasSetting(settings,key){return Object.prototype.hasOwnProperty.call(settings,key)}function validateSettingValue(definition,value){if(value.length>MAX_SETTING_LENGTH)return`${definition.label} must be ${MAX_SETTING_LENGTH} characters or fewer.`;if(CONTROL_CHARACTERS.test(value))return`${definition.label} can't contain control characters.`}function parseAutoDetectSettings(inputs){return inputs.flatMap(input=>input.split(",")).map(input=>input.trim())}var NODE_VERSIONS=["24.x","22.x","20.x","18.x","16.x","14.x","12.x","10.x"],FUNCTION_CPU_TIERS=["standard_legacy","standard","performance","performance_xl"],BUILD_MACHINE_TYPES=["basic","standard","enhanced","turbo","elastic"];function parseEnumValue(label,raw,allowed){return allowed.includes(raw)?{ok:!0,value:raw}:{ok:!1,message:`${label} must be one of: ${allowed.join(", ")}.`}}function displayOnOff(value){return value===!0?"on":value===!1?"off":"Auto"}function displayValue(value){return value==null?"Auto":String(value)}function parseAdvanced(definition,raw){return parseEnumValue(definition.label,raw,definition.values)}function readAdvanced(definition,project){let fields=project;switch(definition.target){case"resourceConfig":return definition.field==="buildMachineType"&&fields.resourceConfig?.buildMachineSelection==="elastic"?"elastic":fields.resourceConfig?.[definition.field];case"project":return project[definition.field]}}function displayAdvanced(definition,value){return definition.kind==="toggle"?displayOnOff(value):displayValue(value)}var advancedSettingDefinitions=[{key:"fluid",flag:"--fluid-compute",label:"Fluid Compute",kind:"toggle",target:"resourceConfig",field:"fluid"},{key:"functionDefaultMemoryType",flag:"--function-cpu",label:"Function CPU",kind:"enum",values:FUNCTION_CPU_TIERS,target:"resourceConfig",field:"functionDefaultMemoryType",requiresPaidPlan:()=>!0,hasCostImpact:()=>!0},{key:"buildMachineType",flag:"--build-machine",label:"Build Machine",kind:"enum",values:BUILD_MACHINE_TYPES,target:"resourceConfig",field:"buildMachineType",requiresPaidPlan:()=>!0,hasCostImpact:()=>!0},{key:"elasticConcurrencyEnabled",flag:"--elastic-concurrency",label:"Elastic Concurrency",kind:"toggle",target:"resourceConfig",field:"elasticConcurrencyEnabled",requiresPaidPlan:value=>value===!0,hasCostImpact:value=>value===!0},{key:"nodeVersion",flag:"--node-version",label:"Node.js Version",kind:"enum",values:NODE_VERSIONS,target:"project",field:"nodeVersion"}];function ensureResourceConfig(body){return body.resourceConfig??={},body.resourceConfig}function applyAdvanced(definition,body,value){switch(definition.target){case"resourceConfig":ensureResourceConfig(body)[definition.field]=value;break;case"project":body[definition.field]=value;break}}function computeSettingsChanges(project,requestedSettings,providedAdvanced){let previousSettings={},changedSettings=[],body={},mergedSandbox;if(hasSetting(requestedSettings,"sandboxRegion")||hasSetting(requestedSettings,"sandboxFailoverRegions")){if(mergedSandbox={...project.sandbox},hasSetting(requestedSettings,"sandboxRegion")){let region=requestedSettings.sandboxRegion;region==null?delete mergedSandbox.region:mergedSandbox.region=region}hasSetting(requestedSettings,"sandboxFailoverRegions")&&(mergedSandbox.failoverRegions=requestedSettings.sandboxFailoverRegions??[])}for(let key of settingOrder){if(!hasSetting(requestedSettings,key))continue;let previous=getCurrentSetting(project,key),next=requestedSettings[key]??null;Object.assign(previousSettings,{[key]:previous}),isSameSettingValue(previous,next)||(changedSettings.push(key),isSandboxSettingKey(key)||(body[key]=next))}mergedSandbox&&(changedSettings.includes("sandboxRegion")||changedSettings.includes("sandboxFailoverRegions"))&&(body.sandbox=mergedSandbox);let advancedRows=[];for(let{definition,value}of providedAdvanced){let previous=readAdvanced(definition,project),changed=previous!==value;advancedRows.push({key:definition.key,label:definition.label,previous:displayAdvanced(definition,previous),next:displayAdvanced(definition,value),changed}),changed&&(changedSettings.push(definition.key),applyAdvanced(definition,body,value))}return{previousSettings,changedSettings,body,advancedRows}}async function patchProjectSettings(client,project,body){return client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{method:"PATCH",accountId:project.accountId,body})}function getAdvancedResultValue(project,row){let definition=advancedSettingDefinitions.find(candidate=>candidate.key===row.key);return definition?displayAdvanced(definition,readAdvanced(definition,project)):row.next}function printChangePreview({project,previousSettings,requestedSettings,changedSettings,advancedRows}){printAlignedLabel("Project",project.name);for(let key of settingOrder){if(!hasSetting(requestedSettings,key)||!changedSettings.includes(key))continue;let previous=formatSettingValue(key,previousSettings[key]??null),next=formatSettingValue(key,requestedSettings[key]??null);printAlignedLabel(settingLabels[key],`${previous} \u2192 ${next}`)}for(let row of advancedRows)row.changed&&printAlignedLabel(row.label,`${row.previous} \u2192 ${row.next}`)}function writeUpdateResult({changedSettings,project,previousSettings,requestedSettings,advancedRows,asJson,client}){let changed=changedSettings.length>0;if(asJson){let settings={};for(let key of settingOrder)hasSetting(requestedSettings,key)&&(settings[key]=getCurrentSetting(project,key));for(let row of advancedRows){let definition=advancedSettingDefinitions.find(candidate=>candidate.key===row.key);definition&&(settings[row.key]=readAdvanced(definition,project)??null)}client.stdout.write(`${JSON.stringify({changed,changedSettings,projectId:project.id,projectName:project.name,settings},null,2)}
65
+ `),printNextPageCommand(getNextPageCommand(renameOptionInArgs(client.argv,"--search","--query"),result.pagination.next))),0}var import_chalk9=__toESM(require_source(),1),import_ms3=__toESM(require_ms(),1);var ProjectRenameTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliArgumentNewName(newName){newName&&this.trackCliArgument({arg:"new-name",value:this.redactedValue})}};async function rename(client,argv){let telemetryClient=new ProjectRenameTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(renameSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args}=parsedArgs;if(args.length!==2)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk9.default.cyan(`${getCommandName("project rename <name> <new-name>")}`)}`),2;let[projectNameOrId,newName]=args;telemetryClient.trackCliArgumentName(projectNameOrId),telemetryClient.trackCliArgumentNewName(newName);let project=await getProjectByNameOrId(client,projectNameOrId);if(project instanceof ProjectNotFound)return output_manager_default.error("No such project exists"),1;let start=Date.now(),renamedProject;try{renamedProject=await client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{method:"PATCH",body:{name:newName}})}catch(err){if(isAPIError(err)&&err.status===409)return output_manager_default.error(`A project named "${newName}" already exists`),1;if(isAPIError(err)&&err.status===403)return output_manager_default.error(err.message),1;throw err}let elapsed=(0,import_ms3.default)(Date.now()-start);return output_manager_default.log(`${import_chalk9.default.cyan("Success!")} Project ${import_chalk9.default.bold(project.name)} renamed to ${import_chalk9.default.bold(renamedProject.name)} ${import_chalk9.default.gray(`[${elapsed}]`)}`),0}var import_chalk10=__toESM(require_source(),1);var ProjectUpdateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionFramework(framework){framework&&this.trackCliOption({option:"framework",value:this.redactedValue})}trackCliOptionBuildCommand(value){this.trackSettingOption("build-command",value)}trackCliOptionDevCommand(value){this.trackSettingOption("dev-command",value)}trackCliOptionInstallCommand(value){this.trackSettingOption("install-command",value)}trackCliOptionOutputDirectory(value){this.trackSettingOption("output-directory",value)}trackCliOptionRootDirectory(value){this.trackSettingOption("root-directory",value)}trackCliOptionAutoDetect(value){value?.length&&this.trackCliOption({option:"auto-detect",value:this.redactedValue})}trackCliOptionSandboxRegion(value){this.trackSandboxRegionOption("sandbox-region",value)}trackCliOptionSandboxFailoverRegions(value){this.trackSandboxRegionOption("sandbox-failover-regions",value)}trackSandboxRegionOption(option,value){value!==void 0&&this.trackCliOption({option,value:this.redactedValue})}trackSettingOption(option,value){value!==void 0&&this.trackCliOption({option,value:this.redactedValue})}trackCliOptionFluidCompute(value){this.trackChoiceOption("fluid-compute",value,["on","off"])}trackCliFlagFluidCompute(value){value&&this.trackCliFlag("fluid-compute")}trackCliFlagNoFluidCompute(value){value&&this.trackCliFlag("no-fluid-compute")}trackCliOptionFunctionCpu(value){this.trackChoiceOption("function-cpu",value,["standard_legacy","standard","performance","performance_xl"])}trackCliOptionBuildMachine(value){this.trackChoiceOption("build-machine",value,["basic","standard","enhanced","turbo","elastic"])}trackCliOptionElasticConcurrency(value){this.trackChoiceOption("elastic-concurrency",value,["on","off"])}trackCliFlagElasticConcurrency(value){value&&this.trackCliFlag("elastic-concurrency")}trackCliFlagNoElasticConcurrency(value){value&&this.trackCliFlag("no-elastic-concurrency")}trackCliOptionNodeVersion(value){this.trackChoiceOption("node-version",value,["24.x","22.x","20.x","18.x","16.x","14.x","12.x","10.x"])}trackChoiceOption(option,value,allowed){value!==void 0&&this.trackCliOption({option,value:allowed.includes(value)?value:this.redactedValue})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};var import_frameworks2=__toESM(require_frameworks(),1);var OTHER_FRAMEWORK_SLUG="other",MAX_SETTING_LENGTH=256,CONTROL_CHARACTERS=/[\u0000-\u001f\u007f]/,frameworkSlugs=import_frameworks2.frameworkList.map(framework=>framework.slug??OTHER_FRAMEWORK_SLUG),buildSettingDefinitions=[{key:"buildCommand",flag:"--build-command",autoDetect:"build-command",label:"Build Command"},{key:"devCommand",flag:"--dev-command",autoDetect:"dev-command",label:"Dev Command"},{key:"installCommand",flag:"--install-command",autoDetect:"install-command",label:"Install Command"},{key:"outputDirectory",flag:"--output-directory",autoDetect:"output-directory",label:"Output Directory"},{key:"rootDirectory",flag:"--root-directory",autoDetect:"root-directory",label:"Root Directory"}],settingOrder=["framework",...buildSettingDefinitions.map(setting=>setting.key),"sandboxRegion","sandboxFailoverRegions"],autoDetectSettings=buildSettingDefinitions.map(setting=>setting.autoDetect),settingLabels={framework:"Framework",...Object.fromEntries(buildSettingDefinitions.map(setting=>[setting.key,setting.label])),sandboxRegion:"Sandbox Region",sandboxFailoverRegions:"Failover"};function isSandboxSettingKey(key){return key==="sandboxRegion"||key==="sandboxFailoverRegions"}function resolveFramework(input){let slug=input.trim().toLowerCase();return import_frameworks2.frameworkList.find(framework=>(framework.slug??OTHER_FRAMEWORK_SLUG)===slug)}function formatFramework(slug){let framework=import_frameworks2.frameworkList.find(item=>item.slug===slug);return framework?`${framework.name} (${framework.slug??OTHER_FRAMEWORK_SLUG})`:slug??OTHER_FRAMEWORK_SLUG}function formatSettingValue(key,value){return key==="sandboxRegion"?typeof value=="string"?value:"Auto":key==="sandboxFailoverRegions"?formatSandboxRegionList(Array.isArray(value)?value:[]):key==="framework"?formatFramework(typeof value=="string"?value:null):value===null?"Auto":value===""?'""':String(value)}function getCurrentSetting(project,key){return key==="sandboxRegion"?project.sandbox?.region??null:key==="sandboxFailoverRegions"?project.sandbox?.failoverRegions??null:project[key]??null}function isSameSettingValue(a,b){if(Array.isArray(a)||Array.isArray(b)){let left=Array.isArray(a)?a:[],right=Array.isArray(b)?b:[];return left.length===right.length&&left.every((value,index)=>value===right[index])}return a===b}function hasSetting(settings,key){return Object.prototype.hasOwnProperty.call(settings,key)}function validateSettingValue(definition,value){if(value.length>MAX_SETTING_LENGTH)return`${definition.label} must be ${MAX_SETTING_LENGTH} characters or fewer.`;if(CONTROL_CHARACTERS.test(value))return`${definition.label} can't contain control characters.`}function parseAutoDetectSettings(inputs){return inputs.flatMap(input=>input.split(",")).map(input=>input.trim())}var NODE_VERSIONS=["24.x","22.x","20.x","18.x","16.x","14.x","12.x","10.x"],FUNCTION_CPU_TIERS=["standard_legacy","standard","performance","performance_xl"],BUILD_MACHINE_TYPES=["basic","standard","enhanced","turbo","elastic"];function parseEnumValue(label,raw,allowed){return allowed.includes(raw)?{ok:!0,value:raw}:{ok:!1,message:`${label} must be one of: ${allowed.join(", ")}.`}}function displayOnOff(value){return value===!0?"on":value===!1?"off":"Auto"}function displayValue(value){return value==null?"Auto":String(value)}function parseAdvanced(definition,raw){return parseEnumValue(definition.label,raw,definition.values)}function readAdvanced(definition,project){let fields=project;switch(definition.target){case"resourceConfig":return definition.field==="buildMachineType"&&fields.resourceConfig?.buildMachineSelection==="elastic"?"elastic":fields.resourceConfig?.[definition.field];case"project":return project[definition.field]}}function displayAdvanced(definition,value){return definition.kind==="toggle"?displayOnOff(value):displayValue(value)}var advancedSettingDefinitions=[{key:"fluid",flag:"--fluid-compute",label:"Fluid Compute",kind:"toggle",target:"resourceConfig",field:"fluid"},{key:"functionDefaultMemoryType",flag:"--function-cpu",label:"Function CPU",kind:"enum",values:FUNCTION_CPU_TIERS,target:"resourceConfig",field:"functionDefaultMemoryType",requiresPaidPlan:()=>!0,hasCostImpact:()=>!0},{key:"buildMachineType",flag:"--build-machine",label:"Build Machine",kind:"enum",values:BUILD_MACHINE_TYPES,target:"resourceConfig",field:"buildMachineType",requiresPaidPlan:()=>!0,hasCostImpact:()=>!0},{key:"elasticConcurrencyEnabled",flag:"--elastic-concurrency",label:"Elastic Concurrency",kind:"toggle",target:"resourceConfig",field:"elasticConcurrencyEnabled",requiresPaidPlan:value=>value===!0,hasCostImpact:value=>value===!0},{key:"nodeVersion",flag:"--node-version",label:"Node.js Version",kind:"enum",values:NODE_VERSIONS,target:"project",field:"nodeVersion"}];function ensureResourceConfig(body){return body.resourceConfig??={},body.resourceConfig}function applyAdvanced(definition,body,value){switch(definition.target){case"resourceConfig":ensureResourceConfig(body)[definition.field]=value;break;case"project":body[definition.field]=value;break}}function computeSettingsChanges(project,requestedSettings,providedAdvanced){let previousSettings={},changedSettings=[],body={},mergedSandbox;if(hasSetting(requestedSettings,"sandboxRegion")||hasSetting(requestedSettings,"sandboxFailoverRegions")){if(mergedSandbox={...project.sandbox},hasSetting(requestedSettings,"sandboxRegion")){let region=requestedSettings.sandboxRegion;region==null?delete mergedSandbox.region:mergedSandbox.region=region}hasSetting(requestedSettings,"sandboxFailoverRegions")&&(mergedSandbox.failoverRegions=requestedSettings.sandboxFailoverRegions??[])}for(let key of settingOrder){if(!hasSetting(requestedSettings,key))continue;let previous=getCurrentSetting(project,key),next=requestedSettings[key]??null;Object.assign(previousSettings,{[key]:previous}),isSameSettingValue(previous,next)||(changedSettings.push(key),isSandboxSettingKey(key)||(body[key]=next))}mergedSandbox&&(changedSettings.includes("sandboxRegion")||changedSettings.includes("sandboxFailoverRegions"))&&(body.sandbox=mergedSandbox);let advancedRows=[];for(let{definition,value}of providedAdvanced){let previous=readAdvanced(definition,project),changed=previous!==value;advancedRows.push({key:definition.key,label:definition.label,previous:displayAdvanced(definition,previous),next:displayAdvanced(definition,value),changed}),changed&&(changedSettings.push(definition.key),applyAdvanced(definition,body,value))}return{previousSettings,changedSettings,body,advancedRows}}async function patchProjectSettings(client,project,body){return client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{method:"PATCH",accountId:project.accountId,body})}function getAdvancedResultValue(project,row){let definition=advancedSettingDefinitions.find(candidate=>candidate.key===row.key);return definition?displayAdvanced(definition,readAdvanced(definition,project)):row.next}function printChangePreview({project,previousSettings,requestedSettings,changedSettings,advancedRows}){printAlignedLabel("Project",project.name);for(let key of settingOrder){if(!hasSetting(requestedSettings,key)||!changedSettings.includes(key))continue;let previous=formatSettingValue(key,previousSettings[key]??null),next=formatSettingValue(key,requestedSettings[key]??null);printAlignedLabel(settingLabels[key],`${previous} \u2192 ${next}`)}for(let row of advancedRows)row.changed&&printAlignedLabel(row.label,`${row.previous} \u2192 ${row.next}`)}function writeUpdateResult({changedSettings,project,previousSettings,requestedSettings,advancedRows,asJson,client}){let changed=changedSettings.length>0;if(asJson){let settings={};for(let key of settingOrder)hasSetting(requestedSettings,key)&&(settings[key]=getCurrentSetting(project,key));for(let row of advancedRows){let definition=advancedSettingDefinitions.find(candidate=>candidate.key===row.key);definition&&(settings[row.key]=readAdvanced(definition,project)??null)}client.stdout.write(`${JSON.stringify({changed,changedSettings,projectId:project.id,projectName:project.name,settings},null,2)}
66
66
  `);return}printAlignedLabel(changed?"Updated":"Unchanged","Project Settings",{gutter:"\u2713"}),printAlignedLabel("Project",project.name);for(let key of settingOrder){if(!hasSetting(requestedSettings,key))continue;let previous=previousSettings[key]??null,next=getCurrentSetting(project,key),value=changedSettings.includes(key)?`${formatSettingValue(key,previous)} \u2192 ${formatSettingValue(key,next)}`:formatSettingValue(key,next);printAlignedLabel(settingLabels[key],value)}for(let row of advancedRows){let result=getAdvancedResultValue(project,row),value=row.changed?`${row.previous} \u2192 ${result}`:result;printAlignedLabel(row.label,value)}}function getUpdateCommand(framework="<slug>"){return`project update <name> --framework ${framework}`}function buildUpdateRetryCommand(client,{interactive,withYes}){let typedArgs=stripSensitiveAuthArgs(client.argv.slice(2)),rewritten=rewriteLegacyOnOffValues(typedArgs,updateSubcommand.options),args="error"in rewritten?typedArgs:rewritten.args,nextArgs=[];for(let index=0;index<args.length;index++){let arg=args[index];if(!(arg==="--yes"||arg==="-y")){if(interactive&&(arg==="--non-interactive"||arg.startsWith("--non-interactive="))){arg==="--non-interactive"&&(args[index+1]==="true"||args[index+1]==="false")&&index++;continue}nextArgs.push(arg)}}return withYes&&nextArgs.push("--yes"),getCommandNamePlain(nextArgs.map(quoteArg).join(" "))}function printUsageError(client,message,exitCode,reason,suggestedCommand=getUpdateCommand()){return outputAgentError(client,{status:"error",reason,message,next:[{command:buildCommandWithGlobalFlags(client.argv,suggestedCommand),when:"Update project settings"}]},exitCode),output_manager_default.error(message),exitCode}function printPlanError(client,message,teamOwned){let nextCommand=teamOwned?"buy pro":"teams switch";return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.PLAN_UPGRADE_REQUIRED,message,userActionRequired:!0,next:[{command:buildCommandWithGlobalFlags(client.argv,nextCommand,void 0,{excludeFlags:["--non-interactive","--yes"]}),when:teamOwned?"Upgrade this team interactively":"Switch to a Pro or Enterprise team"}]},1),output_manager_default.error(message),output_manager_default.log(teamOwned?`Upgrade with ${getCommandName("buy pro")}.`:`Switch teams with ${getCommandName("teams switch")}.`),1}function printConfirmationRequiredError(client,hasCostImpact){let nextCommand=buildUpdateRetryCommand(client,{interactive:hasCostImpact,withYes:!hasCostImpact});return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:hasCostImpact?AGENT_REASON.INTERACTIVE_CONFIRMATION_REQUIRED:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:hasCostImpact?"These project settings may affect charges and require interactive confirmation.":"Updating project settings requires confirmation. Re-run with --yes to apply the changes.",userActionRequired:hasCostImpact,next:[{command:nextCommand,when:hasCostImpact?"Review and confirm the charge-sensitive settings in a terminal":"Apply the requested settings without prompting"}]},1),output_manager_default.error(hasCostImpact?"Confirmation required. These settings may affect charges and must be confirmed in an interactive terminal.":"Confirmation required. Re-run with --yes or in an interactive terminal."),1}function getSandboxValidationError(project,requestedSettings){if(!hasSetting(requestedSettings,"sandboxRegion")&&!hasSetting(requestedSettings,"sandboxFailoverRegions"))return;let mergedSandbox={...project.sandbox};if(hasSetting(requestedSettings,"sandboxRegion")){let region=requestedSettings.sandboxRegion;region==null?delete mergedSandbox.region:mergedSandbox.region=region}return hasSetting(requestedSettings,"sandboxFailoverRegions")&&(mergedSandbox.failoverRegions=requestedSettings.sandboxFailoverRegions??[]),validateSandboxConfig(mergedSandbox)}async function refreshProjectForNestedUpdate(client,project,body){return body.resourceConfig===void 0&&body.sandbox===void 0?project:client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{accountId:project.accountId})}async function update(client,argv){let telemetry=new ProjectUpdateTelemetryClient({opts:{store:client.telemetryEventStore}}),rewritten=rewriteLegacyOnOffValues(argv,updateSubcommand.options,client);if("error"in rewritten)return printUsageError(client,rewritten.error,2,"invalid_arguments");let parsedArgs;try{parsedArgs=parseArguments(rewritten.args,getFlagsSpecification(updateSubcommand.options))}catch(error){return outputAgentError(client,{status:"error",reason:"invalid_arguments",message:error instanceof Error?error.message:String(error)},2),printError(error),2}let{args,flags}=parsedArgs,[projectNameOrId]=args,frameworkInput=flags["--framework"],autoDetectInputs=flags["--auto-detect"]??[];if(telemetry.trackCliArgumentName(projectNameOrId),telemetry.trackCliOptionFramework(frameworkInput),telemetry.trackCliOptionBuildCommand(flags["--build-command"]),telemetry.trackCliOptionDevCommand(flags["--dev-command"]),telemetry.trackCliOptionInstallCommand(flags["--install-command"]),telemetry.trackCliOptionOutputDirectory(flags["--output-directory"]),telemetry.trackCliOptionRootDirectory(flags["--root-directory"]),telemetry.trackCliOptionAutoDetect(flags["--auto-detect"]),telemetry.trackCliOptionSandboxRegion(flags["--sandbox-region"]),telemetry.trackCliOptionSandboxFailoverRegions(flags["--sandbox-failover-regions"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]),telemetry.trackCliFlagYes(flags["--yes"]),telemetry.trackCliOptionFluidCompute(rewritten.legacy.get("--fluid-compute")),rewritten.legacy.has("--fluid-compute")||(telemetry.trackCliFlagFluidCompute(flags["--fluid-compute"]),telemetry.trackCliFlagNoFluidCompute(flags["--no-fluid-compute"])),telemetry.trackCliOptionFunctionCpu(flags["--function-cpu"]),telemetry.trackCliOptionBuildMachine(flags["--build-machine"]),telemetry.trackCliOptionElasticConcurrency(rewritten.legacy.get("--elastic-concurrency")),rewritten.legacy.has("--elastic-concurrency")||(telemetry.trackCliFlagElasticConcurrency(flags["--elastic-concurrency"]),telemetry.trackCliFlagNoElasticConcurrency(flags["--no-elastic-concurrency"])),telemetry.trackCliOptionNodeVersion(flags["--node-version"]),args.length>1)return printUsageError(client,`Invalid number of arguments. Usage: ${getCommandNamePlain("project update [name] [options]")}`,2,"invalid_arguments");let formatResult=validateJsonOutput(flags);if(!formatResult.valid)return printUsageError(client,formatResult.error,2,"invalid_arguments");let requestedSettings={};if(frameworkInput!==void 0){let framework=resolveFramework(frameworkInput);if(!framework){let normalizedInput=frameworkInput.trim().toLowerCase(),suggestion=normalizedInput?did_you_mean_default(normalizedInput,frameworkSlugs,.7):void 0,message=suggestion?`Unsupported framework preset ${JSON.stringify(frameworkInput)}. Did you mean ${JSON.stringify(suggestion)}?`:`Unsupported framework preset ${JSON.stringify(frameworkInput)}. Use a framework slug such as "nextjs", or "other" to clear the preset.`;return printUsageError(client,message,2,"invalid_arguments",getUpdateCommand(suggestion))}requestedSettings.framework=framework.slug}let requestedAutoDetect=parseAutoDetectSettings(autoDetectInputs),autoDetectSet=new Set;for(let setting of requestedAutoDetect){if(!autoDetectSettings.includes(setting)){let suggestion=setting?did_you_mean_default(setting,autoDetectSettings,.7):void 0,message=suggestion?`Unknown auto-detect setting ${JSON.stringify(setting)}. Did you mean ${JSON.stringify(suggestion)}?`:`Unknown auto-detect setting ${JSON.stringify(setting)}. Accepted settings: ${autoDetectSettings.join(", ")}.`;return printUsageError(client,message,2,"invalid_arguments",`project update <name> --auto-detect ${suggestion??"<setting>"}`)}autoDetectSet.add(setting)}for(let definition of buildSettingDefinitions){let value=flags[definition.flag];if(value!==void 0&&autoDetectSet.has(definition.autoDetect))return printUsageError(client,`Can't use "${definition.flag}" and "--auto-detect ${definition.autoDetect}" together. Choose one.`,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);if(value!==void 0){let validationError=validateSettingValue(definition,value);if(validationError)return printUsageError(client,validationError,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);requestedSettings[definition.key]=value}else autoDetectSet.has(definition.autoDetect)&&(requestedSettings[definition.key]=null)}let sandboxRegionInput=flags["--sandbox-region"];if(sandboxRegionInput!==void 0){let normalizedRegion=sandboxRegionInput.trim().toLowerCase();requestedSettings.sandboxRegion=normalizedRegion===""?null:normalizedRegion}let sandboxFailoverInput=flags["--sandbox-failover-regions"];sandboxFailoverInput!==void 0&&(requestedSettings.sandboxFailoverRegions=parseSandboxRegionList(sandboxFailoverInput));let providedAdvanced=[];for(let definition of advancedSettingDefinitions){if(definition.kind==="toggle"){let toggle=readOnOffOption(client,flags,{on:definition.flag,off:`--no-${definition.flag.slice(2)}`});if("error"in toggle)return printUsageError(client,toggle.error,2,"invalid_arguments",`project update <name> ${definition.flag}`);toggle.value!==void 0&&providedAdvanced.push({definition,value:toggle.value});continue}let raw=flags[definition.flag];if(raw===void 0)continue;let result=parseAdvanced(definition,raw);if(!result.ok)return printUsageError(client,result.message,2,"invalid_arguments",`project update <name> ${definition.flag} <value>`);providedAdvanced.push({definition,value:result.value})}if(settingOrder.every(key=>!hasSetting(requestedSettings,key))&&providedAdvanced.length===0)return printUsageError(client,'Provide at least one setting option. Run "vercel project update --help" to see every available option.',2,"missing_arguments");let project;try{project=await getProjectByCwdOrLink({client,commandName:"project update",projectNameOrId,forReadOnlyCommand:!0})}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let sandboxError=getSandboxValidationError(project,requestedSettings);if(sandboxError)return printUsageError(client,sandboxError,1,"invalid_arguments");let changes=computeSettingsChanges(project,requestedSettings,providedAdvanced),changeCount=changes.changedSettings.length,gatedProvided=providedAdvanced.filter(({definition,value})=>changes.changedSettings.includes(definition.key)&&definition.requiresPaidPlan?.(value));if(gatedProvided.length>0){let team,user,teamOwned=project.accountId.startsWith("team_");try{projectNameOrId?{team,user}=await getScope(client):{team,user}=await getScope(client,{resolveLocalScope:!0}),teamOwned&&team?.id!==project.accountId&&(team=await getTeamByIdOrSlug(client,project.accountId))}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let plan=(teamOwned?team?.billing:user?.billing)?.plan;if(!(plan==="pro"||plan==="enterprise")){let phrases=gatedProvided.map(({definition,value})=>`${definition.label} "${displayAdvanced(definition,value)}"`),list2=phrases.length===1?phrases[0]:`${phrases.slice(0,-1).join(", ")} and ${phrases[phrases.length-1]}`,verb=phrases.length>1?"require":"requires";return printPlanError(client,`${list2} ${verb} a Pro or Enterprise plan.`,teamOwned)}}let hasCostImpact=providedAdvanced.some(({definition,value})=>changes.changedSettings.includes(definition.key)&&definition.hasCostImpact?.(value));if(changeCount>0&&!(!!flags["--yes"]&&!hasCostImpact)){if(!canPrompt(client))return printConfirmationRequiredError(client,hasCostImpact);if(printChangePreview({project,previousSettings:changes.previousSettings,requestedSettings,changedSettings:changes.changedSettings,advancedRows:changes.advancedRows}),hasCostImpact&&printAlignedLabel("Charges","These settings may affect your Vercel charges.",{gutter:"!"}),!await client.input.confirm(`Update ${changeCount} ${changeCount===1?"setting":"settings"} for ${import_chalk10.default.bold(project.name)}?`,!1))return output_manager_default.log("Canceled"),0}if(changeCount>0){try{project=await refreshProjectForNestedUpdate(client,project,changes.body)}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}let refreshedSandboxError=getSandboxValidationError(project,requestedSettings);if(refreshedSandboxError)return printUsageError(client,refreshedSandboxError,1,"invalid_arguments");changes=computeSettingsChanges(project,requestedSettings,providedAdvanced)}let updatedProject=project;if(changes.changedSettings.length>0)try{updatedProject=await patchProjectSettings(client,project,changes.body)}catch(error){return exitWithNonInteractiveError(client,error,1,{variant:"update"}),printError(error),1}return writeUpdateResult({changedSettings:changes.changedSettings,project:updatedProject,previousSettings:changes.previousSettings,requestedSettings,advancedRows:changes.advancedRows,asJson:formatResult.jsonOutput||shouldEmitNonInteractiveCommandError(client),client}),0}var import_chalk11=__toESM(require_source(),1),import_build_utils=__toESM(require_build_utils(),1);var ProjectRmTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};var e=encodeURIComponent;async function rm(client,argv){let telemetryClient=new ProjectRmTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(removeSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(error){return printError(error),2}let{args,flags}=parsedArgs;if(args.length!==1)return output_manager_default.error(`Invalid number of arguments. Usage: ${import_chalk11.default.cyan(`${getCommandName("project delete <name>")}`)}`),2;let name=args[0],yes=flags["--yes"]??!1;if(telemetryClient.trackCliArgumentName(name),telemetryClient.trackCliFlagYes(yes),!(yes&&await isTeamExplicit(client)))if(canPrompt(client)){if(await printDeletionPreview(client,name),await client.input.text({message:`To confirm, type the project name "${name}":`})!==name)return output_manager_default.log("Canceled. Nothing was changed."),130}else{if(yes)return refuse(client,{reason:AGENT_REASON.MISSING_SCOPE,message:`Can't delete project ${name} without a team in non-interactive mode.`,recovery:"Pass the team with --scope:",command:`${buildCommandWithYes(client.argv)} --scope <TEAM>`,when:`Replace <TEAM> with the team that owns ${name}`});if(client.stdin.isTTY||client.isAgent||client.nonInteractive){let teamNamed2=await isTeamExplicit(client);return refuse(client,{reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:`Can't delete project ${name} without --yes in non-interactive mode.`,recovery:"Delete it after a person approves:",command:`${buildCommandWithYes(client.argv)}${teamNamed2?"":" --scope <TEAM>"}`,when:`Only after a human approves deleting ${name} and its deployments${teamNamed2?"":`. Replace <TEAM> with the team that owns ${name}`}`,userActionRequired:!0})}else if(output_manager_default.warning("Deleting a project without a terminal will need --yes and --scope in a future major version."),await printDeletionPreview(client,name),!await client.input.confirm(`${import_chalk11.default.bold.red("Are you sure?")}`,!1))return output_manager_default.log("User abort"),0}try{await client.fetch(`/v2/projects/${e(name)}`,{method:"DELETE"})}catch(err){return isAPIError(err)&&err.status===404?(output_manager_default.error("No such project exists"),1):isAPIError(err)&&err.status===403?(output_manager_default.error(err.message),1):(printError(err),1)}return output_manager_default.print(`
67
67
  `),printAlignedLabel("Deleted",name,{gutter:"\u2713"}),0}async function printDeletionPreview(client,projectName){printAlignedLabel("Project",`${await getContextName(client)}/${projectName}`),output_manager_default.print(`
68
68
  Deletes the project and all of its deployments.
@@ -110,4 +110,4 @@ Once approved, run:
110
110
  `):output_manager_default.error(message),1}if(output_manager_default.print(`Enabling Password Protection for ${import_chalk19.default.bold(project.name)} can incur charges.
111
111
  `),await client.input.text({message:`Type ${project.name} to confirm enabling Password Protection:`})!==project.name)return output_manager_default.log("Canceled"),0}if(action){let skewProtectionMaxAge=action==="enable"?enableSkewMaxAgeSeconds??DEFAULT_SKEW_PROTECTION_MAX_AGE:0;if(bypassSelected){if(action==="disable"&&!protectionBypassSecret){let secretMsg="Disabling protection bypass requires --protection-bypass-secret <secret>.";return outputAgentError(client,{status:"error",reason:AGENT_REASON.MISSING_ARGUMENTS,message:secretMsg,hint:"Pass the existing automation bypass secret to revoke it.",next:[{command:buildCommandWithGlobalFlags(client.argv,"project protection disable --protection-bypass --protection-bypass-secret <secret>"),when:"Replace <secret> with the bypass secret to revoke"}]},2),output_manager_default.error(secretMsg),2}try{let bypassBody=action==="enable"?{generate:protectionBypassSecret?{secret:protectionBypassSecret}:{}}:{revoke:{secret:protectionBypassSecret,regenerate:!1}};await client.fetch(`/v1/projects/${encodeURIComponent(project.id)}/protection-bypass`,{method:"PATCH",body:bypassBody})}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"protection"}),printError(err),1}}let patchBody={};if(ssoSelected&&(patchBody.ssoProtection=action==="enable"?{deploymentType:ENABLED_DEPLOYMENT_TYPE}:null),passwordSelected&&(patchBody.passwordProtection=action==="enable"?{deploymentType:ENABLED_DEPLOYMENT_TYPE,...protectionPassword?{password:protectionPassword}:{}}:null),customerSupportCodeVisibilitySelected&&(patchBody.customerSupportCodeVisibility=action==="enable"),skewSelected&&(patchBody.skewProtectionMaxAge=skewProtectionMaxAge),gitForkProtectionSelected&&(patchBody.gitForkProtection=action==="enable"),Object.keys(patchBody).length>0)try{await client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{method:"PATCH",body:patchBody})}catch(err){return exitWithNonInteractiveError(client,err,1,{variant:"protection"}),printError(err),1}return preferJson?(client.stdout.write(`${JSON.stringify({action,projectId:project.id,projectName:project.name,ssoProtection:ssoSelected?action==="enable":void 0,passwordProtection:passwordSelected?action==="enable":void 0,customerSupportCodeVisibility:customerSupportCodeVisibilitySelected?action==="enable":void 0,skewProtection:skewSelected?action==="enable":void 0,...skewSelected?action==="enable"?{skewProtectionMaxAge}:{skewProtectionMaxAge:0}:{},protectionBypass:bypassSelected?action==="enable":void 0,gitForkProtection:gitForkProtectionSelected?action==="enable":void 0},null,2)}
112
112
  `),0):(output_manager_default.log(`${import_chalk19.default.bold("Deployment protection")} ${action==="enable"?"enabled":"disabled"} for ${import_chalk19.default.cyan(project.name)}`),0)}let raw=project,slice={};for(let key of PROTECTION_KEYS)key in raw&&(slice[key]=raw[key]);if(preferJson)return client.stdout.write(`${JSON.stringify({projectId:project.id,name:project.name,...slice},null,2)}
113
- `),0;if(output_manager_default.log(`${import_chalk19.default.bold("Protection settings")} for ${import_chalk19.default.cyan(project.name)} (${project.id})`),Object.keys(slice).length===0)return output_manager_default.log("No deployment protection fields returned for this project."),0;for(let[k,v]of Object.entries(slice))output_manager_default.log(`${import_chalk19.default.cyan(`${k}:`)} ${JSON.stringify(v)}`);return 0}var COMMAND_CONFIG={inspect:getCommandAliases(inspectSubcommand),list:getCommandAliases(listSubcommand),members:getCommandAliases(membersSubcommand),accessGroups:getCommandAliases(accessGroupsSubcommand),add:getCommandAliases(addSubcommand),"access-summary":getCommandAliases(accessSummarySubcommand),checks:getCommandAliases(checksSubcommand),protection:getCommandAliases(protectionSubcommand),update:getCommandAliases(updateSubcommand),rename:getCommandAliases(renameSubcommand),delete:getCommandAliases(removeSubcommand),token:getCommandAliases(tokenSubcommand),speedInsights:getCommandAliases(speedInsightsSubcommand),webAnalytics:getCommandAliases(webAnalyticsSubcommand),pause:getCommandAliases(pauseSubcommand),"dangerously-delete-immutable-static-asset":getCommandAliases(dangerouslyDeleteImmutableStaticAssetSubcommand),observability:getCommandAliases(observabilitySubcommand),priority:getCommandAliases(prioritySubcommand),resume:getCommandAliases(resumeSubcommand)};async function main(client){let telemetry=new ProjectTelemetryClient({opts:{store:client.telemetryEventStore}}),flagsSpecification=getFlagsSpecification(projectCommand.options),parsedArgs;try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error,client),2}let{subcommand,args,subcommandOriginal}=getSubcommand(parsedArgs.args.slice(1),COMMAND_CONFIG),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("project"),output_manager_default.print(help(projectCommand,{columns:client.stderr.columns})),0;function printHelp(command){return output_manager_default.print(help(command,{parent:projectCommand,columns:client.stderr.columns})),0}parsedArgs.args[1]||(subcommand="list");let exitCode;switch(subcommand){case"inspect":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(inspectSubcommand);telemetry.trackCliSubcommandInspect(subcommandOriginal),exitCode=await inspect(client,args);break;case"list":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(listSubcommand);telemetry.trackCliSubcommandList(subcommandOriginal),exitCode=await list(client,args);break;case"add":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(addSubcommand);telemetry.trackCliSubcommandCreate(subcommandOriginal),subcommandOriginal==="add"&&warnDeprecatedSubcommand(client,"project add","project create"),exitCode=await add(client,args);break;case"access-summary":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(accessSummarySubcommand);telemetry.trackCliSubcommandAccessSummary(subcommandOriginal),subcommandOriginal==="summary"&&warnDeprecatedSubcommand(client,"project summary","project access-summary"),exitCode=await accessSummary(client,args);break;case"checks":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(checksSubcommand);telemetry.trackCliSubcommandChecks(args[0]==="add"?"checks add":args[0]==="remove"||args[0]==="rm"?"checks remove":subcommandOriginal),exitCode=await checks(client,args);break;case"members":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(membersSubcommand);telemetry.trackCliSubcommandMembers(args[0]==="add"?"members add":args[0]==="remove"||args[0]==="rm"?"members remove":subcommandOriginal),exitCode=await members(client,args);break;case"accessGroups":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(accessGroupsSubcommand);telemetry.trackCliSubcommandAccessGroups(subcommandOriginal),subcommandOriginal==="accessgroups"&&warnDeprecatedSubcommand(client,"project accessgroups","project access-groups"),exitCode=await accessGroups(client,args);break;case"protection":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(protectionSubcommand);telemetry.trackCliSubcommandProtection(args[0]==="enable"?"protection enable":args[0]==="disable"?"protection disable":subcommandOriginal),exitCode=await protection(client,args);break;case"webAnalytics":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(webAnalyticsSubcommand);telemetry.trackCliSubcommandWebAnalytics(args[0]==="enable"?"web-analytics enable":args[0]==="disable"?"web-analytics disable":subcommandOriginal),exitCode=await webAnalytics(client,args);break;case"speedInsights":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(speedInsightsSubcommand);telemetry.trackCliSubcommandSpeedInsights(args[0]==="enable"?"speed-insights enable":args[0]==="disable"?"speed-insights disable":subcommandOriginal),exitCode=await speedInsights(client,args);break;case"pause":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(pauseSubcommand);telemetry.trackCliSubcommandPause(subcommandOriginal),exitCode=await pause(client,args);break;case"dangerously-delete-immutable-static-asset":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(dangerouslyDeleteImmutableStaticAssetSubcommand);telemetry.trackCliSubcommandDangerouslyDeleteImmutableStaticAsset(subcommandOriginal),exitCode=await dangerouslyDeleteImmutableStaticAsset(client,args);break;case"observability":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(observabilitySubcommand);telemetry.trackCliSubcommandObservability(args[0]==="enable"?"observability enable":args[0]==="disable"?"observability disable":subcommandOriginal),exitCode=await observability(client,args);break;case"priority":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(prioritySubcommand);telemetry.trackCliSubcommandPriority(args[0]==="enable"?"priority enable":args[0]==="disable"?"priority disable":subcommandOriginal),subcommandOriginal==="priority-project"&&warnDeprecatedSubcommand(client,"project priority-project","project priority"),exitCode=await priority(client,args);break;case"resume":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(resumeSubcommand);telemetry.trackCliSubcommandResume(subcommandOriginal),subcommandOriginal==="unpause"&&warnDeprecatedSubcommand(client,"project unpause","project resume"),exitCode=await resume(client,args);break;case"token":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(tokenSubcommand);telemetry.trackCliSubcommandToken(subcommandOriginal),exitCode=await getOidcToken(client,args);break;case"rename":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(renameSubcommand);telemetry.trackCliSubcommandRename(subcommandOriginal),exitCode=await rename(client,args);break;case"update":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(updateSubcommand);telemetry.trackCliSubcommandUpdate(subcommandOriginal),subcommandOriginal==="set"&&warnDeprecatedSubcommand(client,"project set","project update"),exitCode=await update(client,args);break;case"delete":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(removeSubcommand);telemetry.trackCliSubcommandDelete(subcommandOriginal),subcommandOriginal==="remove"&&warnDeprecatedSubcommand(client,"project remove","project delete"),exitCode=await rm(client,args);break;default:{if(handleCommandTypo({client,command:parsedArgs.args[1],availableCommands:projectCommand.subcommands}))return 2;let fallback=await tryOpenApiFallback(client,parsedArgs.args.slice(1),resolveOpenApiTagForProjectsCli);if(fallback!==null){exitCode=fallback;break}return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG)),output_manager_default.print(help(projectCommand,{columns:client.stderr.columns})),2}}return exitCode}export{main as default};
113
+ `),0;if(output_manager_default.log(`${import_chalk19.default.bold("Protection settings")} for ${import_chalk19.default.cyan(project.name)} (${project.id})`),Object.keys(slice).length===0)return output_manager_default.log("No deployment protection fields returned for this project."),0;for(let[k,v]of Object.entries(slice))output_manager_default.log(`${import_chalk19.default.cyan(`${k}:`)} ${JSON.stringify(v)}`);return 0}var COMMAND_CONFIG={inspect:getCommandAliases(inspectSubcommand),list:getCommandAliases(listSubcommand),members:getCommandAliases(membersSubcommand),accessGroups:getCommandAliases(accessGroupsSubcommand),add:getCommandAliases(addSubcommand),"access-summary":getCommandAliases(accessSummarySubcommand),checks:getCommandAliases(checksSubcommand),protection:getCommandAliases(protectionSubcommand),update:getCommandAliases(updateSubcommand),rename:getCommandAliases(renameSubcommand),delete:getCommandAliases(removeSubcommand),token:getCommandAliases(tokenSubcommand),speedInsights:getCommandAliases(speedInsightsSubcommand),webAnalytics:getCommandAliases(webAnalyticsSubcommand),pause:getCommandAliases(pauseSubcommand),"dangerously-delete-immutable-static-asset":getCommandAliases(dangerouslyDeleteImmutableStaticAssetSubcommand),observability:getCommandAliases(observabilitySubcommand),priority:getCommandAliases(prioritySubcommand),resume:getCommandAliases(resumeSubcommand)};async function main(client){let telemetry=new ProjectTelemetryClient({opts:{store:client.telemetryEventStore}}),flagsSpecification=getFlagsSpecification(projectCommand.options),parsedArgs;try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error,client),2}let{subcommand,args,subcommandOriginal}=getSubcommand(parsedArgs.args.slice(1),COMMAND_CONFIG),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("project"),output_manager_default.print(help(projectCommand,{columns:client.stderr.columns})),0;function printHelp(command){return output_manager_default.print(help(command,{parent:projectCommand,columns:client.stderr.columns})),0}parsedArgs.args[1]||(subcommand="list");let exitCode;switch(subcommand){case"inspect":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(inspectSubcommand);telemetry.trackCliSubcommandInspect(subcommandOriginal),exitCode=await inspect(client,args);break;case"list":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(listSubcommand);telemetry.trackCliSubcommandList(subcommandOriginal),exitCode=await list(client,args);break;case"add":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(addSubcommand);telemetry.trackCliSubcommandCreate(subcommandOriginal),subcommandOriginal==="add"&&warnDeprecatedSubcommand(client,"project add","project create"),exitCode=await add(client,args);break;case"access-summary":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(accessSummarySubcommand);telemetry.trackCliSubcommandAccessSummary(subcommandOriginal),subcommandOriginal==="summary"&&warnDeprecatedSubcommand(client,"project summary","project access-summary"),exitCode=await accessSummary(client,args);break;case"checks":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(checksSubcommand);telemetry.trackCliSubcommandChecks(args[0]==="add"?"checks add":args[0]==="remove"||args[0]==="rm"?"checks remove":subcommandOriginal),exitCode=await checks(client,args);break;case"members":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(membersSubcommand);telemetry.trackCliSubcommandMembers(args[0]==="add"?"members add":args[0]==="remove"||args[0]==="rm"?"members remove":subcommandOriginal),exitCode=await members(client,args);break;case"accessGroups":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(accessGroupsSubcommand);telemetry.trackCliSubcommandAccessGroups(subcommandOriginal),subcommandOriginal==="accessgroups"&&warnDeprecatedSubcommand(client,"project accessgroups","project access-groups"),exitCode=await accessGroups(client,args);break;case"protection":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(protectionSubcommand);telemetry.trackCliSubcommandProtection(args[0]==="enable"?"protection enable":args[0]==="disable"?"protection disable":subcommandOriginal),exitCode=await protection(client,args);break;case"webAnalytics":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(webAnalyticsSubcommand);telemetry.trackCliSubcommandWebAnalytics(args[0]==="enable"?"web-analytics enable":args[0]==="disable"?"web-analytics disable":subcommandOriginal),exitCode=await webAnalytics(client,args);break;case"speedInsights":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(speedInsightsSubcommand);telemetry.trackCliSubcommandSpeedInsights(args[0]==="enable"?"speed-insights enable":args[0]==="disable"?"speed-insights disable":subcommandOriginal),exitCode=await speedInsights(client,args);break;case"pause":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(pauseSubcommand);telemetry.trackCliSubcommandPause(subcommandOriginal),exitCode=await pause(client,args);break;case"dangerously-delete-immutable-static-asset":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(dangerouslyDeleteImmutableStaticAssetSubcommand);telemetry.trackCliSubcommandDangerouslyDeleteImmutableStaticAsset(subcommandOriginal),exitCode=await dangerouslyDeleteImmutableStaticAsset(client,args);break;case"observability":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(observabilitySubcommand);telemetry.trackCliSubcommandObservability(args[0]==="enable"?"observability enable":args[0]==="disable"?"observability disable":subcommandOriginal),exitCode=await observability(client,args);break;case"priority":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(prioritySubcommand);telemetry.trackCliSubcommandPriority(args[0]==="enable"?"priority enable":args[0]==="disable"?"priority disable":subcommandOriginal),subcommandOriginal==="priority-project"&&warnDeprecatedSubcommand(client,"project priority-project","project priority"),exitCode=await priority(client,args);break;case"resume":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(resumeSubcommand);telemetry.trackCliSubcommandResume(subcommandOriginal),subcommandOriginal==="unpause"&&warnDeprecatedSubcommand(client,"project unpause","project resume"),exitCode=await resume(client,args);break;case"token":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(tokenSubcommand);telemetry.trackCliSubcommandToken(subcommandOriginal),exitCode=await getOidcToken(client,args);break;case"rename":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(renameSubcommand);telemetry.trackCliSubcommandRename(subcommandOriginal),exitCode=await rename(client,args);break;case"update":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(updateSubcommand);telemetry.trackCliSubcommandUpdate(subcommandOriginal),subcommandOriginal==="set"&&warnDeprecatedSubcommand(client,"project set","project update"),exitCode=await update(client,args);break;case"delete":if(needHelp)return telemetry.trackCliFlagHelp("project",subcommandOriginal),printHelp(removeSubcommand);telemetry.trackCliSubcommandDelete(subcommandOriginal),subcommandOriginal==="remove"&&warnDeprecatedSubcommand(client,"project remove","project delete"),exitCode=await rm(client,args);break;default:{if(handleCommandTypo({client,command:parsedArgs.args[1],availableCommands:projectCommand.subcommands,helpCommand:"project --help"}))return 2;let fallback=await tryOpenApiFallback(client,parsedArgs.args.slice(1),resolveOpenApiTagForProjectsCli);if(fallback!==null){exitCode=fallback;break}return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG)),output_manager_default.print(help(projectCommand,{columns:client.stderr.columns})),2}}return exitCode}export{main as default};