@vercel/cli-support 65.10.0 → 65.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/dist/chunks/add-4R6FUHQT.js +8 -0
  2. package/dist/chunks/add-F3H4BFJZ.js +8 -0
  3. package/dist/chunks/add-TCOJ4SIQ.js +8 -0
  4. package/dist/chunks/alerts-JGRRCQA4.js +8 -0
  5. package/dist/chunks/build-GOLTZF6S.js +7 -0
  6. package/dist/chunks/{chunk-6NUH6ZPE.js → chunk-2J35YKA2.js} +9 -9
  7. package/dist/chunks/{chunk-GQ4CQDIL.js → chunk-3KJ6HWSX.js} +1 -1
  8. package/dist/chunks/{chunk-STKZTUGE.js → chunk-3TDFSO4X.js} +1 -1
  9. package/dist/chunks/chunk-42FOKWGX.js +8 -0
  10. package/dist/chunks/{chunk-T2FCF46I.js → chunk-4DMKP6AO.js} +2 -2
  11. package/dist/chunks/chunk-4HR3I3ML.js +7 -0
  12. package/dist/chunks/{chunk-5MPZSRYG.js → chunk-4T57TXQ3.js} +1 -1
  13. package/dist/chunks/{chunk-SBEWZ65N.js → chunk-4VP57TOJ.js} +1 -1
  14. package/dist/chunks/{chunk-ZEUREQ4E.js → chunk-5B5CLOKM.js} +1 -1
  15. package/dist/chunks/chunk-5FIY443M.js +7 -0
  16. package/dist/chunks/{chunk-AUIV7YJO.js → chunk-5X635INY.js} +2 -2
  17. package/dist/chunks/{chunk-P6J22UJQ.js → chunk-6ORJPXDQ.js} +1 -1
  18. package/dist/chunks/chunk-74VQ7PQV.js +7 -0
  19. package/dist/chunks/{chunk-VU3RBRDH.js → chunk-7JMN657A.js} +1 -1
  20. package/dist/chunks/{chunk-Q46Q4Y4R.js → chunk-7LPNDK2O.js} +1 -1
  21. package/dist/chunks/{chunk-LIEWXPUC.js → chunk-7MZLV3KK.js} +1 -1
  22. package/dist/chunks/{chunk-YGYUPPAL.js → chunk-7NMC4E66.js} +1 -1
  23. package/dist/chunks/chunk-7ZJ7VUIR.js +7 -0
  24. package/dist/chunks/chunk-A3M2BHWR.js +13 -0
  25. package/dist/chunks/{chunk-US7YJ2RQ.js → chunk-AYZ52QDF.js} +1 -1
  26. package/dist/chunks/{chunk-5IZ33FNL.js → chunk-B56SRT5W.js} +1 -1
  27. package/dist/chunks/{chunk-3PKL2PTF.js → chunk-B6QVH6IG.js} +1 -1
  28. package/dist/chunks/{chunk-3QYXC4PH.js → chunk-BUFEV3T4.js} +1 -1
  29. package/dist/chunks/{chunk-ER7L7HYA.js → chunk-BVR6OIU5.js} +1 -1
  30. package/dist/chunks/{chunk-B4XGTAFO.js → chunk-BW25OFQG.js} +1 -1
  31. package/dist/chunks/{chunk-7LSH3MEB.js → chunk-C5QEQSEX.js} +1 -1
  32. package/dist/chunks/{chunk-VQSSVB6V.js → chunk-CD6ZWCKT.js} +1 -1
  33. package/dist/chunks/chunk-CFYLTZSV.js +7 -0
  34. package/dist/chunks/chunk-D3M2JG5C.js +7 -0
  35. package/dist/chunks/chunk-D7BB5BPA.js +10 -0
  36. package/dist/chunks/{chunk-RUBMVRT6.js → chunk-DR6OJB6P.js} +1 -1
  37. package/dist/chunks/chunk-DRZVM7CB.js +12 -0
  38. package/dist/chunks/{chunk-UQNBUXQA.js → chunk-EBIJ26IV.js} +1 -1
  39. package/dist/chunks/chunk-EGTJTCCW.js +7 -0
  40. package/dist/chunks/{chunk-OJWI6QJ3.js → chunk-EICEQXVS.js} +1 -1
  41. package/dist/chunks/{chunk-NAN5IE3B.js → chunk-EIMHC5UY.js} +1 -1
  42. package/dist/chunks/{chunk-CBMWPDOL.js → chunk-EVBGFSK5.js} +1 -1
  43. package/dist/chunks/{chunk-N5AN4JZL.js → chunk-EZLPMOHM.js} +1 -1
  44. package/dist/chunks/{chunk-JLNF2QTR.js → chunk-F2R7L3ZB.js} +1 -1
  45. package/dist/chunks/chunk-FHMCTV5E.js +7 -0
  46. package/dist/chunks/{chunk-DUCCC22H.js → chunk-FNH3T3CF.js} +1 -1
  47. package/dist/chunks/{chunk-RBIHS5QI.js → chunk-FOE3MWES.js} +1 -1
  48. package/dist/chunks/{chunk-KZLRIAAT.js → chunk-FVTRIRML.js} +1 -1
  49. package/dist/chunks/{chunk-PL6IOUKW.js → chunk-GL66K54F.js} +1 -1
  50. package/dist/chunks/{chunk-SXYA7JSX.js → chunk-HDISAMDF.js} +1 -1
  51. package/dist/chunks/chunk-HKU6D7DU.js +8 -0
  52. package/dist/chunks/{chunk-4WXVKR43.js → chunk-HNH3DPIZ.js} +1 -1
  53. package/dist/chunks/{chunk-U2TQFAO3.js → chunk-HYOWFNOP.js} +1 -1
  54. package/dist/chunks/{chunk-OYIDWI5Y.js → chunk-HZEKH3RO.js} +3 -3
  55. package/dist/chunks/{chunk-6RMW63GB.js → chunk-IHCYNUI2.js} +1 -1
  56. package/dist/chunks/chunk-IOTKHTZH.js +7 -0
  57. package/dist/chunks/{chunk-4VF5BZJP.js → chunk-JTAUWH5V.js} +1 -1
  58. package/dist/chunks/{chunk-S535FZTA.js → chunk-JUSNW3IF.js} +1 -1
  59. package/dist/chunks/{chunk-MKTZDEOJ.js → chunk-K4JTCVNW.js} +1 -1
  60. package/dist/chunks/{chunk-FPREO4VS.js → chunk-LALPOYIA.js} +1 -1
  61. package/dist/chunks/{chunk-YKLTNKQJ.js → chunk-MIIHBRKV.js} +1 -1
  62. package/dist/chunks/{chunk-BK3TNLWO.js → chunk-MO2G2ND2.js} +1 -1
  63. package/dist/chunks/{chunk-NLTZGQB2.js → chunk-MUKXOI2K.js} +1 -1
  64. package/dist/chunks/{chunk-PKZK23PR.js → chunk-NDMQVBTV.js} +1 -1
  65. package/dist/chunks/{chunk-DNLE3KPC.js → chunk-NSPW47RU.js} +1 -1
  66. package/dist/chunks/{chunk-K5KVSA2A.js → chunk-NT2N5UR4.js} +1 -1
  67. package/dist/chunks/{chunk-WYGOYE6C.js → chunk-NTDP6RTQ.js} +1 -1
  68. package/dist/chunks/chunk-NUSKXXZZ.js +20 -0
  69. package/dist/chunks/{chunk-Q2JNATRP.js → chunk-NZW3RIQM.js} +1 -1
  70. package/dist/chunks/chunk-Q2QVK3TH.js +7 -0
  71. package/dist/chunks/{chunk-HTPNGLPH.js → chunk-QDHTI5WK.js} +1 -1
  72. package/dist/chunks/chunk-QROI2U32.js +14 -0
  73. package/dist/chunks/chunk-RAQ6EUNL.js +7 -0
  74. package/dist/chunks/chunk-RDWLLSPU.js +7 -0
  75. package/dist/chunks/chunk-RR5SDYNN.js +8 -0
  76. package/dist/chunks/{chunk-BPRGAX62.js → chunk-SLCPSRDR.js} +1 -1
  77. package/dist/chunks/{chunk-5RYQH3XW.js → chunk-TPJV5UNE.js} +1 -1
  78. package/dist/chunks/{chunk-QXL353OB.js → chunk-TUAS3L5I.js} +1 -1
  79. package/dist/chunks/{chunk-7TR6H6NE.js → chunk-UBJVL3NJ.js} +2 -2
  80. package/dist/chunks/{chunk-6YAYCEDT.js → chunk-UCRMJMH6.js} +2 -2
  81. package/dist/chunks/{chunk-XS3MNHFR.js → chunk-UF2E5BDE.js} +1 -1
  82. package/dist/chunks/{chunk-E7WULWMX.js → chunk-UFXIPUNI.js} +1 -1
  83. package/dist/chunks/{chunk-SR7BZA6N.js → chunk-UNPK7LVC.js} +1 -1
  84. package/dist/chunks/{chunk-FXHB7TTL.js → chunk-VAZ7JG2Z.js} +1 -1
  85. package/dist/chunks/{chunk-52X4YVSG.js → chunk-VKCBEW6R.js} +1 -1
  86. package/dist/chunks/{chunk-FSJFWVUY.js → chunk-VWJXV5ZM.js} +1 -1
  87. package/dist/chunks/{chunk-VTITZEPW.js → chunk-W24TLPO5.js} +1 -1
  88. package/dist/chunks/chunk-WBSFE6IE.js +10 -0
  89. package/dist/chunks/{chunk-LE72YLCC.js → chunk-WMWB7QKG.js} +1 -1
  90. package/dist/chunks/{chunk-XFUUALZS.js → chunk-WNDR5HCU.js} +1 -1
  91. package/dist/chunks/{chunk-DQNP7OQ5.js → chunk-XH2R2EIK.js} +1 -1
  92. package/dist/chunks/{chunk-ZPJHONCZ.js → chunk-XQDHMFQY.js} +1 -1
  93. package/dist/chunks/{chunk-JA6IGJ67.js → chunk-YODQLETL.js} +1 -1
  94. package/dist/chunks/{chunk-36XHIIUT.js → chunk-Z64MQIOE.js} +1 -1
  95. package/dist/chunks/chunk-ZPBGAZC2.js +11 -0
  96. package/dist/chunks/{chunk-75DUL7VI.js → chunk-ZTHW5VNH.js} +1 -1
  97. package/dist/chunks/clear-PECHXMV5.js +8 -0
  98. package/dist/chunks/compile-vercel-config-EM3HYOQC.js +7 -0
  99. package/dist/chunks/config-DA2NZUDH.js +8 -0
  100. package/dist/chunks/config-X6O3DT7V.js +7 -0
  101. package/dist/chunks/config-validator.mjs +1 -1
  102. package/dist/chunks/{connect-git-provider-YIX5ZOU6.js → connect-git-provider-GFAJLQLU.js} +1 -1
  103. package/dist/chunks/contract-RHMWRX4W.js +10 -0
  104. package/dist/chunks/delete-5RN5VW5L.js +9 -0
  105. package/dist/chunks/delete-MT6I7R7K.js +10 -0
  106. package/dist/chunks/detect-services-HSA4JHJX.js +7 -0
  107. package/dist/chunks/disable-LXPZDQMC.js +7 -0
  108. package/dist/chunks/discard-PW65T65S.js +14 -0
  109. package/dist/chunks/edit-WFSONASO.js +8 -0
  110. package/dist/chunks/edit-YID3FOJ3.js +9 -0
  111. package/dist/chunks/enable-X2EKQCIY.js +7 -0
  112. package/dist/chunks/{export-YYQ2J5AT.js → export-25TQ3YBT.js} +1 -1
  113. package/dist/chunks/future-DQBK457G.js +7 -0
  114. package/dist/chunks/generate-cert-for-deploy-OMEACY5G.js +7 -0
  115. package/dist/chunks/image-AO2OZG4W.js +7 -0
  116. package/dist/chunks/import-builders-GSDV4K4A.js +7 -0
  117. package/dist/chunks/{inspect-AHHXHIIP.js → inspect-3W3TUJ6P.js} +1 -1
  118. package/dist/chunks/inspect-4244CRHI.js +13 -0
  119. package/dist/chunks/{inspect-SFM3NWDF.js → inspect-BRYVSQBD.js} +1 -1
  120. package/dist/chunks/inspect-C43IV7X4.js +9 -0
  121. package/dist/chunks/inspect-RP5KXOYQ.js +8 -0
  122. package/dist/chunks/{inspect-RPCDGIP3.js → inspect-TN2QY3BP.js} +1 -1
  123. package/dist/chunks/list-2SY6PZLC.js +12 -0
  124. package/dist/chunks/{list-7WWUYCE6.js → list-6W4UQBY4.js} +1 -1
  125. package/dist/chunks/{list-NXZXKKAR.js → list-WA6Q7DUN.js} +1 -1
  126. package/dist/chunks/list-WBKZGIMQ.js +8 -0
  127. package/dist/chunks/login-K6XBWOFD.js +9 -0
  128. package/dist/chunks/login-OGMXEW5N.js +7 -0
  129. package/dist/chunks/logs-R3ZERQ7M.js +7 -0
  130. package/dist/chunks/{ls-LCUOBWY2.js → ls-4WP6LHLL.js} +1 -1
  131. package/dist/chunks/{ls-ITWXAWSZ.js → ls-EVAQD3LI.js} +1 -1
  132. package/dist/chunks/{ls-5SKRXNSI.js → ls-L5LLKZBV.js} +1 -1
  133. package/dist/chunks/{ls-FOFJU2JJ.js → ls-MAJ4QZTY.js} +1 -1
  134. package/dist/chunks/ls-O5DKK3TY.js +8 -0
  135. package/dist/chunks/ls-PTHGXQLK.js +11 -0
  136. package/dist/chunks/{ls-OY5YTZGN.js → ls-UXE5RSZN.js} +1 -1
  137. package/dist/chunks/mutate-EKZWPQQJ.js +9 -0
  138. package/dist/chunks/{notifications-XAPB2F2T.js → notifications-F5S3RKZF.js} +1 -1
  139. package/dist/chunks/open-KGVG54NN.js +7 -0
  140. package/dist/chunks/{openapi-UUFKDKGC.js → openapi-7TPDTMCU.js} +1 -1
  141. package/dist/chunks/{permissions-FU5OET67.js → permissions-5K7JZOMB.js} +1 -1
  142. package/dist/chunks/{plugin-offer-E5JOW442.js → plugin-offer-JUYWL4I7.js} +1 -1
  143. package/dist/chunks/prompt-missing-credentials-DX2KJB5X.js +7 -0
  144. package/dist/chunks/publish-KIRTO2ZO.js +15 -0
  145. package/dist/chunks/pull-3CRJK7BX.js +7 -0
  146. package/dist/chunks/purchase-domain-if-available-55IXEF43.js +7 -0
  147. package/dist/chunks/push-4YG5HKSD.js +7 -0
  148. package/dist/chunks/{query-VMKIOI3W.js → query-67KQVLTR.js} +1 -1
  149. package/dist/chunks/reauthenticate-SWSBFGDU.js +7 -0
  150. package/dist/chunks/remove-SYTIFVWW.js +9 -0
  151. package/dist/chunks/reorder-TX5MXJEB.js +10 -0
  152. package/dist/chunks/reply-XVK33N5T.js +9 -0
  153. package/dist/chunks/resolve-JZ262ZF4.js +12 -0
  154. package/dist/chunks/resolve-agent-team-BG5YW55B.js +7 -0
  155. package/dist/chunks/restore-IPFL7TKT.js +16 -0
  156. package/dist/chunks/rm-2BCAZGQU.js +8 -0
  157. package/dist/chunks/rm-3CCU3CE6.js +8 -0
  158. package/dist/chunks/rm-5CQV5LYG.js +8 -0
  159. package/dist/chunks/rm-OV4OU6H2.js +8 -0
  160. package/dist/chunks/rm-WFGMOZ3G.js +8 -0
  161. package/dist/chunks/rule-inspect-RFJIIXZH.js +8 -0
  162. package/dist/chunks/{schema-AKVIKCFT.js → schema-753JMRZA.js} +1 -1
  163. package/dist/chunks/schema-SUNFQGUL.js +14 -0
  164. package/dist/chunks/select-org-MPHPWWPU.js +7 -0
  165. package/dist/chunks/set-BR6EEOPB.js +7 -0
  166. package/dist/chunks/set-I3NWZRSI.js +9 -0
  167. package/dist/chunks/setup-and-link-MRTKVOWD.js +7 -0
  168. package/dist/chunks/{skills-JG4MGVKX.js → skills-QZ4AMS2K.js} +28 -16
  169. package/dist/chunks/{tags-4Y4UBA5S.js → tags-7DIZEAVE.js} +1 -1
  170. package/dist/chunks/{types-DSN6Q6HW.js → types-NPUAHKSK.js} +1 -1
  171. package/dist/chunks/{update-R42CXSVE.js → update-7XH7HM5F.js} +1 -1
  172. package/dist/chunks/usage-3BS7JCCU.js +13 -0
  173. package/dist/chunks/{validate-config-XWZ7ZZ3G.js → validate-config-LAD7BU3B.js} +1 -1
  174. package/dist/commands/build/index.js +1 -1
  175. package/dist/commands/deploy/index.js +4 -4
  176. package/dist/commands/dev/index.js +2 -2
  177. package/dist/commands/env/index.js +1 -1
  178. package/dist/commands/link/index.js +1 -1
  179. package/dist/commands/list/index.js +1 -1
  180. package/dist/commands/project/index.js +1 -1
  181. package/dist/commands-account.js +82 -93
  182. package/dist/commands-ai.js +13 -12
  183. package/dist/commands-blob.js +1 -1
  184. package/dist/commands-core.js +56 -59
  185. package/dist/commands-deployments.js +1 -1
  186. package/dist/commands-flags.js +6 -6
  187. package/dist/commands-integrations.js +12 -18
  188. package/dist/commands-observability.js +7 -7
  189. package/dist/commands-routing.js +2 -2
  190. package/dist/help.js +1 -1
  191. package/dist/index.js +7 -7
  192. package/dist/internal-build.js +1 -1
  193. package/dist/launcher-errors.js +1 -1
  194. package/dist/package.json +22 -22
  195. package/dist/root-help-commands.mjs +1 -1
  196. package/dist/version.mjs +1 -1
  197. package/package.json +13 -13
  198. package/dist/chunks/add-4MTUAI2X.js +0 -8
  199. package/dist/chunks/add-JYLWBVVQ.js +0 -8
  200. package/dist/chunks/add-T5ERJ62Z.js +0 -8
  201. package/dist/chunks/build-OGWTTFLG.js +0 -7
  202. package/dist/chunks/chunk-3QFBVAHL.js +0 -8
  203. package/dist/chunks/chunk-5RSSGN2Q.js +0 -8
  204. package/dist/chunks/chunk-BIRSJSAO.js +0 -7
  205. package/dist/chunks/chunk-FOWAVQOH.js +0 -8
  206. package/dist/chunks/chunk-JBU72NEQ.js +0 -7
  207. package/dist/chunks/chunk-NZRBJB6T.js +0 -7
  208. package/dist/chunks/chunk-OII46FDN.js +0 -12
  209. package/dist/chunks/chunk-SNNJRKD6.js +0 -10
  210. package/dist/chunks/chunk-TILI4QBL.js +0 -11
  211. package/dist/chunks/chunk-WKIDCYKL.js +0 -10
  212. package/dist/chunks/chunk-ZCUUCYID.js +0 -13
  213. package/dist/chunks/chunk-ZIC7VWFC.js +0 -14
  214. package/dist/chunks/clear-Z5OO6URI.js +0 -8
  215. package/dist/chunks/compile-vercel-config-ZKUTSDWV.js +0 -7
  216. package/dist/chunks/config-AUTTHXQO.js +0 -8
  217. package/dist/chunks/config-RJ7PLFQD.js +0 -7
  218. package/dist/chunks/delete-QQOC63HV.js +0 -9
  219. package/dist/chunks/delete-WIGSOZR3.js +0 -10
  220. package/dist/chunks/detect-services-J4LGLAHC.js +0 -7
  221. package/dist/chunks/disable-L54VGY5A.js +0 -7
  222. package/dist/chunks/discard-Q5UPTZR2.js +0 -14
  223. package/dist/chunks/edit-FRGMYBW3.js +0 -9
  224. package/dist/chunks/edit-QEDNQ33T.js +0 -8
  225. package/dist/chunks/enable-TGQZWSBG.js +0 -7
  226. package/dist/chunks/future-RYEYLPCG.js +0 -7
  227. package/dist/chunks/generate-cert-for-deploy-Y4KDIFF2.js +0 -7
  228. package/dist/chunks/image-PDPRURMH.js +0 -7
  229. package/dist/chunks/import-builders-H54QCMQ4.js +0 -7
  230. package/dist/chunks/inspect-6IBPIBIJ.js +0 -9
  231. package/dist/chunks/inspect-Q7FYDFL7.js +0 -13
  232. package/dist/chunks/list-GSVERG4S.js +0 -12
  233. package/dist/chunks/login-HEHHQO3F.js +0 -9
  234. package/dist/chunks/login-XKLPSZNN.js +0 -7
  235. package/dist/chunks/logs-NJ46ZSNZ.js +0 -7
  236. package/dist/chunks/ls-MWGIT2YH.js +0 -8
  237. package/dist/chunks/ls-TZN53EJL.js +0 -11
  238. package/dist/chunks/mutate-ZYXVL22A.js +0 -9
  239. package/dist/chunks/open-WPRHI6ND.js +0 -7
  240. package/dist/chunks/prompt-missing-credentials-ZZVTEQQB.js +0 -7
  241. package/dist/chunks/publish-R5IV2BH2.js +0 -15
  242. package/dist/chunks/pull-CQVHIIAN.js +0 -7
  243. package/dist/chunks/purchase-domain-if-available-VMWCMYC2.js +0 -7
  244. package/dist/chunks/push-Y5CUOISM.js +0 -7
  245. package/dist/chunks/reauthenticate-5K7LBTOW.js +0 -7
  246. package/dist/chunks/reorder-W3MXHSGZ.js +0 -10
  247. package/dist/chunks/reply-YH7HRIWQ.js +0 -9
  248. package/dist/chunks/resolve-FWVMWJTG.js +0 -12
  249. package/dist/chunks/resolve-agent-team-6L7AQUA2.js +0 -7
  250. package/dist/chunks/restore-I7L3EOS4.js +0 -16
  251. package/dist/chunks/rm-AWUMNWQU.js +0 -8
  252. package/dist/chunks/rm-HVGUK55W.js +0 -8
  253. package/dist/chunks/rm-M3EMCKSN.js +0 -8
  254. package/dist/chunks/rm-RFCTWU5R.js +0 -8
  255. package/dist/chunks/rm-VREBRM5D.js +0 -8
  256. package/dist/chunks/rule-inspect-SQUCRRGA.js +0 -8
  257. package/dist/chunks/schema-S36QQNJP.js +0 -14
  258. package/dist/chunks/select-org-PRWYXAWW.js +0 -7
  259. package/dist/chunks/set-ZJAC44LV.js +0 -7
  260. package/dist/chunks/setup-and-link-VD53JFQI.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{displayDetectedServices,readConfig,setupAndLink}from"../../chunks/chunk-LE72YLCC.js";import{loadVercelConfig,tryDetectServices}from"../../chunks/chunk-ZEUREQ4E.js";import"../../chunks/chunk-4KM733OB.js";import{FIX_BY_CODE,createErrorReporter,import_write_build_result,require_detect_builders_with_services,require_get_files,require_mime_types,require_schedule_entrypoint,require_service_schedules,toDiagnostic}from"../../chunks/chunk-QXL353OB.js";import{importBuilders,require_npa}from"../../chunks/chunk-FOWAVQOH.js";import"../../chunks/chunk-4CACOKMS.js";import{decodeJwt}from"../../chunks/chunk-S3L2OHPO.js";import"../../chunks/chunk-3QFBVAHL.js";import{require_fast_deep_equal}from"../../chunks/chunk-MCRKBVZA.js";import{require_raw_body}from"../../chunks/chunk-XOETL6DB.js";import{VERCEL_OIDC_TOKEN}from"../../chunks/chunk-BK3TNLWO.js";import{LOCAL_SCHEDULES_SESSION_HEADER,createLocalSchedulesSession}from"../../chunks/chunk-SF4E3AQ3.js";import{hasDeployment}from"../../chunks/chunk-3QYXC4PH.js";import"../../chunks/chunk-NLTZGQB2.js";import{promptExperimentalServicesMigration}from"../../chunks/chunk-75DUL7VI.js";import"../../chunks/chunk-XRIM4BUF.js";import{validateConfig}from"../../chunks/chunk-RBIHS5QI.js";import"../../chunks/chunk-QHJLRTVY.js";import"../../chunks/chunk-COD3WAUI.js";import"../../chunks/chunk-J24BABG4.js";import"../../chunks/chunk-U4Z2MMOF.js";import{require_brace_expansion,require_dist as require_dist3,require_dist2 as require_dist4,require_minimatch}from"../../chunks/chunk-NIS66BFX.js";import{pickOverrides}from"../../chunks/chunk-FSJFWVUY.js";import{pullEnvRecords}from"../../chunks/chunk-5RYQH3XW.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import"../../chunks/chunk-YZKARZ2B.js";import"../../chunks/chunk-7YKFF6CE.js";import"../../chunks/chunk-SR7BZA6N.js";import"../../chunks/chunk-NE6PKR2J.js";import{require_main}from"../../chunks/chunk-SBEWZ65N.js";import"../../chunks/chunk-5MPZSRYG.js";import{getUpdateCommand}from"../../chunks/chunk-HTPNGLPH.js";import"../../chunks/chunk-BPUANOGW.js";import{readJSONFile}from"../../chunks/chunk-UQNBUXQA.js";import{require_json_parse_better_errors}from"../../chunks/chunk-25565AGS.js";import"../../chunks/chunk-RCUDI7OF.js";import"../../chunks/chunk-GD7AV7BO.js";import{external_exports}from"../../chunks/chunk-2AMO2VMV.js";import"../../chunks/chunk-XFUUALZS.js";import"../../chunks/chunk-4ELZOAQH.js";import"../../chunks/chunk-JUAHDOL6.js";import"../../chunks/chunk-UI2H2EIM.js";import"../../chunks/chunk-UUDE44NV.js";import{getEnabledProtection}from"../../chunks/chunk-UIMJNASP.js";import"../../chunks/chunk-IQ7FPAI4.js";import"../../chunks/chunk-VT6RIZJH.js";import"../../chunks/chunk-6YAYCEDT.js";import"../../chunks/chunk-VU3RBRDH.js";import"../../chunks/chunk-4VF5BZJP.js";import"../../chunks/chunk-PVASGBEF.js";import{printProjectNotFoundError}from"../../chunks/chunk-S535FZTA.js";import"../../chunks/chunk-375JVQYK.js";import"../../chunks/chunk-GQ4CQDIL.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getTeams}from"../../chunks/chunk-BPRGAX62.js";import{DEV_QUEUE_API_PREFIX,DEV_QUEUE_DEFAULT_PORT,DEV_QUEUE_PROXY_PREFIX,DEV_RESOURCE_TOKEN,DEV_RUNTIME_CACHE_DEFAULT_PORT,DEV_SCHEDULES_DEFAULT_PORT,DEV_SCHEDULES_PROXY_PREFIX,devCommand,getDevQueueEnv,getDevSchedulesEnv,isValidDevResourceHost,listenOnDevResourcePort}from"../../chunks/chunk-CU3LNJZV.js";import{require_dist as require_dist2}from"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-BZIC36KP.js";import{printError}from"../../chunks/chunk-PKZK23PR.js";import{help,remoteText}from"../../chunks/chunk-OYIDWI5Y.js";import{param}from"../../chunks/chunk-3G3FQYMW.js";import{detectExplicitScope}from"../../chunks/chunk-DNLE3KPC.js";import{TelemetryClient}from"../../chunks/chunk-MBXLL2HF.js";import"../../chunks/chunk-2EYYB6YN.js";import{isNativeBinaryInstall}from"../../chunks/chunk-NWGBDBZI.js";import{buildCommandWithYes,outputActionRequired}from"../../chunks/chunk-AUIV7YJO.js";import"../../chunks/chunk-FYE7ILRR.js";import{VERCEL_DIR,findRepoRoot,getLinkedProject,getLocalPathConfig,getUser,getVercelDirectory,highlight,localConfigFlagPath,require_dist2 as require_dist5,require_lib,require_pluralize,resolveProjectCwd}from"../../chunks/chunk-6NUH6ZPE.js";import{printAlignedLabel}from"../../chunks/chunk-PKNEWN4W.js";import{ua_default}from"../../chunks/chunk-ITQPDXXA.js";import{getGlobalPathConfig}from"../../chunks/chunk-PL6IOUKW.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-US7YJ2RQ.js";import"../../chunks/chunk-2VBFQZ72.js";import{warnDeprecatedSubcommand}from"../../chunks/chunk-SDYCW5JM.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import{APIError,CantParseJSONFile,LambdaSizeExceededError,MissingDotenvVarsError,NowError,isAPIError,require_bytes}from"../../chunks/chunk-T2FCF46I.js";import{cmd,getCommandName,getCommandNamePlain,getTitleName}from"../../chunks/chunk-VRH7LWOC.js";import{pkg_default}from"../../chunks/chunk-DBT6PGEH.js";import{Diagnostic,defineDiagnostics,init_dist,link_default,output_manager_default}from"../../chunks/chunk-GZLYNPNU.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification}from"../../chunks/chunk-AMPJ6RWT.js";import{chars_default}from"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import{require_supports_color}from"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import{directFetch,getFetchDispatcher}from"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import"../../chunks/chunk-JBU72NEQ.js";import{__commonJS,__require,__toESM}from"../../chunks/chunk-BZENIQ7N.js";var require_eventemitter3=__commonJS({"../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(exports,module){"use strict";var has=Object.prototype.hasOwnProperty,prefix="~";function Events(){}Object.create&&(Events.prototype=Object.create(null),new Events().__proto__||(prefix=!1));function EE(fn,context,once2){this.fn=fn,this.context=context,this.once=once2||!1}function addListener(emitter,event,fn,context,once2){if(typeof fn!="function")throw new TypeError("The listener must be a function");var listener=new EE(fn,context||emitter,once2),evt=prefix?prefix+event:event;return emitter._events[evt]?emitter._events[evt].fn?emitter._events[evt]=[emitter._events[evt],listener]:emitter._events[evt].push(listener):(emitter._events[evt]=listener,emitter._eventsCount++),emitter}function clearEvent(emitter,evt){--emitter._eventsCount===0?emitter._events=new Events:delete emitter._events[evt]}function EventEmitter(){this._events=new Events,this._eventsCount=0}EventEmitter.prototype.eventNames=function(){var names=[],events,name;if(this._eventsCount===0)return names;for(name in events=this._events)has.call(events,name)&&names.push(prefix?name.slice(1):name);return Object.getOwnPropertySymbols?names.concat(Object.getOwnPropertySymbols(events)):names};EventEmitter.prototype.listeners=function(event){var evt=prefix?prefix+event:event,handlers=this._events[evt];if(!handlers)return[];if(handlers.fn)return[handlers.fn];for(var i=0,l=handlers.length,ee=new Array(l);i<l;i++)ee[i]=handlers[i].fn;return ee};EventEmitter.prototype.listenerCount=function(event){var evt=prefix?prefix+event:event,listeners=this._events[evt];return listeners?listeners.fn?1:listeners.length:0};EventEmitter.prototype.emit=function(event,a1,a2,a3,a4,a5){var evt=prefix?prefix+event:event;if(!this._events[evt])return!1;var listeners=this._events[evt],len=arguments.length,args,i;if(listeners.fn){switch(listeners.once&&this.removeListener(event,listeners.fn,void 0,!0),len){case 1:return listeners.fn.call(listeners.context),!0;case 2:return listeners.fn.call(listeners.context,a1),!0;case 3:return listeners.fn.call(listeners.context,a1,a2),!0;case 4:return listeners.fn.call(listeners.context,a1,a2,a3),!0;case 5:return listeners.fn.call(listeners.context,a1,a2,a3,a4),!0;case 6:return listeners.fn.call(listeners.context,a1,a2,a3,a4,a5),!0}for(i=1,args=new Array(len-1);i<len;i++)args[i-1]=arguments[i];listeners.fn.apply(listeners.context,args)}else{var length=listeners.length,j;for(i=0;i<length;i++)switch(listeners[i].once&&this.removeListener(event,listeners[i].fn,void 0,!0),len){case 1:listeners[i].fn.call(listeners[i].context);break;case 2:listeners[i].fn.call(listeners[i].context,a1);break;case 3:listeners[i].fn.call(listeners[i].context,a1,a2);break;case 4:listeners[i].fn.call(listeners[i].context,a1,a2,a3);break;default:if(!args)for(j=1,args=new Array(len-1);j<len;j++)args[j-1]=arguments[j];listeners[i].fn.apply(listeners[i].context,args)}}return!0};EventEmitter.prototype.on=function(event,fn,context){return addListener(this,event,fn,context,!1)};EventEmitter.prototype.once=function(event,fn,context){return addListener(this,event,fn,context,!0)};EventEmitter.prototype.removeListener=function(event,fn,context,once2){var evt=prefix?prefix+event:event;if(!this._events[evt])return this;if(!fn)return clearEvent(this,evt),this;var listeners=this._events[evt];if(listeners.fn)listeners.fn===fn&&(!once2||listeners.once)&&(!context||listeners.context===context)&&clearEvent(this,evt);else{for(var i=0,events=[],length=listeners.length;i<length;i++)(listeners[i].fn!==fn||once2&&!listeners[i].once||context&&listeners[i].context!==context)&&events.push(listeners[i]);events.length?this._events[evt]=events.length===1?events[0]:events:clearEvent(this,evt)}return this};EventEmitter.prototype.removeAllListeners=function(event){var evt;return event?(evt=prefix?prefix+event:event,this._events[evt]&&clearEvent(this,evt)):(this._events=new Events,this._eventsCount=0),this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.addListener=EventEmitter.prototype.on;EventEmitter.prefixed=prefix;EventEmitter.EventEmitter=EventEmitter;typeof module<"u"&&(module.exports=EventEmitter)}});var require_requires_port=__commonJS({"../../node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.js"(exports,module){"use strict";module.exports=function(port,protocol){if(protocol=protocol.split(":")[0],port=+port,!port)return!1;switch(protocol){case"http":case"ws":return port!==80;case"https":case"wss":return port!==443;case"ftp":return port!==21;case"gopher":return port!==70;case"file":return!1}return port!==0}}});var require_common=__commonJS({"../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/common.js"(exports){var common=exports,url4=__require("url"),extend=Object.assign,required=require_requires_port(),upgradeHeader=/(^|,)\s*upgrade\s*($|,)/i,isSSL=/^https|wss/;common.isSSL=isSSL;common.setupOutgoing=function(outgoing,options,req,forward){outgoing.port=options[forward||"target"].port||(isSSL.test(options[forward||"target"].protocol)?443:80),["host","hostname","socketPath","pfx","key","passphrase","cert","ca","ciphers","secureProtocol"].forEach(function(e){outgoing[e]=options[forward||"target"][e]}),outgoing.method=options.method||req.method,outgoing.headers=extend({},req.headers),options.headers&&extend(outgoing.headers,options.headers),options.auth&&(outgoing.auth=options.auth),options.ca&&(outgoing.ca=options.ca),isSSL.test(options[forward||"target"].protocol)&&(outgoing.rejectUnauthorized=typeof options.secure>"u"?!0:options.secure),outgoing.agent=options.agent||!1,outgoing.localAddress=options.localAddress,outgoing.agent||(outgoing.headers=outgoing.headers||{},(typeof outgoing.headers.connection!="string"||!upgradeHeader.test(outgoing.headers.connection))&&(outgoing.headers.connection="close"));var target=options[forward||"target"],targetPath=target&&options.prependPath!==!1&&target.path||"",outgoingPath=options.toProxy?req.url:url4.parse(req.url).path||"";return outgoingPath=options.ignorePath?"":outgoingPath,outgoing.path=common.urlJoin(targetPath,outgoingPath),options.changeOrigin&&(outgoing.headers.host=required(outgoing.port,options[forward||"target"].protocol)&&!hasPort(outgoing.host)?outgoing.host+":"+outgoing.port:outgoing.host),outgoing};common.setupSocket=function(socket){return socket.setTimeout(0),socket.setNoDelay(!0),socket.setKeepAlive(!0,0),socket};common.getPort=function(req){var res=req.headers.host?req.headers.host.match(/:(\d+)/):"";return res?res[1]:common.hasEncryptedConnection(req)?"443":"80"};common.hasEncryptedConnection=function(req){return!!(req.connection.encrypted||req.connection.pair)};common.urlJoin=function(){var args=Array.prototype.slice.call(arguments),queryParams=[],queryParamRaw="",retSegs;return args.forEach((url5,index)=>{var qpStart=url5.indexOf("?");qpStart!==-1&&(queryParams.push(url5.substring(qpStart+1)),args[index]=url5.substring(0,qpStart))}),queryParamRaw=queryParams.filter(Boolean).join("&"),retSegs=args.filter(Boolean).join("/").replace(/\/+/g,"/").replace("http:/","http://").replace("https:/","https://"),queryParamRaw?retSegs+"?"+queryParamRaw:retSegs};common.rewriteCookieProperty=function rewriteCookieProperty(header,config,property){return Array.isArray(header)?header.map(function(headerElement){return rewriteCookieProperty(headerElement,config,property)}):header.replace(new RegExp("(;\\s*"+property+"=)([^;]+)","i"),function(match,prefix,previousValue){var newValue;if(previousValue in config)newValue=config[previousValue];else if("*"in config)newValue=config["*"];else return match;return newValue?prefix+newValue:""})};function hasPort(host){return!!~host.indexOf(":")}}});var require_web_outgoing=__commonJS({"../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/web-outgoing.js"(exports,module){var url4=__require("url"),common=require_common(),redirectRegex=/^201|30(1|2|7|8)$/;module.exports={removeChunked:function(req,res,proxyRes){req.httpVersion==="1.0"&&delete proxyRes.headers["transfer-encoding"]},setConnection:function(req,res,proxyRes){req.httpVersion==="1.0"?proxyRes.headers.connection=req.headers.connection||"close":req.httpVersion!=="2.0"&&!proxyRes.headers.connection&&(proxyRes.headers.connection=req.headers.connection||"keep-alive")},setRedirectHostRewrite:function(req,res,proxyRes,options){if((options.hostRewrite||options.autoRewrite||options.protocolRewrite)&&proxyRes.headers.location&&redirectRegex.test(proxyRes.statusCode)){var target=url4.parse(options.target),u=url4.parse(proxyRes.headers.location);if(target.host!=u.host)return;options.hostRewrite?u.host=options.hostRewrite:options.autoRewrite&&(u.host=req.headers.host),options.protocolRewrite&&(u.protocol=options.protocolRewrite),proxyRes.headers.location=u.format()}},writeHeaders:function(req,res,proxyRes,options){var rewriteCookieDomainConfig=options.cookieDomainRewrite,rewriteCookiePathConfig=options.cookiePathRewrite,preserveHeaderKeyCase=options.preserveHeaderKeyCase,rawHeaderKeyMap,setHeader=function(key2,header){header!=null&&(rewriteCookieDomainConfig&&key2.toLowerCase()==="set-cookie"&&(header=common.rewriteCookieProperty(header,rewriteCookieDomainConfig,"domain")),rewriteCookiePathConfig&&key2.toLowerCase()==="set-cookie"&&(header=common.rewriteCookieProperty(header,rewriteCookiePathConfig,"path")),res.setHeader(String(key2).trim(),header))};if(typeof rewriteCookieDomainConfig=="string"&&(rewriteCookieDomainConfig={"*":rewriteCookieDomainConfig}),typeof rewriteCookiePathConfig=="string"&&(rewriteCookiePathConfig={"*":rewriteCookiePathConfig}),preserveHeaderKeyCase&&proxyRes.rawHeaders!=null){rawHeaderKeyMap={};for(var i=0;i<proxyRes.rawHeaders.length;i+=2){var key=proxyRes.rawHeaders[i];rawHeaderKeyMap[key.toLowerCase()]=key}}Object.keys(proxyRes.headers).forEach(function(key2){var header=proxyRes.headers[key2];preserveHeaderKeyCase&&rawHeaderKeyMap&&(key2=rawHeaderKeyMap[key2]||key2),setHeader(key2,header)})},writeStatusCode:function(req,res,proxyRes){proxyRes.statusMessage?(res.statusCode=proxyRes.statusCode,res.statusMessage=proxyRes.statusMessage):res.statusCode=proxyRes.statusCode}}}});var require_ms2=__commonJS({"../../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js"(exports,module){var s=1e3,m=s*60,h=m*60,d=h*24,y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse2(val);if(type==="number"&&isNaN(val)===!1)return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse2(str){if(str=String(str),!(str.length>100)){var match=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms9){return ms9>=d?Math.round(ms9/d)+"d":ms9>=h?Math.round(ms9/h)+"h":ms9>=m?Math.round(ms9/m)+"m":ms9>=s?Math.round(ms9/s)+"s":ms9+"ms"}function fmtLong(ms9){return plural3(ms9,d,"day")||plural3(ms9,h,"hour")||plural3(ms9,m,"minute")||plural3(ms9,s,"second")||ms9+" ms"}function plural3(ms9,n,name){if(!(ms9<n))return ms9<n*1.5?Math.floor(ms9/n)+" "+name:Math.ceil(ms9/n)+" "+name+"s"}}});var require_debug=__commonJS({"../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/debug.js"(exports,module){exports=module.exports=createDebug.debug=createDebug.default=createDebug;exports.coerce=coerce;exports.disable=disable;exports.enable=enable;exports.enabled=enabled;exports.humanize=require_ms2();exports.instances=[];exports.names=[];exports.skips=[];exports.formatters={};function selectColor(namespace){var hash=0,i;for(i in namespace)hash=(hash<<5)-hash+namespace.charCodeAt(i),hash|=0;return exports.colors[Math.abs(hash)%exports.colors.length]}function createDebug(namespace){var prevTime;function debug(){if(debug.enabled){var self2=debug,curr=+new Date,ms9=curr-(prevTime||curr);self2.diff=ms9,self2.prev=prevTime,self2.curr=curr,prevTime=curr;for(var args=new Array(arguments.length),i=0;i<args.length;i++)args[i]=arguments[i];args[0]=exports.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");var index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,function(match,format){if(match==="%%")return match;index++;var formatter=exports.formatters[format];if(typeof formatter=="function"){var val=args[index];match=formatter.call(self2,val),args.splice(index,1),index--}return match}),exports.formatArgs.call(self2,args);var logFn=debug.log||exports.log||console.log.bind(console);logFn.apply(self2,args)}}return debug.namespace=namespace,debug.enabled=exports.enabled(namespace),debug.useColors=exports.useColors(),debug.color=selectColor(namespace),debug.destroy=destroy,typeof exports.init=="function"&&exports.init(debug),exports.instances.push(debug),debug}function destroy(){var index=exports.instances.indexOf(this);return index!==-1?(exports.instances.splice(index,1),!0):!1}function enable(namespaces){exports.save(namespaces),exports.names=[],exports.skips=[];var i,split=(typeof namespaces=="string"?namespaces:"").split(/[\s,]+/),len=split.length;for(i=0;i<len;i++)split[i]&&(namespaces=split[i].replace(/\*/g,".*?"),namespaces[0]==="-"?exports.skips.push(new RegExp("^"+namespaces.substr(1)+"$")):exports.names.push(new RegExp("^"+namespaces+"$")));for(i=0;i<exports.instances.length;i++){var instance=exports.instances[i];instance.enabled=exports.enabled(instance.namespace)}}function disable(){exports.enable("")}function enabled(name){if(name[name.length-1]==="*")return!0;var i,len;for(i=0,len=exports.skips.length;i<len;i++)if(exports.skips[i].test(name))return!1;for(i=0,len=exports.names.length;i<len;i++)if(exports.names[i].test(name))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}}});var require_browser=__commonJS({"../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/browser.js"(exports,module){exports=module.exports=require_debug();exports.log=log;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:localstorage();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}exports.formatters.j=function(v){try{return JSON.stringify(v)}catch(err){return"[UnexpectedJSONParseError]: "+err.message}};function formatArgs(args){var useColors2=this.useColors;if(args[0]=(useColors2?"%c":"")+this.namespace+(useColors2?" %c":" ")+args[0]+(useColors2?"%c ":" ")+"+"+exports.humanize(this.diff),!!useColors2){var c="color: "+this.color;args.splice(1,0,c,"color: inherit");var index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,function(match){match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}}function log(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function save(namespaces){try{namespaces==null?exports.storage.removeItem("debug"):exports.storage.debug=namespaces}catch{}}function load(){var r;try{r=exports.storage.debug}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}exports.enable(load());function localstorage(){try{return window.localStorage}catch{}}}});var require_node=__commonJS({"../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/node.js"(exports,module){var tty=__require("tty"),util=__require("util");exports=module.exports=require_debug();exports.init=init;exports.log=log;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.colors=[6,2,3,4,5,1];try{supportsColor=require_supports_color(),supportsColor&&supportsColor.level>=2&&(exports.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}var supportsColor;exports.inspectOpts=Object.keys(process.env).filter(function(key){return/^debug_/i.test(key)}).reduce(function(obj,key){var prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,function(_,k){return k.toUpperCase()}),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports.inspectOpts?!!exports.inspectOpts.colors:tty.isatty(process.stderr.fd)}exports.formatters.o=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts).split(`
7
+ import{displayDetectedServices,readConfig,setupAndLink}from"../../chunks/chunk-WMWB7QKG.js";import{loadVercelConfig,tryDetectServices}from"../../chunks/chunk-5B5CLOKM.js";import"../../chunks/chunk-4KM733OB.js";import{FIX_BY_CODE,createErrorReporter,import_write_build_result,require_detect_builders_with_services,require_get_files,require_mime_types,require_schedule_entrypoint,require_service_schedules,toDiagnostic}from"../../chunks/chunk-TUAS3L5I.js";import{importBuilders,require_npa}from"../../chunks/chunk-HKU6D7DU.js";import"../../chunks/chunk-4CACOKMS.js";import{decodeJwt}from"../../chunks/chunk-S3L2OHPO.js";import"../../chunks/chunk-RR5SDYNN.js";import{require_fast_deep_equal}from"../../chunks/chunk-MCRKBVZA.js";import{require_raw_body}from"../../chunks/chunk-XOETL6DB.js";import{VERCEL_OIDC_TOKEN}from"../../chunks/chunk-MO2G2ND2.js";import{LOCAL_SCHEDULES_SESSION_HEADER,createLocalSchedulesSession}from"../../chunks/chunk-SF4E3AQ3.js";import{hasDeployment}from"../../chunks/chunk-BUFEV3T4.js";import"../../chunks/chunk-MUKXOI2K.js";import{promptExperimentalServicesMigration}from"../../chunks/chunk-ZTHW5VNH.js";import"../../chunks/chunk-XRIM4BUF.js";import{validateConfig}from"../../chunks/chunk-FOE3MWES.js";import"../../chunks/chunk-QHJLRTVY.js";import"../../chunks/chunk-COD3WAUI.js";import"../../chunks/chunk-J24BABG4.js";import"../../chunks/chunk-U4Z2MMOF.js";import{require_brace_expansion,require_dist as require_dist3,require_dist2 as require_dist4,require_minimatch}from"../../chunks/chunk-NIS66BFX.js";import{pickOverrides}from"../../chunks/chunk-VWJXV5ZM.js";import{pullEnvRecords}from"../../chunks/chunk-TPJV5UNE.js";import{require_frameworks}from"../../chunks/chunk-6Y2ZL5XJ.js";import"../../chunks/chunk-YZKARZ2B.js";import"../../chunks/chunk-7YKFF6CE.js";import"../../chunks/chunk-UNPK7LVC.js";import"../../chunks/chunk-NE6PKR2J.js";import{require_main}from"../../chunks/chunk-4VP57TOJ.js";import"../../chunks/chunk-4T57TXQ3.js";import{getUpdateCommand}from"../../chunks/chunk-QDHTI5WK.js";import"../../chunks/chunk-BPUANOGW.js";import{readJSONFile}from"../../chunks/chunk-EBIJ26IV.js";import{require_json_parse_better_errors}from"../../chunks/chunk-25565AGS.js";import"../../chunks/chunk-RCUDI7OF.js";import"../../chunks/chunk-GD7AV7BO.js";import{external_exports}from"../../chunks/chunk-2AMO2VMV.js";import"../../chunks/chunk-WNDR5HCU.js";import"../../chunks/chunk-4ELZOAQH.js";import"../../chunks/chunk-JUAHDOL6.js";import"../../chunks/chunk-UI2H2EIM.js";import"../../chunks/chunk-UUDE44NV.js";import{getEnabledProtection}from"../../chunks/chunk-UIMJNASP.js";import"../../chunks/chunk-IQ7FPAI4.js";import"../../chunks/chunk-VT6RIZJH.js";import"../../chunks/chunk-UCRMJMH6.js";import"../../chunks/chunk-7JMN657A.js";import"../../chunks/chunk-JTAUWH5V.js";import"../../chunks/chunk-PVASGBEF.js";import{printProjectNotFoundError}from"../../chunks/chunk-JUSNW3IF.js";import"../../chunks/chunk-375JVQYK.js";import"../../chunks/chunk-3KJ6HWSX.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getTeams}from"../../chunks/chunk-SLCPSRDR.js";import{DEV_QUEUE_API_PREFIX,DEV_QUEUE_DEFAULT_PORT,DEV_QUEUE_PROXY_PREFIX,DEV_RESOURCE_TOKEN,DEV_RUNTIME_CACHE_DEFAULT_PORT,DEV_SCHEDULES_DEFAULT_PORT,DEV_SCHEDULES_PROXY_PREFIX,devCommand,getDevQueueEnv,getDevSchedulesEnv,isValidDevResourceHost,listenOnDevResourcePort}from"../../chunks/chunk-CU3LNJZV.js";import{require_dist as require_dist2}from"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-BZIC36KP.js";import{printError}from"../../chunks/chunk-NDMQVBTV.js";import{help,remoteText}from"../../chunks/chunk-HZEKH3RO.js";import{param}from"../../chunks/chunk-3G3FQYMW.js";import{detectExplicitScope}from"../../chunks/chunk-NSPW47RU.js";import{TelemetryClient}from"../../chunks/chunk-MBXLL2HF.js";import"../../chunks/chunk-2EYYB6YN.js";import{isNativeBinaryInstall}from"../../chunks/chunk-NWGBDBZI.js";import{buildCommandWithYes,outputActionRequired}from"../../chunks/chunk-5X635INY.js";import"../../chunks/chunk-FYE7ILRR.js";import{VERCEL_DIR,findRepoRoot,getLinkedProject,getLocalPathConfig,getUser,getVercelDirectory,highlight,localConfigFlagPath,require_dist2 as require_dist5,require_lib,resolveProjectCwd}from"../../chunks/chunk-2J35YKA2.js";import{require_pluralize}from"../../chunks/chunk-4HR3I3ML.js";import{printAlignedLabel}from"../../chunks/chunk-PKNEWN4W.js";import{ua_default}from"../../chunks/chunk-ITQPDXXA.js";import{getGlobalPathConfig}from"../../chunks/chunk-GL66K54F.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-AYZ52QDF.js";import"../../chunks/chunk-2VBFQZ72.js";import{warnDeprecatedSubcommand}from"../../chunks/chunk-SDYCW5JM.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import{APIError,CantParseJSONFile,LambdaSizeExceededError,MissingDotenvVarsError,NowError,isAPIError,require_bytes}from"../../chunks/chunk-4DMKP6AO.js";import{cmd,getCommandName,getCommandNamePlain,getTitleName}from"../../chunks/chunk-VRH7LWOC.js";import{pkg_default}from"../../chunks/chunk-DBT6PGEH.js";import{Diagnostic,defineDiagnostics,init_dist,link_default,output_manager_default}from"../../chunks/chunk-GZLYNPNU.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification}from"../../chunks/chunk-AMPJ6RWT.js";import{chars_default}from"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import{require_supports_color}from"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import{directFetch,getFetchDispatcher}from"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import"../../chunks/chunk-Q2QVK3TH.js";import{__commonJS,__require,__toESM}from"../../chunks/chunk-BZENIQ7N.js";var require_eventemitter3=__commonJS({"../../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(exports,module){"use strict";var has=Object.prototype.hasOwnProperty,prefix="~";function Events(){}Object.create&&(Events.prototype=Object.create(null),new Events().__proto__||(prefix=!1));function EE(fn,context,once2){this.fn=fn,this.context=context,this.once=once2||!1}function addListener(emitter,event,fn,context,once2){if(typeof fn!="function")throw new TypeError("The listener must be a function");var listener=new EE(fn,context||emitter,once2),evt=prefix?prefix+event:event;return emitter._events[evt]?emitter._events[evt].fn?emitter._events[evt]=[emitter._events[evt],listener]:emitter._events[evt].push(listener):(emitter._events[evt]=listener,emitter._eventsCount++),emitter}function clearEvent(emitter,evt){--emitter._eventsCount===0?emitter._events=new Events:delete emitter._events[evt]}function EventEmitter(){this._events=new Events,this._eventsCount=0}EventEmitter.prototype.eventNames=function(){var names=[],events,name;if(this._eventsCount===0)return names;for(name in events=this._events)has.call(events,name)&&names.push(prefix?name.slice(1):name);return Object.getOwnPropertySymbols?names.concat(Object.getOwnPropertySymbols(events)):names};EventEmitter.prototype.listeners=function(event){var evt=prefix?prefix+event:event,handlers=this._events[evt];if(!handlers)return[];if(handlers.fn)return[handlers.fn];for(var i=0,l=handlers.length,ee=new Array(l);i<l;i++)ee[i]=handlers[i].fn;return ee};EventEmitter.prototype.listenerCount=function(event){var evt=prefix?prefix+event:event,listeners=this._events[evt];return listeners?listeners.fn?1:listeners.length:0};EventEmitter.prototype.emit=function(event,a1,a2,a3,a4,a5){var evt=prefix?prefix+event:event;if(!this._events[evt])return!1;var listeners=this._events[evt],len=arguments.length,args,i;if(listeners.fn){switch(listeners.once&&this.removeListener(event,listeners.fn,void 0,!0),len){case 1:return listeners.fn.call(listeners.context),!0;case 2:return listeners.fn.call(listeners.context,a1),!0;case 3:return listeners.fn.call(listeners.context,a1,a2),!0;case 4:return listeners.fn.call(listeners.context,a1,a2,a3),!0;case 5:return listeners.fn.call(listeners.context,a1,a2,a3,a4),!0;case 6:return listeners.fn.call(listeners.context,a1,a2,a3,a4,a5),!0}for(i=1,args=new Array(len-1);i<len;i++)args[i-1]=arguments[i];listeners.fn.apply(listeners.context,args)}else{var length=listeners.length,j;for(i=0;i<length;i++)switch(listeners[i].once&&this.removeListener(event,listeners[i].fn,void 0,!0),len){case 1:listeners[i].fn.call(listeners[i].context);break;case 2:listeners[i].fn.call(listeners[i].context,a1);break;case 3:listeners[i].fn.call(listeners[i].context,a1,a2);break;case 4:listeners[i].fn.call(listeners[i].context,a1,a2,a3);break;default:if(!args)for(j=1,args=new Array(len-1);j<len;j++)args[j-1]=arguments[j];listeners[i].fn.apply(listeners[i].context,args)}}return!0};EventEmitter.prototype.on=function(event,fn,context){return addListener(this,event,fn,context,!1)};EventEmitter.prototype.once=function(event,fn,context){return addListener(this,event,fn,context,!0)};EventEmitter.prototype.removeListener=function(event,fn,context,once2){var evt=prefix?prefix+event:event;if(!this._events[evt])return this;if(!fn)return clearEvent(this,evt),this;var listeners=this._events[evt];if(listeners.fn)listeners.fn===fn&&(!once2||listeners.once)&&(!context||listeners.context===context)&&clearEvent(this,evt);else{for(var i=0,events=[],length=listeners.length;i<length;i++)(listeners[i].fn!==fn||once2&&!listeners[i].once||context&&listeners[i].context!==context)&&events.push(listeners[i]);events.length?this._events[evt]=events.length===1?events[0]:events:clearEvent(this,evt)}return this};EventEmitter.prototype.removeAllListeners=function(event){var evt;return event?(evt=prefix?prefix+event:event,this._events[evt]&&clearEvent(this,evt)):(this._events=new Events,this._eventsCount=0),this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.addListener=EventEmitter.prototype.on;EventEmitter.prefixed=prefix;EventEmitter.EventEmitter=EventEmitter;typeof module<"u"&&(module.exports=EventEmitter)}});var require_requires_port=__commonJS({"../../node_modules/.pnpm/requires-port@1.0.0/node_modules/requires-port/index.js"(exports,module){"use strict";module.exports=function(port,protocol){if(protocol=protocol.split(":")[0],port=+port,!port)return!1;switch(protocol){case"http":case"ws":return port!==80;case"https":case"wss":return port!==443;case"ftp":return port!==21;case"gopher":return port!==70;case"file":return!1}return port!==0}}});var require_common=__commonJS({"../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/common.js"(exports){var common=exports,url4=__require("url"),extend=Object.assign,required=require_requires_port(),upgradeHeader=/(^|,)\s*upgrade\s*($|,)/i,isSSL=/^https|wss/;common.isSSL=isSSL;common.setupOutgoing=function(outgoing,options,req,forward){outgoing.port=options[forward||"target"].port||(isSSL.test(options[forward||"target"].protocol)?443:80),["host","hostname","socketPath","pfx","key","passphrase","cert","ca","ciphers","secureProtocol"].forEach(function(e){outgoing[e]=options[forward||"target"][e]}),outgoing.method=options.method||req.method,outgoing.headers=extend({},req.headers),options.headers&&extend(outgoing.headers,options.headers),options.auth&&(outgoing.auth=options.auth),options.ca&&(outgoing.ca=options.ca),isSSL.test(options[forward||"target"].protocol)&&(outgoing.rejectUnauthorized=typeof options.secure>"u"?!0:options.secure),outgoing.agent=options.agent||!1,outgoing.localAddress=options.localAddress,outgoing.agent||(outgoing.headers=outgoing.headers||{},(typeof outgoing.headers.connection!="string"||!upgradeHeader.test(outgoing.headers.connection))&&(outgoing.headers.connection="close"));var target=options[forward||"target"],targetPath=target&&options.prependPath!==!1&&target.path||"",outgoingPath=options.toProxy?req.url:url4.parse(req.url).path||"";return outgoingPath=options.ignorePath?"":outgoingPath,outgoing.path=common.urlJoin(targetPath,outgoingPath),options.changeOrigin&&(outgoing.headers.host=required(outgoing.port,options[forward||"target"].protocol)&&!hasPort(outgoing.host)?outgoing.host+":"+outgoing.port:outgoing.host),outgoing};common.setupSocket=function(socket){return socket.setTimeout(0),socket.setNoDelay(!0),socket.setKeepAlive(!0,0),socket};common.getPort=function(req){var res=req.headers.host?req.headers.host.match(/:(\d+)/):"";return res?res[1]:common.hasEncryptedConnection(req)?"443":"80"};common.hasEncryptedConnection=function(req){return!!(req.connection.encrypted||req.connection.pair)};common.urlJoin=function(){var args=Array.prototype.slice.call(arguments),queryParams=[],queryParamRaw="",retSegs;return args.forEach((url5,index)=>{var qpStart=url5.indexOf("?");qpStart!==-1&&(queryParams.push(url5.substring(qpStart+1)),args[index]=url5.substring(0,qpStart))}),queryParamRaw=queryParams.filter(Boolean).join("&"),retSegs=args.filter(Boolean).join("/").replace(/\/+/g,"/").replace("http:/","http://").replace("https:/","https://"),queryParamRaw?retSegs+"?"+queryParamRaw:retSegs};common.rewriteCookieProperty=function rewriteCookieProperty(header,config,property){return Array.isArray(header)?header.map(function(headerElement){return rewriteCookieProperty(headerElement,config,property)}):header.replace(new RegExp("(;\\s*"+property+"=)([^;]+)","i"),function(match,prefix,previousValue){var newValue;if(previousValue in config)newValue=config[previousValue];else if("*"in config)newValue=config["*"];else return match;return newValue?prefix+newValue:""})};function hasPort(host){return!!~host.indexOf(":")}}});var require_web_outgoing=__commonJS({"../../node_modules/.pnpm/http-proxy-node16@1.0.6_debug@3.1.0/node_modules/http-proxy-node16/lib/http-proxy/passes/web-outgoing.js"(exports,module){var url4=__require("url"),common=require_common(),redirectRegex=/^201|30(1|2|7|8)$/;module.exports={removeChunked:function(req,res,proxyRes){req.httpVersion==="1.0"&&delete proxyRes.headers["transfer-encoding"]},setConnection:function(req,res,proxyRes){req.httpVersion==="1.0"?proxyRes.headers.connection=req.headers.connection||"close":req.httpVersion!=="2.0"&&!proxyRes.headers.connection&&(proxyRes.headers.connection=req.headers.connection||"keep-alive")},setRedirectHostRewrite:function(req,res,proxyRes,options){if((options.hostRewrite||options.autoRewrite||options.protocolRewrite)&&proxyRes.headers.location&&redirectRegex.test(proxyRes.statusCode)){var target=url4.parse(options.target),u=url4.parse(proxyRes.headers.location);if(target.host!=u.host)return;options.hostRewrite?u.host=options.hostRewrite:options.autoRewrite&&(u.host=req.headers.host),options.protocolRewrite&&(u.protocol=options.protocolRewrite),proxyRes.headers.location=u.format()}},writeHeaders:function(req,res,proxyRes,options){var rewriteCookieDomainConfig=options.cookieDomainRewrite,rewriteCookiePathConfig=options.cookiePathRewrite,preserveHeaderKeyCase=options.preserveHeaderKeyCase,rawHeaderKeyMap,setHeader=function(key2,header){header!=null&&(rewriteCookieDomainConfig&&key2.toLowerCase()==="set-cookie"&&(header=common.rewriteCookieProperty(header,rewriteCookieDomainConfig,"domain")),rewriteCookiePathConfig&&key2.toLowerCase()==="set-cookie"&&(header=common.rewriteCookieProperty(header,rewriteCookiePathConfig,"path")),res.setHeader(String(key2).trim(),header))};if(typeof rewriteCookieDomainConfig=="string"&&(rewriteCookieDomainConfig={"*":rewriteCookieDomainConfig}),typeof rewriteCookiePathConfig=="string"&&(rewriteCookiePathConfig={"*":rewriteCookiePathConfig}),preserveHeaderKeyCase&&proxyRes.rawHeaders!=null){rawHeaderKeyMap={};for(var i=0;i<proxyRes.rawHeaders.length;i+=2){var key=proxyRes.rawHeaders[i];rawHeaderKeyMap[key.toLowerCase()]=key}}Object.keys(proxyRes.headers).forEach(function(key2){var header=proxyRes.headers[key2];preserveHeaderKeyCase&&rawHeaderKeyMap&&(key2=rawHeaderKeyMap[key2]||key2),setHeader(key2,header)})},writeStatusCode:function(req,res,proxyRes){proxyRes.statusMessage?(res.statusCode=proxyRes.statusCode,res.statusMessage=proxyRes.statusMessage):res.statusCode=proxyRes.statusCode}}}});var require_ms2=__commonJS({"../../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js"(exports,module){var s=1e3,m=s*60,h=m*60,d=h*24,y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse2(val);if(type==="number"&&isNaN(val)===!1)return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse2(str){if(str=String(str),!(str.length>100)){var match=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms9){return ms9>=d?Math.round(ms9/d)+"d":ms9>=h?Math.round(ms9/h)+"h":ms9>=m?Math.round(ms9/m)+"m":ms9>=s?Math.round(ms9/s)+"s":ms9+"ms"}function fmtLong(ms9){return plural3(ms9,d,"day")||plural3(ms9,h,"hour")||plural3(ms9,m,"minute")||plural3(ms9,s,"second")||ms9+" ms"}function plural3(ms9,n,name){if(!(ms9<n))return ms9<n*1.5?Math.floor(ms9/n)+" "+name:Math.ceil(ms9/n)+" "+name+"s"}}});var require_debug=__commonJS({"../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/debug.js"(exports,module){exports=module.exports=createDebug.debug=createDebug.default=createDebug;exports.coerce=coerce;exports.disable=disable;exports.enable=enable;exports.enabled=enabled;exports.humanize=require_ms2();exports.instances=[];exports.names=[];exports.skips=[];exports.formatters={};function selectColor(namespace){var hash=0,i;for(i in namespace)hash=(hash<<5)-hash+namespace.charCodeAt(i),hash|=0;return exports.colors[Math.abs(hash)%exports.colors.length]}function createDebug(namespace){var prevTime;function debug(){if(debug.enabled){var self2=debug,curr=+new Date,ms9=curr-(prevTime||curr);self2.diff=ms9,self2.prev=prevTime,self2.curr=curr,prevTime=curr;for(var args=new Array(arguments.length),i=0;i<args.length;i++)args[i]=arguments[i];args[0]=exports.coerce(args[0]),typeof args[0]!="string"&&args.unshift("%O");var index=0;args[0]=args[0].replace(/%([a-zA-Z%])/g,function(match,format){if(match==="%%")return match;index++;var formatter=exports.formatters[format];if(typeof formatter=="function"){var val=args[index];match=formatter.call(self2,val),args.splice(index,1),index--}return match}),exports.formatArgs.call(self2,args);var logFn=debug.log||exports.log||console.log.bind(console);logFn.apply(self2,args)}}return debug.namespace=namespace,debug.enabled=exports.enabled(namespace),debug.useColors=exports.useColors(),debug.color=selectColor(namespace),debug.destroy=destroy,typeof exports.init=="function"&&exports.init(debug),exports.instances.push(debug),debug}function destroy(){var index=exports.instances.indexOf(this);return index!==-1?(exports.instances.splice(index,1),!0):!1}function enable(namespaces){exports.save(namespaces),exports.names=[],exports.skips=[];var i,split=(typeof namespaces=="string"?namespaces:"").split(/[\s,]+/),len=split.length;for(i=0;i<len;i++)split[i]&&(namespaces=split[i].replace(/\*/g,".*?"),namespaces[0]==="-"?exports.skips.push(new RegExp("^"+namespaces.substr(1)+"$")):exports.names.push(new RegExp("^"+namespaces+"$")));for(i=0;i<exports.instances.length;i++){var instance=exports.instances[i];instance.enabled=exports.enabled(instance.namespace)}}function disable(){exports.enable("")}function enabled(name){if(name[name.length-1]==="*")return!0;var i,len;for(i=0,len=exports.skips.length;i<len;i++)if(exports.skips[i].test(name))return!1;for(i=0,len=exports.names.length;i<len;i++)if(exports.names[i].test(name))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}}});var require_browser=__commonJS({"../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/browser.js"(exports,module){exports=module.exports=require_debug();exports.log=log;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:localstorage();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){return typeof window<"u"&&window.process&&window.process.type==="renderer"?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}exports.formatters.j=function(v){try{return JSON.stringify(v)}catch(err){return"[UnexpectedJSONParseError]: "+err.message}};function formatArgs(args){var useColors2=this.useColors;if(args[0]=(useColors2?"%c":"")+this.namespace+(useColors2?" %c":" ")+args[0]+(useColors2?"%c ":" ")+"+"+exports.humanize(this.diff),!!useColors2){var c="color: "+this.color;args.splice(1,0,c,"color: inherit");var index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,function(match){match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}}function log(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function save(namespaces){try{namespaces==null?exports.storage.removeItem("debug"):exports.storage.debug=namespaces}catch{}}function load(){var r;try{r=exports.storage.debug}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}exports.enable(load());function localstorage(){try{return window.localStorage}catch{}}}});var require_node=__commonJS({"../../node_modules/.pnpm/debug@3.1.0/node_modules/debug/src/node.js"(exports,module){var tty=__require("tty"),util=__require("util");exports=module.exports=require_debug();exports.init=init;exports.log=log;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.colors=[6,2,3,4,5,1];try{supportsColor=require_supports_color(),supportsColor&&supportsColor.level>=2&&(exports.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}var supportsColor;exports.inspectOpts=Object.keys(process.env).filter(function(key){return/^debug_/i.test(key)}).reduce(function(obj,key){var prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,function(_,k){return k.toUpperCase()}),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports.inspectOpts?!!exports.inspectOpts.colors:tty.isatty(process.stderr.fd)}exports.formatters.o=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts).split(`
8
8
  `).map(function(str){return str.trim()}).join(" ")};exports.formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)};function formatArgs(args){var name=this.namespace,useColors2=this.useColors;if(useColors2){var c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix=" "+colorCode+";1m"+name+" \x1B[0m";args[0]=prefix+args[0].split(`
9
9
  `).join(`
10
10
  `+prefix),args.push(colorCode+"m+"+exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log(){return process.stderr.write(util.format.apply(util,arguments)+`
@@ -39,7 +39,7 @@ ${partHeaders}\r
39
39
  `)))}parts.push(Uint8Array.from(Buffer.from(`--${boundary}--\r
40
40
  `)));let body=Buffer.concat(parts);res.writeHead(200,{"Content-Type":`multipart/mixed; boundary=${boundary}`,"Content-Length":body.length}),res.end(body);return}let leaseMatch=topicPath.match(/^([A-Za-z0-9_-]+)\/consumer\/([A-Za-z0-9_-]+)\/lease\/([^/]+)(?:\/visibility)?$/);if(leaseMatch&&(req.method==="DELETE"||req.method==="PATCH")){let[,,consumer,receiptHandle]=leaseMatch,messageId=this.queueBroker.findMessageIdByReceiptHandle(consumer,receiptHandle);if(!messageId){res.writeHead(404,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Message not found"}));return}if(req.method==="DELETE"){this.queueBroker.acknowledge(messageId,consumer,receiptHandle),res.writeHead(204),res.end();return}let body=await(0,import_raw_body2.default)(req),timeoutSeconds=DEV_QUEUES_DEFAULT_VISIBILITY_TIMEOUT_SECONDS;try{let parsed=JSON.parse(body.toString());typeof parsed.visibilityTimeoutSeconds=="number"&&parsed.visibilityTimeoutSeconds>=0&&(timeoutSeconds=parsed.visibilityTimeoutSeconds)}catch(err){output_manager_default.debug(`queues: failed to parse visibility timeout body: ${err}`)}this.queueBroker.changeVisibility(messageId,consumer,receiptHandle,timeoutSeconds),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}res.writeHead(404),res.end("Not Found")};this.handleRuntimeCacheRoute=async(req,res,pathname)=>{let store=this.runtimeCache;if(!store){res.writeHead(503),res.end("Runtime Cache not initialized");return}if(!pathname.startsWith(DEV_RUNTIME_CACHE_API_PREFIX)){res.writeHead(404),res.end("Not Found");return}let itemPath=pathname.slice(DEV_RUNTIME_CACHE_API_PREFIX.length),searchParams=new URL2(req.url||"/","http://localhost").searchParams;if(itemPath==="revalidate"){if(req.method!=="POST"){res.writeHead(405),res.end("Method Not Allowed");return}let tags=(searchParams.get("tags")||"").split(",").map(tag=>tag.trim()).filter(Boolean),itemId=searchParams.get("itemId")||void 0;if(tags.length===0&&!itemId){res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"No tags or itemId provided"}));return}tags.length>0&&(store.expireTags(tags),output_manager_default.debug(`runtime cache: expired tags "${tags.join(",")}"`)),itemId&&(store.delete(itemId),output_manager_default.debug(`runtime cache: expired item "${itemId}"`)),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({revalidated:!0}));return}let key;try{key=decodeURIComponent(itemPath)}catch{res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Invalid cache key"}));return}if(!key){res.writeHead(404),res.end("Not Found");return}if(req.method==="GET"){let hit=store.get(key);if(!hit){output_manager_default.debug(`runtime cache: MISS "${key}"`),res.writeHead(404),res.end("Not Found");return}output_manager_default.debug(`runtime cache: HIT "${key}"`);let headers={"Content-Type":"application/json","Content-Length":hit.value.length,[HEADER_CACHE_STATE]:"fresh",Age:String(hit.ageSeconds)};hit.tags.length>0&&(headers[HEADER_CACHE_TAGS]=hit.tags.join(",")),res.writeHead(200,headers),res.end(hit.value);return}if(req.method==="POST"){let revalidateHeader=req.headers[HEADER_REVALIDATE],ttlSeconds;if(revalidateHeader)if(revalidateHeader==="Infinity"||["false","False","FALSE","f","F"].includes(revalidateHeader))ttlSeconds=DEV_RUNTIME_CACHE_ONE_YEAR_SECONDS;else if(/^[+-]?\d+$/.test(revalidateHeader)){let parsedRevalidate=Number(revalidateHeader);if(!Number.isSafeInteger(parsedRevalidate)||parsedRevalidate<0){res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Invalid revalidate value"}));return}if(parsedRevalidate===0){res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}ttlSeconds=parsedRevalidate}else{res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Invalid revalidate value"}));return}let value;try{value=await(0,import_raw_body2.default)(req,{limit:DEV_RUNTIME_CACHE_MAX_ITEM_SIZE})}catch(err){if(err.statusCode===413){res.writeHead(413,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Cache item is too large"}));return}throw err}let tagsHeader=req.headers[HEADER_CACHE_TAGS];store.set(key,value,{ttlSeconds,tags:(tagsHeader||"").split(",").map(tag=>tag.trim()).filter(Boolean)});let name=req.headers[HEADER_CACHE_ITEM_NAME];output_manager_default.debug(`runtime cache: SET "${key}"${name?` (${name})`:""} ${value.length} bytes`),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}if(req.method==="DELETE"){store.delete(key),output_manager_default.debug(`runtime cache: DELETE "${key}"`),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}res.writeHead(405),res.end("Method Not Allowed")};this.serveProjectAsNowV2=async(req,res,requestId,vercelConfig,routes=vercelConfig.routes,callLevel=0)=>{let{debug}=output_manager_default;if(callLevel===0&&await this.handleSchedulesProxyRequest(req,res))return;let parsed=url3.parse(req.url||"/");if(typeof parsed.pathname=="string"&&parsed.pathname.includes("//")){let location=parsed.pathname.replace(/\/+/g,"/");if(parsed.search&&(location+=parsed.search),req.method==="GET"){await this.sendRedirect(req,res,requestId,location,301);return}debug(`Rewriting URL from "${req.url}" to "${location}"`),req.url=location}let queueProxyPrefix=`${DEV_QUEUE_PROXY_PREFIX}/${this.resourceProxyToken}`,runtimeCacheProxyPrefix=`${DEV_RUNTIME_CACHE_PREFIX}${this.resourceProxyToken}`;if(callLevel===0&&this.queueBroker){let pathname=parsed.pathname||"/";if(pathname.startsWith(`${queueProxyPrefix}/`)){if(!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}await this.handleQueuesRoute(req,res,pathname.slice(queueProxyPrefix.length));return}}if(callLevel===0){let pathname=parsed.pathname||"/";if(pathname.startsWith(`${runtimeCacheProxyPrefix}/`)){if(!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}await this.handleRuntimeCacheRoute(req,res,pathname.slice(runtimeCacheProxyPrefix.length));return}}if(callLevel===0&&this.bulkRedirects){let bulkMatch=resolveBulkRedirect(this.bulkRedirects,req.url||"/",typeof req.headers.host=="string"?req.headers.host:void 0);if(bulkMatch){debug(`Bulk redirect ${bulkMatch.statusCode}: ${req.url} -> ${bulkMatch.location}`),await this.sendRedirect(req,res,requestId,bulkMatch.location,bulkMatch.statusCode);return}}if(callLevel===0&&this.orchestrator){let pathname=parsed.pathname||"/",service=this.orchestrator.getServiceForRoute(pathname);if(service){debug(`Found service: ${service.name}`);let upstream=`http://${service.host}:${service.port}`;debug(`Proxying to service "${service.name}": ${upstream}`);let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.setResponseHeaders(res,requestId),proxyPass(req,res,upstream,this,requestId,!1)}}callLevel===0&&await this.updateBuildMatches(vercelConfig),this.blockingBuildsPromise&&(debug("Waiting for builds to complete before handling request"),await this.blockingBuildsPromise);let getReqUrl=rr=>{if(rr.dest){if(rr.query){let destParsed=url3.parse(rr.dest),destQuery=parseQueryString(destParsed.search);return Object.assign(destQuery,rr.query),destParsed.search=formatQueryString(destQuery),url3.format(destParsed)}return rr.dest}return req.url},handleMap=getRoutesTypes(routes),missRoutes=handleMap.get("miss")||[],hitRoutes=handleMap.get("hit")||[],errorRoutes=handleMap.get("error")||[],filesystemRoutes=handleMap.get("filesystem")||[],phases=[null,"filesystem"],routeResult=null,match=null,statusCode,prevUrl=req.url,prevHeaders={},requestTransforms=[],responseTransforms,middlewares=[...this.buildMatches.values()].filter(m=>m.config?.middleware===!0);for(let middleware of middlewares){let startMiddlewareResult,middlewarePid,{envConfigs,files,devCacheDir,cwd:workPath}=this;try{let{builder:builder2}=middleware.builderWithPkg;if(typeof builder2.startDevServer=="function"&&(startMiddlewareResult=await builder2.startDevServer({files,entrypoint:middleware.entrypoint,workPath,repoRootPath:this.repoRoot,config:{projectSettings:this.projectSettings,...middleware.config},meta:{isDev:!0,...this.getDevResourceMeta(),devCacheDir,requestUrl:req.url,env:this.getBuilderDevEnv(middleware,envConfigs.runEnv),buildEnv:{...envConfigs.buildEnv}}})),startMiddlewareResult){let{port,pid,shutdown}=startMiddlewareResult;middlewarePid=pid,this.shutdownCallbacks.set(pid,shutdown),debug(`Invoking middleware "${middleware.src}" (port=${port})`);let middlewareReqHeaders=nodeHeadersToFetchHeaders(req.headers),proxyHeaders=this.getProxyHeaders(req,requestId,!0);for(let[name,value]of nodeHeadersToFetchHeaders(proxyHeaders))middlewareReqHeaders.set(name,value);let middlewareReqPath=url3.parse(req.url||"/").path||"/",middlewareRes=await directFetch(`http://127.0.0.1:${port}${middlewareReqPath}`,{headers:middlewareReqHeaders,method:req.method,redirect:"manual"}),middlewareBody=Buffer.from(await middlewareRes.arrayBuffer());if(middlewareRes.status===500&&middlewareBody.byteLength===0){await this.sendError(req,res,requestId,"EDGE_FUNCTION_INVOCATION_FAILED",500);return}res.statusCode=middlewareRes.status;let rewritePath="",contentType2="",shouldContinue=!1,skipMiddlewareHeaders=new Set(["date","connection","content-length","transfer-encoding"]),middlewareHeaders=applyOverriddenHeaders(req.headers,middlewareRes.headers);for(let[name,value]of middlewareHeaders)name==="x-middleware-next"?shouldContinue=value==="1":name==="x-middleware-rewrite"?(rewritePath=value,shouldContinue=!0):name==="content-type"?contentType2=value:skipMiddlewareHeaders.has(name)||(applyChainResponseHeader(res,name,value),req.headers[name]=value);if(!shouldContinue){this.setResponseHeaders(res,requestId),middlewareBody.length>0?(res.setHeader("content-length",middlewareBody.length),contentType2&&res.setHeader("content-type",contentType2),res.end(middlewareBody)):res.end();return}if(rewritePath){debug(`Detected rewrite path from middleware: "${rewritePath}"`),prevUrl=rewritePath;let beforeRewriteUrl=req.url||"/";if(isURL(rewritePath)){let rewriteUrlParsed=new URL2(rewritePath);if(this.address.origin===rewriteUrlParsed.origin)req.url=rewritePath.slice(rewriteUrlParsed.origin.length)||"/",prevUrl=req.url;else{debug(`ProxyPass: ${rewritePath}`),this.setResponseHeaders(res,requestId),proxyPass(req,res,rewritePath,this,requestId);return}}else{let rewriteUrlParsed=url3.parse(beforeRewriteUrl);rewriteUrlParsed.search=url3.parse(rewritePath).search,req.url=url3.format(rewriteUrlParsed)}debug(`Rewrote incoming HTTP URL from "${beforeRewriteUrl}" to "${req.url}"`)}}}catch(err){(0,import_error_utils2.isSpawnError)(err)&&err.code==="ENOENT"&&(err.message=`Command not found: ${import_chalk2.default.cyan(err.path,...err.spawnargs)}
41
41
  Please ensure that ${cmd(err.path)} is properly installed`,err.link="https://vercel.link/command-not-found"),output_manager_default.prettyError(err),await this.sendError(req,res,requestId,"MIDDLEWARE_INVOCATION_FAILED",500);return}finally{middlewarePid&&this.killBuilderDevServer(middlewarePid)}}for(let phase of phases){statusCode=void 0;let phaseRoutes=handleMap.get(phase)||[];if(routeResult=await devRouter(prevUrl,req.method,phaseRoutes,this,vercelConfig,prevHeaders,missRoutes,phase),routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms),routeResult.continue&&(routeResult.dest&&(prevUrl=getReqUrl(routeResult)),routeResult.headers&&(prevHeaders=routeResult.headers)),callLevel===0&&this.orchestrator&&!routeResult.continue&&isServiceDestination(routeResult.matched_route))return this.delegateToService(req,res,requestId,routeResult.matched_route,vercelConfig,requestTransforms,responseTransforms);if(routeResult.isDestUrl){let destParsed=url3.parse(routeResult.dest),destQuery=parseQueryString(destParsed.search);Object.assign(destQuery,routeResult.query),destParsed.search=formatQueryString(destQuery);let destUrl=url3.format(destParsed);return this.prepareTransforms(req,requestTransforms,responseTransforms),debug(`ProxyPass: ${destUrl}`),this.setResponseHeaders(res,requestId),proxyPass(req,res,destUrl,this,requestId)}if(match=await findBuildMatch(this.buildMatches,this.files,routeResult.dest,this,vercelConfig),await this.exitWithStatus(match,routeResult,phase,req,res,requestId,responseTransforms))return;if(!match&&missRoutes.length>0){if(routeResult=await devRouter(getReqUrl(routeResult),req.method,missRoutes,this,vercelConfig,routeResult.headers,[],"miss"),routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms),match=await findBuildMatch(this.buildMatches,this.files,routeResult.dest,this,vercelConfig),await this.exitWithStatus(match,routeResult,phase,req,res,requestId,responseTransforms))return}else if(match&&hitRoutes.length>0){let prevStatus=routeResult.status;routeResult=await devRouter(getReqUrl(routeResult),req.method,hitRoutes,this,vercelConfig,routeResult.headers,[],"hit"),routeResult.status=prevStatus,routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms)}if(statusCode=routeResult.status,match||phase===null&&filesystemRoutes.length===0)break}if(!match&&routeResult&&errorRoutes.length>0){let routeResultForError=await devRouter(getReqUrl(routeResult),req.method,errorRoutes,this,vercelConfig,routeResult.headers,[],"error"),{matched_route}=routeResultForError,matchForError=await findBuildMatch(this.buildMatches,this.files,routeResultForError.dest,this,vercelConfig);if(matchForError)debug("Route match detected in error phase, breaking loop"),routeResult=routeResultForError,statusCode=routeResultForError.status,match=matchForError,routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms);else if(matched_route&&matched_route.src&&!matched_route.dest&&(debug("Route without `dest` detected in error phase, attempting to exit early"),await this.exitWithStatus(matchForError,routeResultForError,"error",req,res,requestId,responseTransforms)))return}if(!routeResult)throw dev.DEV_INTERNAL_NO_ROUTE_RESULT();let{dest,query,headers}=routeResult;for(let[name,value]of Object.entries(headers))res.setHeader(name,value);statusCode&&Object.defineProperty(res,"statusCode",{get(){return statusCode},set(_){}});let requestPath=dest.replace(/^\//,"");if(!match){if(this.devProcessOrigin){let upstream=this.devProcessOrigin;debug(`Proxying to frontend dev server: ${upstream}`);let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;this.setResponseHeaders(res,requestId);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);return origUrl.pathname=dest,Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format(origUrl),this.prepareTransforms(req,requestTransforms,responseTransforms),proxyPass(req,res,upstream,this,requestId,!1)}(statusCode===404&&routeResult.phase==="miss"||!this.renderDirectoryListing(req,res,requestPath,requestId))&&await this.send404(req,res,requestId);return}let buildRequestPath=match.buildResults.has(null)?null:requestPath,buildResult=match.buildResults.get(buildRequestPath);if(buildResult&&Array.isArray(buildResult.routes)&&buildResult.routes.length>0){let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);origUrl.pathname=dest,Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery);let newUrl=url3.format(origUrl);debug(`Checking build result's ${buildResult.routes.length} \`routes\` to match ${newUrl}`);let matchedRoute=await devRouter(newUrl,req.method,buildResult.routes,this,vercelConfig);if(matchedRoute.found&&callLevel===0){debug(`Found matching route ${matchedRoute.dest} for ${newUrl}`),req.url=newUrl,await this.serveProjectAsNowV2(req,res,requestId,vercelConfig,buildResult.routes,callLevel+1);return}}let{builder,pkg:builderPkg}=match.builderWithPkg;if(typeof builder.startDevServer=="function"){let devServerResult=null;try{devServerResult=await this.startBuildMatchDevServer(match,requestPath)}catch(err){(0,import_error_utils2.isSpawnError)(err)&&err.code==="ENOENT"&&(err.message=`Command not found: ${import_chalk2.default.cyan(err.path,...err.spawnargs)}
42
- Please ensure that ${cmd(err.path)} is properly installed`,err.link="https://vercel.link/command-not-found"),output_manager_default.prettyError(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}if(devServerResult){requestId=generateRequestId(this.podId,!0);let{port,pid,shutdown,persistent}=devServerResult;this.shutdownCallbacks.set(pid,shutdown),persistent||res.once("close",()=>{this.killBuilderDevServer(pid)}),debug(`Proxying to "${builderPkg.name}" dev server (port=${port}, pid=${pid})`);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search});let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,`http://127.0.0.1:${port}`,this,requestId,!1)}else debug(`Skipping \`startDevServer()\` for ${match.entrypoint}`)}let foundAsset=findAsset(match,requestPath,vercelConfig);if(!foundAsset&&callLevel===0&&(await this.triggerBuild(match,buildRequestPath,req,vercelConfig),foundAsset=findAsset(match,requestPath,vercelConfig)),this.devProcessOrigin&&(!foundAsset||foundAsset&&foundAsset.asset.type!=="Lambda")){debug("Proxying to frontend dev server");let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,this.devProcessOrigin,this,requestId,!1)}if(!foundAsset){await this.send404(req,res,requestId);return}let{asset:asset2,assetKey}=foundAsset;switch(debug(`Serving asset: [${asset2.type}] ${assetKey} ${asset2.contentType||""}`),asset2.type){case"FileFsRef":this.setResponseHeaders(res,requestId);let staticResHeaders={};applyResponseTransforms(staticResHeaders,responseTransforms??[]);for(let[name,value]of Object.entries(staticResHeaders))value!==void 0&&res.setHeader(name,value);return req.url=`/${basename(asset2.fsPath)}`,serveStaticFile(req,res,dirname3(asset2.fsPath),{headers:[{source:"**/*",headers:[{key:"Content-Type",value:asset2.contentType||getMimeType(assetKey)}]}]});case"FileBlob":let headers2={"Content-Length":asset2.data.length,"Content-Type":asset2.contentType||getMimeType(assetKey)};applyResponseTransforms(headers2,responseTransforms??[]),this.setResponseHeaders(res,requestId,headers2),res.end(asset2.data);return;case"Lambda":if(!asset2.fn){await this.sendError(req,res,requestId,"INTERNAL_LAMBDA_NOT_FOUND");return}requestId=generateRequestId(this.podId,!0);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search}),applyRequestTransforms(req,requestTransforms);let path6=req.url||"/",body=await(0,import_raw_body2.default)(req);debug(`Invoking lambda: "${assetKey}" with ${path6}`);let result;try{result=await this.invokeBuiltLambda(asset2,req,requestId,body)}catch(err){console.error(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}statusCode||(res.statusCode=result.statusCode);let lambdaHeaders=result.headers??{};applyResponseTransforms(lambdaHeaders,responseTransforms??[]),this.setResponseHeaders(res,requestId,lambdaHeaders);let resBody;return result.encoding==="base64"&&typeof result.body=="string"?resBody=Buffer.from(result.body,"base64"):resBody=result.body,res.end(resBody);default:await this.sendError(req,res,requestId,"UNKNOWN_ASSET_TYPE")}};if(this.cwd=cwd,this.repoRoot=options.repoRoot??cwd,this.envConfigs={buildEnv:{},runEnv:{},allEnv:{}},this.envValues=options.envValues||{},this.projectId=options.projectId,this.orgId=options.orgId,this.queuePort=options.queuePort,this.runtimeCachePort=options.runtimeCachePort,this.schedulesPort=options.schedulesPort,this.routing=options.routing??!0,this.devCommandPort=options.devCommandPort,this.onConfig=options.onConfig,!this.routing&&!this.devCommandPort)throw new Error("Running without the router needs a `devCommandPort`");this.scheduleBroker=new import_local_schedules2.ScheduleBroker({ownerId:this.orgId??"team_local",projectId:this.projectId??"prj_local",trackId:"development",dispatch:invocation=>this.dispatchSchedule(invocation),onError:(err,invocation)=>{try{output_manager_default.error(`Failed to dispatch schedule "${invocation.schedule.name}": ${(0,import_error_utils2.errorToString)(err)}`)}catch{}}}),this.resourceProxyToken=randomBytes2(32).toString("base64url"),this.reportError=createErrorReporter2(code=>options.onErrorCode?.(code)),this.files={},this.originalProjectSettings=options.projectSettings,this.projectSettings=options.projectSettings,this.services=options.services,this.useImplicitServicesEnvInjection=options.useImplicitServicesEnvInjection??!0,this.caseSensitive=!1,this.apiDir=null,this.apiExtensions=new Set,this.proxy=import_http_proxy_node16.default.createProxyServer({changeOrigin:!0,ws:!0,xfwd:!0}),this.proxy.on("proxyRes",(proxyRes,req)=>{proxyRes.headers.server="Vercel";let responseTransforms=this.responseTransformsByReq.get(req);responseTransforms&&(this.responseTransformsByReq.delete(req),applyResponseTransforms(proxyRes.headers,responseTransforms))}),this.proxy.on("error",(err,req,res)=>{if(output_manager_default.debug(`Proxy error for ${req?.url??"unknown request"}: ${(0,import_error_utils2.errorToString)(err)}`),!!res){if("destroy"in res&&typeof res.destroy=="function"){res.destroy();return}res instanceof http.ServerResponse&&(res.headersSent||res.writeHead(502),res.end())}}),this.server=http.createServer(this.devServerHandler),this.server.timeout=0,this.queueServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.queueOrigin,this.handleQueuesRoute)}),this.runtimeCacheServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.runtimeCacheOrigin,this.handleRuntimeCacheRoute)}),this.schedulesServer=http.createServer((req,res)=>{this.schedulesSession&&res.setHeader(LOCAL_SCHEDULES_SESSION_HEADER,this.schedulesSession.session.id),this.handleResourceServerRequest(req,res,this.schedulesOrigin,this.handleSchedulesRoute)}),this.stopping=!1,this.buildMatches=new Map,this.inProgressBuilds=new Map,this.devCacheDir=join5(getVercelDirectory(cwd),"cache"),this.vercelConfigWarning=!1,this.getVercelConfigPromise=null,this.blockingBuildsPromise=null,this.startPromise=null,this.bulkRedirects=null,this.bulkRedirectsSignature=null,this.bulkRedirectsLastPath=null,this.bulkRedirectsResolvedPath=null,this.bulkRedirectsDirty=!0,this.watchAggregationId=null,this.watchAggregationEvents=[],this.watchAggregationTimeout=500,this.filter=path6=>!!path6,this.podId=Math.random().toString(32).slice(-5),this.shutdownCallbacks=new Map}get address(){if(!this._address)throw dev.DEV_INTERNAL_ADDRESS_UNAVAILABLE();return this._address}shouldUseServicesOrchestrator(){return!!(this.services&&this.services.length>0)}hasSubscribers(){return!!this.sidecars?.length}getDevQueueEnv(){return this.queueOrigin?getDevQueueEnv(this.queueOrigin,this.hasSubscribers()):{}}getDevRuntimeCacheEnv(env){return!this.runtimeCacheOrigin||env.RUNTIME_CACHE_ENDPOINT?{}:process.env.RUNTIME_CACHE_ENDPOINT?{RUNTIME_CACHE_ENDPOINT:process.env.RUNTIME_CACHE_ENDPOINT,...process.env.RUNTIME_CACHE_HEADERS?{RUNTIME_CACHE_HEADERS:process.env.RUNTIME_CACHE_HEADERS}:{}}:getDevRuntimeCacheEnv(this.runtimeCacheOrigin,DEV_RUNTIME_CACHE_API_PREFIX)}get resourceEndpoints(){if(!this.queueOrigin||!this.runtimeCacheOrigin)throw new Error("Local resource servers have not started");let proxied=(direct,path6)=>this.routing?`${this.address.origin}${path6}`:direct,runtimeCache=`${this.runtimeCacheOrigin}${DEV_RUNTIME_CACHE_API_PREFIX}`;return{queues:{direct:this.queueOrigin,proxy:proxied(this.queueOrigin,`${DEV_QUEUE_PROXY_PREFIX}/${this.resourceProxyToken}`)},runtimeCache:{direct:runtimeCache,proxy:proxied(runtimeCache,`${DEV_RUNTIME_CACHE_PREFIX}${this.resourceProxyToken}${DEV_RUNTIME_CACHE_API_PREFIX}`)},...this.schedulesOrigin?{schedules:{direct:this.schedulesOrigin,proxy:proxied(this.schedulesOrigin,`${DEV_SCHEDULES_PROXY_PREFIX}/${this.resourceProxyToken}`)}}:{}}}getDevResourceMeta(){return{devResourceEndpoints:this.resourceEndpoints}}handleResourceServerRequest(req,res,origin,handler){if(!origin||!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}if(!isValidDevResourceHost(origin,req.headers.host)){res.writeHead(403),res.end("Forbidden");return}let pathname=new URL2(req.url||"/","http://127.0.0.1").pathname;handler(req,res,pathname).catch(err=>{output_manager_default.debug(`Local resource request failed for ${req.url||"/"}: ${(0,import_error_utils2.errorToString)(err)}`),res.headersSent||res.writeHead(500),res.end("Internal Server Error")})}isAuthorizedResourceRequest(req,token){let authorization=req.headers.authorization;if(typeof authorization!="string")return!1;let encoder=new TextEncoder,actual=encoder.encode(authorization),expected=encoder.encode(`Bearer ${token}`);return actual.length===expected.length&&timingSafeEqual(actual,expected)}getBuilderDevEnv(match,env){let result={...env,...getDevSchedulesEnv(this.schedulesOrigin)};if(match.builderWithPkg.pkg.name!=="@vercel/container")return result;let endpoints=this.resourceEndpoints;return Object.assign(result,getDevSchedulesEnv(endpoints.schedules?.proxy,!0)),result.VERCEL_QUEUE_BASE_URL===endpoints.queues.direct&&Object.assign(result,getDevQueueEnv(endpoints.queues.proxy,result.VERCEL_HAS_WORKER_SERVICES!==void 0)),result.RUNTIME_CACHE_ENDPOINT===endpoints.runtimeCache.direct&&Object.assign(result,getDevRuntimeCacheEnv(endpoints.runtimeCache.proxy,"")),result}getSidecarDevMeta(match){let serviceCount=(this.sidecars??[]).filter(sidecar=>sidecar.builder.use!==match.use?!1:!sidecar.workspace||sidecar.workspace===".").length;return serviceCount>0?{serviceCount}:{}}async setupBuilderDevSidecars(){if(this.shouldUseServicesOrchestrator())return;let sidecars=this.sidecars??[];if(sidecars.length===0)return;Object.assign(this.envConfigs.runEnv,this.getDevQueueEnv());let services=sidecars.map(toOrchestratorService),orchestrator=new ServicesOrchestrator({services,cwd:this.cwd,repoRoot:this.repoRoot,env:this.envConfigs.allEnv,proxyOrigin:this.address.origin,resourceEndpoints:this.resourceEndpoints,useImplicitEnvInjection:!1,preferServiceBuilder:!0,onQueueSubscriptions:(serviceName,subscriptions)=>this.queueBroker?.updateServiceSubscriptions(serviceName,subscriptions)});this.sidecarOrchestrator=orchestrator,this.queueBroker?.registerServices(services);try{await orchestrator.startAll()}catch(err){throw await orchestrator.stopAll(),this.sidecarOrchestrator=void 0,this.sidecars=[],err}output_manager_default.log(`Started ${sidecars.length} development ${(0,import_pluralize2.default)("sidecar",sidecars.length)}`)}async exit(code=1){await this.stop(code),process.exit(code)}enqueueFsEvent(type,path6){this.bulkRedirectsResolvedPath&&(path6===this.bulkRedirectsResolvedPath||path6.startsWith(this.bulkRedirectsResolvedPath+sep2))&&(this.bulkRedirectsDirty=!0),this.watchAggregationEvents.push({type,path:path6}),this.watchAggregationId===null&&(this.watchAggregationId=setTimeout(()=>{let events=this.watchAggregationEvents.slice();this.watchAggregationEvents.length=0,this.watchAggregationId=null,this.handleFilesystemEvents(events).catch(err=>{output_manager_default.prettyError(err),(0,import_error_utils2.isError)(err)&&typeof err.stack=="string"&&output_manager_default.debug(err.stack)})},this.watchAggregationTimeout))}async handleFilesystemEvents(events){if(this.stopping)return;output_manager_default.debug(`Filesystem watcher notified of ${events.length} events`);let filesChanged=new Set,filesRemoved=new Set,distPaths=[];for(let buildMatch of this.buildMatches.values())for(let buildResult of buildMatch.buildResults.values())buildResult.distPath&&distPaths.push(buildResult.distPath);if(events=events.filter(event=>distPaths.every(distPath=>!event.path.startsWith(distPath))),events.length!==0){this.functionReconciliations++;try{this.configGeneration++,this.functionDiscovery=void 0;for(let event of events)event.type==="add"?await this.handleFileCreated(event.path,filesChanged,filesRemoved):event.type==="unlink"?this.handleFileDeleted(event.path,filesChanged,filesRemoved):event.type==="change"&&await this.handleFileModified(event.path,filesChanged,filesRemoved);let vercelConfig=await this.getVercelConfig();if(this.stopping)return;await this.updateBuildMatches(vercelConfig);let filesChangedArray=[...filesChanged],filesRemovedArray=[...filesRemoved],needsRebuild=new Map;for(let match of this.buildMatches.values()){this.canonicalizeFunctionBuild(match);for(let[requestPath,result]of match.buildResults)if(!needsRebuild.has(result)&&Array.isArray(result.watch)){for(let pattern of result.watch)if(minimatches(filesChangedArray,pattern)||minimatches(filesRemovedArray,pattern)){needsRebuild.set(result,[requestPath,match]);break}}}if(needsRebuild.size>0){output_manager_default.debug(`Triggering ${needsRebuild.size} rebuilds`),filesChangedArray.length>0&&output_manager_default.debug(`Files changed: ${filesChangedArray.join(", ")}`),filesRemovedArray.length>0&&output_manager_default.debug(`Files removed: ${filesRemovedArray.join(", ")}`);for(let[result,[requestPath,match]]of needsRebuild)requestPath===null||await shouldServe(match,this.files,requestPath,this,vercelConfig)?this.triggerBuild(match,requestPath,null,vercelConfig,result,filesChangedArray,filesRemovedArray).catch(err=>{output_manager_default.warn(`An error occurred while rebuilding \`${match.src}\`:`),console.error(err.stack)}):output_manager_default.debug(`Not rebuilding because \`shouldServe()\` returned \`false\` for "${match.use}" request path "${requestPath}"`)}}finally{this.functionReconciliations--}}}async handleFileCreated(fsPath,changed,removed){let name=relative(this.cwd,fsPath);try{await this.getVercelConfig(),this.files[name]=await import_build_utils9.FileFsRef.fromFsPath({fsPath});let extensionless=this.getExtensionlessFile(name);extensionless&&(this.files[extensionless]=await import_build_utils9.FileFsRef.fromFsPath({fsPath})),fileChanged(name,changed,removed),output_manager_default.debug(`File created: ${name}`)}catch(err){if((0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File created, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}handleFileDeleted(fsPath,changed,removed){let name=relative(this.cwd,fsPath);output_manager_default.debug(`File deleted: ${name}`),fileRemoved(name,this.files,changed,removed);let extensionless=this.getExtensionlessFile(name);extensionless&&(output_manager_default.debug(`File deleted: ${extensionless}`),fileRemoved(extensionless,this.files,changed,removed))}async handleFileModified(fsPath,changed,removed){let name=relative(this.cwd,fsPath);try{this.files[name]=await import_build_utils9.FileFsRef.fromFsPath({fsPath}),fileChanged(name,changed,removed),output_manager_default.debug(`File modified: ${name}`)}catch(err){if((0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File modified, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}async updateBuildMatches(vercelConfig,isInitial=!1){let fileList=this.resolveBuildFiles(this.files),matches=await getBuildMatches(vercelConfig,this.cwd,this,fileList),sources=matches.map(m=>m.src);isInitial&&fileList.length===0&&output_manager_default.warn("There are no files inside your deployment.");let ops=[];for(let src of this.buildMatches.keys())if(!sources.includes(src)){output_manager_default.debug(`Removing build match for "${src}"`);let match=this.buildMatches.get(src);match&&ops.push(shutdownBuilder(match)),this.buildMatches.delete(src)}await Promise.all(ops);let blockingBuilds=[];for(let match of matches){let currentMatch=this.buildMatches.get(match.src);if(!buildMatchEquals(currentMatch,match)&&(output_manager_default.debug(`Adding build match for "${match.src}" with "${match.use}"`),this.buildMatches.set(match.src,match),!isInitial&&needsBlockingBuild(match))){let buildPromise=executeBuild(vercelConfig,this,this.files,match,null,!1);blockingBuilds.push(buildPromise)}}if(blockingBuilds.length>0&&(output_manager_default.debug(`Waiting for ${blockingBuilds.length} "blocking builds"`),this.blockingBuildsPromise=Promise.all(blockingBuilds).then(()=>{output_manager_default.debug('Cleaning up "blockingBuildsPromise" after successful resolve'),this.blockingBuildsPromise=null}).catch(err=>{output_manager_default.debug(`Cleaning up "blockingBuildsPromise" after error: ${err}`),this.blockingBuildsPromise=null,err&&output_manager_default.prettyError(err)})),this.buildMatches=new Map([...this.buildMatches.entries()].sort((matchA,matchB)=>sortBuilders(matchA[1],matchB[1]))),isInitial){let warnings=new Set;for(let match of this.buildMatches.values()){let{builder}=match.builderWithPkg;if(!builder.getDevWarnings)continue;let builderWarnings=await builder.getDevWarnings({files:this.files,entrypoint:match.entrypoint,workPath:this.cwd,repoRootPath:this.repoRoot,config:{projectSettings:this.projectSettings,...match.config},meta:{isDev:!0,env:this.getBuilderDevEnv(match,this.envConfigs.runEnv),buildEnv:{...this.envConfigs.buildEnv}}});for(let warning of builderWarnings)warnings.add(warning)}for(let warning of warnings)output_manager_default.warn(warning)}}async getLocalEnv(fileName,base){let filePath=join5(this.cwd,fileName),env={};try{let dotenv=await import_fs_extra.default.readFile(filePath,"utf8");output_manager_default.debug(`Using local env: ${filePath}`),env=(0,import_dotenv.parse)(dotenv),env=this.injectSystemValuesInDotenv(env)}catch(err){if(!(0,import_error_utils2.isErrnoException)(err)||err.code!=="ENOENT")throw err}try{return{...this.validateEnvConfig(fileName,base||{},env)}}catch(err){if(err instanceof MissingDotenvVarsError)this.reportError(err),await this.exit();else throw err}return{}}getVercelConfig(){if(this.getVercelConfigPromise)return this.getVercelConfigPromise;this.getVercelConfigPromise=(async()=>{for(;;){let generation=this.configGeneration;try{let config=await this._getVercelConfig();if(this.stopping||generation===this.configGeneration)return config}catch(err){if(this.stopping||generation===this.configGeneration)throw err}this.functionDiscovery=void 0}})();let clear=this.clearVercelConfigPromise;return this.getVercelConfigPromise.then(clear,clear),this.getVercelConfigPromise}get devCommand(){return this.getDevCommand(this.projectSettings)}get devCommandOrigin(){return this.devProcessOrigin}getDevCommand(projectSettings){if(projectSettings?.devCommand)return projectSettings.devCommand;if(projectSettings?.framework){let frameworkSlug=projectSettings.framework,framework=import_frameworks3.frameworkList.find(f=>f.slug===frameworkSlug);if(framework){let defaults=framework.settings.devCommand.value;if(defaults)return defaults}if((0,import_build_utils9.shouldUseExperimentalBackends)(frameworkSlug))return"npx @vercel/cervel dev"}}getFunctionDiscovery(options){let key=JSON.stringify(options);if(!this.functionDiscovery||this.functionDiscovery.key!==key){let promise=collectDevFunctions(options);this.functionDiscovery={key,promise},promise.catch(()=>{this.functionDiscovery?.promise===promise&&(this.functionDiscovery=void 0)})}return this.functionDiscovery.promise}getDevFunction(outputPath){return this.functionRegistry.functions.get(outputPath)}getDevSchedules(){return this.functionRegistry.schedules}async dispatchSchedule({delivery,signal}){if(signal.throwIfAborted(),this.stopping)throw new Error("Local Schedules is stopping");if(delivery.type==="queue"){if(!this.queueBroker)throw new Error("Local Queue broker is not ready");this.queueBroker.enqueue(delivery.topic,Buffer.from(JSON.stringify(delivery.message)),"application/json");return}if(delivery.type==="path"){if(!this._address)throw new Error(`Schedule path "${delivery.path}" is not ready because vercel dev is not listening yet`);signal.throwIfAborted();let cronSecret=this.envConfigs.runEnv.CRON_SECRET??process.env.CRON_SECRET,response=await directFetch(`${this._address.origin}${delivery.path}`,{method:delivery.requestMethod,headers:{...delivery.headers,...cronSecret?{authorization:`Bearer ${cronSecret}`}:{}},signal});if(!response.ok)throw new Error(`Schedule path "${delivery.path}" returned HTTP ${response.status}`);return}let invoke=this.resolveDevFunction(delivery.function);if(!invoke)throw new Error(`Schedule function "${delivery.function}" is missing or not ready`);signal.throwIfAborted();let onAbort=()=>{},aborted=new Promise((_,reject)=>{onAbort=()=>reject(signal.reason),signal.addEventListener("abort",onAbort,{once:!0})});try{let result=await Promise.race([aborted,invoke({method:"POST",headers:delivery.headers,body:Buffer.alloc(0),signal})]);if(!result)throw new Error(`Schedule function "${delivery.function}" is missing or not ready`);if(!result.ok)throw new Error(`Schedule function "${delivery.function}" returned HTTP ${result.status}`)}finally{signal.removeEventListener("abort",onAbort)}}resolveDevFunction(outputPath){let fn=this.getDevFunction(outputPath);if(!fn||this.stopping)return null;if(fn.invocation.type==="http"){if(!this.devProcessOrigin)return null}else if(!this.functionDispatchReady||this.functionReconciliations>0||!this.getDevFunctionMatch(fn))return null;return request3=>this.invokeDevFunction(outputPath,request3)}getDevFunctionMatch(fn){if(fn.invocation.type!=="entrypoint"||fn.scope.target!=="builder")return;let{entrypoint}=fn.invocation;return[...this.buildMatches.values()].find(match=>match.entrypoint===entrypoint&&match.use===fn.scope.build.use&&(0,import_fast_deep_equal.default)(match.config??{},fn.scope.build.config??{}))}canonicalizeFunctionBuild(match){if(![...this.functionRegistry.functions.values()].some(fn=>this.getDevFunctionMatch(fn)===match))return!1;if(match.buildResults.size&&!(match.buildResults.size===1&&match.buildResults.has(null))){let results=[...match.buildResults.values()],result=results[results.length-1];result.watch=[...new Set(results.flatMap(result2=>result2.watch))],match.buildResults.clear(),match.buildResults.set(null,result)}return!0}async invokeDevFunction(outputPath,request3){request3.signal?.throwIfAborted();let fn=this.getDevFunction(outputPath);if(!fn||!this.resolveDevFunction(outputPath))return null;let generation=this.configGeneration,isCurrent=()=>!this.stopping&&generation===this.configGeneration&&this.getDevFunction(outputPath)===fn;if(fn.invocation.type==="http"){let response=await directFetch(`${this.devProcessOrigin}${fn.invocation.pathname}`,{...request3,redirect:"manual"});return await response.arrayBuffer(),{ok:response.ok,status:response.status}}let match=this.getDevFunctionMatch(fn),config=this.functionConfig,req=new http.IncomingMessage(new Socket);req.method=request3.method,req.url=`/${outputPath}`,req.headers={host:this.address.host,...request3.headers};let requestId=generateRequestId(this.podId,!0),currentMatch=()=>!request3.signal?.aborted&&isCurrent()&&this.getDevFunctionMatch(fn)===match,devServerResult=await this.startBuildMatchDevServer(match,outputPath);if(devServerResult){let{port,pid,shutdown,persistent}=devServerResult;this.shutdownCallbacks.set(pid,shutdown);try{if(!currentMatch())return null;let response=await directFetch(`http://127.0.0.1:${port}/${outputPath}`,{...request3,headers:nodeHeadersToFetchHeaders({...req.headers,...this.getProxyHeaders(req,requestId,!0)}),redirect:"manual"});return await response.arrayBuffer(),{ok:response.ok,status:response.status}}finally{let current=this.getDevFunction(outputPath);(this.stopping||!persistent||!current||this.getDevFunctionMatch(current)!==match)&&this.shutdownCallbacks.has(pid)&&await this.killBuilderDevServer(pid)}}if(!currentMatch())return null;let{entrypoint}=fn.invocation,getAsset=()=>match.buildOutput[(match.buildResultVersion??match.builderWithPkg.builder.version)===2?outputPath:entrypoint];this.canonicalizeFunctionBuild(match);let asset2=getAsset();if((!asset2||this.inProgressBuilds.get(match)?.size)&&(await this.triggerBuild(match,null,null,config),asset2=getAsset()),!currentMatch())return null;if(!asset2||asset2.type!=="Lambda"||!asset2.fn)return{ok:!1,status:404};let result=await this.invokeBuiltLambda(asset2,req,requestId,request3.body);return{ok:result.statusCode>=200&&result.statusCode<300,status:result.statusCode}}async startBuildMatchDevServer(match,requestPath){let{builder}=match.builderWithPkg;if(!builder.startDevServer)return null;let{envConfigs,files,devCacheDir,cwd:workPath}=this;return builder.startDevServer({files,entrypoint:match.entrypoint,workPath,config:match.config||{},repoRootPath:this.repoRoot,meta:{isDev:!0,...this.getDevResourceMeta(),requestPath,devCacheDir,...this.getSidecarDevMeta(match),env:this.getBuilderDevEnv(match,{...envConfigs.runEnv,VERCEL_DEBUG_PREFIX:output_manager_default.debugEnabled?"[builder]":void 0}),buildEnv:{...envConfigs.buildEnv}}})}invokeBuiltLambda(asset2,req,requestId,body){let payload={method:req.method||"GET",host:req.headers.host,path:req.url||"/",headers:{...req.headers,...this.getProxyHeaders(req,requestId,!0)},encoding:"base64",body:body.toString("base64")};return asset2.fn({Action:"Invoke",body:JSON.stringify(payload)})}async _getVercelConfig(){let generation=this.configGeneration,configPath=localConfigFlagPath();if(!configPath){let{compileVercelConfig}=await import("../../chunks/compile-vercel-config-ZKUTSDWV.js"),compiled=await compileVercelConfig(this.cwd);configPath=getLocalPathConfig(this.cwd,!!compiled.sourceFile)}let[pkg=null,vercelConfig={version:2,[import_client.fileNameSymbol]:"vercel.json"}]=await Promise.all([this.readJsonFile("package.json"),this.readJsonFile(configPath,!0)]);await this.validateVercelConfig(vercelConfig);let functionConfig=structuredClone(vercelConfig),sourceFiles;for(let[name,service]of Object.entries(this.queueBroker?vercelConfig.services??vercelConfig.experimentalServicesV2??{}:{}))if(Object.values(service.functions??{}).some(fn=>fn.experimentalTriggers?.some(trigger=>trigger.type==="queue/v2beta")))throw dev.DEV_QUEUE_FUNCTION_UNSUPPORTED({sourceFile:`services.${name}.functions`,reason:"service-hosted function queue triggers are not supported locally yet"});let nextProjectSettings={...this.originalProjectSettings,...pickOverrides(vercelConfig)},{error:routeError,routes:maybeRoutes}=(0,import_routing_utils3.getTransformedRoutes)(vercelConfig);routeError&&(this.reportError(routeError),await this.exit()),vercelConfig.routes=maybeRoutes||[];let hasServices=(this.services?.length??0)>0,hasResolvedServices=!!this.services&&this.services.length>0,schedules=(0,import_build_utils9.getNamedSchedules)(functionConfig.schedules),scheduleEntrypointPlan;if(!hasResolvedServices&&schedules.some(import_schedule_entrypoint.hasScheduleEntrypointTarget)&&(sourceFiles=(await staticFiles(this.cwd,{})).map(f=>relative(this.cwd,f)),scheduleEntrypointPlan=(0,import_schedule_entrypoint.planScheduleEntrypoints)({schedules,files:sourceFiles,framework:nextProjectSettings.framework,functions:functionConfig.functions})),!vercelConfig.experimentalServices&&!hasResolvedServices&&(!vercelConfig.builds||vercelConfig.builds.length===0)){let{projectSettings,cleanUrls,trailingSlash}=vercelConfig,files=sourceFiles??(await staticFiles(this.cwd,{})).map(f=>relative(this.cwd,f));sourceFiles=files;let detectionOptions={tag:"latest",reservedFunctionFiles:scheduleEntrypointPlan?.reservedFunctionFiles,bunVersion:vercelConfig.bunVersion,functions:vercelConfig.functions,projectSettings:projectSettings||nextProjectSettings,featHandleMiss:!0,cleanUrls,trailingSlash,proxy:vercelConfig.proxy,workPath:this.cwd},detectedBuilders=await(0,import_detect_builders_with_services.detectBuildersWithServices)(files,pkg,detectionOptions);for(;detectedBuilders.errors?.length===1&&detectedBuilders.errors[0].code==="unused_function";){let error3=detectedBuilders.errors[0],unmatchedTrigger=Object.entries(detectionOptions.functions??{}).find(([pattern,fn])=>error3.message.startsWith(`The pattern "${pattern}" defined in \`functions\` `)&&fn.experimentalTriggers?.some(trigger=>trigger.type==="queue/v2beta"||trigger.type==="schedule/v1beta"));if(!unmatchedTrigger)break;detectionOptions.functions={...detectionOptions.functions},delete detectionOptions.functions[unmatchedTrigger[0]],detectedBuilders=await(0,import_detect_builders_with_services.detectBuildersWithServices)(files,pkg,detectionOptions)}let{builders,warnings,errors,defaultRoutes,redirectRoutes,rewriteRoutes,errorRoutes}=detectedBuilders,hostRewriteRoutes=detectedBuilders.hostRewriteRoutes;if(errors){if(this.functionConfig)throw errors[0];this.reportError(errors[0]),await this.exit()}if(warnings?.length>0&&warnings.forEach(warning=>output_manager_default.warn(warning.message,null,warning.link,warning.action)),builders){let buildpackRuntime=builders.map(getBuildpackRuntime).find(runtime=>runtime!==void 0);if(buildpackRuntime)throw buildpackDevUnsupportedError(buildpackRuntime);vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push(...builders),delete vercelConfig.functions}let serviceRewrites=detectedBuilders.serviceRewrites,serviceRewriteRoutes=serviceRewrites&&serviceRewrites.length>0?(0,import_routing_utils3.convertRewrites)(serviceRewrites):null,routes=[];routes.push(...redirectRoutes||[]),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:hostRewriteRoutes??null,phase:null}),routes.push(...(0,import_routing_utils3.appendRoutesToPhase)({routes:vercelConfig.routes,newRoutes:[...rewriteRoutes||[],...serviceRewriteRoutes||[]],phase:"filesystem"})),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:errorRoutes,phase:"error"}),routes.push(...defaultRoutes||[]),vercelConfig.routes=routes}else if(hasResolvedServices&&vercelConfig.proxy){let{entrypoint}=vercelConfig.proxy;await import_fs_extra.default.pathExists(join5(this.cwd,entrypoint))||(output_manager_default.error(`The proxy entrypoint \`${entrypoint}\` does not exist. Set \`proxy.entrypoint\` to an existing \`.js\` or \`.ts\` file.`),await this.exit()),vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push((0,import_fs_detectors2.getProxyBuilder)(vercelConfig.proxy,"latest",vercelConfig.functions))}if(this.sidecars===void 0){let services=(this.services??[]).filter(import_build_utils9.isExperimentalServiceV2);this.sidecars=await collectBuilderDevSidecars({builds:this.shouldUseServicesOrchestrator()?services.map(service=>service.builder):vercelConfig.builds??[],workPath:this.cwd,services})}scheduleEntrypointPlan&&(vercelConfig.builds??=[{src:"**",use:"@vercel/static"}],(0,import_schedule_entrypoint.assertNoScheduleEntrypointSourceConflict)(vercelConfig.builds,scheduleEntrypointPlan),vercelConfig.builds.push(...scheduleEntrypointPlan.builds));let functionBuilds=[...vercelConfig.builds??[]];Array.isArray(vercelConfig.builds)&&((this.getDevCommand(nextProjectSettings)||hasServices)&&(vercelConfig.builds=vercelConfig.builds.filter(this.shouldBuildInDev)),vercelConfig.builds.sort(sortBuilders)),vercelConfig.routes=(vercelConfig.routes||[]).filter(route=>"has"in route?(this.vercelConfigWarning||(this.vercelConfigWarning=!0,output_manager_default.warn(`The "has" property in ${vercelConfig[import_client.fileNameSymbol]} will be ignored during development. Deployments will work as expected.`)),!1):!0);let[runEnv,buildEnv]=await Promise.all([this.getLocalEnv(".env",vercelConfig.env),this.getLocalEnv(".env.build",vercelConfig.build?.env)]),allEnv={...buildEnv,...runEnv},envFromCloud=Object.keys(allEnv).length===0;if(envFromCloud){let envValues={...this.envValues};this.address.host&&(envValues.VERCEL_URL=this.address.host),allEnv={...envValues},runEnv={...envValues},buildEnv={...envValues}}runEnv.NODE_ENV??=process.env.NODE_ENV??"development",allEnv.NODE_ENV??=runEnv.NODE_ENV,runEnv.NOW_REGION="dev1",buildEnv.NOW_REGION="dev1",allEnv.NOW_REGION="dev1",allEnv.VERCEL_ENV="development",allEnv.VERCEL="1",this.projectId&&!process.env.VERCEL_PROJECT_ID&&("VERCEL_PROJECT_ID"in allEnv||(allEnv.VERCEL_PROJECT_ID=this.projectId),"VERCEL_PROJECT_ID"in runEnv||(runEnv.VERCEL_PROJECT_ID=this.projectId)),this.orgId&&!process.env.VERCEL_ORG_ID&&("VERCEL_ORG_ID"in allEnv||(allEnv.VERCEL_ORG_ID=this.orgId),"VERCEL_ORG_ID"in runEnv||(runEnv.VERCEL_ORG_ID=this.orgId)),nextProjectSettings?.autoExposeSystemEnvs&&(runEnv.VERCEL_REGION="dev1"),runEnv.VERCEL_CLI_VERSION=pkg_default.version,Object.assign(runEnv,this.getDevQueueEnv()),Object.assign(runEnv,getDevSchedulesEnv(this.schedulesOrigin)),Object.assign(allEnv,getDevSchedulesEnv(this.schedulesOrigin)),Object.assign(runEnv,this.getDevRuntimeCacheEnv(runEnv));let hasQueueFunctions=Object.values(functionConfig.functions??{}).some(fn=>fn.experimentalTriggers?.some(trigger=>trigger.type==="queue/v2beta"));if(this.queueBroker&&hasQueueFunctions&&hasResolvedServices)throw dev.DEV_QUEUE_FUNCTION_UNSUPPORTED({sourceFile:"functions",reason:"service-hosted function queue triggers are not supported locally yet"});let registry=await this.getFunctionDiscovery({scopes:(hasResolvedServices?[]:functionBuilds).map(build=>({build,target:vercelConfig.builds?.includes(build)?"builder":"framework"})),workPath:this.cwd,files:(sourceFiles??(await staticFiles(this.cwd,{})).map(f=>relative(this.cwd,f))).sort(),config:functionConfig,env:{...process.env,...allEnv,...this.getDevQueueEnv(),...getDevSchedulesEnv(this.schedulesOrigin),...this.getDevRuntimeCacheEnv(allEnv)}}),subscriptions,staticSchedules,sourceChanged;try{subscriptions=deriveQueueSubscriptions(registry),this.queueBroker?.validateFunctionSubscriptions(subscriptions),staticSchedules=collectStaticSchedules(scheduleEntrypointPlan?(0,import_schedule_entrypoint.resolveScheduleEntrypointTargets)(schedules,scheduleEntrypointPlan):schedules,registry),sourceChanged=!(0,import_fast_deep_equal.default)(this.staticSchedulesSnapshot,staticSchedules),sourceChanged&&this.scheduleBroker.validateStatic(staticSchedules)}catch(err){throw this.functionDiscovery=void 0,err}let{unmatchedPatterns}=registry;if(await this.refreshBulkRedirects(vercelConfig.bulkRedirectsPath),this.devCommandStarts.size&&await Promise.all(this.devCommandStarts),this.stopping||generation!==this.configGeneration)return vercelConfig;let restartForFunctionEnv=!!(this.devCommandEnv&&[...registry.functions.values()].some(fn=>fn.invocation.type==="http")&&!(0,import_fast_deep_equal.default)(this.devCommandEnv,allEnv)),previousProcess=this.devProcess,previousOrigin=this.devProcessOrigin,previousCommand=this.currentDevCommand,previousEnv=this.devCommandEnv,previousRuntime={projectSettings:this.projectSettings,allEnv:previousEnv??this.envConfigs.allEnv},restarted,validated=!1;try{if(this.initialDevCommandStarted&&await this.runDevCommand(restartForFunctionEnv,{projectSettings:nextProjectSettings,allEnv},origin=>{restarted={origin}}),this.stopping||generation!==this.configGeneration)return vercelConfig;this.queueBroker?.validateFunctionSubscriptions(subscriptions),sourceChanged=!(0,import_fast_deep_equal.default)(this.staticSchedulesSnapshot,staticSchedules),sourceChanged&&(this.scheduleBroker.validateStatic(staticSchedules),this.scheduleBroker.reconcileStatic(staticSchedules),this.staticSchedulesSnapshot=structuredClone(staticSchedules)),validated=!0}finally{!this.stopping&&!validated&&(this.devProcess!==previousProcess||this.devProcessOrigin!==previousOrigin||this.currentDevCommand!==previousCommand||this.devCommandEnv!==previousEnv)&&await this.runDevCommand(!0,previousRuntime)}this.projectSettings=nextProjectSettings,this.caseSensitive=hasNewRoutingProperties(vercelConfig),this.apiDir=(0,import_fs_detectors2.detectApiDirectory)(vercelConfig.builds||[]),this.apiExtensions=(0,import_fs_detectors2.detectApiExtensions)(vercelConfig.builds||[]),this.envConfigs={buildEnv,runEnv,allEnv},this.envFromCloud=envFromCloud,this.functionRegistry=registry,this.functionConfig=vercelConfig,restarted&&(this.devProcessOrigin=restarted.origin),this.queueBroker?.setFunctionSubscriptions(subscriptions,outputPath=>this.resolveDevFunction(outputPath));for(let pattern of unmatchedPatterns)if(!this.unmatchedQueuePatterns.has(pattern)){let warning=dev.DEV_QUEUE_FUNCTION_UNMATCHED({pattern});output_manager_default.warn(`[${warning.name}] ${warning.message} ${warning.fix}`)}return this.unmatchedQueuePatterns=new Set(unmatchedPatterns),this.onConfig?.(functionConfig),vercelConfig}async refreshBulkRedirects(bulkRedirectsPath){let configPath=bulkRedirectsPath??null;if(configPath===this.bulkRedirectsLastPath&&!this.bulkRedirectsDirty)return;if(this.bulkRedirectsLastPath=configPath,this.bulkRedirectsDirty=!1,this.bulkRedirectsResolvedPath=configPath?resolveBulkRedirectsPath(this.cwd,configPath):null,!configPath){this.bulkRedirects=null,this.bulkRedirectsSignature=null;return}let signature=await getBulkRedirectsSignature(this.cwd,configPath);if(signature!==this.bulkRedirectsSignature){this.bulkRedirectsSignature=signature;try{let result=await loadBulkRedirects(this.cwd,configPath);this.bulkRedirects=result.table;for(let warning of result.warnings)output_manager_default.warn(warning);let count=result.table.size;count>0&&output_manager_default.log(`Loaded ${count} bulk ${(0,import_pluralize2.default)("redirect",count)} from ${configPath}`)}catch(err){this.bulkRedirects=null,output_manager_default.warn(`Failed to load bulk redirects from "${configPath}": ${(0,import_error_utils2.errorToString)(err)}`)}}}async readJsonFile(filePath,strict=!1){let rel,abs;isAbsolute3(filePath)?(rel=path4.relative(this.cwd,filePath),abs=filePath):(rel=filePath,abs=join5(this.cwd,filePath)),output_manager_default.debug(`Reading \`${rel}\` file`);try{let raw=await import_fs_extra.default.readFile(abs,"utf8"),parsed=(0,import_json_parse_better_errors.default)(raw);return parsed[import_client.fileNameSymbol]=rel,parsed}catch(err){if(strict&&!((0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT"))throw err;if((0,import_error_utils2.isError)(err))(0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT"?output_manager_default.debug(`No \`${rel}\` file present`):err.name==="SyntaxError"&&output_manager_default.warn(`There is a syntax error in the \`${rel}\` file: ${err.message}`);else throw err}}async tryValidateOrExit(config,validate){let message=validate(config);message&&(output_manager_default.error(message),await this.exit(1))}async validateVercelConfig(config){if(config.version===1){if(this.functionConfig)throw dev.DEV_UNSUPPORTED_CONFIG_VERSION();this.reportError(dev.DEV_UNSUPPORTED_CONFIG_VERSION()),await this.exit(1);return}let error3=validateConfig(config);if(error3){if(this.functionConfig)throw error3;this.reportError(error3),await this.exit(1)}}validateEnvConfig(type,env={},localEnv={}){let missing=Object.entries(env).filter(([name,value])=>typeof value=="string"&&value.startsWith("@")&&!hasProp(localEnv,name)).map(([name])=>name);if(missing.length>0)throw new MissingDotenvVarsError(type,missing);let merged={...env,...localEnv},hasInvalidName=!1;for(let key of Object.keys(merged))/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)||(output_manager_default.warn(`Ignoring ${type.split(".").slice(1).reverse().join(" ")} var ${JSON.stringify(key)} because name is invalid`),hasInvalidName=!0,delete merged[key]);return hasInvalidName&&output_manager_default.log("The name contains invalid characters. Only letters, digits, and underscores are allowed. Furthermore, the name should not start with a digit"),merged}injectSystemValuesInDotenv(env){for(let name of Object.keys(env))name==="VERCEL_URL"?env.VERCEL_URL=this.address.host:name==="VERCEL_REGION"&&(env.VERCEL_REGION="dev1");return env}resolveBuildFiles(files){return Object.keys(files).filter(this.filter)}isWatcherIgnored(fsPath){let relativePath=relative(this.cwd,fsPath);return relativePath===""?!1:!this.filter(relativePath)}start(...listenSpec){return this.startPromise||(this.startPromise=this._start(...listenSpec).catch(async err=>{throw await this.stop(),err})),this.startPromise}async _start(...listenSpec){if(this.stopping)return;if(!import_fs_extra.default.existsSync(this.cwd))throw dev.DEV_CWD_NOT_FOUND({cwd:this.cwd});if(!import_fs_extra.default.lstatSync(this.cwd).isDirectory())throw dev.DEV_CWD_NOT_DIRECTORY({cwd:this.cwd});let{ig}=await(0,import_client.getVercelIgnore)(this.cwd);this.filter=ig.createFilter();let address=this.routing?null:`http://localhost:${this.devCommandPort}`;for(;typeof address!="string";){if(this.stopping)return;try{address=(await(this.listenerStartup=(0,import_async_listen.listen)(this.server,...listenSpec))).toString()}catch(err){if((0,import_error_utils2.isErrnoException)(err))if(output_manager_default.debug(`Got listen error: ${err.code}`),err.code==="EADDRINUSE")typeof listenSpec[0]=="number"?(output_manager_default.note(`Requested port ${import_chalk2.default.yellow(String(listenSpec[0]))} is already in use`),listenSpec[0]++):(this.reportError(dev.DEV_LISTEN_ADDRESS_IN_USE({address:String(listenSpec[0])})),process.exit(1));else throw err;else throw err}}if(this.stopping)return;this._address=new URL2(replaceLocalhost(address)),this.runtimeCache=new RuntimeCacheStore;let devCommandPorts=this.devCommandPort?[this.devCommandPort]:[],runtimeCacheListener=await(this.listenerStartup=listenOnDevResourcePort(this.runtimeCacheServer,{name:"Runtime Cache",flag:"--runtime-cache-port",defaultPort:DEV_RUNTIME_CACHE_DEFAULT_PORT,port:this.runtimeCachePort,reservedPorts:[this.queuePort,this.schedulesPort??DEV_SCHEDULES_DEFAULT_PORT,...devCommandPorts].filter(port=>port!==void 0&&port!==0)}));if(this.stopping)return;this.runtimeCacheOrigin=runtimeCacheListener.origin,runtimeCacheListener.defaultPort!==void 0&&output_manager_default.warn(`Runtime Cache default port ${runtimeCacheListener.defaultPort} is unavailable; listening on ${runtimeCacheListener.port} instead.
42
+ Please ensure that ${cmd(err.path)} is properly installed`,err.link="https://vercel.link/command-not-found"),output_manager_default.prettyError(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}if(devServerResult){requestId=generateRequestId(this.podId,!0);let{port,pid,shutdown,persistent}=devServerResult;this.shutdownCallbacks.set(pid,shutdown),persistent||res.once("close",()=>{this.killBuilderDevServer(pid)}),debug(`Proxying to "${builderPkg.name}" dev server (port=${port}, pid=${pid})`);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search});let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,`http://127.0.0.1:${port}`,this,requestId,!1)}else debug(`Skipping \`startDevServer()\` for ${match.entrypoint}`)}let foundAsset=findAsset(match,requestPath,vercelConfig);if(!foundAsset&&callLevel===0&&(await this.triggerBuild(match,buildRequestPath,req,vercelConfig),foundAsset=findAsset(match,requestPath,vercelConfig)),this.devProcessOrigin&&(!foundAsset||foundAsset&&foundAsset.asset.type!=="Lambda")){debug("Proxying to frontend dev server");let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,this.devProcessOrigin,this,requestId,!1)}if(!foundAsset){await this.send404(req,res,requestId);return}let{asset:asset2,assetKey}=foundAsset;switch(debug(`Serving asset: [${asset2.type}] ${assetKey} ${asset2.contentType||""}`),asset2.type){case"FileFsRef":this.setResponseHeaders(res,requestId);let staticResHeaders={};applyResponseTransforms(staticResHeaders,responseTransforms??[]);for(let[name,value]of Object.entries(staticResHeaders))value!==void 0&&res.setHeader(name,value);return req.url=`/${basename(asset2.fsPath)}`,serveStaticFile(req,res,dirname3(asset2.fsPath),{headers:[{source:"**/*",headers:[{key:"Content-Type",value:asset2.contentType||getMimeType(assetKey)}]}]});case"FileBlob":let headers2={"Content-Length":asset2.data.length,"Content-Type":asset2.contentType||getMimeType(assetKey)};applyResponseTransforms(headers2,responseTransforms??[]),this.setResponseHeaders(res,requestId,headers2),res.end(asset2.data);return;case"Lambda":if(!asset2.fn){await this.sendError(req,res,requestId,"INTERNAL_LAMBDA_NOT_FOUND");return}requestId=generateRequestId(this.podId,!0);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search}),applyRequestTransforms(req,requestTransforms);let path6=req.url||"/",body=await(0,import_raw_body2.default)(req);debug(`Invoking lambda: "${assetKey}" with ${path6}`);let result;try{result=await this.invokeBuiltLambda(asset2,req,requestId,body)}catch(err){console.error(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}statusCode||(res.statusCode=result.statusCode);let lambdaHeaders=result.headers??{};applyResponseTransforms(lambdaHeaders,responseTransforms??[]),this.setResponseHeaders(res,requestId,lambdaHeaders);let resBody;return result.encoding==="base64"&&typeof result.body=="string"?resBody=Buffer.from(result.body,"base64"):resBody=result.body,res.end(resBody);default:await this.sendError(req,res,requestId,"UNKNOWN_ASSET_TYPE")}};if(this.cwd=cwd,this.repoRoot=options.repoRoot??cwd,this.envConfigs={buildEnv:{},runEnv:{},allEnv:{}},this.envValues=options.envValues||{},this.projectId=options.projectId,this.orgId=options.orgId,this.queuePort=options.queuePort,this.runtimeCachePort=options.runtimeCachePort,this.schedulesPort=options.schedulesPort,this.routing=options.routing??!0,this.devCommandPort=options.devCommandPort,this.onConfig=options.onConfig,!this.routing&&!this.devCommandPort)throw new Error("Running without the router needs a `devCommandPort`");this.scheduleBroker=new import_local_schedules2.ScheduleBroker({ownerId:this.orgId??"team_local",projectId:this.projectId??"prj_local",trackId:"development",dispatch:invocation=>this.dispatchSchedule(invocation),onError:(err,invocation)=>{try{output_manager_default.error(`Failed to dispatch schedule "${invocation.schedule.name}": ${(0,import_error_utils2.errorToString)(err)}`)}catch{}}}),this.resourceProxyToken=randomBytes2(32).toString("base64url"),this.reportError=createErrorReporter2(code=>options.onErrorCode?.(code)),this.files={},this.originalProjectSettings=options.projectSettings,this.projectSettings=options.projectSettings,this.services=options.services,this.useImplicitServicesEnvInjection=options.useImplicitServicesEnvInjection??!0,this.caseSensitive=!1,this.apiDir=null,this.apiExtensions=new Set,this.proxy=import_http_proxy_node16.default.createProxyServer({changeOrigin:!0,ws:!0,xfwd:!0}),this.proxy.on("proxyRes",(proxyRes,req)=>{proxyRes.headers.server="Vercel";let responseTransforms=this.responseTransformsByReq.get(req);responseTransforms&&(this.responseTransformsByReq.delete(req),applyResponseTransforms(proxyRes.headers,responseTransforms))}),this.proxy.on("error",(err,req,res)=>{if(output_manager_default.debug(`Proxy error for ${req?.url??"unknown request"}: ${(0,import_error_utils2.errorToString)(err)}`),!!res){if("destroy"in res&&typeof res.destroy=="function"){res.destroy();return}res instanceof http.ServerResponse&&(res.headersSent||res.writeHead(502),res.end())}}),this.server=http.createServer(this.devServerHandler),this.server.timeout=0,this.queueServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.queueOrigin,this.handleQueuesRoute)}),this.runtimeCacheServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.runtimeCacheOrigin,this.handleRuntimeCacheRoute)}),this.schedulesServer=http.createServer((req,res)=>{this.schedulesSession&&res.setHeader(LOCAL_SCHEDULES_SESSION_HEADER,this.schedulesSession.session.id),this.handleResourceServerRequest(req,res,this.schedulesOrigin,this.handleSchedulesRoute)}),this.stopping=!1,this.buildMatches=new Map,this.inProgressBuilds=new Map,this.devCacheDir=join5(getVercelDirectory(cwd),"cache"),this.vercelConfigWarning=!1,this.getVercelConfigPromise=null,this.blockingBuildsPromise=null,this.startPromise=null,this.bulkRedirects=null,this.bulkRedirectsSignature=null,this.bulkRedirectsLastPath=null,this.bulkRedirectsResolvedPath=null,this.bulkRedirectsDirty=!0,this.watchAggregationId=null,this.watchAggregationEvents=[],this.watchAggregationTimeout=500,this.filter=path6=>!!path6,this.podId=Math.random().toString(32).slice(-5),this.shutdownCallbacks=new Map}get address(){if(!this._address)throw dev.DEV_INTERNAL_ADDRESS_UNAVAILABLE();return this._address}shouldUseServicesOrchestrator(){return!!(this.services&&this.services.length>0)}hasSubscribers(){return!!this.sidecars?.length}getDevQueueEnv(){return this.queueOrigin?getDevQueueEnv(this.queueOrigin,this.hasSubscribers()):{}}getDevRuntimeCacheEnv(env){return!this.runtimeCacheOrigin||env.RUNTIME_CACHE_ENDPOINT?{}:process.env.RUNTIME_CACHE_ENDPOINT?{RUNTIME_CACHE_ENDPOINT:process.env.RUNTIME_CACHE_ENDPOINT,...process.env.RUNTIME_CACHE_HEADERS?{RUNTIME_CACHE_HEADERS:process.env.RUNTIME_CACHE_HEADERS}:{}}:getDevRuntimeCacheEnv(this.runtimeCacheOrigin,DEV_RUNTIME_CACHE_API_PREFIX)}get resourceEndpoints(){if(!this.queueOrigin||!this.runtimeCacheOrigin)throw new Error("Local resource servers have not started");let proxied=(direct,path6)=>this.routing?`${this.address.origin}${path6}`:direct,runtimeCache=`${this.runtimeCacheOrigin}${DEV_RUNTIME_CACHE_API_PREFIX}`;return{queues:{direct:this.queueOrigin,proxy:proxied(this.queueOrigin,`${DEV_QUEUE_PROXY_PREFIX}/${this.resourceProxyToken}`)},runtimeCache:{direct:runtimeCache,proxy:proxied(runtimeCache,`${DEV_RUNTIME_CACHE_PREFIX}${this.resourceProxyToken}${DEV_RUNTIME_CACHE_API_PREFIX}`)},...this.schedulesOrigin?{schedules:{direct:this.schedulesOrigin,proxy:proxied(this.schedulesOrigin,`${DEV_SCHEDULES_PROXY_PREFIX}/${this.resourceProxyToken}`)}}:{}}}getDevResourceMeta(){return{devResourceEndpoints:this.resourceEndpoints}}handleResourceServerRequest(req,res,origin,handler){if(!origin||!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}if(!isValidDevResourceHost(origin,req.headers.host)){res.writeHead(403),res.end("Forbidden");return}let pathname=new URL2(req.url||"/","http://127.0.0.1").pathname;handler(req,res,pathname).catch(err=>{output_manager_default.debug(`Local resource request failed for ${req.url||"/"}: ${(0,import_error_utils2.errorToString)(err)}`),res.headersSent||res.writeHead(500),res.end("Internal Server Error")})}isAuthorizedResourceRequest(req,token){let authorization=req.headers.authorization;if(typeof authorization!="string")return!1;let encoder=new TextEncoder,actual=encoder.encode(authorization),expected=encoder.encode(`Bearer ${token}`);return actual.length===expected.length&&timingSafeEqual(actual,expected)}getBuilderDevEnv(match,env){let result={...env,...getDevSchedulesEnv(this.schedulesOrigin)};if(match.builderWithPkg.pkg.name!=="@vercel/container")return result;let endpoints=this.resourceEndpoints;return Object.assign(result,getDevSchedulesEnv(endpoints.schedules?.proxy,!0)),result.VERCEL_QUEUE_BASE_URL===endpoints.queues.direct&&Object.assign(result,getDevQueueEnv(endpoints.queues.proxy,result.VERCEL_HAS_WORKER_SERVICES!==void 0)),result.RUNTIME_CACHE_ENDPOINT===endpoints.runtimeCache.direct&&Object.assign(result,getDevRuntimeCacheEnv(endpoints.runtimeCache.proxy,"")),result}getSidecarDevMeta(match){let serviceCount=(this.sidecars??[]).filter(sidecar=>sidecar.builder.use!==match.use?!1:!sidecar.workspace||sidecar.workspace===".").length;return serviceCount>0?{serviceCount}:{}}async setupBuilderDevSidecars(){if(this.shouldUseServicesOrchestrator())return;let sidecars=this.sidecars??[];if(sidecars.length===0)return;Object.assign(this.envConfigs.runEnv,this.getDevQueueEnv());let services=sidecars.map(toOrchestratorService),orchestrator=new ServicesOrchestrator({services,cwd:this.cwd,repoRoot:this.repoRoot,env:this.envConfigs.allEnv,proxyOrigin:this.address.origin,resourceEndpoints:this.resourceEndpoints,useImplicitEnvInjection:!1,preferServiceBuilder:!0,onQueueSubscriptions:(serviceName,subscriptions)=>this.queueBroker?.updateServiceSubscriptions(serviceName,subscriptions)});this.sidecarOrchestrator=orchestrator,this.queueBroker?.registerServices(services);try{await orchestrator.startAll()}catch(err){throw await orchestrator.stopAll(),this.sidecarOrchestrator=void 0,this.sidecars=[],err}output_manager_default.log(`Started ${sidecars.length} development ${(0,import_pluralize2.default)("sidecar",sidecars.length)}`)}async exit(code=1){await this.stop(code),process.exit(code)}enqueueFsEvent(type,path6){this.bulkRedirectsResolvedPath&&(path6===this.bulkRedirectsResolvedPath||path6.startsWith(this.bulkRedirectsResolvedPath+sep2))&&(this.bulkRedirectsDirty=!0),this.watchAggregationEvents.push({type,path:path6}),this.watchAggregationId===null&&(this.watchAggregationId=setTimeout(()=>{let events=this.watchAggregationEvents.slice();this.watchAggregationEvents.length=0,this.watchAggregationId=null,this.handleFilesystemEvents(events).catch(err=>{output_manager_default.prettyError(err),(0,import_error_utils2.isError)(err)&&typeof err.stack=="string"&&output_manager_default.debug(err.stack)})},this.watchAggregationTimeout))}async handleFilesystemEvents(events){if(this.stopping)return;output_manager_default.debug(`Filesystem watcher notified of ${events.length} events`);let filesChanged=new Set,filesRemoved=new Set,distPaths=[];for(let buildMatch of this.buildMatches.values())for(let buildResult of buildMatch.buildResults.values())buildResult.distPath&&distPaths.push(buildResult.distPath);if(events=events.filter(event=>distPaths.every(distPath=>!event.path.startsWith(distPath))),events.length!==0){this.functionReconciliations++;try{this.configGeneration++,this.functionDiscovery=void 0;for(let event of events)event.type==="add"?await this.handleFileCreated(event.path,filesChanged,filesRemoved):event.type==="unlink"?this.handleFileDeleted(event.path,filesChanged,filesRemoved):event.type==="change"&&await this.handleFileModified(event.path,filesChanged,filesRemoved);let vercelConfig=await this.getVercelConfig();if(this.stopping)return;await this.updateBuildMatches(vercelConfig);let filesChangedArray=[...filesChanged],filesRemovedArray=[...filesRemoved],needsRebuild=new Map;for(let match of this.buildMatches.values()){this.canonicalizeFunctionBuild(match);for(let[requestPath,result]of match.buildResults)if(!needsRebuild.has(result)&&Array.isArray(result.watch)){for(let pattern of result.watch)if(minimatches(filesChangedArray,pattern)||minimatches(filesRemovedArray,pattern)){needsRebuild.set(result,[requestPath,match]);break}}}if(needsRebuild.size>0){output_manager_default.debug(`Triggering ${needsRebuild.size} rebuilds`),filesChangedArray.length>0&&output_manager_default.debug(`Files changed: ${filesChangedArray.join(", ")}`),filesRemovedArray.length>0&&output_manager_default.debug(`Files removed: ${filesRemovedArray.join(", ")}`);for(let[result,[requestPath,match]]of needsRebuild)requestPath===null||await shouldServe(match,this.files,requestPath,this,vercelConfig)?this.triggerBuild(match,requestPath,null,vercelConfig,result,filesChangedArray,filesRemovedArray).catch(err=>{output_manager_default.warn(`An error occurred while rebuilding \`${match.src}\`:`),console.error(err.stack)}):output_manager_default.debug(`Not rebuilding because \`shouldServe()\` returned \`false\` for "${match.use}" request path "${requestPath}"`)}}finally{this.functionReconciliations--}}}async handleFileCreated(fsPath,changed,removed){let name=relative(this.cwd,fsPath);try{await this.getVercelConfig(),this.files[name]=await import_build_utils9.FileFsRef.fromFsPath({fsPath});let extensionless=this.getExtensionlessFile(name);extensionless&&(this.files[extensionless]=await import_build_utils9.FileFsRef.fromFsPath({fsPath})),fileChanged(name,changed,removed),output_manager_default.debug(`File created: ${name}`)}catch(err){if((0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File created, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}handleFileDeleted(fsPath,changed,removed){let name=relative(this.cwd,fsPath);output_manager_default.debug(`File deleted: ${name}`),fileRemoved(name,this.files,changed,removed);let extensionless=this.getExtensionlessFile(name);extensionless&&(output_manager_default.debug(`File deleted: ${extensionless}`),fileRemoved(extensionless,this.files,changed,removed))}async handleFileModified(fsPath,changed,removed){let name=relative(this.cwd,fsPath);try{this.files[name]=await import_build_utils9.FileFsRef.fromFsPath({fsPath}),fileChanged(name,changed,removed),output_manager_default.debug(`File modified: ${name}`)}catch(err){if((0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File modified, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}async updateBuildMatches(vercelConfig,isInitial=!1){let fileList=this.resolveBuildFiles(this.files),matches=await getBuildMatches(vercelConfig,this.cwd,this,fileList),sources=matches.map(m=>m.src);isInitial&&fileList.length===0&&output_manager_default.warn("There are no files inside your deployment.");let ops=[];for(let src of this.buildMatches.keys())if(!sources.includes(src)){output_manager_default.debug(`Removing build match for "${src}"`);let match=this.buildMatches.get(src);match&&ops.push(shutdownBuilder(match)),this.buildMatches.delete(src)}await Promise.all(ops);let blockingBuilds=[];for(let match of matches){let currentMatch=this.buildMatches.get(match.src);if(!buildMatchEquals(currentMatch,match)&&(output_manager_default.debug(`Adding build match for "${match.src}" with "${match.use}"`),this.buildMatches.set(match.src,match),!isInitial&&needsBlockingBuild(match))){let buildPromise=executeBuild(vercelConfig,this,this.files,match,null,!1);blockingBuilds.push(buildPromise)}}if(blockingBuilds.length>0&&(output_manager_default.debug(`Waiting for ${blockingBuilds.length} "blocking builds"`),this.blockingBuildsPromise=Promise.all(blockingBuilds).then(()=>{output_manager_default.debug('Cleaning up "blockingBuildsPromise" after successful resolve'),this.blockingBuildsPromise=null}).catch(err=>{output_manager_default.debug(`Cleaning up "blockingBuildsPromise" after error: ${err}`),this.blockingBuildsPromise=null,err&&output_manager_default.prettyError(err)})),this.buildMatches=new Map([...this.buildMatches.entries()].sort((matchA,matchB)=>sortBuilders(matchA[1],matchB[1]))),isInitial){let warnings=new Set;for(let match of this.buildMatches.values()){let{builder}=match.builderWithPkg;if(!builder.getDevWarnings)continue;let builderWarnings=await builder.getDevWarnings({files:this.files,entrypoint:match.entrypoint,workPath:this.cwd,repoRootPath:this.repoRoot,config:{projectSettings:this.projectSettings,...match.config},meta:{isDev:!0,env:this.getBuilderDevEnv(match,this.envConfigs.runEnv),buildEnv:{...this.envConfigs.buildEnv}}});for(let warning of builderWarnings)warnings.add(warning)}for(let warning of warnings)output_manager_default.warn(warning)}}async getLocalEnv(fileName,base){let filePath=join5(this.cwd,fileName),env={};try{let dotenv=await import_fs_extra.default.readFile(filePath,"utf8");output_manager_default.debug(`Using local env: ${filePath}`),env=(0,import_dotenv.parse)(dotenv),env=this.injectSystemValuesInDotenv(env)}catch(err){if(!(0,import_error_utils2.isErrnoException)(err)||err.code!=="ENOENT")throw err}try{return{...this.validateEnvConfig(fileName,base||{},env)}}catch(err){if(err instanceof MissingDotenvVarsError)this.reportError(err),await this.exit();else throw err}return{}}getVercelConfig(){if(this.getVercelConfigPromise)return this.getVercelConfigPromise;this.getVercelConfigPromise=(async()=>{for(;;){let generation=this.configGeneration;try{let config=await this._getVercelConfig();if(this.stopping||generation===this.configGeneration)return config}catch(err){if(this.stopping||generation===this.configGeneration)throw err}this.functionDiscovery=void 0}})();let clear=this.clearVercelConfigPromise;return this.getVercelConfigPromise.then(clear,clear),this.getVercelConfigPromise}get devCommand(){return this.getDevCommand(this.projectSettings)}get devCommandOrigin(){return this.devProcessOrigin}getDevCommand(projectSettings){if(projectSettings?.devCommand)return projectSettings.devCommand;if(projectSettings?.framework){let frameworkSlug=projectSettings.framework,framework=import_frameworks3.frameworkList.find(f=>f.slug===frameworkSlug);if(framework){let defaults=framework.settings.devCommand.value;if(defaults)return defaults}if((0,import_build_utils9.shouldUseExperimentalBackends)(frameworkSlug))return"npx @vercel/cervel dev"}}getFunctionDiscovery(options){let key=JSON.stringify(options);if(!this.functionDiscovery||this.functionDiscovery.key!==key){let promise=collectDevFunctions(options);this.functionDiscovery={key,promise},promise.catch(()=>{this.functionDiscovery?.promise===promise&&(this.functionDiscovery=void 0)})}return this.functionDiscovery.promise}getDevFunction(outputPath){return this.functionRegistry.functions.get(outputPath)}getDevSchedules(){return this.functionRegistry.schedules}async dispatchSchedule({delivery,signal}){if(signal.throwIfAborted(),this.stopping)throw new Error("Local Schedules is stopping");if(delivery.type==="queue"){if(!this.queueBroker)throw new Error("Local Queue broker is not ready");this.queueBroker.enqueue(delivery.topic,Buffer.from(JSON.stringify(delivery.message)),"application/json");return}if(delivery.type==="path"){if(!this._address)throw new Error(`Schedule path "${delivery.path}" is not ready because vercel dev is not listening yet`);signal.throwIfAborted();let cronSecret=this.envConfigs.runEnv.CRON_SECRET??process.env.CRON_SECRET,response=await directFetch(`${this._address.origin}${delivery.path}`,{method:delivery.requestMethod,headers:{...delivery.headers,...cronSecret?{authorization:`Bearer ${cronSecret}`}:{}},signal});if(!response.ok)throw new Error(`Schedule path "${delivery.path}" returned HTTP ${response.status}`);return}let invoke=this.resolveDevFunction(delivery.function);if(!invoke)throw new Error(`Schedule function "${delivery.function}" is missing or not ready`);signal.throwIfAborted();let onAbort=()=>{},aborted=new Promise((_,reject)=>{onAbort=()=>reject(signal.reason),signal.addEventListener("abort",onAbort,{once:!0})});try{let result=await Promise.race([aborted,invoke({method:"POST",headers:delivery.headers,body:Buffer.alloc(0),signal})]);if(!result)throw new Error(`Schedule function "${delivery.function}" is missing or not ready`);if(!result.ok)throw new Error(`Schedule function "${delivery.function}" returned HTTP ${result.status}`)}finally{signal.removeEventListener("abort",onAbort)}}resolveDevFunction(outputPath){let fn=this.getDevFunction(outputPath);if(!fn||this.stopping)return null;if(fn.invocation.type==="http"){if(!this.devProcessOrigin)return null}else if(!this.functionDispatchReady||this.functionReconciliations>0||!this.getDevFunctionMatch(fn))return null;return request3=>this.invokeDevFunction(outputPath,request3)}getDevFunctionMatch(fn){if(fn.invocation.type!=="entrypoint"||fn.scope.target!=="builder")return;let{entrypoint}=fn.invocation;return[...this.buildMatches.values()].find(match=>match.entrypoint===entrypoint&&match.use===fn.scope.build.use&&(0,import_fast_deep_equal.default)(match.config??{},fn.scope.build.config??{}))}canonicalizeFunctionBuild(match){if(![...this.functionRegistry.functions.values()].some(fn=>this.getDevFunctionMatch(fn)===match))return!1;if(match.buildResults.size&&!(match.buildResults.size===1&&match.buildResults.has(null))){let results=[...match.buildResults.values()],result=results[results.length-1];result.watch=[...new Set(results.flatMap(result2=>result2.watch))],match.buildResults.clear(),match.buildResults.set(null,result)}return!0}async invokeDevFunction(outputPath,request3){request3.signal?.throwIfAborted();let fn=this.getDevFunction(outputPath);if(!fn||!this.resolveDevFunction(outputPath))return null;let generation=this.configGeneration,isCurrent=()=>!this.stopping&&generation===this.configGeneration&&this.getDevFunction(outputPath)===fn;if(fn.invocation.type==="http"){let response=await directFetch(`${this.devProcessOrigin}${fn.invocation.pathname}`,{...request3,redirect:"manual"});return await response.arrayBuffer(),{ok:response.ok,status:response.status}}let match=this.getDevFunctionMatch(fn),config=this.functionConfig,req=new http.IncomingMessage(new Socket);req.method=request3.method,req.url=`/${outputPath}`,req.headers={host:this.address.host,...request3.headers};let requestId=generateRequestId(this.podId,!0),currentMatch=()=>!request3.signal?.aborted&&isCurrent()&&this.getDevFunctionMatch(fn)===match,devServerResult=await this.startBuildMatchDevServer(match,outputPath);if(devServerResult){let{port,pid,shutdown,persistent}=devServerResult;this.shutdownCallbacks.set(pid,shutdown);try{if(!currentMatch())return null;let response=await directFetch(`http://127.0.0.1:${port}/${outputPath}`,{...request3,headers:nodeHeadersToFetchHeaders({...req.headers,...this.getProxyHeaders(req,requestId,!0)}),redirect:"manual"});return await response.arrayBuffer(),{ok:response.ok,status:response.status}}finally{let current=this.getDevFunction(outputPath);(this.stopping||!persistent||!current||this.getDevFunctionMatch(current)!==match)&&this.shutdownCallbacks.has(pid)&&await this.killBuilderDevServer(pid)}}if(!currentMatch())return null;let{entrypoint}=fn.invocation,getAsset=()=>match.buildOutput[(match.buildResultVersion??match.builderWithPkg.builder.version)===2?outputPath:entrypoint];this.canonicalizeFunctionBuild(match);let asset2=getAsset();if((!asset2||this.inProgressBuilds.get(match)?.size)&&(await this.triggerBuild(match,null,null,config),asset2=getAsset()),!currentMatch())return null;if(!asset2||asset2.type!=="Lambda"||!asset2.fn)return{ok:!1,status:404};let result=await this.invokeBuiltLambda(asset2,req,requestId,request3.body);return{ok:result.statusCode>=200&&result.statusCode<300,status:result.statusCode}}async startBuildMatchDevServer(match,requestPath){let{builder}=match.builderWithPkg;if(!builder.startDevServer)return null;let{envConfigs,files,devCacheDir,cwd:workPath}=this;return builder.startDevServer({files,entrypoint:match.entrypoint,workPath,config:match.config||{},repoRootPath:this.repoRoot,meta:{isDev:!0,...this.getDevResourceMeta(),requestPath,devCacheDir,...this.getSidecarDevMeta(match),env:this.getBuilderDevEnv(match,{...envConfigs.runEnv,VERCEL_DEBUG_PREFIX:output_manager_default.debugEnabled?"[builder]":void 0}),buildEnv:{...envConfigs.buildEnv}}})}invokeBuiltLambda(asset2,req,requestId,body){let payload={method:req.method||"GET",host:req.headers.host,path:req.url||"/",headers:{...req.headers,...this.getProxyHeaders(req,requestId,!0)},encoding:"base64",body:body.toString("base64")};return asset2.fn({Action:"Invoke",body:JSON.stringify(payload)})}async _getVercelConfig(){let generation=this.configGeneration,configPath=localConfigFlagPath();if(!configPath){let{compileVercelConfig}=await import("../../chunks/compile-vercel-config-EM3HYOQC.js"),compiled=await compileVercelConfig(this.cwd);configPath=getLocalPathConfig(this.cwd,!!compiled.sourceFile)}let[pkg=null,vercelConfig={version:2,[import_client.fileNameSymbol]:"vercel.json"}]=await Promise.all([this.readJsonFile("package.json"),this.readJsonFile(configPath,!0)]);await this.validateVercelConfig(vercelConfig);let functionConfig=structuredClone(vercelConfig),sourceFiles;for(let[name,service]of Object.entries(this.queueBroker?vercelConfig.services??vercelConfig.experimentalServicesV2??{}:{}))if(Object.values(service.functions??{}).some(fn=>fn.experimentalTriggers?.some(trigger=>trigger.type==="queue/v2beta")))throw dev.DEV_QUEUE_FUNCTION_UNSUPPORTED({sourceFile:`services.${name}.functions`,reason:"service-hosted function queue triggers are not supported locally yet"});let nextProjectSettings={...this.originalProjectSettings,...pickOverrides(vercelConfig)},{error:routeError,routes:maybeRoutes}=(0,import_routing_utils3.getTransformedRoutes)(vercelConfig);routeError&&(this.reportError(routeError),await this.exit()),vercelConfig.routes=maybeRoutes||[];let hasServices=(this.services?.length??0)>0,hasResolvedServices=!!this.services&&this.services.length>0,schedules=(0,import_build_utils9.getNamedSchedules)(functionConfig.schedules),scheduleEntrypointPlan;if(!hasResolvedServices&&schedules.some(import_schedule_entrypoint.hasScheduleEntrypointTarget)&&(sourceFiles=(await staticFiles(this.cwd,{})).map(f=>relative(this.cwd,f)),scheduleEntrypointPlan=(0,import_schedule_entrypoint.planScheduleEntrypoints)({schedules,files:sourceFiles,framework:nextProjectSettings.framework,functions:functionConfig.functions})),!vercelConfig.experimentalServices&&!hasResolvedServices&&(!vercelConfig.builds||vercelConfig.builds.length===0)){let{projectSettings,cleanUrls,trailingSlash}=vercelConfig,files=sourceFiles??(await staticFiles(this.cwd,{})).map(f=>relative(this.cwd,f));sourceFiles=files;let detectionOptions={tag:"latest",reservedFunctionFiles:scheduleEntrypointPlan?.reservedFunctionFiles,bunVersion:vercelConfig.bunVersion,functions:vercelConfig.functions,projectSettings:projectSettings||nextProjectSettings,featHandleMiss:!0,cleanUrls,trailingSlash,proxy:vercelConfig.proxy,workPath:this.cwd},detectedBuilders=await(0,import_detect_builders_with_services.detectBuildersWithServices)(files,pkg,detectionOptions);for(;detectedBuilders.errors?.length===1&&detectedBuilders.errors[0].code==="unused_function";){let error3=detectedBuilders.errors[0],unmatchedTrigger=Object.entries(detectionOptions.functions??{}).find(([pattern,fn])=>error3.message.startsWith(`The pattern "${pattern}" defined in \`functions\` `)&&fn.experimentalTriggers?.some(trigger=>trigger.type==="queue/v2beta"||trigger.type==="schedule/v1beta"));if(!unmatchedTrigger)break;detectionOptions.functions={...detectionOptions.functions},delete detectionOptions.functions[unmatchedTrigger[0]],detectedBuilders=await(0,import_detect_builders_with_services.detectBuildersWithServices)(files,pkg,detectionOptions)}let{builders,warnings,errors,defaultRoutes,redirectRoutes,rewriteRoutes,errorRoutes}=detectedBuilders,hostRewriteRoutes=detectedBuilders.hostRewriteRoutes;if(errors){if(this.functionConfig)throw errors[0];this.reportError(errors[0]),await this.exit()}if(warnings?.length>0&&warnings.forEach(warning=>output_manager_default.warn(warning.message,null,warning.link,warning.action)),builders){let buildpackRuntime=builders.map(getBuildpackRuntime).find(runtime=>runtime!==void 0);if(buildpackRuntime)throw buildpackDevUnsupportedError(buildpackRuntime);vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push(...builders),delete vercelConfig.functions}let serviceRewrites=detectedBuilders.serviceRewrites,serviceRewriteRoutes=serviceRewrites&&serviceRewrites.length>0?(0,import_routing_utils3.convertRewrites)(serviceRewrites):null,routes=[];routes.push(...redirectRoutes||[]),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:hostRewriteRoutes??null,phase:null}),routes.push(...(0,import_routing_utils3.appendRoutesToPhase)({routes:vercelConfig.routes,newRoutes:[...rewriteRoutes||[],...serviceRewriteRoutes||[]],phase:"filesystem"})),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:errorRoutes,phase:"error"}),routes.push(...defaultRoutes||[]),vercelConfig.routes=routes}else if(hasResolvedServices&&vercelConfig.proxy){let{entrypoint}=vercelConfig.proxy;await import_fs_extra.default.pathExists(join5(this.cwd,entrypoint))||(output_manager_default.error(`The proxy entrypoint \`${entrypoint}\` does not exist. Set \`proxy.entrypoint\` to an existing \`.js\` or \`.ts\` file.`),await this.exit()),vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push((0,import_fs_detectors2.getProxyBuilder)(vercelConfig.proxy,"latest",vercelConfig.functions))}if(this.sidecars===void 0){let services=(this.services??[]).filter(import_build_utils9.isExperimentalServiceV2);this.sidecars=await collectBuilderDevSidecars({builds:this.shouldUseServicesOrchestrator()?services.map(service=>service.builder):vercelConfig.builds??[],workPath:this.cwd,services})}scheduleEntrypointPlan&&(vercelConfig.builds??=[{src:"**",use:"@vercel/static"}],(0,import_schedule_entrypoint.assertNoScheduleEntrypointSourceConflict)(vercelConfig.builds,scheduleEntrypointPlan),vercelConfig.builds.push(...scheduleEntrypointPlan.builds));let functionBuilds=[...vercelConfig.builds??[]];Array.isArray(vercelConfig.builds)&&((this.getDevCommand(nextProjectSettings)||hasServices)&&(vercelConfig.builds=vercelConfig.builds.filter(this.shouldBuildInDev)),vercelConfig.builds.sort(sortBuilders)),vercelConfig.routes=(vercelConfig.routes||[]).filter(route=>"has"in route?(this.vercelConfigWarning||(this.vercelConfigWarning=!0,output_manager_default.warn(`The "has" property in ${vercelConfig[import_client.fileNameSymbol]} will be ignored during development. Deployments will work as expected.`)),!1):!0);let[runEnv,buildEnv]=await Promise.all([this.getLocalEnv(".env",vercelConfig.env),this.getLocalEnv(".env.build",vercelConfig.build?.env)]),allEnv={...buildEnv,...runEnv},envFromCloud=Object.keys(allEnv).length===0;if(envFromCloud){let envValues={...this.envValues};this.address.host&&(envValues.VERCEL_URL=this.address.host),allEnv={...envValues},runEnv={...envValues},buildEnv={...envValues}}runEnv.NODE_ENV??=process.env.NODE_ENV??"development",allEnv.NODE_ENV??=runEnv.NODE_ENV,runEnv.NOW_REGION="dev1",buildEnv.NOW_REGION="dev1",allEnv.NOW_REGION="dev1",allEnv.VERCEL_ENV="development",allEnv.VERCEL="1",this.projectId&&!process.env.VERCEL_PROJECT_ID&&("VERCEL_PROJECT_ID"in allEnv||(allEnv.VERCEL_PROJECT_ID=this.projectId),"VERCEL_PROJECT_ID"in runEnv||(runEnv.VERCEL_PROJECT_ID=this.projectId)),this.orgId&&!process.env.VERCEL_ORG_ID&&("VERCEL_ORG_ID"in allEnv||(allEnv.VERCEL_ORG_ID=this.orgId),"VERCEL_ORG_ID"in runEnv||(runEnv.VERCEL_ORG_ID=this.orgId)),nextProjectSettings?.autoExposeSystemEnvs&&(runEnv.VERCEL_REGION="dev1"),runEnv.VERCEL_CLI_VERSION=pkg_default.version,Object.assign(runEnv,this.getDevQueueEnv()),Object.assign(runEnv,getDevSchedulesEnv(this.schedulesOrigin)),Object.assign(allEnv,getDevSchedulesEnv(this.schedulesOrigin)),Object.assign(runEnv,this.getDevRuntimeCacheEnv(runEnv));let hasQueueFunctions=Object.values(functionConfig.functions??{}).some(fn=>fn.experimentalTriggers?.some(trigger=>trigger.type==="queue/v2beta"));if(this.queueBroker&&hasQueueFunctions&&hasResolvedServices)throw dev.DEV_QUEUE_FUNCTION_UNSUPPORTED({sourceFile:"functions",reason:"service-hosted function queue triggers are not supported locally yet"});let registry=await this.getFunctionDiscovery({scopes:(hasResolvedServices?[]:functionBuilds).map(build=>({build,target:vercelConfig.builds?.includes(build)?"builder":"framework"})),workPath:this.cwd,files:(sourceFiles??(await staticFiles(this.cwd,{})).map(f=>relative(this.cwd,f))).sort(),config:functionConfig,env:{...process.env,...allEnv,...this.getDevQueueEnv(),...getDevSchedulesEnv(this.schedulesOrigin),...this.getDevRuntimeCacheEnv(allEnv)}}),subscriptions,staticSchedules,sourceChanged;try{subscriptions=deriveQueueSubscriptions(registry),this.queueBroker?.validateFunctionSubscriptions(subscriptions),staticSchedules=collectStaticSchedules(scheduleEntrypointPlan?(0,import_schedule_entrypoint.resolveScheduleEntrypointTargets)(schedules,scheduleEntrypointPlan):schedules,registry),sourceChanged=!(0,import_fast_deep_equal.default)(this.staticSchedulesSnapshot,staticSchedules),sourceChanged&&this.scheduleBroker.validateStatic(staticSchedules)}catch(err){throw this.functionDiscovery=void 0,err}let{unmatchedPatterns}=registry;if(await this.refreshBulkRedirects(vercelConfig.bulkRedirectsPath),this.devCommandStarts.size&&await Promise.all(this.devCommandStarts),this.stopping||generation!==this.configGeneration)return vercelConfig;let restartForFunctionEnv=!!(this.devCommandEnv&&[...registry.functions.values()].some(fn=>fn.invocation.type==="http")&&!(0,import_fast_deep_equal.default)(this.devCommandEnv,allEnv)),previousProcess=this.devProcess,previousOrigin=this.devProcessOrigin,previousCommand=this.currentDevCommand,previousEnv=this.devCommandEnv,previousRuntime={projectSettings:this.projectSettings,allEnv:previousEnv??this.envConfigs.allEnv},restarted,validated=!1;try{if(this.initialDevCommandStarted&&await this.runDevCommand(restartForFunctionEnv,{projectSettings:nextProjectSettings,allEnv},origin=>{restarted={origin}}),this.stopping||generation!==this.configGeneration)return vercelConfig;this.queueBroker?.validateFunctionSubscriptions(subscriptions),sourceChanged=!(0,import_fast_deep_equal.default)(this.staticSchedulesSnapshot,staticSchedules),sourceChanged&&(this.scheduleBroker.validateStatic(staticSchedules),this.scheduleBroker.reconcileStatic(staticSchedules),this.staticSchedulesSnapshot=structuredClone(staticSchedules)),validated=!0}finally{!this.stopping&&!validated&&(this.devProcess!==previousProcess||this.devProcessOrigin!==previousOrigin||this.currentDevCommand!==previousCommand||this.devCommandEnv!==previousEnv)&&await this.runDevCommand(!0,previousRuntime)}this.projectSettings=nextProjectSettings,this.caseSensitive=hasNewRoutingProperties(vercelConfig),this.apiDir=(0,import_fs_detectors2.detectApiDirectory)(vercelConfig.builds||[]),this.apiExtensions=(0,import_fs_detectors2.detectApiExtensions)(vercelConfig.builds||[]),this.envConfigs={buildEnv,runEnv,allEnv},this.envFromCloud=envFromCloud,this.functionRegistry=registry,this.functionConfig=vercelConfig,restarted&&(this.devProcessOrigin=restarted.origin),this.queueBroker?.setFunctionSubscriptions(subscriptions,outputPath=>this.resolveDevFunction(outputPath));for(let pattern of unmatchedPatterns)if(!this.unmatchedQueuePatterns.has(pattern)){let warning=dev.DEV_QUEUE_FUNCTION_UNMATCHED({pattern});output_manager_default.warn(`[${warning.name}] ${warning.message} ${warning.fix}`)}return this.unmatchedQueuePatterns=new Set(unmatchedPatterns),this.onConfig?.(functionConfig),vercelConfig}async refreshBulkRedirects(bulkRedirectsPath){let configPath=bulkRedirectsPath??null;if(configPath===this.bulkRedirectsLastPath&&!this.bulkRedirectsDirty)return;if(this.bulkRedirectsLastPath=configPath,this.bulkRedirectsDirty=!1,this.bulkRedirectsResolvedPath=configPath?resolveBulkRedirectsPath(this.cwd,configPath):null,!configPath){this.bulkRedirects=null,this.bulkRedirectsSignature=null;return}let signature=await getBulkRedirectsSignature(this.cwd,configPath);if(signature!==this.bulkRedirectsSignature){this.bulkRedirectsSignature=signature;try{let result=await loadBulkRedirects(this.cwd,configPath);this.bulkRedirects=result.table;for(let warning of result.warnings)output_manager_default.warn(warning);let count=result.table.size;count>0&&output_manager_default.log(`Loaded ${count} bulk ${(0,import_pluralize2.default)("redirect",count)} from ${configPath}`)}catch(err){this.bulkRedirects=null,output_manager_default.warn(`Failed to load bulk redirects from "${configPath}": ${(0,import_error_utils2.errorToString)(err)}`)}}}async readJsonFile(filePath,strict=!1){let rel,abs;isAbsolute3(filePath)?(rel=path4.relative(this.cwd,filePath),abs=filePath):(rel=filePath,abs=join5(this.cwd,filePath)),output_manager_default.debug(`Reading \`${rel}\` file`);try{let raw=await import_fs_extra.default.readFile(abs,"utf8"),parsed=(0,import_json_parse_better_errors.default)(raw);return parsed[import_client.fileNameSymbol]=rel,parsed}catch(err){if(strict&&!((0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT"))throw err;if((0,import_error_utils2.isError)(err))(0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOENT"?output_manager_default.debug(`No \`${rel}\` file present`):err.name==="SyntaxError"&&output_manager_default.warn(`There is a syntax error in the \`${rel}\` file: ${err.message}`);else throw err}}async tryValidateOrExit(config,validate){let message=validate(config);message&&(output_manager_default.error(message),await this.exit(1))}async validateVercelConfig(config){if(config.version===1){if(this.functionConfig)throw dev.DEV_UNSUPPORTED_CONFIG_VERSION();this.reportError(dev.DEV_UNSUPPORTED_CONFIG_VERSION()),await this.exit(1);return}let error3=validateConfig(config);if(error3){if(this.functionConfig)throw error3;this.reportError(error3),await this.exit(1)}}validateEnvConfig(type,env={},localEnv={}){let missing=Object.entries(env).filter(([name,value])=>typeof value=="string"&&value.startsWith("@")&&!hasProp(localEnv,name)).map(([name])=>name);if(missing.length>0)throw new MissingDotenvVarsError(type,missing);let merged={...env,...localEnv},hasInvalidName=!1;for(let key of Object.keys(merged))/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)||(output_manager_default.warn(`Ignoring ${type.split(".").slice(1).reverse().join(" ")} var ${JSON.stringify(key)} because name is invalid`),hasInvalidName=!0,delete merged[key]);return hasInvalidName&&output_manager_default.log("The name contains invalid characters. Only letters, digits, and underscores are allowed. Furthermore, the name should not start with a digit"),merged}injectSystemValuesInDotenv(env){for(let name of Object.keys(env))name==="VERCEL_URL"?env.VERCEL_URL=this.address.host:name==="VERCEL_REGION"&&(env.VERCEL_REGION="dev1");return env}resolveBuildFiles(files){return Object.keys(files).filter(this.filter)}isWatcherIgnored(fsPath){let relativePath=relative(this.cwd,fsPath);return relativePath===""?!1:!this.filter(relativePath)}start(...listenSpec){return this.startPromise||(this.startPromise=this._start(...listenSpec).catch(async err=>{throw await this.stop(),err})),this.startPromise}async _start(...listenSpec){if(this.stopping)return;if(!import_fs_extra.default.existsSync(this.cwd))throw dev.DEV_CWD_NOT_FOUND({cwd:this.cwd});if(!import_fs_extra.default.lstatSync(this.cwd).isDirectory())throw dev.DEV_CWD_NOT_DIRECTORY({cwd:this.cwd});let{ig}=await(0,import_client.getVercelIgnore)(this.cwd);this.filter=ig.createFilter();let address=this.routing?null:`http://localhost:${this.devCommandPort}`;for(;typeof address!="string";){if(this.stopping)return;try{address=(await(this.listenerStartup=(0,import_async_listen.listen)(this.server,...listenSpec))).toString()}catch(err){if((0,import_error_utils2.isErrnoException)(err))if(output_manager_default.debug(`Got listen error: ${err.code}`),err.code==="EADDRINUSE")typeof listenSpec[0]=="number"?(output_manager_default.note(`Requested port ${import_chalk2.default.yellow(String(listenSpec[0]))} is already in use`),listenSpec[0]++):(this.reportError(dev.DEV_LISTEN_ADDRESS_IN_USE({address:String(listenSpec[0])})),process.exit(1));else throw err;else throw err}}if(this.stopping)return;this._address=new URL2(replaceLocalhost(address)),this.runtimeCache=new RuntimeCacheStore;let devCommandPorts=this.devCommandPort?[this.devCommandPort]:[],runtimeCacheListener=await(this.listenerStartup=listenOnDevResourcePort(this.runtimeCacheServer,{name:"Runtime Cache",flag:"--runtime-cache-port",defaultPort:DEV_RUNTIME_CACHE_DEFAULT_PORT,port:this.runtimeCachePort,reservedPorts:[this.queuePort,this.schedulesPort??DEV_SCHEDULES_DEFAULT_PORT,...devCommandPorts].filter(port=>port!==void 0&&port!==0)}));if(this.stopping)return;this.runtimeCacheOrigin=runtimeCacheListener.origin,runtimeCacheListener.defaultPort!==void 0&&output_manager_default.warn(`Runtime Cache default port ${runtimeCacheListener.defaultPort} is unavailable; listening on ${runtimeCacheListener.port} instead.
43
43
  External clients configured for ${runtimeCacheListener.defaultPort} will not reach this dev server. Pin a port with --runtime-cache-port.`);let queueListener=await(this.listenerStartup=listenOnDevResourcePort(this.queueServer,{name:"Vercel Queues",flag:"--queue-port",defaultPort:DEV_QUEUE_DEFAULT_PORT,port:this.queuePort,reservedPorts:[this.schedulesPort??DEV_SCHEDULES_DEFAULT_PORT,...devCommandPorts]}));if(this.stopping)return;this.queueOrigin=queueListener.origin,queueListener.defaultPort!==void 0&&output_manager_default.warn(`Vercel Queues default port ${queueListener.defaultPort} is unavailable; listening on ${queueListener.port} instead.
44
44
  External clients configured for ${queueListener.defaultPort} will not reach this dev server. Pin a port with --queue-port.`),this.queueBroker=new QueueBroker([],name=>this.orchestrator?.getServiceOrigin(name)??this.sidecarOrchestrator?.getServiceOrigin(name)??null);let schedulesListener=await(this.listenerStartup=listenOnDevResourcePort(this.schedulesServer,{name:"Vercel Schedules",flag:"--schedules-port",defaultPort:DEV_SCHEDULES_DEFAULT_PORT,port:this.schedulesPort,reservedPorts:devCommandPorts}));if(this.stopping||(this.schedulesOrigin=schedulesListener.origin,this.schedulesSessionPublication=createLocalSchedulesSession(this.cwd,`http://127.0.0.1:${schedulesListener.port}`,this.projectId??"prj_local").then(async published=>{this.stopping?await published.dispose():this.schedulesSession=published}),await this.schedulesSessionPublication,this.stopping))return;schedulesListener.defaultPort!==void 0&&output_manager_default.print(import_chalk2.default.yellow(`! Vercel Schedules default port ${schedulesListener.defaultPort} is unavailable; listening on ${schedulesListener.port} instead.
45
45
  Pin a port with --schedules-port for clients outside the dev server.
@@ -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{CHECKBOX_INSTRUCTIONS}from"../../chunks/chunk-OFDTADPQ.js";import{readStandardInput}from"../../chunks/chunk-PSOVLGHP.js";import"../../chunks/chunk-XOETL6DB.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,visibilityFromEnvType}from"../../chunks/chunk-BK3TNLWO.js";import{getCustomEnvironments}from"../../chunks/chunk-F7AVGV4Y.js";import{getEnvRecords,pullEnvRecords}from"../../chunks/chunk-5RYQH3XW.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import{suggestNextCommands}from"../../chunks/chunk-AO6AMYBF.js";import{parseTarget}from"../../chunks/chunk-YZKARZ2B.js";import{formatEnvironment}from"../../chunks/chunk-RI6DJAFI.js";import{STANDARD_ENVIRONMENTS}from"../../chunks/chunk-7YKFF6CE.js";import{jsonNextStep,runWithJsonOutput,writeJsonResult}from"../../chunks/chunk-CBMWPDOL.js";import{resolveProjectContext}from"../../chunks/chunk-SR7BZA6N.js";import{formatProject}from"../../chunks/chunk-NE6PKR2J.js";import{isGuidanceEnabled}from"../../chunks/chunk-TAAWMNNL.js";import"../../chunks/chunk-5MPZSRYG.js";import"../../chunks/chunk-25565AGS.js";import{require_execa}from"../../chunks/chunk-RCUDI7OF.js";import"../../chunks/chunk-GD7AV7BO.js";import{ellipsis}from"../../chunks/chunk-AKOYIH3A.js";import{validateLsArgs}from"../../chunks/chunk-42J2KCDF.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import"../../chunks/chunk-E7WULWMX.js";import"../../chunks/chunk-TOTTVS5P.js";import{formatTable}from"../../chunks/chunk-2RXUQ72I.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-6YAYCEDT.js";import"../../chunks/chunk-VU3RBRDH.js";import"../../chunks/chunk-4VF5BZJP.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-S535FZTA.js";import"../../chunks/chunk-375JVQYK.js";import"../../chunks/chunk-GQ4CQDIL.js";import"../../chunks/chunk-Q7D7RGXM.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import"../../chunks/chunk-BPRGAX62.js";import{getCommandAliases}from"../../chunks/chunk-ZIC7VWFC.js";import"../../chunks/chunk-M3Z6NSC2.js";import"../../chunks/chunk-IHTWZEQW.js";import"../../chunks/chunk-ECFLIVEE.js";import"../../chunks/chunk-WTFD4MDT.js";import"../../chunks/chunk-SNGM6NSO.js";import"../../chunks/chunk-P24YBQ6H.js";import"../../chunks/chunk-NMIZSQDN.js";import"../../chunks/chunk-K7ARJYAG.js";import"../../chunks/chunk-V5TOMLK4.js";import"../../chunks/chunk-M3R7F2N4.js";import"../../chunks/chunk-4E6BGQWR.js";import"../../chunks/chunk-6UMVJ7RL.js";import"../../chunks/chunk-IIGNDMLO.js";import"../../chunks/chunk-N65H4JMJ.js";import"../../chunks/chunk-EJN55YDV.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-4U6ACPA4.js";import"../../chunks/chunk-7VGBGUX7.js";import"../../chunks/chunk-CU3LNJZV.js";import"../../chunks/chunk-JALVF3C2.js";import{addSubcommand,envCommand,envTargetChoices,getEnvTargetPlaceholder,isValidEnvTarget,listSubcommand,parseEnvTargetArg,pullSubcommand,removeSubcommand,resolveEnvTargetInput,runSubcommand,updateSubcommand}from"../../chunks/chunk-BZIC36KP.js";import{printError}from"../../chunks/chunk-PKZK23PR.js";import{help}from"../../chunks/chunk-OYIDWI5Y.js";import{param}from"../../chunks/chunk-3G3FQYMW.js";import"../../chunks/chunk-DNLE3KPC.js";import{TelemetryClient}from"../../chunks/chunk-MBXLL2HF.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{buildCommandWithYes,buildEnvAddCommandWithPreservedArgs,buildEnvRmCommandWithPreservedArgs,buildEnvUpdateCommandWithPreservedArgs,getLinkSuggestionArgs,getPreservedArgsForEnvAdd,getPreservedArgsForEnvRm,getPreservedArgsForEnvUpdate,outputActionRequired,outputAgentError,redactEnvValueArgs,withGlobalFlags}from"../../chunks/chunk-AUIV7YJO.js";import"../../chunks/chunk-FYE7ILRR.js";import{getLinkFromDir,getVercelDirectory}from"../../chunks/chunk-6NUH6ZPE.js";import{printAlignedLabel}from"../../chunks/chunk-PKNEWN4W.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-PL6IOUKW.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-US7YJ2RQ.js";import{getTeamByIdOrSlug}from"../../chunks/chunk-2VBFQZ72.js";import{validateJsonOutput}from"../../chunks/chunk-SDYCW5JM.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import{isAPIError}from"../../chunks/chunk-T2FCF46I.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-GZLYNPNU.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_dist as require_dist2}from"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,quoteArg}from"../../chunks/chunk-AMPJ6RWT.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import{require_strip_ansi}from"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import"../../chunks/chunk-JBU72NEQ.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")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};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."}var import_strip_ansi=__toESM(require_strip_ansi(),1);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{CHECKBOX_INSTRUCTIONS}from"../../chunks/chunk-OFDTADPQ.js";import{readStandardInput}from"../../chunks/chunk-PSOVLGHP.js";import"../../chunks/chunk-XOETL6DB.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,visibilityFromEnvType}from"../../chunks/chunk-MO2G2ND2.js";import{getCustomEnvironments}from"../../chunks/chunk-F7AVGV4Y.js";import{getEnvRecords,pullEnvRecords}from"../../chunks/chunk-TPJV5UNE.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import{suggestNextCommands}from"../../chunks/chunk-AO6AMYBF.js";import{parseTarget}from"../../chunks/chunk-YZKARZ2B.js";import{formatEnvironment}from"../../chunks/chunk-RI6DJAFI.js";import{STANDARD_ENVIRONMENTS}from"../../chunks/chunk-7YKFF6CE.js";import{jsonNextStep,runWithJsonOutput,writeJsonResult}from"../../chunks/chunk-EVBGFSK5.js";import{resolveProjectContext}from"../../chunks/chunk-UNPK7LVC.js";import{formatProject}from"../../chunks/chunk-NE6PKR2J.js";import{isGuidanceEnabled}from"../../chunks/chunk-TAAWMNNL.js";import"../../chunks/chunk-4T57TXQ3.js";import"../../chunks/chunk-25565AGS.js";import{require_execa}from"../../chunks/chunk-RCUDI7OF.js";import"../../chunks/chunk-GD7AV7BO.js";import{ellipsis}from"../../chunks/chunk-AKOYIH3A.js";import{validateLsArgs}from"../../chunks/chunk-42J2KCDF.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import"../../chunks/chunk-UFXIPUNI.js";import"../../chunks/chunk-TOTTVS5P.js";import{formatTable}from"../../chunks/chunk-2RXUQ72I.js";import{stamp_default}from"../../chunks/chunk-A2RZZQEP.js";import"../../chunks/chunk-Q7D7RGXM.js";import"../../chunks/chunk-UCRMJMH6.js";import"../../chunks/chunk-7JMN657A.js";import"../../chunks/chunk-JTAUWH5V.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-JUSNW3IF.js";import"../../chunks/chunk-375JVQYK.js";import"../../chunks/chunk-3KJ6HWSX.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import"../../chunks/chunk-SLCPSRDR.js";import{getCommandAliases}from"../../chunks/chunk-QROI2U32.js";import"../../chunks/chunk-M3Z6NSC2.js";import"../../chunks/chunk-ECFLIVEE.js";import"../../chunks/chunk-RDWLLSPU.js";import"../../chunks/chunk-7ZJ7VUIR.js";import"../../chunks/chunk-WTFD4MDT.js";import"../../chunks/chunk-IHTWZEQW.js";import"../../chunks/chunk-74VQ7PQV.js";import"../../chunks/chunk-SNGM6NSO.js";import"../../chunks/chunk-P24YBQ6H.js";import"../../chunks/chunk-NMIZSQDN.js";import"../../chunks/chunk-K7ARJYAG.js";import"../../chunks/chunk-V5TOMLK4.js";import"../../chunks/chunk-M3R7F2N4.js";import"../../chunks/chunk-4E6BGQWR.js";import"../../chunks/chunk-6UMVJ7RL.js";import"../../chunks/chunk-IIGNDMLO.js";import"../../chunks/chunk-N65H4JMJ.js";import"../../chunks/chunk-EJN55YDV.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-4U6ACPA4.js";import"../../chunks/chunk-7VGBGUX7.js";import"../../chunks/chunk-CU3LNJZV.js";import"../../chunks/chunk-JALVF3C2.js";import{addSubcommand,envCommand,envTargetChoices,getEnvTargetPlaceholder,isValidEnvTarget,listSubcommand,parseEnvTargetArg,pullSubcommand,removeSubcommand,resolveEnvTargetInput,runSubcommand,updateSubcommand}from"../../chunks/chunk-BZIC36KP.js";import{printError}from"../../chunks/chunk-NDMQVBTV.js";import{help}from"../../chunks/chunk-HZEKH3RO.js";import{param}from"../../chunks/chunk-3G3FQYMW.js";import"../../chunks/chunk-NSPW47RU.js";import{TelemetryClient}from"../../chunks/chunk-MBXLL2HF.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{buildCommandWithYes,buildEnvAddCommandWithPreservedArgs,buildEnvRmCommandWithPreservedArgs,buildEnvUpdateCommandWithPreservedArgs,getLinkSuggestionArgs,getPreservedArgsForEnvAdd,getPreservedArgsForEnvRm,getPreservedArgsForEnvUpdate,outputActionRequired,outputAgentError,redactEnvValueArgs,withGlobalFlags}from"../../chunks/chunk-5X635INY.js";import"../../chunks/chunk-FYE7ILRR.js";import{getLinkFromDir,getVercelDirectory}from"../../chunks/chunk-2J35YKA2.js";import"../../chunks/chunk-4HR3I3ML.js";import{printAlignedLabel}from"../../chunks/chunk-PKNEWN4W.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-GL66K54F.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-AYZ52QDF.js";import{getTeamByIdOrSlug}from"../../chunks/chunk-2VBFQZ72.js";import{validateJsonOutput}from"../../chunks/chunk-SDYCW5JM.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import{require_ms}from"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import{isAPIError}from"../../chunks/chunk-4DMKP6AO.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-GZLYNPNU.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import{require_dist}from"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import{require_dist as require_dist2}from"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification,getGlobalFlagsFromArgs,quoteArg}from"../../chunks/chunk-AMPJ6RWT.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import{require_strip_ansi}from"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import"../../chunks/chunk-Q2QVK3TH.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")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};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."}var import_strip_ansi=__toESM(require_strip_ansi(),1);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)}var jsonWarnings;function printEnvAddWarning(message,reason){jsonWarnings?.push({reason,message:(0,import_strip_ansi.default)(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}`)}function isBranchNotFoundError(err){if([err.code,err.slug].filter(v=>typeof v=="string").some(c=>c.toLowerCase()==="branch_not_found"))return!0;let message=(err.serverMessage??"").toLowerCase();return message.includes("branch")&&/not found|(?:doesn't|does not) exist/.test(message)}function branchNotFoundMessage(branch){return`Branch ${branch} was not found in the connected Git repository.`}function branchNotFoundRecovery(branch){return`Push ${branch} to the remote, then run the command again. Or omit --git-branch to apply the variable to all Preview branches.`}function omitGitBranchArgs(argv){let out=[];for(let i=0;i<argv.length;i++){let arg=argv[i];if(arg==="--git-branch"){i+1<argv.length&&!argv[i+1].startsWith("-")&&i++;continue}arg.startsWith("--git-branch=")||out.push(arg)}return out}function buildBranchNotFoundNext(argv,envName,branch){let name=quoteArg(envName);return[{command:buildEnvAddCommandWithPreservedArgs(argv,`env add ${name} --environment preview --git-branch ${quoteArg(branch)} --value "<value>"`),when:`Add the variable after pushing ${branch} to the remote`},{command:buildEnvAddCommandWithPreservedArgs(omitGitBranchArgs(argv),`env add ${name} --environment preview --value "<value>"`),when:"Add the variable to all Preview branches"}]}async function add(client,argv){if(argv.includes("--json")){jsonWarnings=[];try{return await runWithJsonOutput(client,()=>addEnv(client,argv,!0))}finally{jsonWarnings=void 0}}return addEnv(client,argv,!1)}async function addEnv(client,argv,json){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"]),telemetryClient.trackCliFlagJson(opts["--json"]),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,"deprecated");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;if(positionalEnvironment!==void 0&&!parseEnvTargetArg(positionalEnvironment).every(part=>isValidEnvTarget(part))){let message="The environment argument accepts only production, preview, or development. Use --environment for custom environments, and pass the value with --value or stdin.",command=buildEnvAddCommandWithPreservedArgs(redactEnvValueArgs(client.argv),`env add ${envName?quoteArg(envName):"<name>"} --environment ${getEnvTargetPlaceholder()} --value "<value>"`);return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message,next:[{command,when:"replace the placeholders, then run"}]},2),output_manager_default.error(message),output_manager_default.print(`
10
10
  Replace the placeholders, then run:
@@ -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{pull}from"../../chunks/chunk-BK3TNLWO.js";import{promptExperimentalServicesMigration}from"../../chunks/chunk-75DUL7VI.js";import"../../chunks/chunk-XRIM4BUF.js";import"../../chunks/chunk-RBIHS5QI.js";import"../../chunks/chunk-J24BABG4.js";import"../../chunks/chunk-U4Z2MMOF.js";import"../../chunks/chunk-NIS66BFX.js";import"../../chunks/chunk-5RYQH3XW.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import"../../chunks/chunk-YZKARZ2B.js";import"../../chunks/chunk-7YKFF6CE.js";import{jsonNextStep,runWithJsonOutput,writeJsonResult,writeJsonUsageError}from"../../chunks/chunk-CBMWPDOL.js";import"../../chunks/chunk-SR7BZA6N.js";import"../../chunks/chunk-NE6PKR2J.js";import"../../chunks/chunk-SBEWZ65N.js";import"../../chunks/chunk-5MPZSRYG.js";import"../../chunks/chunk-25565AGS.js";import"../../chunks/chunk-E7WULWMX.js";import{ensureLink}from"../../chunks/chunk-6YAYCEDT.js";import"../../chunks/chunk-VU3RBRDH.js";import"../../chunks/chunk-4VF5BZJP.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-S535FZTA.js";import"../../chunks/chunk-GQ4CQDIL.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import"../../chunks/chunk-BPRGAX62.js";import{getCommandAliases}from"../../chunks/chunk-ZIC7VWFC.js";import"../../chunks/chunk-M3Z6NSC2.js";import"../../chunks/chunk-IHTWZEQW.js";import"../../chunks/chunk-ECFLIVEE.js";import"../../chunks/chunk-WTFD4MDT.js";import"../../chunks/chunk-SNGM6NSO.js";import"../../chunks/chunk-P24YBQ6H.js";import"../../chunks/chunk-NMIZSQDN.js";import"../../chunks/chunk-K7ARJYAG.js";import"../../chunks/chunk-V5TOMLK4.js";import"../../chunks/chunk-M3R7F2N4.js";import"../../chunks/chunk-4E6BGQWR.js";import"../../chunks/chunk-6UMVJ7RL.js";import"../../chunks/chunk-IIGNDMLO.js";import"../../chunks/chunk-N65H4JMJ.js";import"../../chunks/chunk-EJN55YDV.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-4U6ACPA4.js";import"../../chunks/chunk-7VGBGUX7.js";import"../../chunks/chunk-CU3LNJZV.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-BZIC36KP.js";import{printError}from"../../chunks/chunk-PKZK23PR.js";import{help}from"../../chunks/chunk-OYIDWI5Y.js";import"../../chunks/chunk-3G3FQYMW.js";import{detectExplicitScope,getScope}from"../../chunks/chunk-DNLE3KPC.js";import{TelemetryClient}from"../../chunks/chunk-MBXLL2HF.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{buildCommandWithYes,writeActionRequired}from"../../chunks/chunk-AUIV7YJO.js";import{addSubcommand,linkCommand}from"../../chunks/chunk-FYE7ILRR.js";import{addRepoLink,ensureRepoLink,findRepoRoot,getLinkedProjectIdSync,getVercelDirectory,isPromptCanceledError,resolveProjectCwd}from"../../chunks/chunk-6NUH6ZPE.js";import"../../chunks/chunk-PKNEWN4W.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-PL6IOUKW.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-US7YJ2RQ.js";import"../../chunks/chunk-2VBFQZ72.js";import"../../chunks/chunk-SDYCW5JM.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import"../../chunks/chunk-T2FCF46I.js";import{cmd}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{output_manager_default}from"../../chunks/chunk-GZLYNPNU.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification}from"../../chunks/chunk-AMPJ6RWT.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"../../chunks/chunk-JBU72NEQ.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})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var import_build_utils=__toESM(require_build_utils(),1);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{pull}from"../../chunks/chunk-MO2G2ND2.js";import{promptExperimentalServicesMigration}from"../../chunks/chunk-ZTHW5VNH.js";import"../../chunks/chunk-XRIM4BUF.js";import"../../chunks/chunk-FOE3MWES.js";import"../../chunks/chunk-J24BABG4.js";import"../../chunks/chunk-U4Z2MMOF.js";import"../../chunks/chunk-NIS66BFX.js";import"../../chunks/chunk-TPJV5UNE.js";import"../../chunks/chunk-6Y2ZL5XJ.js";import"../../chunks/chunk-YZKARZ2B.js";import"../../chunks/chunk-7YKFF6CE.js";import{jsonNextStep,runWithJsonOutput,writeJsonResult,writeJsonUsageError}from"../../chunks/chunk-EVBGFSK5.js";import"../../chunks/chunk-UNPK7LVC.js";import"../../chunks/chunk-NE6PKR2J.js";import"../../chunks/chunk-4VP57TOJ.js";import"../../chunks/chunk-4T57TXQ3.js";import"../../chunks/chunk-25565AGS.js";import"../../chunks/chunk-UFXIPUNI.js";import{ensureLink}from"../../chunks/chunk-UCRMJMH6.js";import"../../chunks/chunk-7JMN657A.js";import"../../chunks/chunk-JTAUWH5V.js";import"../../chunks/chunk-PVASGBEF.js";import"../../chunks/chunk-JUSNW3IF.js";import"../../chunks/chunk-3KJ6HWSX.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import"../../chunks/chunk-SLCPSRDR.js";import{getCommandAliases}from"../../chunks/chunk-QROI2U32.js";import"../../chunks/chunk-M3Z6NSC2.js";import"../../chunks/chunk-ECFLIVEE.js";import"../../chunks/chunk-RDWLLSPU.js";import"../../chunks/chunk-7ZJ7VUIR.js";import"../../chunks/chunk-WTFD4MDT.js";import"../../chunks/chunk-IHTWZEQW.js";import"../../chunks/chunk-74VQ7PQV.js";import"../../chunks/chunk-SNGM6NSO.js";import"../../chunks/chunk-P24YBQ6H.js";import"../../chunks/chunk-NMIZSQDN.js";import"../../chunks/chunk-K7ARJYAG.js";import"../../chunks/chunk-V5TOMLK4.js";import"../../chunks/chunk-M3R7F2N4.js";import"../../chunks/chunk-4E6BGQWR.js";import"../../chunks/chunk-6UMVJ7RL.js";import"../../chunks/chunk-IIGNDMLO.js";import"../../chunks/chunk-N65H4JMJ.js";import"../../chunks/chunk-EJN55YDV.js";import"../../chunks/chunk-5DXC4TE2.js";import"../../chunks/chunk-4U6ACPA4.js";import"../../chunks/chunk-7VGBGUX7.js";import"../../chunks/chunk-CU3LNJZV.js";import"../../chunks/chunk-JALVF3C2.js";import"../../chunks/chunk-BZIC36KP.js";import{printError}from"../../chunks/chunk-NDMQVBTV.js";import{help}from"../../chunks/chunk-HZEKH3RO.js";import"../../chunks/chunk-3G3FQYMW.js";import{detectExplicitScope,getScope}from"../../chunks/chunk-NSPW47RU.js";import{TelemetryClient}from"../../chunks/chunk-MBXLL2HF.js";import"../../chunks/chunk-2EYYB6YN.js";import"../../chunks/chunk-NWGBDBZI.js";import{buildCommandWithYes,writeActionRequired}from"../../chunks/chunk-5X635INY.js";import{addSubcommand,linkCommand}from"../../chunks/chunk-FYE7ILRR.js";import{addRepoLink,ensureRepoLink,findRepoRoot,getLinkedProjectIdSync,getVercelDirectory,isPromptCanceledError,resolveProjectCwd}from"../../chunks/chunk-2J35YKA2.js";import"../../chunks/chunk-4HR3I3ML.js";import"../../chunks/chunk-PKNEWN4W.js";import"../../chunks/chunk-ITQPDXXA.js";import"../../chunks/chunk-GL66K54F.js";import"../../chunks/chunk-4NTBYNFR.js";import{parseArguments}from"../../chunks/chunk-AYZ52QDF.js";import"../../chunks/chunk-2VBFQZ72.js";import"../../chunks/chunk-SDYCW5JM.js";import"../../chunks/chunk-LUX4PBJL.js";import"../../chunks/chunk-OPORM35X.js";import"../../chunks/chunk-MXTC4ZAQ.js";import"../../chunks/chunk-ZS2WS4AM.js";import"../../chunks/chunk-4SAVH3H7.js";import"../../chunks/chunk-4DMKP6AO.js";import{cmd}from"../../chunks/chunk-VRH7LWOC.js";import"../../chunks/chunk-DBT6PGEH.js";import{output_manager_default}from"../../chunks/chunk-GZLYNPNU.js";import"../../chunks/chunk-BLUPZPAS.js";import{require_build_utils}from"../../chunks/chunk-5MDNVAE6.js";import"../../chunks/chunk-OCR5CRTH.js";import"../../chunks/chunk-RM3ZDRYE.js";import"../../chunks/chunk-YHPPP3SF.js";import"../../chunks/chunk-PUKYAALC.js";import{getFlagsSpecification}from"../../chunks/chunk-AMPJ6RWT.js";import"../../chunks/chunk-2BKALEOP.js";import{require_source}from"../../chunks/chunk-NB2WLB3J.js";import"../../chunks/chunk-ISWW3DKF.js";import"../../chunks/chunk-BULSRTQE.js";import"../../chunks/chunk-BRQUZ5NC.js";import"../../chunks/chunk-D6REP5QQ.js";import"../../chunks/chunk-FBYA6LLM.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7EJQLVWX.js";import"../../chunks/chunk-SCV7XEEO.js";import{AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"../../chunks/chunk-Q2QVK3TH.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})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var import_build_utils=__toESM(require_build_utils(),1);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{return client.cwd=await resolveProjectCwd(cwd),output_manager_default.print(`
9
9
  `),await pull(client,["--yes"],"vercel-cli:link",{oidcTokenOnly:!0})!==0?(warnOidcRefreshFailed(),!1):!0}catch{return warnOidcRefreshFailed(),!1}finally{client.cwd=originalCwd}}var OIDC_REFRESH_FAILED_WARNING={reason:"oidc_token_not_refreshed",message:"Linked project, but failed to refresh VERCEL_OIDC_TOKEN in .env.local. Rerun the link command to retry."};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,{stream:client.stderr,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 yes=!!parsedArgs.flags["--yes"];try{await addRepoLink(client,client.cwd,{yes})}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 client.argv.includes("--json")?writeJsonUsageError(client,error):(printError(error),2)}if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("link"),output_manager_default.print(help(linkCommand,{stream:client.stderr,columns:client.stderr.columns})),0;telemetry.trackCliFlagRepo(parsedArgs.flags["--repo"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionProject(parsedArgs.flags["--project"]),telemetry.trackCliFlagJson(parsedArgs.flags["--json"]);let flags=parsedArgs.flags,argument=parsedArgs.args[1],json=!!flags["--json"],run=()=>linkDirectory(client,telemetry,flags,argument,json);return json?runWithJsonOutput(client,run):run()}async function linkDirectory(client,telemetry,flags,argument,json){"--confirm"in flags&&(telemetry.trackCliFlagConfirm(flags["--confirm"]),output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"),flags["--yes"]=flags["--confirm"]);let yes=!!flags["--yes"],cwd=argument;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,flags["--repo"]){if(json&&!yes)return writeActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:"Can't link the repository without --yes in non-interactive mode. --yes links its projects with the default team and settings.",next:[{command:buildCommandWithYes(client.argv)}]}),getExitCodeForReason(AGENT_REASON.CONFIRMATION_REQUIRED);output_manager_default.warn(`The ${cmd("--repo")} option is in alpha, please report issues`);let repoLink;try{repoLink=await ensureRepoLink(client,cwd,{yes,overwrite:!0})}catch(err){if(isPromptCanceledError(err)||json)throw err;return output_manager_default.prettyError(err),1}if(json)return writeJsonResult(client,repoLink?.repoConfig?{repoLink:{directory:repoLink.rootPath,remoteName:repoLink.repoConfig.remoteName,projects:repoLink.repoConfig.projects},outcome:"linked",next:[jsonNextStep(client,["project","list"],"List projects")]}:{repoLink:null,outcome:"unchanged"})}else{let selectedOrg=detectExplicitScope(client)?(await getScope(client,{resolveLocalScope:!0})).org:void 0,linkNonInteractive=client.nonInteractive||client.argv.includes("--non-interactive"),previousProjectId=json?getLinkedProjectIdSync(getVercelDirectory(await resolveProjectCwd(cwd))):void 0,link2=await ensureLink("link",client,cwd,{autoConfirm:yes,forceDelete:!0,selectedOrg,projectName: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});let oidcRefreshed=await refreshOidcTokenAfterLink(client,cwd);if(json){let unchanged=!!((0,import_build_utils.getPlatformEnv)("ORG_ID")&&(0,import_build_utils.getPlatformEnv)("PROJECT_ID"))||previousProjectId===link2.project.id;return writeJsonResult(client,{link:{teamId:link2.org.id,projectId:link2.project.id,projectName:link2.project.name,directory:projectCwd},outcome:unchanged?"unchanged":"linked",projectCreated:!!link2.projectCreated,previousProjectId:!unchanged&&previousProjectId?previousProjectId:null,...oidcRefreshed?{}:{warnings:[OIDC_REFRESH_FAILED_WARNING]},next:[jsonNextStep(client,["project","inspect",link2.project.name],"Inspect the project")]})}}return 0}export{link as default};