@depup/vercel 59.23.2-depup.0 → 62.2.0-depup.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 (260) hide show
  1. package/README.md +27 -8
  2. package/changes.json +87 -11
  3. package/dist/chunks/add-7HJR3HK7.js +8 -0
  4. package/dist/chunks/add-Q5OZFIRM.js +8 -0
  5. package/dist/chunks/add-VLVURKGS.js +8 -0
  6. package/dist/chunks/build-MR7MUWBQ.js +7 -0
  7. package/dist/chunks/chunk-23NBYS6R.js +36 -0
  8. package/dist/chunks/{chunk-YMVDWVMO.js → chunk-2RQFMCPJ.js} +1 -1
  9. package/dist/chunks/{chunk-IVWPQYIH.js → chunk-3R66O72V.js} +1 -1
  10. package/dist/chunks/{chunk-JGPECEYY.js → chunk-4HXRTNAK.js} +2 -2
  11. package/dist/chunks/chunk-5VWK73R6.js +10 -0
  12. package/dist/chunks/chunk-6JU3QZ3O.js +22 -0
  13. package/dist/chunks/{chunk-UXCTETFN.js → chunk-6NPXWN5F.js} +1 -1
  14. package/dist/chunks/{chunk-PS645CWM.js → chunk-743NGLUN.js} +1 -1
  15. package/dist/chunks/{chunk-WDVSYGZS.js → chunk-7ANQHBBE.js} +1 -1
  16. package/dist/chunks/chunk-7I23VXBQ.js +7 -0
  17. package/dist/chunks/{chunk-64NJHVA3.js → chunk-7IRKF3ZG.js} +6 -6
  18. package/dist/chunks/{chunk-NBVY237X.js → chunk-7JFK53D4.js} +1 -1
  19. package/dist/chunks/{chunk-FZH7RIRX.js → chunk-7POWBJDF.js} +7 -5
  20. package/dist/chunks/chunk-7T4CJ6MJ.js +9 -0
  21. package/dist/chunks/{chunk-SOQ5DE44.js → chunk-A752WDCH.js} +1 -1
  22. package/dist/chunks/{chunk-GTJ2OLYI.js → chunk-ACCZWEKL.js} +1 -1
  23. package/dist/chunks/chunk-ADDXKC3J.js +9 -0
  24. package/dist/chunks/{chunk-UUM2N6IG.js → chunk-AKPQWZIP.js} +4 -4
  25. package/dist/chunks/chunk-ALXWJ7XN.js +7 -0
  26. package/dist/chunks/chunk-B5PFD6Q3.js +7 -0
  27. package/dist/chunks/{chunk-WKZ6JSGZ.js → chunk-BKV35LVB.js} +1 -1
  28. package/dist/chunks/chunk-C3XFIO5L.js +7 -0
  29. package/dist/chunks/{chunk-GHULCYAR.js → chunk-C5KVTG2O.js} +1 -1
  30. package/dist/chunks/{chunk-QI3JSWD6.js → chunk-C6ITILVT.js} +2 -2
  31. package/dist/chunks/{chunk-KBKN7EI7.js → chunk-CQ3RAERR.js} +1 -1
  32. package/dist/chunks/chunk-CVX5X5RI.js +7 -0
  33. package/dist/chunks/chunk-D5VTBRWF.js +7 -0
  34. package/dist/chunks/{chunk-NYOQMU3P.js → chunk-DECIQZZQ.js} +4 -4
  35. package/dist/chunks/{chunk-E4X2DH4K.js → chunk-E4RLHRDF.js} +2 -2
  36. package/dist/chunks/chunk-EQHNA4BW.js +7 -0
  37. package/dist/chunks/{chunk-M6A7UH4U.js → chunk-GASSNHZG.js} +7 -7
  38. package/dist/chunks/{chunk-UGXNE4YE.js → chunk-HLVUEYOZ.js} +1 -1
  39. package/dist/chunks/chunk-HVROAV4B.js +9 -0
  40. package/dist/chunks/{chunk-4YVA7TSY.js → chunk-HYW4A5B3.js} +1 -1
  41. package/dist/chunks/{chunk-VIR3KDCQ.js → chunk-I46LFJJG.js} +1 -1
  42. package/dist/chunks/{chunk-ZXE4XYIV.js → chunk-ILFUNCJZ.js} +1 -1
  43. package/dist/chunks/{chunk-Z6LKARXP.js → chunk-ILXXXXVQ.js} +1 -1
  44. package/dist/chunks/chunk-J6OPPI3A.js +63 -0
  45. package/dist/chunks/{chunk-HOYHUMBD.js → chunk-JO3XBFR3.js} +1 -1
  46. package/dist/chunks/{chunk-MEAY2K5Z.js → chunk-JRU6AGXG.js} +1 -1
  47. package/dist/chunks/{chunk-6SA6SOHU.js → chunk-JSKSNCK2.js} +1 -1
  48. package/dist/chunks/{chunk-TJKM3345.js → chunk-K5WTLFS6.js} +1 -1
  49. package/dist/chunks/chunk-KG5BMLOI.js +7 -0
  50. package/dist/chunks/chunk-KOSM3DYE.js +7 -0
  51. package/dist/chunks/{chunk-7B5NNJ2P.js → chunk-KREBNPHL.js} +3 -3
  52. package/dist/chunks/{chunk-KXYR43H5.js → chunk-L46BHPRD.js} +1 -1
  53. package/dist/chunks/{chunk-T4AZ3U7O.js → chunk-LCWCTL6L.js} +1 -1
  54. package/dist/chunks/{chunk-GR3DLKYP.js → chunk-LCY4SULE.js} +1 -1
  55. package/dist/chunks/chunk-LHQUNL52.js +7 -0
  56. package/dist/chunks/chunk-M7ZGWERO.js +9 -0
  57. package/dist/chunks/{chunk-A5VLP25I.js → chunk-MCCL762Q.js} +1 -1
  58. package/dist/chunks/chunk-MK3CTSDV.js +24 -0
  59. package/dist/chunks/{chunk-RRQTVE2P.js → chunk-MKY5IBKK.js} +1 -1
  60. package/dist/chunks/{chunk-Z7PBDQNR.js → chunk-N4PVXHAJ.js} +4 -3
  61. package/dist/chunks/{chunk-UWZ5VIIQ.js → chunk-N5MNZPPJ.js} +1 -1
  62. package/dist/chunks/{chunk-6LE44WCK.js → chunk-N7XPPYQQ.js} +1 -1
  63. package/dist/chunks/{chunk-N3N5UHIL.js → chunk-NESZV33T.js} +1 -1
  64. package/dist/chunks/chunk-NRN65VUM.js +8 -0
  65. package/dist/chunks/{chunk-O7G3CZ42.js → chunk-NT67T6DL.js} +1 -1
  66. package/dist/chunks/chunk-NXTK7VKL.js +7 -0
  67. package/dist/chunks/chunk-PADCVJ7G.js +7 -0
  68. package/dist/chunks/{chunk-GGNZLN4R.js → chunk-PAI3WRPA.js} +1 -1
  69. package/dist/chunks/{chunk-GL2AUBAI.js → chunk-PTFKU33G.js} +1 -1
  70. package/dist/chunks/{chunk-JAJW3P42.js → chunk-PV5YI2ZZ.js} +1 -1
  71. package/dist/chunks/{chunk-WUZD4KBL.js → chunk-RFWCEREA.js} +1 -1
  72. package/dist/chunks/chunk-RINZXCDJ.js +19 -0
  73. package/dist/chunks/{chunk-EIXOJUNN.js → chunk-RVKOPGOI.js} +1 -1
  74. package/dist/chunks/{chunk-ZKYS7EAB.js → chunk-S2LBGLRE.js} +1 -1
  75. package/dist/chunks/{chunk-6OI6SRHZ.js → chunk-SDGWKUST.js} +1 -1
  76. package/dist/chunks/{chunk-V5DCSHYJ.js → chunk-SM5JI6QM.js} +1 -1
  77. package/dist/chunks/{chunk-QR7QPUFN.js → chunk-TKBORMUF.js} +1 -1
  78. package/dist/chunks/chunk-UOHVKN6N.js +8 -0
  79. package/dist/chunks/{chunk-73G2MHUX.js → chunk-UWO3M2L2.js} +1 -1
  80. package/dist/chunks/{chunk-ZKWM4JBE.js → chunk-VDOJERIW.js} +1 -1
  81. package/dist/chunks/chunk-VGXFOQ4P.js +8 -0
  82. package/dist/chunks/{chunk-ZDORSGCG.js → chunk-VTMLKJVQ.js} +1 -1
  83. package/dist/chunks/{chunk-2SLHYWMC.js → chunk-VZDY57PJ.js} +1 -1
  84. package/dist/chunks/chunk-W26LLGQV.js +7 -0
  85. package/dist/chunks/{chunk-EQ52F4LH.js → chunk-W7PVS44H.js} +1 -1
  86. package/dist/chunks/{chunk-6LE3FU2P.js → chunk-WN6OXK2F.js} +1 -1
  87. package/dist/chunks/{chunk-YGJO25LP.js → chunk-WOKSTB3F.js} +1 -1
  88. package/dist/chunks/{chunk-2HEC5TDU.js → chunk-WW3VUXRV.js} +1 -1
  89. package/dist/chunks/{chunk-J5X5YRBH.js → chunk-X47XV2WG.js} +1 -1
  90. package/dist/chunks/{chunk-4WSAOLBH.js → chunk-XQQGQ55A.js} +1 -1
  91. package/dist/chunks/chunk-ZQIUMXCI.js +7 -0
  92. package/dist/chunks/chunk-ZUYWATU5.js +27 -0
  93. package/dist/chunks/clear-PPE55RPM.js +8 -0
  94. package/dist/chunks/compile-vercel-config-2IC23CNT.js +7 -0
  95. package/dist/chunks/config-G2A6KPPM.js +8 -0
  96. package/dist/chunks/config-T3WHONFJ.js +7 -0
  97. package/dist/chunks/config-validator.mjs +1 -1
  98. package/dist/chunks/{connect-git-provider-P3SGOW6X.js → connect-git-provider-VYU65KTS.js} +1 -1
  99. package/dist/chunks/{constants-G4UYVLOF.js → constants-NCE2LWSS.js} +1 -1
  100. package/dist/chunks/delete-75SYJKNE.js +10 -0
  101. package/dist/chunks/delete-MHXN5KTO.js +9 -0
  102. package/dist/chunks/{detect-projects-WLAFT5HC.js → detect-projects-GJF4VXQI.js} +1 -1
  103. package/dist/chunks/detect-services-K3363KB7.js +7 -0
  104. package/dist/chunks/disable-OUYOHEWN.js +7 -0
  105. package/dist/chunks/discard-RXSHOY3J.js +14 -0
  106. package/dist/chunks/edit-Y7OL72ZK.js +9 -0
  107. package/dist/chunks/edit-Z5RCWPOX.js +8 -0
  108. package/dist/chunks/enable-HI2UH2NM.js +7 -0
  109. package/dist/chunks/{exec-YH5WUJ4C.js → exec-3RMS2X6B.js} +1 -1
  110. package/dist/chunks/{export-QCBAQNTT.js → export-CMP3APAJ.js} +1 -1
  111. package/dist/chunks/future-GS7ZLJ3N.js +7 -0
  112. package/dist/chunks/generate-cert-for-deploy-2HHUYGHU.js +7 -0
  113. package/dist/chunks/{image-DU7GJZR2.js → image-SQIUEBFK.js} +1 -1
  114. package/dist/chunks/import-builders-EUOOFPHW.js +7 -0
  115. package/dist/chunks/inspect-2SXPXNYH.js +13 -0
  116. package/dist/chunks/{inspect-IVJOEZC4.js → inspect-DYNTJMTQ.js} +1 -1
  117. package/dist/chunks/inspect-J3F3U3YF.js +9 -0
  118. package/dist/chunks/{inspect-EMWJLBAW.js → inspect-KYFVYFWX.js} +1 -1
  119. package/dist/chunks/{inspect-CPOFKE4X.js → inspect-V7HA2GZ5.js} +1 -1
  120. package/dist/chunks/{list-KYZNCXBM.js → list-TSDBEAVF.js} +1 -1
  121. package/dist/chunks/{list-ZE2VPPXI.js → list-X4MKKDJX.js} +1 -1
  122. package/dist/chunks/list-ZQSOWXRI.js +11 -0
  123. package/dist/chunks/login-5FMKHZVG.js +7 -0
  124. package/dist/chunks/login-YEDMPXUF.js +9 -0
  125. package/dist/chunks/logs-X2OIQXGW.js +7 -0
  126. package/dist/chunks/{ls-7O63WIES.js → ls-4W4KTJ6T.js} +1 -1
  127. package/dist/chunks/{ls-DU5QTKKA.js → ls-6EDJUUDW.js} +1 -1
  128. package/dist/chunks/{ls-P6LKMT33.js → ls-BMAVUMXU.js} +1 -1
  129. package/dist/chunks/{ls-AKGRKWHM.js → ls-HK45UWBD.js} +1 -1
  130. package/dist/chunks/ls-LAYBQVU2.js +8 -0
  131. package/dist/chunks/ls-SQ42O6O5.js +11 -0
  132. package/dist/chunks/ls-XIJ4CY2N.js +8 -0
  133. package/dist/chunks/mutate-6FCOCHSA.js +9 -0
  134. package/dist/chunks/notifications-JTK7ZOLC.js +7 -0
  135. package/dist/chunks/open-3G4R3VIN.js +7 -0
  136. package/dist/chunks/openapi-W365UPH2.js +7 -0
  137. package/dist/chunks/{permissions-AE5JO26V.js → permissions-IWUBXZBZ.js} +1 -1
  138. package/dist/chunks/prompt-missing-credentials-VDR5HVA2.js +7 -0
  139. package/dist/chunks/publish-5QKVU6YV.js +15 -0
  140. package/dist/chunks/pull-K4JQEP7N.js +7 -0
  141. package/dist/chunks/purchase-domain-if-available-Q7H2TGKR.js +7 -0
  142. package/dist/chunks/push-COILRLCW.js +7 -0
  143. package/dist/chunks/{query-PHAGR43V.js → query-ABPO2REN.js} +2 -2
  144. package/dist/chunks/{reauthenticate-O6C2AW3J.js → reauthenticate-3H5Q2ZWD.js} +1 -1
  145. package/dist/chunks/reorder-FBUQ5ET7.js +10 -0
  146. package/dist/chunks/reply-FR5VO7DA.js +9 -0
  147. package/dist/chunks/resolve-JI2ENFS6.js +12 -0
  148. package/dist/chunks/{resolve-deployment-framework-preset-XF3NJIDS.js → resolve-deployment-framework-preset-QEPJNWVF.js} +1 -1
  149. package/dist/chunks/restore-LYY4BSYJ.js +16 -0
  150. package/dist/chunks/rm-C2RWWMO3.js +8 -0
  151. package/dist/chunks/rm-CYYVIF2U.js +8 -0
  152. package/dist/chunks/rm-ETLZ75RJ.js +8 -0
  153. package/dist/chunks/rm-GHSQEFRG.js +8 -0
  154. package/dist/chunks/rm-KHO6RV55.js +8 -0
  155. package/dist/chunks/{routes-IPGKJ2E4.js → routes-FOCZWOGO.js} +1 -1
  156. package/dist/chunks/rule-inspect-MISYALLU.js +8 -0
  157. package/dist/chunks/{rules-6TZ6GSKT.js → rules-KAGL6MH3.js} +1 -1
  158. package/dist/chunks/schema-EKWTCBNR.js +14 -0
  159. package/dist/chunks/{schema-5CZLK6NI.js → schema-FZVKQRNB.js} +2 -2
  160. package/dist/chunks/{select-org-F2A5JJFH.js → select-org-37C26F7T.js} +1 -1
  161. package/dist/chunks/set-5D7C6HMZ.js +7 -0
  162. package/dist/chunks/setup-and-link-H4P3FZB3.js +7 -0
  163. package/dist/chunks/{tags-C3HWJLJ4.js → tags-DVGQQZNC.js} +1 -1
  164. package/dist/chunks/{types-H3B56MH6.js → types-UN5J66MI.js} +1 -1
  165. package/dist/chunks/{update-5HE4X45O.js → update-QY3ZME4T.js} +1 -1
  166. package/dist/chunks/vlt-builder-importer-W63QEXYX.js +11 -0
  167. package/dist/commands/build/index.js +1 -1
  168. package/dist/commands/deploy/index.js +9 -9
  169. package/dist/commands/dev/index.js +24 -21
  170. package/dist/commands/env/index.js +1 -1
  171. package/dist/commands/link/index.js +1 -1
  172. package/dist/commands/list/index.js +2 -2
  173. package/dist/commands-bulk.js +791 -704
  174. package/dist/help.js +1 -1
  175. package/dist/index.js +7 -6
  176. package/dist/internal-build-worker.js +10 -0
  177. package/dist/root-help-commands.mjs +1 -0
  178. package/dist/vc.js +110 -11
  179. package/dist/version.mjs +1 -1
  180. package/package.json +151 -73
  181. package/dist/chunks/add-JVSHQKWC.js +0 -8
  182. package/dist/chunks/add-UKFIETLE.js +0 -8
  183. package/dist/chunks/add-Z3CJT63N.js +0 -8
  184. package/dist/chunks/build-SMQYQX23.js +0 -7
  185. package/dist/chunks/chunk-32QBGZ2Z.js +0 -7
  186. package/dist/chunks/chunk-3QHJYVCY.js +0 -7
  187. package/dist/chunks/chunk-5YA32S6K.js +0 -7
  188. package/dist/chunks/chunk-65JYSI26.js +0 -7
  189. package/dist/chunks/chunk-66RYR2GI.js +0 -7
  190. package/dist/chunks/chunk-6C7LA5RA.js +0 -9
  191. package/dist/chunks/chunk-6PFC3KWQ.js +0 -7
  192. package/dist/chunks/chunk-ABSRS5KC.js +0 -9
  193. package/dist/chunks/chunk-AZ6NRDHG.js +0 -7
  194. package/dist/chunks/chunk-BX5KDMLT.js +0 -10
  195. package/dist/chunks/chunk-CVKB54WW.js +0 -7
  196. package/dist/chunks/chunk-DL665Q3Z.js +0 -7
  197. package/dist/chunks/chunk-EHTHHCNG.js +0 -130
  198. package/dist/chunks/chunk-EQP3SW72.js +0 -7
  199. package/dist/chunks/chunk-FB5TMOLQ.js +0 -7
  200. package/dist/chunks/chunk-GRDPI246.js +0 -29
  201. package/dist/chunks/chunk-J3U3L45Y.js +0 -7
  202. package/dist/chunks/chunk-KK4AJES5.js +0 -36
  203. package/dist/chunks/chunk-KUVMCIR4.js +0 -7
  204. package/dist/chunks/chunk-LKI6FRNM.js +0 -19
  205. package/dist/chunks/chunk-M5AV545M.js +0 -7
  206. package/dist/chunks/chunk-NZKBBY2A.js +0 -24
  207. package/dist/chunks/chunk-OAKO6LVS.js +0 -7
  208. package/dist/chunks/chunk-SFTXBTMI.js +0 -7
  209. package/dist/chunks/chunk-TBBU37TD.js +0 -9
  210. package/dist/chunks/chunk-TOGR3HUB.js +0 -8
  211. package/dist/chunks/chunk-V6IKQCOT.js +0 -8
  212. package/dist/chunks/chunk-WHYH7DVI.js +0 -20
  213. package/dist/chunks/chunk-X4X5RB2V.js +0 -7
  214. package/dist/chunks/clear-6IXTTZO6.js +0 -8
  215. package/dist/chunks/compile-vercel-config-ZFMPTU47.js +0 -7
  216. package/dist/chunks/config-HLVJQKP7.js +0 -7
  217. package/dist/chunks/config-XXHMPW46.js +0 -8
  218. package/dist/chunks/delete-52QKO73X.js +0 -10
  219. package/dist/chunks/delete-6VOUZDIR.js +0 -9
  220. package/dist/chunks/detect-services-YYT3LUUX.js +0 -7
  221. package/dist/chunks/disable-7FGR2S56.js +0 -7
  222. package/dist/chunks/discard-XKPTY3DC.js +0 -14
  223. package/dist/chunks/edit-A3HJCNPW.js +0 -8
  224. package/dist/chunks/edit-A7WGTO6K.js +0 -9
  225. package/dist/chunks/enable-NGKLGHJ2.js +0 -7
  226. package/dist/chunks/future-BB7OE645.js +0 -7
  227. package/dist/chunks/generate-cert-for-deploy-U7JF3HF3.js +0 -7
  228. package/dist/chunks/import-builders-IFZM44NL.js +0 -7
  229. package/dist/chunks/inspect-PHUMEO4A.js +0 -9
  230. package/dist/chunks/inspect-Q7OVSWFO.js +0 -13
  231. package/dist/chunks/list-G4JM2TYX.js +0 -11
  232. package/dist/chunks/login-AVVJFLSC.js +0 -9
  233. package/dist/chunks/login-RMAISH4F.js +0 -7
  234. package/dist/chunks/logs-3LTU2N25.js +0 -7
  235. package/dist/chunks/ls-4M2OBNG6.js +0 -8
  236. package/dist/chunks/ls-HWUYP3XY.js +0 -8
  237. package/dist/chunks/ls-Y4QR3I6O.js +0 -11
  238. package/dist/chunks/mutate-KOAALPIL.js +0 -9
  239. package/dist/chunks/notifications-3RDFNJSD.js +0 -7
  240. package/dist/chunks/open-VD4F6MAO.js +0 -7
  241. package/dist/chunks/openapi-DKMCRF2V.js +0 -7
  242. package/dist/chunks/prompt-missing-credentials-QY4MZDT6.js +0 -7
  243. package/dist/chunks/publish-YXVJXBQT.js +0 -15
  244. package/dist/chunks/pull-QLC2CV4J.js +0 -7
  245. package/dist/chunks/purchase-domain-if-available-74ZYVVBE.js +0 -7
  246. package/dist/chunks/push-TMPPU5NU.js +0 -7
  247. package/dist/chunks/reorder-OAJ3NXQQ.js +0 -10
  248. package/dist/chunks/reply-Q3JFRFA3.js +0 -9
  249. package/dist/chunks/resolve-XXJVOXNE.js +0 -12
  250. package/dist/chunks/restore-MO4B2EQV.js +0 -16
  251. package/dist/chunks/rm-63LFH6NA.js +0 -8
  252. package/dist/chunks/rm-F2XD2XKB.js +0 -8
  253. package/dist/chunks/rm-GMG2DZOV.js +0 -8
  254. package/dist/chunks/rm-P6KA5RSP.js +0 -8
  255. package/dist/chunks/rm-SZ4HWA4R.js +0 -8
  256. package/dist/chunks/rule-inspect-JKAXOBII.js +0 -8
  257. package/dist/chunks/schema-S2ZAREKF.js +0 -14
  258. package/dist/chunks/set-PIKLGKT6.js +0 -7
  259. package/dist/chunks/setup-and-link-O5QSQ5K2.js +0 -7
  260. package/dist/chunks/vlt-builder-importer-YVCYYRVV.js +0 -11
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{require_dist as require_dist2}from"./chunk-FAW6NBLQ.js";import{confirmOption,projectOption,yesOption}from"./chunk-JAJW3P42.js";import{packageName}from"./chunk-FI772UVH.js";import{require_dist}from"./chunk-QGIQK47P.js";import{__toESM}from"./chunk-6L236MNA.js";var import_async_listen=__toESM(require_dist2(),1),import_error_utils=__toESM(require_dist(),1),DEV_QUEUE_API_PREFIX="/api/v3/topic/",DEV_QUEUE_PROXY_PREFIX="/_svc/_queues",DEV_QUEUE_DEFAULT_PORT=4782,DEV_RUNTIME_CACHE_DEFAULT_PORT=4783,DEV_RESOURCE_TOKEN="vc-dev-token";function isValidDevResourceHost(origin,host){let port=new URL(origin).port,suffix=port?`:${port}`:"",normalizedHost=host?.toLowerCase();return normalizedHost===`127.0.0.1${suffix}`||normalizedHost===`localhost${suffix}`}async function listenOnDevResourcePort(server,options){let isPinned=options.port!==void 0,reservedPorts=new Set(options.reservedPorts),port=options.port??options.defaultPort;for(;;){if(!isPinned&&reservedPorts.has(port)){if(port>=65535)throw new Error(`${options.name} could not find an available port at or above 127.0.0.1:${options.defaultPort}. Choose another port with ${options.flag}.`);port++;continue}try{let address=await(0,import_async_listen.listen)(server,port,"127.0.0.1"),url=new URL(address.toString()),serverAddress=server.address(),actualPort=serverAddress&&typeof serverAddress!="string"?serverAddress.port:Number(url.port);return{origin:url.origin,port:actualPort,...port!==options.defaultPort&&!isPinned?{defaultPort:options.defaultPort}:{}}}catch(err){if(!(0,import_error_utils.isErrnoException)(err)||err.code!=="EADDRINUSE")throw err;if(isPinned||port>=65535)throw new Error(`${options.name} could not listen on 127.0.0.1:${port} because the port is already in use. Choose another port with ${options.flag}.`);port++}}}function getDevQueueEnv(baseUrl,hasWorkerServices=!0){return{...hasWorkerServices?{VERCEL_HAS_WORKER_SERVICES:"1"}:{},VERCEL_QUEUE_BASE_URL:baseUrl,VERCEL_QUEUE_TOKEN:DEV_RESOURCE_TOKEN,VERCEL_REGION:"dev1"}}var devCommand={name:"dev",aliases:["develop"],description:`Starts the \`${packageName} dev\` server.`,arguments:[{name:"dir",required:!1}],options:[{name:"listen",description:"Specify a URI endpoint on which to listen [0.0.0.0:3000]",argument:"URI",shorthand:"l",type:String,deprecated:!1},{name:"local",shorthand:"L",type:Boolean,deprecated:!1,description:"Start the dev server without linking to a Vercel project"},{name:"queue-port",description:`Specify the local Vercel Queues server port [${DEV_QUEUE_DEFAULT_PORT}]`,argument:"PORT",shorthand:null,type:String,deprecated:!1},{name:"runtime-cache-port",description:`Specify the local Runtime Cache server port [${DEV_RUNTIME_CACHE_DEFAULT_PORT}]`,argument:"PORT",shorthand:null,type:String,deprecated:!1},yesOption,{name:"port",shorthand:"p",type:String,deprecated:!0},confirmOption,projectOption],examples:[{name:`Start the \`${packageName} dev\` server on port 8080`,value:`${packageName} dev --listen 8080`},{name:"Make the `vercel dev` server bind to localhost on port 5000",value:`${packageName} dev --listen 127.0.0.1:5000 `},{name:"Pin local resource server ports",value:`${packageName} dev --queue-port 5782 --runtime-cache-port 5783`}]};export{DEV_QUEUE_API_PREFIX,DEV_QUEUE_PROXY_PREFIX,DEV_QUEUE_DEFAULT_PORT,DEV_RUNTIME_CACHE_DEFAULT_PORT,DEV_RESOURCE_TOKEN,isValidDevResourceHost,listenOnDevResourcePort,getDevQueueEnv,devCommand};
@@ -1,10 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{getGlobalFlagsFromArgs,stripSensitiveAuthArgs,suggestionFlagTakesSeparateValue}from"./chunk-JAJW3P42.js";import{teamCache}from"./chunk-VOZEB6PD.js";import{LinkRequiredError,ProjectNotFound,isAPIError}from"./chunk-LKI6FRNM.js";import{getCommandName,getCommandNamePlain,packageName}from"./chunk-FI772UVH.js";import{require_dist}from"./chunk-QGIQK47P.js";import{require_cli_config}from"./chunk-BRK4OB4B.js";import{pkg_default}from"./chunk-AVSPFBLM.js";import{__toESM}from"./chunk-6L236MNA.js";function quoteArg(value){return/^[A-Za-z0-9_./@:-]+$/.test(value)?value:`'${value.replace(/'/g,"'\\''")}'`}import{randomUUID}from"node:crypto";function agentErrorMetadata(client){return client.isAgent?{cliVersion:pkg_default.version,invocationId:client.telemetryEventStore?.currentInvocationId}:{}}function agentErrorCategory(reason){return/^(forbidden|permission_denied|scope_not_accessible)$/i.test(reason)?"permission":/^(payment_required|plan_upgrade_required)$/i.test(reason)?"billing":/^(not_authorized|login_required)$/i.test(reason)?"authentication":/^(rate_limited|too_many_requests)$/i.test(reason)?"rate_limit":/^(invalid_arguments|unknown_command|ARG_UNKNOWN_OPTION)$/i.test(reason)?"usage":/^(link_required|project_not_found|not_found)$/i.test(reason)?"project_context":"other"}function trackAgentError(client,error){!client.isAgent||!client.telemetryEventStore||client.telemetryEventStore.add({id:randomUUID(),eventTime:Date.now(),key:"agent_error",value:JSON.stringify({invocationId:client.telemetryEventStore.currentInvocationId,category:agentErrorCategory(error.reason),hasRecovery:!!error.hint,retryable:error.retryable,userActionRequired:error.userActionRequired})})}function trackAgentCommandOutcome(client,exitCode){if(!client.isAgent||!client.telemetryEventStore)return;let args=client.argv.slice(2),separator=args.indexOf("--"),help=args.slice(0,separator<0?args.length:separator).some(arg=>arg==="--help"||arg==="-h");client.telemetryEventStore.add({id:randomUUID(),eventTime:Date.now(),key:"agent_command_outcome",value:JSON.stringify({invocationId:client.telemetryEventStore.currentInvocationId,exitCode,outcome:help&&(exitCode===0||exitCode===2)?"help":exitCode===0?"success":"failure"})})}var import_error_utils=__toESM(require_dist(),1);var OBSERVABILITY_PLUS_PURCHASE_COMMAND="buy addon observability-plus";function mentionsObservabilityPlus(message){return/observability\s+plus/i.test(message)}function observabilityPlusPurchaseHint(){return`Subscribe with ${getCommandName(OBSERVABILITY_PLUS_PURCHASE_COMMAND)}.`}function observabilityPlusPurchaseFix(){return{command:OBSERVABILITY_PLUS_PURCHASE_COMMAND,hint:observabilityPlusPurchaseHint(),when:"a person has approved buying the add-on"}}function observabilityPlusRecovery(message){if(mentionsObservabilityPlus(message))return/(?:disabled|switched off|re-enable)/i.test(message)?{hint:"Observability Plus is disabled. Ask a team owner to enable it for the intended team or project, then retry. A new subscription may not be needed."}:/(?:quota|usage limit|query limit)/i.test(message)?{hint:"The usage limit was reached. Ask a team owner to review the limit before retrying."}:{...observabilityPlusPurchaseFix(),hint:`Check whether Observability Plus is disabled for this project or the team needs a subscription. Enable it if already subscribed. Otherwise, ${observabilityPlusPurchaseHint()}`,when:"the team has no subscription and a person has approved buying the add-on"}}var import_cli_config=__toESM(require_cli_config(),1);function errorContext(client){let teamId=client?.config?.currentTeam;return teamId?client?.teams?.find(team=>team.id===teamId||team.slug===teamId)?.slug??teamCache.get(teamId)?.slug:client?.user?.username||client?.user?.email}function getErrorRecovery(error,client){let reason=error.reason?.toLowerCase(),scope=errorContext(client);if(error.status===403||["forbidden","permission_denied","scope_not_accessible"].includes(reason??""))return{hint:`Check that the selected team is correct${scope?` (${scope})`:""}. If it is, ask a team owner to grant the required access. Retry only after the team or access changes.`,retryable:!1,userActionRequired:!0,...scope&&{scope},...error.action&&{action:error.action},...error.resource&&{resource:error.resource}};if(error.status===401||error.code==="NOT_AUTHORIZED"||reason==="not_authorized"||reason==="login_required"){let tokenSource=client?.authConfig.tokenSource??error.tokenSource;if(tokenSource)return{hint:tokenSource==="env"?"Ask the user to replace VERCEL_TOKEN, or unset it to use a saved login. Running login does not replace VERCEL_TOKEN. Retry only after the credentials change.":"Ask the user to replace the token supplied via --token. Retry only after the credentials change.",credentialSource:tokenSource,retryable:!1,userActionRequired:!0};let globalConfig=client?.getGlobalPathConfig();return{hint:"Ask the user to complete login in an interactive terminal, or provide credentials through VERCEL_TOKEN. Retry only after authentication completes.",credentialSource:"saved_login",retryable:!1,userActionRequired:!0,next:[{command:getCommandNamePlain("login")+(globalConfig&&globalConfig!==(0,import_cli_config.getGlobalPathConfig)()?` --global-config ${quoteArg(globalConfig)}`:""),when:"The user runs this in an interactive terminal to complete browser authentication"}]}}if(error.status===402||["payment_required","plan_upgrade_required"].includes(reason??"")){let message=error.serverMessage??error.message??"";return{hint:observabilityPlusRecovery(message)?.hint??(/(?:disabled|switched off|re-enable)/i.test(message)?"Enable the feature for the selected team or project, then retry.":/(?:overdue|payment method|unpaid|balance)/i.test(message)?"Ask a team owner to resolve the billing issue, then retry.":/(?:plan|subscription)/i.test(message)?"Ask a team owner to confirm the required plan or subscription before changing billing. Retry after access is enabled.":"Check the billing or feature requirement reported above with a team owner. Retry after that requirement is resolved."),retryable:!1,userActionRequired:!0,...scope&&{scope}}}if(error.status===429||reason==="rate_limited"){let wait=error.retryAfterMs;return{hint:typeof wait=="number"&&Number.isFinite(wait)&&wait>0?`Wait at least ${Math.ceil(wait/1e3)} seconds before trying again.`:wait==="never"?"This request cannot be retried with the current limit. Ask a team owner to review the limit.":"The request limit was reached. Wait before trying again; no retry time was provided.",retryable:wait!=="never",...typeof wait=="number"&&Number.isFinite(wait)&&wait>0&&{retryAfterMs:wait}}}return{}}function buildCommandWithYes(argv,pkgName=packageName){let args=stripSensitiveAuthArgs(argv.slice(2)),out=args.some(a=>a==="--yes"||a==="-y")?args:[...args,"--yes"];return`${pkgName} ${out.join(" ")}`.trim()}function redactEnvValueArgs(argv){let redacted=[...argv];for(let i=0;i<redacted.length;i++)redacted[i]==="--value"&&i+1<redacted.length?(redacted[i+1]='"<value>"',i++):redacted[i].startsWith("--value=")&&(redacted[i]='--value="<value>"');return redacted}var GLOBAL_FLAG_NAMES=new Set(["--cwd","--config","--yes","-y","--non-interactive","--scope","--team","-S","-T"]),GLOBAL_FLAG_SHORTHANDS={"-y":"--yes","-S":"--scope","-T":"--team"};function canonicalGlobalFlagName(name){return GLOBAL_FLAG_SHORTHANDS[name]??name}function getGlobalFlagsFromArgv(argv){let args=getGlobalFlagsFromArgs(argv.slice(2),{preserveConfig:!0,preserveYes:!0}),out=[];for(let i=0;i<args.length;i++){let arg=args[i],name=arg.startsWith("--")?arg.split("=")[0]:arg;GLOBAL_FLAG_NAMES.has(name)&&(out.push(arg),suggestionFlagTakesSeparateValue(name)&&!arg.includes("=")&&i+1<args.length&&!args[i+1].startsWith("-")&&(out.push(args[i+1]),i++))}return out}function omitGlobalFlagsFromArgs(args){let safeArgs=stripSensitiveAuthArgs(args),out=[];for(let i=0;i<safeArgs.length;i++){let arg=safeArgs[i],name=arg.startsWith("--")?arg.split("=")[0]:arg;if(GLOBAL_FLAG_NAMES.has(name)){suggestionFlagTakesSeparateValue(name)&&!arg.includes("=")&&i+1<safeArgs.length&&!safeArgs[i+1].startsWith("-")&&i++;continue}out.push(arg)}return out}function buildIntegrationCommandTailFromArgv(argv){let args=argv.slice(2),idx=args.indexOf("integration");return idx===-1?"integration":omitGlobalFlagsFromArgs(args.slice(idx)).join(" ")}function buildCommandWithGlobalFlags(argv,commandTemplate,pkgName=packageName,options){let preserved=options?.globalFlags==="all"?getGlobalFlagsFromArgs(argv.slice(2),{preserveProject:options.preserveProject}):getGlobalFlagsFromArgv(argv);if(options?.globalFlags!=="all"&&options?.preserveProject){let globalArgs=getGlobalFlagsFromArgs(argv.slice(2)),contextArgs=getGlobalFlagsFromArgs(argv.slice(2),{preserveProject:!0});preserved.push(...contextArgs.slice(globalArgs.length))}let exclude=new Set(commandTemplate.split(/\s+/).filter(token=>token.startsWith("-")).map(token=>canonicalGlobalFlagName(token.split("=")[0])));for(let flag of options?.excludeFlags??[])exclude.add(canonicalGlobalFlagName(flag));if(exclude.size){let out=[];for(let i=0;i<preserved.length;i++){let arg=preserved[i],name=arg.startsWith("--")?arg.split("=")[0]:arg;if(exclude.has(canonicalGlobalFlagName(name))){!arg.includes("=")&&i+1<preserved.length&&!preserved[i+1].startsWith("-")&&i++;continue}out.push(arg)}preserved=out}let base=`${pkgName} ${commandTemplate}`;return preserved.length===0?base:options?.prependGlobalFlags?`${pkgName} ${preserved.join(" ")} ${commandTemplate}`:`${base} ${preserved.join(" ")}`}function withGlobalFlags(client,commandTemplate,options={}){return buildCommandWithGlobalFlags(client.argv,commandTemplate,packageName,{globalFlags:"all",preserveProject:options.preserveProject})}function getPreservedArgsAfterEnvSubcommand(argv,subcommands,positionalCount){let args=stripSensitiveAuthArgs(argv.slice(2)),envIdx=args.findIndex((arg,index)=>arg==="env"&&subcommands.includes(args[index+1])),subcommandIdx=envIdx+1;if(envIdx===-1)return args;let preserved=[],positionals=0,optionsEnded=!1;for(let i=subcommandIdx+1;i<args.length;i++){let arg=args[i];if(arg==="--"&&!optionsEnded){optionsEnded=!0;continue}if(!optionsEnded&&arg.startsWith("-")){preserved.push(arg),!arg.includes("=")&&suggestionFlagTakesSeparateValue(arg)&&i+1<args.length&&!args[i+1].startsWith("-")&&preserved.push(args[++i]);continue}if(positionals<positionalCount){positionals++;continue}optionsEnded&&!preserved.includes("--")&&preserved.push("--"),preserved.push(arg)}return preserved}function omitPreservedFlagsAlreadyInTemplate(args,commandTemplate){let templateFlags=new Set(commandTemplate.split(/\s+/).filter(token=>token.startsWith("-")).map(token=>canonicalGlobalFlagName(token.split("=")[0]))),out=[];for(let i=0;i<args.length;i++){let arg=args[i],name=arg.startsWith("-")?arg.split("=")[0]:arg;if(!templateFlags.has(canonicalGlobalFlagName(name))){out.push(arg);continue}!arg.includes("=")&&suggestionFlagTakesSeparateValue(name)&&i+1<args.length&&!args[i+1].startsWith("-")&&i++}return out}function getPreservedArgsForEnvAdd(argv){return getPreservedArgsAfterEnvSubcommand(argv,["add"],3)}function buildEnvAddCommandWithPreservedArgs(argv,commandTemplate,pkgName=packageName){let preserved=omitPreservedFlagsAlreadyInTemplate(getPreservedArgsForEnvAdd(argv),commandTemplate),base=`${pkgName} ${commandTemplate}`;return preserved.length===0?base:`${base} ${preserved.map(quoteArg).join(" ")}`}function getPreservedArgsForEnvPull(argv){return getPreservedArgsAfterEnvSubcommand(argv,["pull"],1)}function getPreservedArgsForEnvRm(argv){return getPreservedArgsAfterEnvSubcommand(argv,["rm","remove"],3)}function buildEnvRmCommandWithPreservedArgs(argv,commandTemplate,pkgName=packageName){let preserved=omitPreservedFlagsAlreadyInTemplate(getPreservedArgsForEnvRm(argv),commandTemplate),base=`${pkgName} ${commandTemplate}`;return preserved.length===0?base:`${base} ${preserved.map(quoteArg).join(" ")}`}function getPreservedArgsForEnvUpdate(argv){return getPreservedArgsAfterEnvSubcommand(argv,["update"],3)}function buildEnvUpdateCommandWithPreservedArgs(argv,commandTemplate,pkgName=packageName){let preserved=omitPreservedFlagsAlreadyInTemplate(getPreservedArgsForEnvUpdate(argv),commandTemplate),base=`${pkgName} ${commandTemplate}`;return preserved.length===0?base:`${base} ${preserved.map(quoteArg).join(" ")}`}function buildCommandWithScope(argv,scopeSlug,pkgName=packageName){let args=stripSensitiveAuthArgs(argv.slice(2)),out=[];for(let i=0;i<args.length;i++){if(args[i]==="--scope"||args[i]==="--team"||args[i]==="-S"||args[i]==="-T"){i++;continue}args[i].startsWith("--scope=")||args[i].startsWith("--team=")||out.push(args[i])}return out.push("--scope",scopeSlug),`${pkgName} ${out.join(" ")}`}function enrichActionRequiredWithInvokingCommand(payload,argv){if(payload.reason!=="missing_scope"||!payload.choices?.length)return payload;let next=[],linkArgv=[...argv.slice(0,2),"link",...argv.slice(3)];for(let choice of payload.choices){let slug=choice.name;next.push({command:buildCommandWithScope(linkArgv,slug),when:"Link first (then run any command without --scope)"}),next.push({command:buildCommandWithScope(argv,slug),when:"Run this command with scope (no link)"})}return{...payload,next}}function outputActionRequired(client,payload,exitCode=1){if(!shouldEmitNonInteractiveCommandError(client))return;let enriched=enrichActionRequiredWithInvokingCommand(payload,client.argv);!enriched.hint&&enriched.next?.length&&(enriched.hint="Run one of the commands in next[] to complete without prompting."),client.stdout.write(`${JSON.stringify(enriched,null,2)}
8
- `),process.exit(exitCode)}function argvHasNonInteractive(argv){if(!argv?.length)return!1;for(let i=0;i<argv.length;i++){let a=argv[i];if(a==="--non-interactive")return argv[i+1]!=="false";if(a.startsWith("--non-interactive="))return a.slice(18)!=="false"}return!1}function shouldEmitNonInteractiveCommandError(client){return client.nonInteractive||argvHasNonInteractive(client.argv??[])}function outputAgentError(client,payload,exitCode=1){shouldEmitNonInteractiveCommandError(client)&&(writeAgentError(client,payload),process.exit(exitCode))}function writeAgentError(client,payload){let enriched={...getErrorRecovery(payload,client),...payload,...agentErrorMetadata(client)};trackAgentError(client,enriched),client.stdout.write(`${JSON.stringify(enriched,null,2)}
9
- `)}function outputAgentSuccess(client,payload,exitCode=0){shouldEmitNonInteractiveCommandError(client)&&(!payload.hint&&payload.next?.length&&(payload.hint="Follow up with one of the commands in next[]."),client.stdout.write(`${JSON.stringify(payload,null,2)}
10
- `),process.exit(exitCode))}function buildNextStepsForGlobalConfig(client){return[{command:buildCommandWithGlobalFlags(client.argv,"global-config list"),when:"List Global Config stores in the current team scope"},{command:buildCommandWithGlobalFlags(client.argv,"teams switch"),when:"Switch to the team that owns the Global Config"},{command:buildCommandWithGlobalFlags(client.argv,"whoami"),when:"Verify the current team or user scope"}]}var GLOBAL_CONFIG_NON_INTERACTIVE_HINT="Global Config commands use your current team scope. Pass --scope or run `vercel teams switch` if the store is missing.",LIST_ERROR_HINT="Project names are team-scoped. Use --scope when the project belongs to another team, or `list --all` to list deployments across all projects.";function buildNextStepsForList(client,projectName){return[projectName?{command:buildCommandWithGlobalFlags(client.argv,`project ls --filter ${projectName}`),when:"Search projects matching the attempted name to find the right one"}:{command:buildCommandWithGlobalFlags(client.argv,"project ls --filter <name>"),when:"Search projects by name substring to find the right one (replace <name>)"},{command:buildCommandWithGlobalFlags(client.argv,"list --all"),when:"List deployments across all projects in the current scope"},{command:buildCommandWithGlobalFlags(client.argv,"link"),when:"Re-link this directory to the correct Vercel project"}]}function buildNextStepsForProjectSubcommands(client,variant){let byName=variant==="access-groups"?{template:"project access-groups <name>",when:"List access groups by project name (replace <name>)"}:variant==="access-summary"?{template:"project access-summary <name>",when:"Show role counts by project name (replace <name>)"}:variant==="protection"?{template:"project protection <name>",when:"Show deployment protection by project name (replace <name>)"}:variant==="update"?{template:"project update <name> --framework <slug>",when:"Update a framework preset by project name (replace <name> and <slug>)"}:variant==="speed-insights"?{template:"project speed-insights <name>",when:"Enable Speed Insights by project name (replace <name>)"}:variant==="web-analytics"?{template:"project web-analytics <name>",when:"Enable Web Analytics by project name (replace <name>)"}:variant==="observability"?{template:"project observability enable <name>",when:"Enable Observability Plus by project name (replace <name>)"}:variant==="checks"?{template:"project checks add <name>",when:"Create a deployment check by project name (replace <name>)"}:variant==="inspect"?{template:"project inspect <name>",when:"Inspect a project by name (replace <name>)"}:variant==="resume"?{template:"project resume <name>",when:"Resume production traffic by project name (replace <name>)"}:{template:"project members <name>",when:"List members by project name (replace <name>)"};return[{command:buildCommandWithGlobalFlags(client.argv,"link"),when:"Re-link this directory to the correct Vercel project"},{command:buildCommandWithGlobalFlags(client.argv,byName.template),when:byName.when},{command:buildCommandWithGlobalFlags(client.argv,"project ls"),when:"List projects in the current team to pick a name"}]}var PROJECT_SUBCOMMAND_ERROR_HINT="If you use --cwd, ensure that folder is linked to the right project, or pass an explicit project name. Use --scope when the project belongs to another team.";function resolveNonInteractiveDefaults(client,variant){return variant==="global-config"?{next:buildNextStepsForGlobalConfig(client),hint:GLOBAL_CONFIG_NON_INTERACTIVE_HINT}:variant==="list"?{next:buildNextStepsForList(client),hint:LIST_ERROR_HINT}:{next:buildNextStepsForProjectSubcommands(client,variant),hint:PROJECT_SUBCOMMAND_ERROR_HINT}}function writeAgentErrorPayloadAndExit(client,payload,exitCode,variant){let defaults=["link_required","project_not_found","not_found"].includes(payload.reason)?resolveNonInteractiveDefaults(client,variant):{},out={...payload,next:payload.next??defaults.next,hint:payload.hint??defaults.hint};writeAgentError(client,out),process.exit(exitCode)}function isProjectNotFoundLike(err){return!!(err instanceof ProjectNotFound||(0,import_error_utils.isError)(err)&&"code"in err&&err.code==="PROJECT_NOT_FOUND")}function isLinkRequiredLike(err){return err instanceof LinkRequiredError}function normalizeApiErrorText(message){return message.replace(/\s*\(\d{3}\)\s*$/,"").trim()}function exitWithNonInteractiveError(client,err,exitCode=1,options={variant:"members"}){if(!shouldEmitNonInteractiveCommandError(client))return;let{variant}=options;if(isLinkRequiredLike(err)){if(variant==="global-config"){writeAgentErrorPayloadAndExit(client,{status:"error",reason:"link_required",message:err instanceof Error?err.message:String(err),next:buildNextStepsForGlobalConfig(client),hint:GLOBAL_CONFIG_NON_INTERACTIVE_HINT},exitCode,"global-config");return}writeAgentErrorPayloadAndExit(client,{status:"error",reason:"link_required",message:err instanceof Error?err.message:String(err)},exitCode,variant);return}if(isProjectNotFoundLike(err)){writeAgentErrorPayloadAndExit(client,{status:"error",reason:"project_not_found",message:err instanceof Error?err.message:String(err),...variant==="list"&&options.projectName?{next:buildNextStepsForList(client,options.projectName)}:{}},exitCode,variant);return}if(isAPIError(err)){let rawMessage=err.serverMessage||err.message,message=normalizeApiErrorText(rawMessage),reason=err.status===403?"forbidden":err.status===402?"payment_required":err.status===401?"not_authorized":err.status===404?variant==="global-config"?"not_found":"project_not_found":err.status===429?"rate_limited":"api_error";writeAgentErrorPayloadAndExit(client,{status:"error",reason,message,...getErrorRecovery(err,client),...err.action&&{action:err.action},...err.resource&&{resource:err.resource}},exitCode,variant)}writeAgentErrorPayloadAndExit(client,{status:"error",reason:"unexpected_error",message:err instanceof Error?err.message:String(err)},exitCode,variant)}function openUrlInBrowserCommand(url){return process.platform==="win32"?`start ${url}`:process.platform==="darwin"?`open '${url}'`:`xdg-open '${url}'`}export{quoteArg,mentionsObservabilityPlus,observabilityPlusPurchaseFix,observabilityPlusRecovery,getErrorRecovery,agentErrorMetadata,trackAgentError,trackAgentCommandOutcome,buildCommandWithYes,redactEnvValueArgs,omitGlobalFlagsFromArgs,buildIntegrationCommandTailFromArgv,buildCommandWithGlobalFlags,withGlobalFlags,getPreservedArgsForEnvAdd,buildEnvAddCommandWithPreservedArgs,getPreservedArgsForEnvPull,getPreservedArgsForEnvRm,buildEnvRmCommandWithPreservedArgs,getPreservedArgsForEnvUpdate,buildEnvUpdateCommandWithPreservedArgs,outputActionRequired,argvHasNonInteractive,shouldEmitNonInteractiveCommandError,outputAgentError,writeAgentError,outputAgentSuccess,exitWithNonInteractiveError,openUrlInBrowserCommand};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{formatOption,jsonOption}from"./chunk-JAJW3P42.js";import{packageName}from"./chunk-FI772UVH.js";var specUrlOption={name:"spec-url",shorthand:null,type:String,argument:"URL",deprecated:!1,description:"Fetch endpoints from a custom OpenAPI spec URL instead of the public Vercel spec"},listSubcommand={name:"list",aliases:["ls"],description:"List all available API endpoints",arguments:[],options:[formatOption,jsonOption,specUrlOption,{name:"refresh",shorthand:null,type:Boolean,deprecated:!1,description:"Force refresh the cached OpenAPI spec"}],examples:[{name:"List all endpoints in table format",value:`${packageName} api ls`},{name:"List all endpoints as JSON",value:`${packageName} api ls --json`},{name:"List endpoints from a custom OpenAPI spec",value:`${packageName} api ls --spec-url https://openapi-internal.vercel.sh --refresh`}]},apiCommand={name:"api",aliases:[],description:"Make authenticated HTTP requests to the Vercel API",arguments:[{name:"endpoint",required:!1}],subcommands:[listSubcommand],options:[{name:"method",shorthand:"X",type:String,argument:"METHOD",deprecated:!1,description:"HTTP method (GET, POST, PUT, PATCH, DELETE). Defaults to GET, or POST if body is provided"},{name:"field",shorthand:"F",type:[String],argument:"KEY=VALUE",deprecated:!1,description:"Add a typed parameter (numbers, booleans parsed). Use @file for file contents"},{name:"raw-field",shorthand:"f",type:[String],argument:"KEY=VALUE",deprecated:!1,description:"Add a string option (no type parsing)"},{name:"header",shorthand:"H",type:[String],argument:"KEY:VALUE",deprecated:!1,description:"Add a custom HTTP header"},{name:"input",shorthand:null,type:String,argument:"FILE",deprecated:!1,description:"Read request body from file (use - for stdin)"},{name:"paginate",shorthand:null,type:Boolean,deprecated:!1,description:"Fetch all pages of results"},{name:"include",shorthand:"i",type:Boolean,deprecated:!1,description:"Include response headers in output"},{name:"silent",shorthand:null,type:Boolean,deprecated:!1,description:"Suppress response output"},{name:"verbose",shorthand:null,type:Boolean,deprecated:!1,description:"Show debug information including full request/response"},{name:"raw",shorthand:null,type:Boolean,deprecated:!1,description:"Output raw JSON without pretty-printing"},{name:"refresh",shorthand:null,type:Boolean,deprecated:!1,description:"Force refresh the cached OpenAPI spec"},specUrlOption,{name:"generate",shorthand:null,type:String,argument:"FORMAT",deprecated:!1,description:"Generate output instead of executing (e.g., --generate=curl)"},{name:"dangerously-skip-permissions",shorthand:null,type:Boolean,deprecated:!1,description:"Skip confirmation prompts for DELETE operations (use with caution)"}],examples:[{name:"Get current user information",value:`${packageName} api /v2/user`},{name:"List projects with team scope",value:`${packageName} api /v9/projects --scope my-team`},{name:"Create a new project",value:`${packageName} api /v10/projects -X POST -F name=my-project`},{name:"Delete a deployment",value:`${packageName} api /v13/deployments/dpl_abc123 -X DELETE`},{name:"Paginate through all deployments",value:`${packageName} api /v6/deployments --paginate`},{name:"Post JSON from file",value:`${packageName} api /v10/projects -X POST --input config.json`},{name:"Add custom header",value:`${packageName} api /v2/user -H "X-Custom-Header: value"`},{name:"Interactive mode (select endpoint)",value:`${packageName} api`},{name:"Interactive mode with a custom OpenAPI spec",value:`${packageName} api --spec-url https://openapi-internal.vercel.sh --refresh`}]};export{listSubcommand,apiCommand};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{parseArguments}from"./chunk-T4AZ3U7O.js";import{VERCEL_DIR}from"./chunk-64NJHVA3.js";import{ConflictingConfigFiles,DeprecatedNowJson,InvalidLocalConfig}from"./chunk-LKI6FRNM.js";import path from"path";import{existsSync}from"fs";function getLocalPathConfig(prefix){let customPath=parseArguments(process.argv.slice(2),{},{permissive:!0}).flags["--local-config"];if(customPath){if(typeof customPath!="string")throw new InvalidLocalConfig(customPath);return path.resolve(process.cwd(),customPath)}let vercelConfigPath=path.join(prefix,"vercel.json"),vercelTomlPath=path.join(prefix,"vercel.toml"),nowConfigPath=path.join(prefix,"now.json"),vercelConfigExists=existsSync(vercelConfigPath),vercelTomlExists=existsSync(vercelTomlPath),nowConfigExists=existsSync(nowConfigPath),foundConfigs=[];if(vercelConfigExists&&foundConfigs.push(vercelConfigPath),vercelTomlExists&&foundConfigs.push(vercelTomlPath),nowConfigExists)throw new DeprecatedNowJson(nowConfigPath);if(foundConfigs.length>1)throw new ConflictingConfigFiles(foundConfigs);let compiledConfigPath=path.join(prefix,VERCEL_DIR,"vercel.json");return existsSync(compiledConfigPath)?compiledConfigPath:vercelConfigPath}export{getLocalPathConfig};
@@ -1,130 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{require_source}from"./chunk-U7KCDTCH.js";import{__toESM}from"./chunk-6L236MNA.js";var import_chalk=__toESM(require_source(),1),packageName="vercel",logo="\u25B2",help=()=>`
8
- ${import_chalk.default.bold(`${logo} ${packageName}`)} [options] <command | path>
9
-
10
- ${import_chalk.default.dim("For deploy command help, run `vercel deploy --help`")}
11
-
12
- ${import_chalk.default.dim("Commands:")}
13
-
14
- ${import_chalk.default.dim("Basic")}
15
-
16
- deploy [path] Performs a deployment ${import_chalk.default.bold("(default)")}
17
- build Build the project locally into './vercel/output'
18
- cache [cmd] Manages cache for your current Project
19
- dev Start a local development server
20
- env Manages the Environment Variables for your current Project
21
- git Manage Git provider repository for your current Project
22
- help [cmd] Displays complete help for [cmd]
23
- init [example] Initialize an example project
24
- inspect [id] Displays information related to a deployment
25
- i | install [name] Install an integration from the Marketplace
26
- integration [cmd] Manages your Marketplace integrations
27
- ir | integration-resource [cmd] Manages your Marketplace integration resources
28
- link [path] Link local directory to a Vercel Project
29
- ls | list [app] Lists deployments
30
- login [email] Logs into your account or creates a new one
31
- logout Logs out of your account
32
- open Opens the current project in the Vercel Dashboard
33
- promote [url|id] Promote an existing deployment to current
34
- pull [path] Pull your Project Settings from the cloud
35
- redeploy [url|id] Rebuild and deploy a previous deployment.
36
- rollback [url|id] Quickly revert back to a previous deployment
37
- switch [scope] Switches between different scopes
38
-
39
- ${import_chalk.default.dim("Advanced")}
40
-
41
- activity List user activity events
42
- agent [init] Generate AGENTS.md with Vercel best practices
43
- ai-gateway [cmd] Manage AI Gateway resources
44
- agent-runs [cmd] Inspect Agent Runs observability data
45
- alerts List alerts for a project or team
46
- alias [cmd] Manages your domain aliases
47
- api [endpoint] Make authenticated HTTP requests to the Vercel API [beta]
48
- bisect Use binary search to find the deployment that introduced a bug
49
- blob [cmd] Manages your Blob stores and files
50
- budgets [cmd] Spend Management for on-demand usage [beta]
51
- buy [cmd] Purchase Vercel products for your team
52
- certs [cmd] Manages your SSL certificates
53
- changelog [cmd] Show the latest Vercel product updates
54
- connect [cmd] Manage connectors
55
- contract Show contract information for billing periods
56
- cron | crons [cmd] Manage cron jobs for a project [beta]
57
- curl [url|path] cURL requests with automatic deployment protection bypass [beta]
58
- deploy-hooks [cmd] Manage deploy hooks for Git-triggered builds
59
- dns [name] Manages your DNS records
60
- domains [name] Manages your domain names
61
- firewall [cmd] Manages Vercel Firewall configuration and custom rules
62
- flags [cmd] Manage feature flags for a Vercel project
63
- global-config [cmd] Manage Global Config stores
64
- httpstat path Visualize HTTP timing statistics for deployments
65
- kms [cmd] Manage KMS issuers, signing keys, and project grants [beta]
66
- logs [url] Displays the logs for a deployment
67
- metrics <metric> Queries observability metrics for your project or team
68
- mcp Set up MCP agents and configuration
69
- microfrontends Manages your microfrontends
70
- projects Manages your Projects
71
- redirects [cmd] Manages redirects for your current Project
72
- rm | remove [id] Removes a deployment
73
- routes [cmd] Manages routing rules for your current Project
74
- rr | rolling-release [cmd] Manage rolling releases for gradual traffic shifting
75
- sandbox Interact with Vercel Sandbox
76
- schedules [cmd] Manage schedules for the current project [beta]
77
- setup Set up the Vercel plugin and AI Gateway for coding agents
78
- skills [query] Discover agent skills relevant to your project
79
- storage [cmd] Connect and manage storage resources for your Projects
80
- target [cmd] Manage custom environments for your Project
81
- teams Manages your teams
82
- telemetry [cmd] Enable or disable telemetry collection
83
- tokens [cmd] Manage your personal Vercel authentication tokens
84
- traces [cmd] Fetch and capture traces for your project's deployment
85
- upgrade Upgrade the Vercel CLI to the latest version
86
- usage Show billing usage for the current billing period
87
- vcr [cmd] Manages your Container Registry repositories and images
88
- webhooks [cmd] Manages webhooks [beta]
89
- whoami Shows the username of the currently logged in user
90
-
91
- ${import_chalk.default.dim("Global Options:")}
92
-
93
- -h, --help Output usage information
94
- -v, --version Output the version number
95
- --changelog Show the 5 latest Vercel product updates
96
- --cwd Current working directory
97
- -A ${import_chalk.default.bold.underline("FILE")}, --local-config=${import_chalk.default.bold.underline("FILE")} Path to the local \`vercel.json\` file
98
- -Q ${import_chalk.default.bold.underline("DIR")}, --global-config=${import_chalk.default.bold.underline("DIR")} Path to the global \`.vercel\` directory
99
- -d, --debug Debug mode [off]
100
- --no-color No color mode [off]
101
- --non-interactive Run without interactive prompts (default when agent detected)
102
- -S, --scope Set a custom scope
103
- -t ${import_chalk.default.underline("TOKEN")}, --token=${import_chalk.default.underline("TOKEN")} Login token
104
-
105
- ${import_chalk.default.dim("Examples:")}
106
-
107
- ${import_chalk.default.gray("\u2013")} Deploy the current directory
108
-
109
- ${import_chalk.default.cyan(`$ ${packageName}`)}
110
-
111
- ${import_chalk.default.gray("\u2013")} Deploy a custom path
112
-
113
- ${import_chalk.default.cyan(`$ ${packageName} /usr/src/project`)}
114
-
115
- ${import_chalk.default.gray("\u2013")} Deploy with Environment Variables
116
-
117
- ${import_chalk.default.cyan(`$ ${packageName} -e NODE_ENV=production`)}
118
-
119
- ${import_chalk.default.gray("\u2013")} Show the usage information for the sub command ${import_chalk.default.dim("`list`")}
120
-
121
- ${import_chalk.default.cyan(`$ ${packageName} help list`)}
122
-
123
- ${import_chalk.default.gray("\u2013")} Show the 5 latest Vercel product updates
124
-
125
- ${import_chalk.default.cyan(`$ ${packageName} --changelog`)}
126
-
127
- ${import_chalk.default.gray("\u2013")} Search Vercel product updates
128
-
129
- ${import_chalk.default.cyan(`$ ${packageName} changelog search "AI SDK"`)}
130
- `;export{help};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- var AGENT_STATUS={ERROR:"error",ACTION_REQUIRED:"action_required",OK:"ok"},AGENT_REASON={MISSING_ARGUMENTS:"missing_arguments",INVALID_ARGUMENTS:"invalid_arguments",CONFIRMATION_REQUIRED:"confirmation_required",INTERACTIVE_CONFIRMATION_REQUIRED:"interactive_confirmation_required",LOGIN_REQUIRED:"login_required",PROJECT_SETTINGS_REQUIRED:"project_settings_required",NOT_LINKED:"not_linked",NOT_FOUND:"not_found",PROJECT_NOT_FOUND:"project_not_found",MISSING_SCOPE:"missing_scope",SCOPE_NOT_ACCESSIBLE:"scope_not_accessible",API_ERROR:"api_error",RATE_LIMITED:"rate_limited",SEGMENT_IN_USE:"segment_in_use",ENTITY_IN_USE:"entity_in_use",MISSING_REQUIREMENTS:"missing_requirements",MISSING_NAME:"missing_name",MISSING_VALUE:"missing_value",MISSING_ENVIRONMENT:"missing_environment",ENV_NOT_FOUND:"env_not_found",MULTIPLE_ENVS:"multiple_envs",ENV_FILE_EXISTS:"env_file_exists",GIT_BRANCH_REQUIRED:"git_branch_required",ENV_KEY_SENSITIVE:"env_key_sensitive",AMBIGUOUS_ROUTE:"ambiguous_route",ROUTE_CREATE_FAILED:"route_create_failed",ROUTE_GENERATION_FAILED:"route_generation_failed",DOMAIN_NOT_FOUND:"domain_not_found",DNS_RECORD_NOT_FOUND:"dns_record_not_found",INCOMPLETE_RECORD:"incomplete_record",PERMISSION_DENIED:"permission_denied",INVALID_PORT:"invalid_port",INVALID_DNS_TYPE:"invalid_dns_type",DNS_ADD_FAILED:"dns_add_failed",INVALID_DOMAIN:"invalid_domain",CONFIGURED_CORRECTLY:"configured_correctly",VERIFICATION_NEEDED:"verification_needed",INVALID_CONFIGURATION:"invalid_configuration",DNS_CHANGE_REQUIRED:"dns_change_required",DNS_CHANGE_RECOMMENDED:"dns_change_recommended",DNSSEC_NEEDS_TO_BE_DISABLED:"dnssec_needs_to_be_disabled",PROJECT_ATTACHMENT_RECOMMENDED:"project_attachment_recommended",PROJECT_DOMAIN_MISSING:"project_domain_missing",INTEGRATION_TERMS_ACCEPTANCE_REQUIRED:"integration_terms_acceptance_required",HAS_RESOURCES:"has_resources",INTEGRATION_SANDBOX_CLAIM_REQUIRED:"integration_sandbox_claim_required",CLASSIC_TOKEN_REQUIRED:"classic_token_required",TOKEN_USER_SCOPE_REQUIRED:"token_user_scope_required",MISSING_URL:"missing_url",MISSING_EVENTS:"missing_events",INVALID_URL:"invalid_url",INVALID_EVENT:"invalid_event",INVALID_BUDGET:"invalid_budget",INVALID_REFRESH_PERIOD:"invalid_refresh_period",INVALID_EXPIRATION:"invalid_expiration",INVALID_ALERT_THRESHOLDS:"invalid_alert_thresholds",REQUIRES_CONSENT:"requires_consent",MISSING_ISSUER_ID:"missing_issuer_id",MISSING_KEY:"missing_key",MISSING_KEY_ID:"missing_key_id",MISSING_PROJECT:"missing_project",ISSUER_NOT_FOUND:"issuer_not_found",ISSUER_MANAGED:"issuer_managed",ISSUER_REQUIRES_IMPORTED_KEY:"issuer_requires_imported_key",ISSUER_REQUIRES_GENERATED_KEY:"issuer_requires_generated_key",KEY_NOT_REVOKING:"key_not_revoking",NO_CHANGES_REQUESTED:"no_changes_requested",SCHEDULES_NOT_ENABLED:"schedules_not_enabled",REDIRECT_NOT_FOUND:"redirect_not_found",VERSION_NOT_FOUND:"version_not_found",VERSION_ALREADY_LIVE:"version_already_live",VERSION_IS_STAGING:"version_is_staging",PLAN_UPGRADE_REQUIRED:"plan_upgrade_required",NOT_TEAM_MEMBER:"not_team_member",INVALID_ROLE_COMBINATION:"invalid_role_combination"},AGENT_ACTION={MISSING_ARGUMENTS:"missing_arguments",CONFIRMATION_REQUIRED:"confirmation_required",LOGIN_REQUIRED:"login_required"};export{AGENT_STATUS,AGENT_REASON,AGENT_ACTION};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{require_dist,require_dist2}from"./chunk-Z7PBDQNR.js";import{require_types}from"./chunk-GHM7V3GG.js";import{require_build_utils}from"./chunk-EWWFNMPZ.js";import{__commonJS,__toESM}from"./chunk-6L236MNA.js";var require_dist3=__commonJS({"../../internals/service-topology/dist/index.js"(exports,module){"use strict";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod),src_exports={};__export(src_exports,{INTERNAL_SERVICE_PREFIX:()=>import_fs_detectors2.INTERNAL_SERVICE_PREFIX,autoDetectServices:()=>import_fs_detectors2.autoDetectServices,detectServices:()=>import_fs_detectors2.detectServices,generateServiceRewrites:()=>import_fs_detectors2.generateServiceRewrites,generateServicesRoutes:()=>import_fs_detectors2.generateServicesRoutes,getInternalServiceCronPath:()=>import_fs_detectors2.getInternalServiceCronPath,getInternalServiceCronPathPrefix:()=>import_fs_detectors2.getInternalServiceCronPathPrefix,getInternalServiceFunctionPath:()=>import_fs_detectors2.getInternalServiceFunctionPath,getInternalServiceWorkerPath:()=>import_fs_detectors2.getInternalServiceWorkerPath,getInternalServiceWorkerPathPrefix:()=>import_fs_detectors2.getInternalServiceWorkerPathPrefix,hasLegacyServicesConfig:()=>import_fs_detectors2.hasLegacyServicesConfig,isExperimentalService:()=>import_fs_detectors2.isExperimentalService,isExperimentalServiceV2:()=>import_fs_detectors2.isExperimentalServiceV2,isRouteOwningBuilder:()=>import_fs_detectors2.isRouteOwningBuilder,isStaticBuild:()=>import_fs_detectors2.isStaticBuild,migrateExperimentalServices:()=>import_fs_detectors2.migrateExperimentalServices,planExperimentalServicesMigration:()=>import_fs_detectors2.planExperimentalServicesMigration,resolveAllConfiguredServices:()=>import_fs_detectors2.resolveAllConfiguredServices,resolveAllConfiguredServicesV2:()=>import_fs_detectors2.resolveAllConfiguredServicesV2,resolveConfiguredServiceV2:()=>import_fs_detectors2.resolveConfiguredServiceV2,validateServiceConfigV2:()=>import_fs_detectors2.validateServiceConfigV2});module.exports=__toCommonJS(src_exports);var import_fs_detectors2=require_dist2()}});var import_routing_utils=__toESM(require_dist(),1),import_build_utils=__toESM(require_build_utils(),1),import_types=__toESM(require_types(),1),import_fs_detectors=__toESM(require_dist2(),1);import{getConfigValidator}from"./config-validator.mjs";var imagesSchema={type:"object",additionalProperties:!1,required:["sizes"],properties:{contentDispositionType:{enum:["inline","attachment"]},contentSecurityPolicy:{type:"string",minLength:1,maxLength:256},dangerouslyAllowSVG:{type:"boolean"},domains:{type:"array",minItems:0,maxItems:50,items:{type:"string",minLength:1,maxLength:256}},formats:{type:"array",minItems:1,maxItems:4,items:{enum:["image/avif","image/webp","image/jpeg","image/png"]}},localPatterns:{type:"array",minItems:0,maxItems:25,items:{type:"object",additionalProperties:!1,properties:{pathname:{type:"string",minLength:1,maxLength:256},search:{type:"string",minLength:0,maxLength:256}}}},minimumCacheTTL:{type:"integer",minimum:1,maximum:31536e4},qualities:{type:"array",minItems:1,maxItems:20,items:{type:"integer",minimum:1,maximum:100}},remotePatterns:{type:"array",minItems:0,maxItems:50,items:{type:"object",additionalProperties:!1,required:["hostname"],properties:{protocol:{enum:["http","https"]},hostname:{type:"string",minLength:1,maxLength:256},port:{type:"string",minLength:0,maxLength:5},pathname:{type:"string",minLength:1,maxLength:256},search:{type:"string",minLength:0,maxLength:256}}}},sizes:{type:"array",minItems:1,maxItems:50,items:{type:"number"}}}},cronsSchema={type:"array",minItems:0,items:{type:"object",additionalProperties:!1,required:["path","schedule"],properties:{path:{type:"string",minLength:1,maxLength:512,pattern:"^/.*"},schedule:{type:"string",minLength:9,maxLength:256}}}},schedulesSchema={type:"array",minItems:0,maxItems:100,items:{type:"object",additionalProperties:!1,required:["expression","target","name"],properties:{expression:{type:"object",additionalProperties:!1,required:["cron"],properties:{cron:{type:"string"},jitter:{type:"integer",minimum:1,maximum:15}}},target:{oneOf:[{type:"object",additionalProperties:!1,required:["function"],properties:{function:{type:"string",minLength:1}}},{type:"object",additionalProperties:!1,required:["topic"],properties:{topic:{type:"string",minLength:1,maxLength:256}}}]},name:{type:"string",minLength:1,maxLength:256},timezone:{type:"string",minLength:1,maxLength:50,description:"IANA timezone for cron evaluation. Defaults to UTC."},payload:{}}}},experimentalServicesMountSchema={oneOf:[{type:"string",minLength:1,maxLength:512},{type:"object",additionalProperties:!1,properties:{path:{type:"string",minLength:1,maxLength:512},subdomain:{type:"string",minLength:1,maxLength:63}},anyOf:[{required:["path"]},{required:["subdomain"]}]}]},staticExperimentalServiceScheduleSchema={type:"string",minLength:9,maxLength:256,not:{const:"<dynamic>"}},experimentalServiceScheduleSchema={oneOf:[{type:"string",minLength:9,maxLength:256},{type:"array",minItems:1,items:staticExperimentalServiceScheduleSchema}]},experimentalServiceQueueTopicSchema={type:"object",additionalProperties:!1,required:["topic"],properties:{topic:{type:"string",minLength:1,maxLength:256},retryAfterSeconds:{type:"integer",minimum:1,maximum:86400},initialDelaySeconds:{type:"integer",minimum:0,maximum:86400}}},experimentalServiceTopicsSchema={oneOf:[{type:"array",minItems:1,items:{type:"string",minLength:1,maxLength:256}},{type:"array",minItems:1,items:experimentalServiceQueueTopicSchema}]},envVarNamesSchema={pattern:"^[A-Za-z_][A-Za-z0-9_]*$",maxLength:256},getExperimentalServicesCommonProperties=()=>({entrypoint:{type:"string",minLength:1,maxLength:512},root:{type:"string",minLength:1,maxLength:512},workspace:{type:"string",minLength:1,maxLength:512},framework:{type:"string",minLength:1,maxLength:256},builder:{type:"string",minLength:1,maxLength:256},runtime:{type:"string",minLength:1,maxLength:256},buildCommand:{type:"string",minLength:1,maxLength:2048},installCommand:{type:"string",minLength:1,maxLength:2048},preDeployCommand:{type:"string",minLength:1,maxLength:2048},command:{oneOf:[{type:"string",minLength:1,maxLength:2048},{type:"array",minItems:1,items:{type:"string",minLength:1,maxLength:2048}}]},memory:{type:"integer",minimum:128,maximum:10240},maxDuration:(0,import_build_utils.getMaxDurationSchema)(),includeFiles:{oneOf:[{type:"string",minLength:1},{type:"array",items:{type:"string",minLength:1}}]},excludeFiles:{oneOf:[{type:"string",minLength:1},{type:"array",items:{type:"string",minLength:1}}]}}),experimentalServicesRoutableProperties={mount:experimentalServicesMountSchema,routePrefix:{type:"string",minLength:1,maxLength:512},subdomain:{type:"string",minLength:1,maxLength:63}},getExperimentalServicesServiceConfigSchema=()=>({oneOf:[{type:"object",additionalProperties:!1,properties:{...getExperimentalServicesCommonProperties(),...experimentalServicesRoutableProperties,type:{enum:["web"]}}},{type:"object",additionalProperties:!1,required:["type","trigger","schedule"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"job"},trigger:{const:"schedule"},schedule:experimentalServiceScheduleSchema}},{type:"object",additionalProperties:!1,required:["type","trigger","topics"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"job"},trigger:{const:"queue"},topics:experimentalServiceTopicsSchema,consumer:{type:"string",minLength:1,maxLength:256}}},{type:"object",additionalProperties:!1,required:["type","trigger","entrypoint"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"job"},trigger:{const:"workflow"}}},{type:"object",additionalProperties:!1,required:["type"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"worker"},topics:{type:"array",items:{type:"string",minLength:1,maxLength:256},minItems:1},consumer:{type:"string",minLength:1,maxLength:256}}},{type:"object",additionalProperties:!1,required:["type","schedule"],properties:{...getExperimentalServicesCommonProperties(),type:{const:"cron"},schedule:experimentalServiceScheduleSchema}}]}),getExperimentalServicesSchema=()=>({type:"object",propertyNames:{pattern:"^[a-zA-Z]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$",maxLength:64},additionalProperties:getExperimentalServicesServiceConfigSchema()}),experimentalServiceGroupsSchema={type:"object",propertyNames:{pattern:"^[a-zA-Z]([a-zA-Z0-9_-]*[a-zA-Z0-9])?$",maxLength:64},additionalProperties:{type:"array",items:{type:"string",minLength:1,maxLength:256}}},servicesPathSchema={type:"string",minLength:1,maxLength:512},servicesCommandSchema={type:"string",minLength:1,maxLength:2048},servicesServiceNamePattern="^[a-z]([a-z_-]*[a-z])?$",servicesBindingSchema={type:"object",additionalProperties:!1,required:["service","format","env"],properties:{type:{description:"Optional binding type marker. Currently the only supported type is `service`. When present this must be `service`.",const:"service"},service:{type:"string",minLength:1,maxLength:64,pattern:servicesServiceNamePattern},format:{const:"url"},env:{type:"string",...envVarNamesSchema}}},servicesBindingsSchema={type:"array",maxItems:100,items:servicesBindingSchema},getServicesServiceConfigSchema=()=>({type:"object",additionalProperties:!1,required:["root"],properties:{root:servicesPathSchema,framework:{type:"string",minLength:1,maxLength:256},runtime:{type:"string",minLength:1,maxLength:256},entrypoint:servicesPathSchema,command:{oneOf:[{type:"string"},{type:"array",items:{type:"string"}}]},installCommand:servicesCommandSchema,buildCommand:servicesCommandSchema,devCommand:servicesCommandSchema,ignoreCommand:servicesCommandSchema,outputDirectory:servicesPathSchema,bindings:servicesBindingsSchema,functions:(0,import_build_utils.getFunctionsSchema)(),headers:import_routing_utils.headersSchema,redirects:import_routing_utils.redirectsSchema,rewrites:import_routing_utils.rewritesSchema,routes:import_routing_utils.routesSchema,cleanUrls:import_routing_utils.cleanUrlsSchema,trailingSlash:import_routing_utils.trailingSlashSchema}}),getServicesSchema=()=>({type:"object",propertyNames:{pattern:servicesServiceNamePattern,maxLength:64},additionalProperties:getServicesServiceConfigSchema()}),proxySchema={type:"object",additionalProperties:!1,required:["entrypoint"],properties:{entrypoint:{type:"string",minLength:1},matcher:{oneOf:[{type:"string",minLength:1},{type:"array",minItems:1,items:{type:"string",minLength:1}}]}}};function buildVercelConfigSchema(){return{type:"object",additionalProperties:!0,properties:{builds:import_build_utils.buildsSchema,routes:import_routing_utils.routesSchema,cleanUrls:import_routing_utils.cleanUrlsSchema,headers:import_routing_utils.headersSchema,redirects:import_routing_utils.redirectsSchema,rewrites:import_routing_utils.rewritesSchema,trailingSlash:import_routing_utils.trailingSlashSchema,functions:(0,import_build_utils.getFunctionsSchema)(),images:imagesSchema,crons:cronsSchema,schedules:schedulesSchema,bunVersion:{type:"string"},proxy:proxySchema,experimentalServices:getExperimentalServicesSchema(),experimentalServiceGroups:experimentalServiceGroupsSchema,services:getServicesSchema(),experimentalServicesV2:getServicesSchema()}}}function validateConfig(config){let validate=getConfigValidator(buildVercelConfigSchema);if(!validate(config)&&validate.errors&&validate.errors[0]){let error=validate.errors[0],fileName=config[import_types.fileNameSymbol]||"vercel.json",niceError=(0,import_build_utils.getPrettyError)(error);return niceError.message=`Invalid ${fileName} - ${niceError.message}`,niceError}for(let[index,schedule]of(config.schedules??[]).entries())if(schedule.timezone!==void 0)try{if(!/^[A-Za-z][A-Za-z0-9_+/-]*$/.test(schedule.timezone))throw new RangeError("Expected a named timezone");new Intl.DateTimeFormat("en-US",{timeZone:schedule.timezone})}catch{return new import_build_utils.NowBuildError({code:"INVALID_SCHEDULE_TIMEZONE",message:`Invalid ${config[import_types.fileNameSymbol]||"vercel.json"} - \`schedules[${index}].timezone\` must be a valid IANA timezone, such as "America/New_York". Omit it to use UTC.`})}for(let[pattern,fn]of Object.entries(config.functions??{}))if(fn.affinity!==void 0)return new import_build_utils.NowBuildError({code:"FUNCTION_AFFINITY_REQUIRES_SERVICE",message:`Function affinity can only be configured under a service. Move functions[${JSON.stringify(pattern)}].affinity into the relevant service's functions configuration.`,link:"https://vercel.com/docs/concepts/projects/project-configuration#functions"});let functionMaps=[config.functions,...Object.values(config.services??{}).map(service=>service.functions),...Object.values(config.experimentalServicesV2??{}).map(service=>service.functions)];for(let functions of functionMaps)for(let[pattern,fn]of Object.entries(functions??{})){let regions=[...new Set(fn.regions)];if(fn.affinity?.mode==="strict"&&(regions.includes("all")||regions.length>1))return new import_build_utils.NowBuildError({code:"INVALID_FUNCTION_AFFINITY_REGIONS",message:`Function affinity mode "strict" requires at most one statically configured region. Update \`functions[${JSON.stringify(pattern)}].regions\` to contain a single region.`,link:"https://vercel.com/docs/concepts/projects/project-configuration#functions"})}if(config.proxy){let proxyError=(0,import_fs_detectors.validateProxyConfig)(config.proxy);if(proxyError)return new import_build_utils.NowBuildError({code:proxyError.code.toUpperCase(),message:proxyError.message})}if(config.functions&&config.builds)return new import_build_utils.NowBuildError({code:"FUNCTIONS_AND_BUILDS",message:"The `functions` property cannot be used in conjunction with the `builds` property. Please remove one of them.",link:"https://vercel.link/functions-and-builds"});if(config.proxy&&config.builds)return new import_build_utils.NowBuildError({code:"PROXY_AND_BUILDS",message:"The `proxy` property cannot be used with the `builds` property. Remove `builds` to use an explicit proxy entrypoint."});let hasExperimentalServices=!!config.experimentalServices;if(hasExperimentalServices&&config.builds)return new import_build_utils.NowBuildError({code:"EXPERIMENTAL_SERVICES_AND_BUILDS",message:"The `experimentalServices` property cannot be used in conjunction with the `builds` property. Please remove one of them."});if(hasExperimentalServices&&config.functions)return new import_build_utils.NowBuildError({code:"EXPERIMENTAL_SERVICES_AND_FUNCTIONS",message:"The `experimentalServices` property cannot be used in conjunction with the `functions` property. Please remove one of them."});if(config.experimentalServiceGroups&&!config.experimentalServices)return new import_build_utils.NowBuildError({code:"SERVICE_GROUPS_WITHOUT_SERVICES",message:"The `experimentalServiceGroups` property requires `experimentalServices` to be defined. Service groups reference services by name."});let hasServices=config.services!=null,hasExperimentalServicesV2=config.experimentalServicesV2!=null;if(hasServices&&hasExperimentalServicesV2)return new import_build_utils.NowBuildError({code:"SERVICES_AND_EXPERIMENTAL_SERVICES_V2",message:"The `services` property cannot be used in conjunction with its deprecated alias `experimentalServicesV2`. Please use only `services`."});let servicesConfig=config.services??config.experimentalServicesV2,servicesConfigKey=hasServices?"services":"experimentalServicesV2",servicesErrorCodePrefix=hasServices?"SERVICES":"EXPERIMENTAL_SERVICES_V2";if(servicesConfig&&hasExperimentalServices)return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_AND_EXPERIMENTAL_SERVICES`,message:`The \`${servicesConfigKey}\` property cannot be used in conjunction with the \`experimentalServices\` property. Please use only one services configuration.`});if(servicesConfig&&config.builds)return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_AND_BUILDS`,message:`The \`${servicesConfigKey}\` property cannot be used in conjunction with the \`builds\` property. Please remove one of them.`});if(servicesConfig){let ambiguousTopLevel=[];if(config.functions!=null&&ambiguousTopLevel.push("functions"),config.installCommand!=null&&ambiguousTopLevel.push("installCommand"),config.buildCommand!=null&&ambiguousTopLevel.push("buildCommand"),config.devCommand!=null&&ambiguousTopLevel.push("devCommand"),config.ignoreCommand!=null&&ambiguousTopLevel.push("ignoreCommand"),config.outputDirectory!=null&&ambiguousTopLevel.push("outputDirectory"),config.framework!=null&&ambiguousTopLevel.push("framework"),ambiguousTopLevel.length>0){let count=ambiguousTopLevel.length,fields=ambiguousTopLevel.map(field=>`\`${field}\``).join(", ");return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_AND_TOP_LEVEL_BUILD_SETTINGS`,message:`The top-level ${count>1?"properties":"property"} ${fields} cannot be used with \`${servicesConfigKey}\` because the owning service is ambiguous. Move ${count>1?"them":"it"} under the relevant service in \`${servicesConfigKey}\`.`})}}if(servicesConfig){let serviceNames=new Set(Object.keys(servicesConfig));for(let[serviceName,serviceConfig]of Object.entries(servicesConfig))for(let binding of serviceConfig.bindings??[])if(!serviceNames.has(binding.service))return new import_build_utils.NowBuildError({code:`${servicesErrorCodePrefix}_BINDING_UNKNOWN_SERVICE`,message:`Service "${serviceName}" declares a binding to unknown service "${binding.service}". Add "${binding.service}" to \`${servicesConfigKey}\` or fix the binding.`})}return null}export{require_dist3 as require_dist,validateConfig};
@@ -1,29 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{buildCommandWithGlobalFlags,quoteArg}from"./chunk-BX5KDMLT.js";import{output_manager_default}from"./chunk-EWWFNMPZ.js";import{require_source}from"./chunk-U7KCDTCH.js";import{__toESM}from"./chunk-6L236MNA.js";var import_chalk=__toESM(require_source(),1);function formatProjectScope(scope){return scope.type==="all"?"all projects":`${scope.projectName} (${scope.projectId})`}function formatNotificationExpanded(notification,index){if(notification.type==="slack")return[` ${index+1}. ${import_chalk.default.bold("Slack")} ${import_chalk.default.cyan(`#${notification.channelName}`)}`,` ${import_chalk.default.dim("Project scope:")} ${formatProjectScope(notification.projectScope)}`,` ${import_chalk.default.dim("Channel ID:")} ${notification.channelId}`,` ${import_chalk.default.dim("Slack installation ID:")} ${notification.configId}`].join(`
8
- `);let{webhook}=notification;return[` ${index+1}. ${import_chalk.default.bold("Webhook")}`,` ${import_chalk.default.dim("Webhook ID:")} ${webhook.id}`,` ${import_chalk.default.dim("URL:")} ${"url"in webhook?webhook.url:"Details unavailable"}`].join(`
9
- `)}function formatRuleExpanded(ruleId,notifications){let lines=[` ${import_chalk.default.bold(ruleId)}`];return notifications.length===0?lines.push(` ${import_chalk.default.dim("No notification destinations")}`):lines.push(notifications.map((notification,index)=>formatNotificationExpanded(notification,index)).join(`
10
-
11
- `)),lines.join(`
12
- `)}function printRuleNotifications(ruleId,notifications){if(notifications.length===0){output_manager_default.log(`No notification destinations are linked to alert rule ${ruleId}.`);return}output_manager_default.print(`
13
- ${import_chalk.default.bold("Notification destinations")} for ${import_chalk.default.cyan(ruleId)}
14
-
15
- ${notifications.map(formatNotificationExpanded).join(`
16
-
17
- `)}
18
- `)}function printRulesNotifications(result){let ruleEntries=Object.entries(result.notifications).filter(([,notifications])=>notifications.length>0),rendered=ruleEntries.length>0?`
19
- ${import_chalk.default.bold("Rule notification destinations")}
20
-
21
- ${ruleEntries.map(([ruleId,notifications])=>formatRuleExpanded(ruleId,notifications)).join(`
22
-
23
- `)}
24
- `:`
25
- No linked notification destinations found.
26
- `;output_manager_default.print(rendered)}function formatTarget(target){return target.type==="webhook"?`webhook ${target.webhookId}`:`Slack channel ${target.channelId}${target.configId?` (installation ${target.configId})`:""}`}function buildRuleNotificationsInspectCommand(argv,ruleId){return buildCommandWithGlobalFlags(argv,`alerts rules notifications ${quoteArg(ruleId)}`)}function printRuleNotificationMutationReceipt(action,ruleId,target,argv){let preposition=action==="Linked"?"to":"from",inspectCommand=buildRuleNotificationsInspectCommand(argv,ruleId);output_manager_default.print(`
27
- ${import_chalk.default.green("\u2713")} ${action} ${formatTarget(target)} ${preposition} alert rule ${import_chalk.default.cyan(ruleId)}
28
- ${import_chalk.default.dim(`Inspect: ${inspectCommand}`)}
29
- `)}export{printRuleNotifications,printRulesNotifications,buildRuleNotificationsInspectCommand,printRuleNotificationMutationReceipt};
@@ -1,7 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module';
2
- import { fileURLToPath as __fileURLToPath } from 'node:url';
3
- import { dirname as __dirname_ } from 'node:path';
4
- const require = __createRequire(import.meta.url);
5
- const __filename = __fileURLToPath(import.meta.url);
6
- const __dirname = __dirname_(__filename);
7
- import{require_source}from"./chunk-U7KCDTCH.js";import{__toESM}from"./chunk-6L236MNA.js";var import_chalk=__toESM(require_source(),1);function highlight(text){return import_chalk.default.bold.underline(text)}export{highlight};