@vercel/cli-support 65.10.0-snapshot-c80a43d75dc7 → 65.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{add-RFPJCD35.js → add-4MTUAI2X.js} +1 -1
- package/dist/chunks/{add-A3SN7KWS.js → add-JYLWBVVQ.js} +1 -1
- package/dist/chunks/{add-TOKTANDW.js → add-T5ERJ62Z.js} +1 -1
- package/dist/chunks/{build-25I6XOV7.js → build-OGWTTFLG.js} +1 -1
- package/dist/chunks/{chunk-SHY7P3C6.js → chunk-36XHIIUT.js} +1 -1
- package/dist/chunks/{chunk-3AX7ZZJ7.js → chunk-3PKL2PTF.js} +1 -1
- package/dist/chunks/{chunk-2HLYY3KF.js → chunk-3QFBVAHL.js} +1 -1
- package/dist/chunks/chunk-3QYXC4PH.js +11 -0
- package/dist/chunks/{chunk-BT5C6MCY.js → chunk-42J2KCDF.js} +1 -1
- package/dist/chunks/{chunk-NLKM5LR5.js → chunk-4E6BGQWR.js} +1 -1
- package/dist/chunks/{chunk-FAVZ6WVS.js → chunk-4U6ACPA4.js} +1 -1
- package/dist/chunks/{chunk-NAEY6HG5.js → chunk-4WXVKR43.js} +1 -1
- package/dist/chunks/{chunk-MKYFAYCD.js → chunk-52X4YVSG.js} +1 -1
- package/dist/chunks/{chunk-3WYSEF57.js → chunk-5IZ33FNL.js} +1 -1
- package/dist/chunks/{chunk-GPISCZ2P.js → chunk-5MPZSRYG.js} +1 -1
- package/dist/chunks/{chunk-AX3V7N44.js → chunk-5RSSGN2Q.js} +1 -1
- package/dist/chunks/{chunk-7ULLVH2G.js → chunk-5RYQH3XW.js} +1 -1
- package/dist/chunks/{chunk-KNAOHPOI.js → chunk-6NUH6ZPE.js} +6 -6
- package/dist/chunks/{chunk-EJ34DLV4.js → chunk-6RMW63GB.js} +1 -1
- package/dist/chunks/{chunk-BB5UMZMF.js → chunk-6UMVJ7RL.js} +1 -1
- package/dist/chunks/{chunk-HR462OEG.js → chunk-6YAYCEDT.js} +2 -2
- package/dist/chunks/{chunk-VYRMHE34.js → chunk-75DUL7VI.js} +1 -1
- package/dist/chunks/{chunk-TNNEKGGF.js → chunk-7LSH3MEB.js} +1 -1
- package/dist/chunks/{chunk-LQAQD5LG.js → chunk-7TR6H6NE.js} +3 -3
- package/dist/chunks/chunk-7VGBGUX7.js +7 -0
- package/dist/chunks/chunk-A3C67PNC.js +7 -0
- package/dist/chunks/{chunk-CKTLP5GX.js → chunk-AMPJ6RWT.js} +1 -1
- package/dist/chunks/{chunk-IZ4GFKGR.js → chunk-AO6AMYBF.js} +1 -1
- package/dist/chunks/chunk-AUIV7YJO.js +11 -0
- package/dist/chunks/chunk-AY523IYR.js +7 -0
- package/dist/chunks/{chunk-DBPN2VGJ.js → chunk-B4XGTAFO.js} +1 -1
- package/dist/chunks/{chunk-DRLGZXAL.js → chunk-BIRSJSAO.js} +1 -1
- package/dist/chunks/{chunk-WHUZRBYL.js → chunk-BK3TNLWO.js} +5 -5
- package/dist/chunks/chunk-BZIC36KP.js +7 -0
- package/dist/chunks/chunk-CBMWPDOL.js +8 -0
- package/dist/chunks/{chunk-G2BNLRPU.js → chunk-CHIYT3V4.js} +1 -1
- package/dist/chunks/chunk-CJ6XPDSS.js +11 -0
- package/dist/chunks/{chunk-T7HE23VK.js → chunk-CU3LNJZV.js} +1 -1
- package/dist/chunks/chunk-DIHB5BUY.js +8 -0
- package/dist/chunks/{chunk-TZ6MSTOI.js → chunk-DNLE3KPC.js} +1 -1
- package/dist/chunks/{chunk-R3D4M5RE.js → chunk-DQASZDQT.js} +1 -1
- package/dist/chunks/{chunk-TNUQME3L.js → chunk-DQNP7OQ5.js} +1 -1
- package/dist/chunks/{chunk-NGHFFOD2.js → chunk-DUCCC22H.js} +1 -1
- package/dist/chunks/{chunk-QCIIUQV3.js → chunk-E7WULWMX.js} +1 -1
- package/dist/chunks/{chunk-CZOD25BC.js → chunk-ECFLIVEE.js} +1 -1
- package/dist/chunks/{chunk-FI5O4WHD.js → chunk-ECGY67NB.js} +1 -1
- package/dist/chunks/{chunk-S5JBQCBA.js → chunk-EJN55YDV.js} +1 -1
- package/dist/chunks/{chunk-3PXE5BLH.js → chunk-ER7L7HYA.js} +1 -1
- package/dist/chunks/{chunk-7UFI6OYF.js → chunk-FOWAVQOH.js} +1 -1
- package/dist/chunks/{chunk-4JWAXIIN.js → chunk-FPREO4VS.js} +1 -1
- package/dist/chunks/{chunk-PXQAWH7E.js → chunk-FSJFWVUY.js} +1 -1
- package/dist/chunks/{chunk-Y57DK3ZN.js → chunk-FXHB7TTL.js} +1 -1
- package/dist/chunks/chunk-FYE7ILRR.js +7 -0
- package/dist/chunks/{chunk-V32V4SXB.js → chunk-GQ4CQDIL.js} +1 -1
- package/dist/chunks/{chunk-W634OFUG.js → chunk-GZLYNPNU.js} +6 -5
- package/dist/chunks/chunk-HTPNGLPH.js +7 -0
- package/dist/chunks/{chunk-W5GHMAHP.js → chunk-IHTWZEQW.js} +1 -1
- package/dist/chunks/{chunk-4LGAV2WN.js → chunk-IIGNDMLO.js} +1 -1
- package/dist/chunks/{chunk-F2LNGJOZ.js → chunk-JA6IGJ67.js} +1 -1
- package/dist/chunks/chunk-JBU72NEQ.js +7 -0
- package/dist/chunks/{chunk-U6XJYQJS.js → chunk-JLNF2QTR.js} +1 -1
- package/dist/chunks/{chunk-SODZSOOL.js → chunk-K5KVSA2A.js} +1 -1
- package/dist/chunks/{chunk-VD2FK6OF.js → chunk-K7ARJYAG.js} +1 -1
- package/dist/chunks/{chunk-5TI3ZXW3.js → chunk-KBVYN635.js} +1 -1
- package/dist/chunks/chunk-KKE55LTK.js +7 -0
- package/dist/chunks/{chunk-G5T6UQAL.js → chunk-KV3QXTRZ.js} +1 -1
- package/dist/chunks/{chunk-3F5BOG4A.js → chunk-KZLRIAAT.js} +1 -1
- package/dist/chunks/{chunk-L4QQTYUI.js → chunk-LE72YLCC.js} +2 -2
- package/dist/chunks/{chunk-HJ45TAM4.js → chunk-LIEWXPUC.js} +1 -1
- package/dist/chunks/{chunk-ANCWFEOM.js → chunk-M3R7F2N4.js} +1 -1
- package/dist/chunks/{chunk-MUNGQJGO.js → chunk-M3Z6NSC2.js} +1 -1
- package/dist/chunks/{chunk-VPUYTI5E.js → chunk-MBXLL2HF.js} +1 -1
- package/dist/chunks/{chunk-C24IKNZN.js → chunk-MKTZDEOJ.js} +1 -1
- package/dist/chunks/{chunk-VZGTL3YC.js → chunk-N5AN4JZL.js} +1 -1
- package/dist/chunks/{chunk-EJZNJN4N.js → chunk-N65H4JMJ.js} +1 -1
- package/dist/chunks/{chunk-LC4BSDDG.js → chunk-NAN5IE3B.js} +1 -1
- package/dist/chunks/{chunk-TD7AL545.js → chunk-NE6PKR2J.js} +1 -1
- package/dist/chunks/{chunk-2EFBGKRC.js → chunk-NLTZGQB2.js} +1 -1
- package/dist/chunks/{chunk-TL4ZLZ2Q.js → chunk-NMIZSQDN.js} +1 -1
- package/dist/chunks/{chunk-22UXDTCE.js → chunk-NZRBJB6T.js} +1 -1
- package/dist/chunks/chunk-OII46FDN.js +12 -0
- package/dist/chunks/{chunk-YOWMZJPA.js → chunk-OJWI6QJ3.js} +1 -1
- package/dist/chunks/{chunk-GKALP6QD.js → chunk-OYIDWI5Y.js} +1 -1
- package/dist/chunks/{chunk-QVMU7ZKQ.js → chunk-P24YBQ6H.js} +1 -1
- package/dist/chunks/{chunk-2JCJP43W.js → chunk-P6J22UJQ.js} +1 -1
- package/dist/chunks/{chunk-E7DYXF6G.js → chunk-PFZCGMJ7.js} +1 -1
- package/dist/chunks/{chunk-64UCX5JM.js → chunk-PKNEWN4W.js} +1 -1
- package/dist/chunks/{chunk-Q4GX2UTG.js → chunk-PKZK23PR.js} +1 -1
- package/dist/chunks/{chunk-56UH6NQ3.js → chunk-PL6IOUKW.js} +1 -1
- package/dist/chunks/{chunk-MBL7MWP5.js → chunk-Q2JNATRP.js} +1 -1
- package/dist/chunks/{chunk-KMPDQE4Q.js → chunk-Q46Q4Y4R.js} +1 -1
- package/dist/chunks/{chunk-NAJCRBQB.js → chunk-QXL353OB.js} +1 -1
- package/dist/chunks/{chunk-VR5ROBAO.js → chunk-RI6DJAFI.js} +1 -1
- package/dist/chunks/{chunk-2DHDKWYN.js → chunk-RIJ45N7C.js} +1 -1
- package/dist/chunks/{chunk-6AJWRPTY.js → chunk-RUBMVRT6.js} +1 -1
- package/dist/chunks/{chunk-6RUAAORO.js → chunk-S535FZTA.js} +1 -1
- package/dist/chunks/{chunk-5I7CC45F.js → chunk-SBEWZ65N.js} +1 -1
- package/dist/chunks/{chunk-GJCVOEC2.js → chunk-SDYCW5JM.js} +1 -1
- package/dist/chunks/chunk-SNGM6NSO.js +7 -0
- package/dist/chunks/chunk-SNNJRKD6.js +10 -0
- package/dist/chunks/{chunk-DX2OHM56.js → chunk-SR7BZA6N.js} +1 -1
- package/dist/chunks/{chunk-QXYCICNB.js → chunk-STKZTUGE.js} +1 -1
- package/dist/chunks/{chunk-XGOELSYA.js → chunk-SXYA7JSX.js} +1 -1
- package/dist/chunks/chunk-TILI4QBL.js +11 -0
- package/dist/chunks/{chunk-PMEYNJU2.js → chunk-TZE4CS4K.js} +1 -1
- package/dist/chunks/{chunk-BZV2S4H6.js → chunk-U2TQFAO3.js} +1 -1
- package/dist/chunks/chunk-U2ZNF6HN.js +8 -0
- package/dist/chunks/chunk-UIMJNASP.js +7 -0
- package/dist/chunks/{chunk-FQVIWQ6M.js → chunk-UQNBUXQA.js} +1 -1
- package/dist/chunks/{chunk-C4N4LKPM.js → chunk-US7YJ2RQ.js} +1 -1
- package/dist/chunks/{chunk-JVNIDSP5.js → chunk-V5TOMLK4.js} +1 -1
- package/dist/chunks/{chunk-L6CZL2IQ.js → chunk-VQSSVB6V.js} +1 -1
- package/dist/chunks/chunk-VTITZEPW.js +9 -0
- package/dist/chunks/chunk-WFS3XBAA.js +8 -0
- package/dist/chunks/{chunk-XEXOSJIU.js → chunk-WKIDCYKL.js} +1 -1
- package/dist/chunks/{chunk-UVHKXCR5.js → chunk-WKSXBH7X.js} +1 -2
- package/dist/chunks/{chunk-77LSSWXL.js → chunk-WTFD4MDT.js} +1 -1
- package/dist/chunks/{chunk-YO6SJCZP.js → chunk-WYGOYE6C.js} +1 -1
- package/dist/chunks/{chunk-UNASHUWQ.js → chunk-XFUUALZS.js} +1 -1
- package/dist/chunks/{chunk-SXEOJSZQ.js → chunk-XS3MNHFR.js} +1 -1
- package/dist/chunks/{chunk-ZGQNI22M.js → chunk-YGYUPPAL.js} +2 -2
- package/dist/chunks/{chunk-Q25FOMOX.js → chunk-YKLTNKQJ.js} +1 -1
- package/dist/chunks/{chunk-WFCGAYP5.js → chunk-YUHKH4TK.js} +1 -1
- package/dist/chunks/{chunk-D4TD2KWH.js → chunk-YZKARZ2B.js} +1 -1
- package/dist/chunks/chunk-ZCUUCYID.js +13 -0
- package/dist/chunks/{chunk-FPYHB76H.js → chunk-ZEUREQ4E.js} +1 -1
- package/dist/chunks/chunk-ZIC7VWFC.js +14 -0
- package/dist/chunks/{chunk-QGZZL6YY.js → chunk-ZPJHONCZ.js} +1 -1
- package/dist/chunks/{chunk-R2P4PNRQ.js → chunk-ZQXXESKG.js} +1 -1
- package/dist/chunks/{clear-B764MEAM.js → clear-Z5OO6URI.js} +1 -1
- package/dist/chunks/cli-embedded-Y74S252S.js +66 -0
- package/dist/chunks/{compile-vercel-config-EWCB7SIC.js → compile-vercel-config-ZKUTSDWV.js} +1 -1
- package/dist/chunks/{config-D4WY2HG4.js → config-AUTTHXQO.js} +1 -1
- package/dist/chunks/config-RJ7PLFQD.js +7 -0
- package/dist/chunks/{connect-git-provider-AWEOEEOO.js → connect-git-provider-YIX5ZOU6.js} +1 -1
- package/dist/chunks/{delete-W3GMFAKA.js → delete-QQOC63HV.js} +1 -1
- package/dist/chunks/{delete-SKYFHUWD.js → delete-WIGSOZR3.js} +1 -1
- package/dist/chunks/{detect-services-3TRRRLES.js → detect-services-J4LGLAHC.js} +1 -1
- package/dist/chunks/{disable-EBPZ2LYC.js → disable-L54VGY5A.js} +1 -1
- package/dist/chunks/{discard-SMVPENSP.js → discard-Q5UPTZR2.js} +1 -1
- package/dist/chunks/{edit-CGTNGJKY.js → edit-FRGMYBW3.js} +1 -1
- package/dist/chunks/{edit-A3M3GBGP.js → edit-QEDNQ33T.js} +1 -1
- package/dist/chunks/{enable-6A5THWDP.js → enable-TGQZWSBG.js} +1 -1
- package/dist/chunks/engine-DkdkXQEy-FDYYIXY7.js +17 -0
- package/dist/chunks/{exec-UV73J2ZB.js → exec-H3X7U4P3.js} +1 -1
- package/dist/chunks/{export-R5IUWAW5.js → export-YYQ2J5AT.js} +1 -1
- package/dist/chunks/{future-CPJUUZTU.js → future-RYEYLPCG.js} +1 -1
- package/dist/chunks/{generate-cert-for-deploy-Z3HCAR5H.js → generate-cert-for-deploy-Y4KDIFF2.js} +1 -1
- package/dist/chunks/image-PDPRURMH.js +7 -0
- package/dist/chunks/{import-builders-GPJQAMXT.js → import-builders-H54QCMQ4.js} +1 -1
- package/dist/chunks/{inspect-WC2C4MDP.js → inspect-6IBPIBIJ.js} +1 -1
- package/dist/chunks/{inspect-WWOHWQKS.js → inspect-AHHXHIIP.js} +1 -1
- package/dist/chunks/{inspect-BO2ACFEG.js → inspect-Q7FYDFL7.js} +1 -1
- package/dist/chunks/{inspect-6FEL5DYV.js → inspect-RPCDGIP3.js} +1 -1
- package/dist/chunks/{inspect-TEPB7KVC.js → inspect-SFM3NWDF.js} +1 -1
- package/dist/chunks/{list-C5GUZ35P.js → list-7WWUYCE6.js} +1 -1
- package/dist/chunks/{list-EZWZSVM4.js → list-GSVERG4S.js} +1 -1
- package/dist/chunks/{list-4KSJEP23.js → list-NXZXKKAR.js} +1 -1
- package/dist/chunks/{login-ZNCCVA4H.js → login-HEHHQO3F.js} +1 -1
- package/dist/chunks/{login-PDZT4PQR.js → login-XKLPSZNN.js} +1 -1
- package/dist/chunks/{logs-YKQMUTMG.js → logs-NJ46ZSNZ.js} +1 -1
- package/dist/chunks/{ls-3HUS6KS6.js → ls-5SKRXNSI.js} +1 -1
- package/dist/chunks/{ls-WX4BJRDV.js → ls-FOFJU2JJ.js} +1 -1
- package/dist/chunks/{ls-TASQJDLF.js → ls-ITWXAWSZ.js} +1 -1
- package/dist/chunks/{ls-LYVPEIIT.js → ls-LCUOBWY2.js} +1 -1
- package/dist/chunks/{ls-KQJYKADC.js → ls-MWGIT2YH.js} +1 -1
- package/dist/chunks/{ls-RBPRE6BF.js → ls-OY5YTZGN.js} +1 -1
- package/dist/chunks/{ls-ZP7OBTTV.js → ls-TZN53EJL.js} +1 -1
- package/dist/chunks/{mutate-5N6DMBYS.js → mutate-ZYXVL22A.js} +1 -1
- package/dist/chunks/{native-self-update-7OAY4AVR.js → native-self-update-DEVBYOH2.js} +1 -1
- package/dist/chunks/{notifications-OVFMQLHL.js → notifications-XAPB2F2T.js} +1 -1
- package/dist/chunks/{open-DOBOKUEK.js → open-WPRHI6ND.js} +1 -1
- package/dist/chunks/{openapi-YAZA3237.js → openapi-UUFKDKGC.js} +1 -1
- package/dist/chunks/{permissions-PHCOVDWK.js → permissions-FU5OET67.js} +1 -1
- package/dist/chunks/{plugin-offer-M7KJSJU6.js → plugin-offer-E5JOW442.js} +1 -1
- package/dist/chunks/{prompt-missing-credentials-RTNCHH6Y.js → prompt-missing-credentials-ZZVTEQQB.js} +1 -1
- package/dist/chunks/{publish-JIFRJNDV.js → publish-R5IV2BH2.js} +1 -1
- package/dist/chunks/pull-CQVHIIAN.js +7 -0
- package/dist/chunks/{purchase-domain-if-available-3EBONBX3.js → purchase-domain-if-available-VMWCMYC2.js} +1 -1
- package/dist/chunks/{push-ZN6CBJLJ.js → push-Y5CUOISM.js} +1 -1
- package/dist/chunks/{query-MT6ID6C7.js → query-VMKIOI3W.js} +1 -1
- package/dist/chunks/{reauthenticate-OXFB64PS.js → reauthenticate-5K7LBTOW.js} +1 -1
- package/dist/chunks/{reorder-N2L43LXD.js → reorder-W3MXHSGZ.js} +1 -1
- package/dist/chunks/{reply-WBR3XXBJ.js → reply-YH7HRIWQ.js} +1 -1
- package/dist/chunks/{resolve-NMR24Y67.js → resolve-FWVMWJTG.js} +1 -1
- package/dist/chunks/{resolve-agent-team-KRTLBC5D.js → resolve-agent-team-6L7AQUA2.js} +1 -1
- package/dist/chunks/{restore-AKAVSLAK.js → restore-I7L3EOS4.js} +1 -1
- package/dist/chunks/{rm-Q3ZXEMGI.js → rm-AWUMNWQU.js} +1 -1
- package/dist/chunks/{rm-DGMHU3CU.js → rm-HVGUK55W.js} +1 -1
- package/dist/chunks/{rm-ERBTFH3G.js → rm-M3EMCKSN.js} +1 -1
- package/dist/chunks/{rm-H2T7HB3F.js → rm-RFCTWU5R.js} +1 -1
- package/dist/chunks/{rm-TNGYCAFJ.js → rm-VREBRM5D.js} +1 -1
- package/dist/chunks/{routes-4WGST7VN.js → routes-BP54NO3Z.js} +1 -1
- package/dist/chunks/{rule-inspect-ZVHPS2PL.js → rule-inspect-SQUCRRGA.js} +1 -1
- package/dist/chunks/{schema-TSHU5NN6.js → schema-AKVIKCFT.js} +1 -1
- package/dist/chunks/{schema-YUXTIJSB.js → schema-S36QQNJP.js} +1 -1
- package/dist/chunks/{select-org-35NFUKXO.js → select-org-PRWYXAWW.js} +1 -1
- package/dist/chunks/serving-DKny38LK-UNINNTL5.js +8 -0
- package/dist/chunks/{set-PP5K4NBO.js → set-ZJAC44LV.js} +1 -1
- package/dist/chunks/{setup-and-link-ACSPPTME.js → setup-and-link-VD53JFQI.js} +1 -1
- package/dist/chunks/{skills-X5TPVYXW.js → skills-JG4MGVKX.js} +1 -1
- package/dist/chunks/{tags-6QB3FP3B.js → tags-4Y4UBA5S.js} +1 -1
- package/dist/chunks/token-3ILJZPAZ.js +7 -0
- package/dist/chunks/token-JJLQVXPI.js +7 -0
- package/dist/chunks/{token-util-JDQI37VN.js → token-util-A4BSB3KP.js} +1 -1
- package/dist/chunks/token-util-KL35LHLQ.js +7 -0
- package/dist/chunks/{types-SENK43U4.js → types-DSN6Q6HW.js} +1 -1
- package/dist/chunks/{update-QA3NLSTV.js → update-R42CXSVE.js} +1 -1
- package/dist/commands/build/index.js +1 -1
- package/dist/commands/deploy/index.js +9 -9
- package/dist/commands/dev/index.js +2 -2
- package/dist/commands/env/index.js +12 -12
- package/dist/commands/link/index.js +4 -4
- package/dist/commands/list/index.js +1 -1
- package/dist/commands/project/index.js +8 -14
- package/dist/commands-account.js +2 -2
- package/dist/commands-ai.js +4 -4
- package/dist/commands-blob.js +7 -7
- package/dist/commands-core.js +62 -32
- package/dist/commands-deployments.js +4 -4
- package/dist/commands-flags.js +3 -3
- package/dist/commands-integrations.js +1 -1
- package/dist/commands-observability.js +2 -2
- package/dist/commands-routing.js +5 -5
- package/dist/help.js +1 -1
- package/dist/index.js +5 -5
- package/dist/internal-build.js +1 -1
- package/dist/launcher-errors.js +1 -1
- package/dist/package.json +31 -30
- package/dist/version.mjs +1 -1
- package/package.json +22 -21
- package/dist/chunks/chunk-5KE67O45.js +0 -7
- package/dist/chunks/chunk-CFYTFXX6.js +0 -7
- package/dist/chunks/chunk-CUBRYWA2.js +0 -7
- package/dist/chunks/chunk-FOQD62WW.js +0 -17
- package/dist/chunks/chunk-FTACGWII.js +0 -14
- package/dist/chunks/chunk-FY4ORPZH.js +0 -7
- package/dist/chunks/chunk-G7H33IKQ.js +0 -10
- package/dist/chunks/chunk-KWXJIVBG.js +0 -7
- package/dist/chunks/chunk-MOF4QNZH.js +0 -9
- package/dist/chunks/chunk-O4CQRV2G.js +0 -7
- package/dist/chunks/chunk-UWJ3UPS5.js +0 -11
- package/dist/chunks/chunk-ZUI5EMXD.js +0 -11
- package/dist/chunks/config-CW4JO67Q.js +0 -7
- package/dist/chunks/image-VNSN2SKE.js +0 -7
- package/dist/chunks/pull-HLJSW3W4.js +0 -7
- package/dist/chunks/token-W6P2KNI5.js +0 -7
package/dist/commands-routing.js
CHANGED
|
@@ -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{RoutesAddTelemetryClient,RoutesTelemetryClient}from"./chunks/chunk-R2P4PNRQ.js";import{ALL_ACTION_CHOICES,MAX_CONDITIONS,MAX_DESCRIPTION_LENGTH,MAX_NAME_LENGTH,REDIRECT_STATUS_CODES,VALID_SYNTAXES,collectActionDetails,collectHeadersAndTransforms,collectInteractiveConditions,convertRouteToCurrentRoute,extractTransformFlags,generateRoute,generatedRouteToAddInput,parseConditions,populateRouteEnv,printGeneratedRoutePreview,runInteractiveEditLoop,stripQuotes,validateActionFlags}from"./chunks/chunk-6AJWRPTY.js";import{getRouteVersions}from"./chunks/chunk-BVH2AEFE.js";import{TRANSFORM_TYPE_LABELS,findVersionById,formatCondition,formatTransform,getRouteTypeLabel,getRoutes,getSrcSyntaxLabel,isTargetTransform,offerAutoPromote,parsePosition,parseSubcommandArgs,withGlobalFlags as withGlobalFlags2}from"./chunks/chunk-TNNEKGGF.js";import{LOCAL_SCHEDULES_SESSION_HEADER,isLocalSchedulesOrigin,readLocalSchedulesSessions}from"./chunks/chunk-SF4E3AQ3.js";import{getLinkedFlagsProject,getProjectNameFromFlags}from"./chunks/chunk-Q25FOMOX.js";import{parseSubcommandArguments,requireProjectContext,validateRequiredArguments}from"./chunks/chunk-KMPDQE4Q.js";import{formatMetricValue,generateSparkline}from"./chunks/chunk-DBPN2VGJ.js";import{OBSERVABILITY_METRICS_PATH}from"./chunks/chunk-YO6SJCZP.js";import"./chunks/chunk-IVSSTHB6.js";import{getCustomEnvironments,pickCustomEnvironment}from"./chunks/chunk-F7AVGV4Y.js";import"./chunks/chunk-GZNDA6SV.js";import{Now,printDeploymentStatus}from"./chunks/chunk-LQAQD5LG.js";import"./chunks/chunk-IZ4GFKGR.js";import{require_async_sema}from"./chunks/chunk-NZ2TFADV.js";import"./chunks/chunk-ZFRNVIHI.js";import"./chunks/chunk-TNUQME3L.js";import{applyDeprecatedTargetFlag}from"./chunks/chunk-D4TD2KWH.js";import{resolveProjectContext}from"./chunks/chunk-DX2OHM56.js";import{formatProject}from"./chunks/chunk-TD7AL545.js";import"./chunks/chunk-4JWAXIIN.js";import"./chunks/chunk-U56NHYAH.js";import{readJSONFile}from"./chunks/chunk-FQVIWQ6M.js";import"./chunks/chunk-25565AGS.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{getAliases}from"./chunks/chunk-L6CZL2IQ.js";import{INVALID_NEXT_MESSAGE,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{validateLsArgs}from"./chunks/chunk-BT5C6MCY.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{require_format}from"./chunks/chunk-PFD7LETF.js";import{writeJsonError}from"./chunks/chunk-QCIIUQV3.js";import"./chunks/chunk-TOTTVS5P.js";import{formatTable,strlen}from"./chunks/chunk-2RXUQ72I.js";import{handleValidationError,normalizeRepeatableStringFilters,resolveTimeRange,validateIntegerRangeWithDefault,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-AX3V7N44.js";import{getNextPageCommand,printNextPageCommand}from"./chunks/chunk-PMEYNJU2.js";import"./chunks/chunk-VT6RIZJH.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{ensureLink}from"./chunks/chunk-HR462OEG.js";import{getDeployment}from"./chunks/chunk-VU3RBRDH.js";import"./chunks/chunk-4VF5BZJP.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-6RUAAORO.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-V32V4SXB.js";import{elapsed}from"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand as getSubcommand2}from"./chunks/chunk-ETV3C2CV.js";import{printUnknownCommand}from"./chunks/chunk-G7H33IKQ.js";import{KMS_ALGORITHMS,PROJECT_GRANT_POLICY_KIND,activateKeySubcommand,addGrantSubcommand,addKeySubcommand,addSubcommand7 as addSubcommand,addSubcommand9 as addSubcommand2,addToGroupSubcommand,analyzeSubcommand,createGroupSubcommand,createSubcommand5 as createSubcommand,createSubcommand8 as createSubcommand2,decideSubcommand,deleteGroupSubcommand,deleteSubcommand2 as deleteSubcommand,deleteSubcommand3,diagnoseSubcommand,disableSubcommand3 as disableSubcommand2,enableSubcommand4 as enableSubcommand2,executionsListSubcommand,executionsSubcommand,experimentsCommand,getCommandAliases,getSubcommand2 as getSubcommand,importKeySubcommand,importSubcommand2 as importSubcommand,inspectGroupSubcommand,inspectSubcommand11 as inspectSubcommand3,inspectSubcommand5 as inspectSubcommand,inspectSubcommand8 as inspectSubcommand2,instancesInspectSubcommand,instancesListSubcommand,instancesRestartSubcommand,instancesSubcommand,invokeSubcommand,isProjectGrant,issuerJwksUrl,issuerUrl,kmsCommand,listSubcommand13 as listSubcommand2,listSubcommand17 as listSubcommand3,listSubcommand20 as listSubcommand4,listSubcommand21 as listSubcommand6,listSubcommand9 as listSubcommand,listVersionsSubcommand,microfrontendsCommand,openSubcommand2 as openSubcommand,promoteSubcommand,pullSubcommand,redeployCommand,redirectsCommand,removeCommand,removeFromGroupSubcommand,removeGrantSubcommand,removeSubcommand12 as removeSubcommand,removeSubcommand14 as removeSubcommand2,reseedEnrollmentSubcommand,restartAnalysisSubcommand,restoreSubcommand,returnToDraftSubcommand,revokeKeySubcommand,scaleSubcommand,schedulesCommand,setRampSubcommand,startSubcommand,updateGrantSubcommand,updateSubcommand11 as updateSubcommand3,updateSubcommand4 as updateSubcommand,updateSubcommand8 as updateSubcommand2,uploadSubcommand}from"./chunks/chunk-FTACGWII.js";import{addSubcommand as addSubcommand3,deleteSubcommand as deleteSubcommand2,disableSubcommand,discardSubcommand,editSubcommand,enableSubcommand,exportSubcommand,inspectSubcommand as inspectSubcommand4,listSubcommand as listSubcommand5,listVersionsSubcommand as listVersionsSubcommand2,publishSubcommand,reorderSubcommand,restoreSubcommand as restoreSubcommand2,routesCommand}from"./chunks/chunk-CZOD25BC.js";import"./chunks/chunk-77LSSWXL.js";import"./chunks/chunk-MUNGQJGO.js";import"./chunks/chunk-W5GHMAHP.js";import"./chunks/chunk-ANCWFEOM.js";import"./chunks/chunk-QVMU7ZKQ.js";import"./chunks/chunk-TL4ZLZ2Q.js";import"./chunks/chunk-VD2FK6OF.js";import"./chunks/chunk-JVNIDSP5.js";import"./chunks/chunk-NLKM5LR5.js";import"./chunks/chunk-BB5UMZMF.js";import"./chunks/chunk-4LGAV2WN.js";import"./chunks/chunk-EJZNJN4N.js";import"./chunks/chunk-S5JBQCBA.js";import"./chunks/chunk-5DXC4TE2.js";import"./chunks/chunk-FAVZ6WVS.js";import"./chunks/chunk-5KE67O45.js";import{DEV_RESOURCE_TOKEN}from"./chunks/chunk-T7HE23VK.js";import"./chunks/chunk-JALVF3C2.js";import"./chunks/chunk-CUBRYWA2.js";import{printError}from"./chunks/chunk-Q4GX2UTG.js";import{help,remoteText}from"./chunks/chunk-GKALP6QD.js";import{param}from"./chunks/chunk-3G3FQYMW.js";import{getContextName,getScope}from"./chunks/chunk-TZ6MSTOI.js";import{TelemetryClient}from"./chunks/chunk-VPUYTI5E.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{buildCommandWithGlobalFlags,buildCommandWithYes,getErrorRecovery,openUrlInBrowserCommand,outputActionRequired,outputAgentError,withGlobalFlags}from"./chunks/chunk-ZUI5EMXD.js";import"./chunks/chunk-FY4ORPZH.js";import{getLinkedProject,getProjectByNameOrId,humanizePath,require_dist2,require_lib,require_pluralize,responseError,sleep}from"./chunks/chunk-KNAOHPOI.js";import{ALIGNED_LABEL_WIDTH,formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-64UCX5JM.js";import{ua_default}from"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-56UH6NQ3.js";import"./chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-C4N4LKPM.js";import{getTeamByIdOrSlug}from"./chunks/chunk-2VBFQZ72.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedInput,warnDeprecatedOption,warnDeprecatedSubcommand}from"./chunks/chunk-GJCVOEC2.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{NowError,ProjectNotFound,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{cmd,getCommandName,getCommandNamePlain}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{emoji,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-W634OFUG.js";import"./chunks/chunk-BLUPZPAS.js";import"./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,getGlobalFlagsFromArgs,getProjectOptionFromArgs,getSameSubcommandSuggestionFlags,quoteArg}from"./chunks/chunk-CKTLP5GX.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{directFetch,getFetchDispatcher}from"./chunks/chunk-MY4MONOH.js";import"./chunks/chunk-7EJQLVWX.js";import"./chunks/chunk-SCV7XEEO.js";import{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"./chunks/chunk-CFYTFXX6.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var DaemonsTelemetryClient=class extends TelemetryClient{constructor(){super(...arguments);this.sub=subcommand=>value=>this.trackSubcommand(subcommand,value);this.arg=arg=>value=>this.trackCliArgument({arg,value:value&&this.redactedValue});this.option=option=>value=>this.trackRedactedCliOption(option,value);this.flag=flag=>value=>{value&&this.trackCliFlag(flag)};this.trackCliSubcommandList=this.sub("list");this.trackCliSubcommandScale=this.sub("scale");this.trackCliSubcommandInstances=this.sub("instances");this.trackCliSubcommandInspect=this.sub("inspect");this.trackCliSubcommandRestart=this.sub("restart");this.trackCliArgumentDaemon=this.arg("daemon");this.trackCliArgumentInstance=this.arg("instance");this.trackCliOptionNext=this.option("next");this.trackCliOptionSince=this.option("since");this.trackCliOptionUntil=this.option("until");this.trackCliFlagReset=this.flag("reset");this.trackCliFlagJson=this.flag("json")}trackSubcommand(subcommand,value){this.trackCliSubcommand({subcommand,value})}trackCliArgumentOverrides(value){let count=value.length?String(value.length):void 0;this.trackCliArgument({arg:"overrides",value:count})}trackCliOptionLimit(value){value!==void 0&&this.trackCliOption({option:"limit",value:String(value)})}trackOptions(flags){this.trackCliOptionProject(flags["--project"]),this.trackCliOptionLimit(flags["--limit"]),this.trackCliOptionNext(flags["--next"]),this.trackCliOptionSince(flags["--since"]),this.trackCliOptionUntil(flags["--until"]),this.trackCliFlagReset(flags["--reset"]),this.trackCliOptionFormat(flags["--format"]),this.trackCliFlagJson(flags["--json"])}};var import_chalk2=__toESM(require_source(),1);var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);function isJsonOutput(client){return wantsMachineReadableOutput("daemons",client.argv)||client.nonInteractive}function reportError(client,err,exitCode=1){if(!isJsonOutput(client))return printError(err,client),exitCode;let apiError=isAPIError(err)?err:void 0,reason=exitCode===2?AGENT_REASON.INVALID_ARGUMENTS:AGENT_REASON.API_ERROR,message=exitCode===2&&err instanceof Error?err.message:"Couldn't complete the daemon command.";return writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,...apiError&&{...getErrorRecovery(apiError,client),data:{httpStatus:apiError.status}}},exitCode)}function toDaemon(daemon){if(!("replicas"in daemon))return daemon;let{replicas:instances,config,...rest}=daemon;if(!config)return{...rest,instances};let{replicas,configuredReplicas,...restConfig}=config;return{...rest,config:{...restConfig,instances:replicas,configuredInstances:configuredReplicas},instances}}var DAEMON_NAME_PATTERN=/^[a-zA-Z0-9_-]+$/;function instanceIdArg(client,args,usage){return args.length===0?failure(client,AGENT_REASON.INVALID_ARGUMENTS,"An instance ID is required.",{command:"instances list",when:"List available instances"},2):args.length===1&&/^dmni_[0-9a-hjkmnp-tv-z]{26}$/.test(args[0])?args[0]:usageError(client,"Expected one instance ID, like dmni_01k7d0q5w3x8y9z0a1b2c3d4e5.",usage)}function parse(client,argv,options,usage){let parsed;try{let spec=getFlagsSpecification(options);parsed=parseArguments(argv,spec)}catch(err){return reportError(client,err,2)}let telemetry=new DaemonsTelemetryClient({opts:{store:client.telemetryEventStore}});telemetry.trackOptions(parsed.flags);let format2=validateJsonOutput(parsed.flags);if(!format2.valid)return usageError(client,format2.error,usage);let asJson=format2.jsonOutput||client.nonInteractive;return{...parsed,asJson,telemetry}}async function resolveProject(client,project){let link=isJsonOutput(client)?await resolveProjectContext({client,projectNameOrId:project,projectNotFoundHandling:"return",quiet:!0}):await requireProjectContext(client,"daemons",project);return typeof link=="number"?link:link.status==="error"?reportError(client,new Error("Could not resolve project context."),link.exitCode):link.status!=="linked"?failure(client,project?AGENT_REASON.PROJECT_NOT_FOUND:AGENT_REASON.NOT_LINKED,project?`Couldn't find project ${project}.`:"No linked project found.",{command:"list --project <PROJECT>",when:"Select an existing project"}):(client.config.currentTeam=link.org.type==="team"?link.org.id:void 0,{...link,target:`${link.org.slug}/${link.project.name}`})}function daemonsCommand(client,command2){return withGlobalFlags(client,`daemons ${command2}`,{preserveProject:!0})}function failure(client,reason,message,next,exitCode=1){let command2=daemonsCommand(client,next.command);return output_manager_default.stopSpinner(),isJsonOutput(client)?writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,next:[{...next,command:command2}]},exitCode):(output_manager_default.fatal(message),output_manager_default.print(`
|
|
7
|
+
import{RoutesAddTelemetryClient,RoutesTelemetryClient}from"./chunks/chunk-ZQXXESKG.js";import{ALL_ACTION_CHOICES,MAX_CONDITIONS,MAX_DESCRIPTION_LENGTH,MAX_NAME_LENGTH,REDIRECT_STATUS_CODES,VALID_SYNTAXES,collectActionDetails,collectHeadersAndTransforms,collectInteractiveConditions,convertRouteToCurrentRoute,extractTransformFlags,generateRoute,generatedRouteToAddInput,parseConditions,populateRouteEnv,printGeneratedRoutePreview,runInteractiveEditLoop,stripQuotes,validateActionFlags}from"./chunks/chunk-RUBMVRT6.js";import{getRouteVersions}from"./chunks/chunk-BVH2AEFE.js";import{TRANSFORM_TYPE_LABELS,findVersionById,formatCondition,formatTransform,getRouteTypeLabel,getRoutes,getSrcSyntaxLabel,isTargetTransform,offerAutoPromote,parsePosition,parseSubcommandArgs,withGlobalFlags as withGlobalFlags2}from"./chunks/chunk-7LSH3MEB.js";import{LOCAL_SCHEDULES_SESSION_HEADER,isLocalSchedulesOrigin,readLocalSchedulesSessions}from"./chunks/chunk-SF4E3AQ3.js";import{getLinkedFlagsProject,getProjectNameFromFlags}from"./chunks/chunk-YKLTNKQJ.js";import{parseSubcommandArguments,requireProjectContext,validateRequiredArguments}from"./chunks/chunk-Q46Q4Y4R.js";import{formatMetricValue,generateSparkline}from"./chunks/chunk-B4XGTAFO.js";import{OBSERVABILITY_METRICS_PATH}from"./chunks/chunk-WYGOYE6C.js";import"./chunks/chunk-IVSSTHB6.js";import{getCustomEnvironments,pickCustomEnvironment}from"./chunks/chunk-F7AVGV4Y.js";import"./chunks/chunk-GZNDA6SV.js";import{Now,printDeploymentStatus}from"./chunks/chunk-7TR6H6NE.js";import"./chunks/chunk-AO6AMYBF.js";import{require_async_sema}from"./chunks/chunk-NZ2TFADV.js";import{isDeploying}from"./chunks/chunk-ZFRNVIHI.js";import"./chunks/chunk-DQNP7OQ5.js";import{applyDeprecatedTargetFlag}from"./chunks/chunk-YZKARZ2B.js";import{deploymentJson}from"./chunks/chunk-KKE55LTK.js";import{jsonNextStep,runWithJsonOutput,writeJsonFailure,writeJsonResult,writeJsonUsageError}from"./chunks/chunk-CBMWPDOL.js";import{resolveProjectContext}from"./chunks/chunk-SR7BZA6N.js";import{formatProject}from"./chunks/chunk-NE6PKR2J.js";import"./chunks/chunk-FPREO4VS.js";import"./chunks/chunk-U56NHYAH.js";import{readJSONFile}from"./chunks/chunk-UQNBUXQA.js";import"./chunks/chunk-25565AGS.js";import{getTeamBillingUrl}from"./chunks/chunk-XR6QY7RR.js";import{getAliases}from"./chunks/chunk-VQSSVB6V.js";import{INVALID_NEXT_MESSAGE,parseNumericCursor}from"./chunks/chunk-C6GY2G73.js";import{getCommandFlags}from"./chunks/chunk-XGTKHQTT.js";import{isValidName}from"./chunks/chunk-PADL3C6Z.js";import{validateLsArgs}from"./chunks/chunk-42J2KCDF.js";import{formatDate}from"./chunks/chunk-HRR57QNP.js";import{getInvalidSubcommand}from"./chunks/chunk-TG2RCYTH.js";import{require_format}from"./chunks/chunk-PFD7LETF.js";import{writeJsonError}from"./chunks/chunk-E7WULWMX.js";import"./chunks/chunk-TOTTVS5P.js";import{formatTable,strlen}from"./chunks/chunk-2RXUQ72I.js";import{handleValidationError,normalizeRepeatableStringFilters,resolveTimeRange,validateIntegerRangeWithDefault,validateOptionalIntegerRange,validateTimeBound,validateTimeOrder}from"./chunks/chunk-5RSSGN2Q.js";import{getNextPageCommand,printNextPageCommand}from"./chunks/chunk-TZE4CS4K.js";import"./chunks/chunk-VT6RIZJH.js";import{stamp_default}from"./chunks/chunk-A2RZZQEP.js";import{ensureLink}from"./chunks/chunk-6YAYCEDT.js";import{getDeployment}from"./chunks/chunk-VU3RBRDH.js";import"./chunks/chunk-4VF5BZJP.js";import{require_open}from"./chunks/chunk-PVASGBEF.js";import"./chunks/chunk-S535FZTA.js";import{table}from"./chunks/chunk-375JVQYK.js";import{getRenamedOption,renameOptionInArgs,reportRenamedOptionError,withWarnings}from"./chunks/chunk-GQ4CQDIL.js";import{elapsed}from"./chunks/chunk-Q7D7RGXM.js";import{getSubcommand as getSubcommand2}from"./chunks/chunk-ETV3C2CV.js";import{printUnknownCommand}from"./chunks/chunk-SNNJRKD6.js";import{KMS_ALGORITHMS,PROJECT_GRANT_POLICY_KIND,activateKeySubcommand,addGrantSubcommand,addKeySubcommand,addSubcommand7 as addSubcommand,addSubcommand9 as addSubcommand2,addToGroupSubcommand,analyzeSubcommand,createGroupSubcommand,createSubcommand5 as createSubcommand,createSubcommand8 as createSubcommand2,decideSubcommand,deleteGroupSubcommand,deleteSubcommand2 as deleteSubcommand,deleteSubcommand3,diagnoseSubcommand,disableSubcommand3 as disableSubcommand2,enableSubcommand4 as enableSubcommand2,executionsListSubcommand,executionsSubcommand,experimentsCommand,getCommandAliases,getSubcommand2 as getSubcommand,importKeySubcommand,importSubcommand2 as importSubcommand,inspectGroupSubcommand,inspectSubcommand11 as inspectSubcommand3,inspectSubcommand5 as inspectSubcommand,inspectSubcommand8 as inspectSubcommand2,instancesInspectSubcommand,instancesListSubcommand,instancesRestartSubcommand,instancesSubcommand,invokeSubcommand,isProjectGrant,issuerJwksUrl,issuerUrl,kmsCommand,listSubcommand13 as listSubcommand2,listSubcommand17 as listSubcommand3,listSubcommand20 as listSubcommand4,listSubcommand21 as listSubcommand6,listSubcommand9 as listSubcommand,listVersionsSubcommand,microfrontendsCommand,openSubcommand2 as openSubcommand,promoteSubcommand,pullSubcommand,redeployCommand,redirectsCommand,removeCommand,removeFromGroupSubcommand,removeGrantSubcommand,removeSubcommand12 as removeSubcommand,removeSubcommand14 as removeSubcommand2,reseedEnrollmentSubcommand,restartAnalysisSubcommand,restoreSubcommand,returnToDraftSubcommand,revokeKeySubcommand,scaleSubcommand,schedulesCommand,setRampSubcommand,startSubcommand,updateGrantSubcommand,updateSubcommand11 as updateSubcommand3,updateSubcommand4 as updateSubcommand,updateSubcommand8 as updateSubcommand2,uploadSubcommand}from"./chunks/chunk-ZIC7VWFC.js";import"./chunks/chunk-M3Z6NSC2.js";import"./chunks/chunk-IHTWZEQW.js";import{addSubcommand as addSubcommand3,deleteSubcommand as deleteSubcommand2,disableSubcommand,discardSubcommand,editSubcommand,enableSubcommand,exportSubcommand,inspectSubcommand as inspectSubcommand4,listSubcommand as listSubcommand5,listVersionsSubcommand as listVersionsSubcommand2,publishSubcommand,reorderSubcommand,restoreSubcommand as restoreSubcommand2,routesCommand}from"./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{DEV_RESOURCE_TOKEN}from"./chunks/chunk-CU3LNJZV.js";import"./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{getContextName,getScope}from"./chunks/chunk-DNLE3KPC.js";import{TelemetryClient}from"./chunks/chunk-MBXLL2HF.js";import"./chunks/chunk-2EYYB6YN.js";import"./chunks/chunk-NWGBDBZI.js";import{buildCommandWithGlobalFlags,buildCommandWithYes,getErrorRecovery,openUrlInBrowserCommand,outputActionRequired,outputAgentError,withGlobalFlags}from"./chunks/chunk-AUIV7YJO.js";import"./chunks/chunk-FYE7ILRR.js";import{getLinkedProject,getProjectByNameOrId,humanizePath,require_dist2,require_lib,require_pluralize,responseError,sleep}from"./chunks/chunk-6NUH6ZPE.js";import{ALIGNED_LABEL_WIDTH,formatAlignedLabel,printAlignedLabel}from"./chunks/chunk-PKNEWN4W.js";import{ua_default}from"./chunks/chunk-ITQPDXXA.js";import"./chunks/chunk-PL6IOUKW.js";import"./chunks/chunk-4NTBYNFR.js";import{getTypedOptionName,isArgumentError,parseArguments,takeCommand}from"./chunks/chunk-US7YJ2RQ.js";import{getTeamByIdOrSlug}from"./chunks/chunk-2VBFQZ72.js";import{validateJsonOutput,wantsMachineReadableOutput,warnDeprecatedInput,warnDeprecatedOption,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{NowError,ProjectNotFound,isAPIError}from"./chunks/chunk-T2FCF46I.js";import{cmd,getCommandName,getCommandNamePlain}from"./chunks/chunk-VRH7LWOC.js";import"./chunks/chunk-DBT6PGEH.js";import{emoji,link_default,output_manager_default,prependEmoji}from"./chunks/chunk-GZLYNPNU.js";import"./chunks/chunk-BLUPZPAS.js";import"./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,getGlobalFlagsFromArgs,getProjectOptionFromArgs,getSameSubcommandSuggestionFlags,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"./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{AGENT_ACTION,AGENT_REASON,AGENT_STATUS,getExitCodeForReason}from"./chunks/chunk-JBU72NEQ.js";import{__toESM}from"./chunks/chunk-BZENIQ7N.js";var DaemonsTelemetryClient=class extends TelemetryClient{constructor(){super(...arguments);this.sub=subcommand=>value=>this.trackSubcommand(subcommand,value);this.arg=arg=>value=>this.trackCliArgument({arg,value:value&&this.redactedValue});this.option=option=>value=>this.trackRedactedCliOption(option,value);this.flag=flag=>value=>{value&&this.trackCliFlag(flag)};this.trackCliSubcommandList=this.sub("list");this.trackCliSubcommandScale=this.sub("scale");this.trackCliSubcommandInstances=this.sub("instances");this.trackCliSubcommandInspect=this.sub("inspect");this.trackCliSubcommandRestart=this.sub("restart");this.trackCliArgumentDaemon=this.arg("daemon");this.trackCliArgumentInstance=this.arg("instance");this.trackCliOptionNext=this.option("next");this.trackCliOptionSince=this.option("since");this.trackCliOptionUntil=this.option("until");this.trackCliFlagReset=this.flag("reset");this.trackCliFlagJson=this.flag("json")}trackSubcommand(subcommand,value){this.trackCliSubcommand({subcommand,value})}trackCliArgumentOverrides(value){let count=value.length?String(value.length):void 0;this.trackCliArgument({arg:"overrides",value:count})}trackCliOptionLimit(value){value!==void 0&&this.trackCliOption({option:"limit",value:String(value)})}trackOptions(flags){this.trackCliOptionProject(flags["--project"]),this.trackCliOptionLimit(flags["--limit"]),this.trackCliOptionNext(flags["--next"]),this.trackCliOptionSince(flags["--since"]),this.trackCliOptionUntil(flags["--until"]),this.trackCliFlagReset(flags["--reset"]),this.trackCliOptionFormat(flags["--format"]),this.trackCliFlagJson(flags["--json"])}};var import_chalk2=__toESM(require_source(),1);var import_chalk=__toESM(require_source(),1),import_ms=__toESM(require_ms(),1);function isJsonOutput(client){return wantsMachineReadableOutput("daemons",client.argv)||client.nonInteractive}function reportError(client,err,exitCode=1){if(!isJsonOutput(client))return printError(err,client),exitCode;let apiError=isAPIError(err)?err:void 0,reason=exitCode===2?AGENT_REASON.INVALID_ARGUMENTS:AGENT_REASON.API_ERROR,message=exitCode===2&&err instanceof Error?err.message:"Couldn't complete the daemon command.";return writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,...apiError&&{...getErrorRecovery(apiError,client),data:{httpStatus:apiError.status}}},exitCode)}function toDaemon(daemon){if(!("replicas"in daemon))return daemon;let{replicas:instances,config,...rest}=daemon;if(!config)return{...rest,instances};let{replicas,configuredReplicas,...restConfig}=config;return{...rest,config:{...restConfig,instances:replicas,configuredInstances:configuredReplicas},instances}}var DAEMON_NAME_PATTERN=/^[a-zA-Z0-9_-]+$/;function instanceIdArg(client,args,usage){return args.length===0?failure(client,AGENT_REASON.INVALID_ARGUMENTS,"An instance ID is required.",{command:"instances list",when:"List available instances"},2):args.length===1&&/^dmni_[0-9a-hjkmnp-tv-z]{26}$/.test(args[0])?args[0]:usageError(client,"Expected one instance ID, like dmni_01k7d0q5w3x8y9z0a1b2c3d4e5.",usage)}function parse(client,argv,options,usage){let parsed;try{let spec=getFlagsSpecification(options);parsed=parseArguments(argv,spec)}catch(err){return reportError(client,err,2)}let telemetry=new DaemonsTelemetryClient({opts:{store:client.telemetryEventStore}});telemetry.trackOptions(parsed.flags);let format2=validateJsonOutput(parsed.flags);if(!format2.valid)return usageError(client,format2.error,usage);let asJson=format2.jsonOutput||client.nonInteractive;return{...parsed,asJson,telemetry}}async function resolveProject(client,project){let link=isJsonOutput(client)?await resolveProjectContext({client,projectNameOrId:project,projectNotFoundHandling:"return",quiet:!0}):await requireProjectContext(client,"daemons",project);return typeof link=="number"?link:link.status==="error"?reportError(client,new Error("Could not resolve project context."),link.exitCode):link.status!=="linked"?failure(client,project?AGENT_REASON.PROJECT_NOT_FOUND:AGENT_REASON.NOT_LINKED,project?`Couldn't find project ${project}.`:"No linked project found.",{command:"list --project <PROJECT>",when:"Select an existing project"}):(client.config.currentTeam=link.org.type==="team"?link.org.id:void 0,{...link,target:`${link.org.slug}/${link.project.name}`})}function daemonsCommand(client,command2){return withGlobalFlags(client,`daemons ${command2}`,{preserveProject:!0})}function failure(client,reason,message,next,exitCode=1){let command2=daemonsCommand(client,next.command);return output_manager_default.stopSpinner(),isJsonOutput(client)?writeJsonError(client,{status:AGENT_STATUS.ERROR,reason,message,next:[{...next,command:command2}]},exitCode):(output_manager_default.fatal(message),output_manager_default.print(`
|
|
8
8
|
${next.when}:
|
|
9
9
|
${cmd(command2)}
|
|
10
10
|
`),exitCode)}function usageError(client,message,usage){let next={command:usage,when:"Usage"};return failure(client,AGENT_REASON.INVALID_ARGUMENTS,message,next,2)}function printJson(client,value){return client.stdout.write(`${JSON.stringify(value,null,2)}
|
|
@@ -103,9 +103,9 @@ ${import_chalk3.default.yellow("!")} No exposures or metric events in this windo
|
|
|
103
103
|
`),0):(printAlignedLabel("Removed",projectId,{gutter:"\u2713"}),printAlignedLabel("Issuer",issuerId),printAlignedLabel("Team",contextName),0)}var COMMAND_CONFIG2={list:getCommandAliases(listSubcommand3),inspect:getCommandAliases(inspectSubcommand3),add:getCommandAliases(addSubcommand),import:getCommandAliases(importSubcommand),update:getCommandAliases(updateSubcommand2),delete:getCommandAliases(removeSubcommand),"add-key":getCommandAliases(addKeySubcommand),"import-key":getCommandAliases(importKeySubcommand),"activate-key":getCommandAliases(activateKeySubcommand),"revoke-key":getCommandAliases(revokeKeySubcommand),"add-grant":getCommandAliases(addGrantSubcommand),"update-grant":getCommandAliases(updateGrantSubcommand),"remove-grant":getCommandAliases(removeGrantSubcommand)};async function main(client){let parsedArgs,flagsSpecification=getFlagsSpecification(kmsCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}let telemetry=new KmsTelemetryClient({opts:{store:client.telemetryEventStore}}),{subcommand,args,subcommandOriginal}=getSubcommand2(parsedArgs.args.slice(1),COMMAND_CONFIG2),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("kms"),output_manager_default.print(help(kmsCommand,{stream:client.stderr,columns:client.stderr.columns})),0;function printHelp(command2){return output_manager_default.print(help(command2,{stream:client.stderr,parent:kmsCommand,columns:client.stderr.columns})),0}switch(subcommand){case"list":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(listSubcommand3)):(telemetry.trackCliSubcommandList(subcommandOriginal),ls(client,args));case"inspect":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(inspectSubcommand3)):(telemetry.trackCliSubcommandInspect(subcommandOriginal),subcommandOriginal==="get"&&warnDeprecatedSubcommand(client,"kms get","kms inspect"),inspect2(client,args));case"add":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(addSubcommand)):(telemetry.trackCliSubcommandCreate(subcommandOriginal),subcommandOriginal==="add"&&warnDeprecatedSubcommand(client,"kms add","kms create"),add(client,args));case"import":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(importSubcommand)):(telemetry.trackCliSubcommandImport(subcommandOriginal),importIssuer(client,args));case"update":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(updateSubcommand2)):(telemetry.trackCliSubcommandUpdate(subcommandOriginal),update(client,args));case"delete":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(removeSubcommand)):(telemetry.trackCliSubcommandDelete(subcommandOriginal),subcommandOriginal==="remove"&&warnDeprecatedSubcommand(client,"kms remove","kms delete"),rm(client,args));case"add-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(addKeySubcommand)):(telemetry.trackCliSubcommandAddKey(subcommandOriginal),addKey(client,args));case"import-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(importKeySubcommand)):(telemetry.trackCliSubcommandImportKey(subcommandOriginal),importKey(client,args));case"activate-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(activateKeySubcommand)):(telemetry.trackCliSubcommandActivateKey(subcommandOriginal),activateKey(client,args));case"revoke-key":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(revokeKeySubcommand)):(telemetry.trackCliSubcommandRevokeKey(subcommandOriginal),revokeKey(client,args));case"add-grant":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(addGrantSubcommand)):(telemetry.trackCliSubcommandAddGrant(subcommandOriginal),addGrant(client,args));case"update-grant":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(updateGrantSubcommand)):(telemetry.trackCliSubcommandUpdateGrant(subcommandOriginal),updateGrant(client,args));case"remove-grant":return needHelp?(telemetry.trackCliFlagHelp("kms",subcommandOriginal),printHelp(removeGrantSubcommand)):(telemetry.trackCliSubcommandRemoveGrant(subcommandOriginal),subcommandOriginal!=="remove-grant"&&warnDeprecatedSubcommand(client,`kms ${subcommandOriginal}`,"kms remove-grant"),rmGrant(client,args));default:return args.length>0?(output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG2)),output_manager_default.print(help(kmsCommand,{stream:client.stderr,columns:client.stderr.columns})),2):(telemetry.trackCliSubcommandList(subcommandOriginal),ls(client,args))}}var import_chalk15=__toESM(require_source(),1);import{join}from"node:path";var import_fs_extra=__toESM(require_lib(),1);var MicrofrontendsPullTelemetryClient=class extends TelemetryClient{trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliOptionDeployment(value){value&&this.trackCliOption({option:"deployment",value:this.redactedValue})}trackCliOptionDpl(value){value&&this.trackCliOption({option:"dpl",value:this.redactedValue})}};var VERCEL_DIR=".vercel",VERCEL_DIR_MICROFRONTENDS="microfrontends.json";async function pull(client){let parsedArgs,flagsSpecification=getFlagsSpecification(pullSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let telemetry=new MicrofrontendsPullTelemetryClient({opts:{store:client.telemetryEventStore}});telemetry.trackCliOptionDeployment(parsedArgs.flags["--deployment"]),telemetry.trackCliOptionDpl(parsedArgs.flags["--dpl"]);let deployment=getRenamedOption(parsedArgs.flags,"--deployment","--dpl");if("error"in deployment)return reportRenamedOptionError(client,deployment.error);let autoConfirm=!!parsedArgs.flags["--yes"],link=await ensureLink("microfrontends",client,client.cwd,{autoConfirm});if(typeof link=="number")return link;let{project,org,repoRoot}=link,currentDirectory;repoRoot?currentDirectory=join(repoRoot,project.rootDirectory||""):currentDirectory=client.cwd,client.config.currentTeam=org.type==="team"?org.id:void 0;let contextName=await getContextName(client);output_manager_default.spinner(`Fetching microfrontends configuration in ${import_chalk15.default.bold(contextName)}`);let rawConfig,deploymentId=deployment.value;try{if(deploymentId){let{config}=await client.fetch(`/v1/microfrontends/${deploymentId}/config`,{method:"GET"});rawConfig=config}else{let projectId=project.id,{config}=await client.fetch(`/v1/microfrontends/projects/${projectId}/production-mfe-config`,{method:"GET"});rawConfig=config}let sanitizedConfig={...rawConfig,applications:Object.fromEntries(Object.entries(rawConfig.applications).map(([name,app])=>[name,{...app,projectId:void 0}]))};output_manager_default.stopSpinner();let path=join(currentDirectory,VERCEL_DIR,VERCEL_DIR_MICROFRONTENDS);await(0,import_fs_extra.outputJSON)(path,sanitizedConfig,{spaces:2});let microfrontendsStamp=stamp_default();return output_manager_default.print(`${prependEmoji(`Downloaded microfrontends configuration to ${import_chalk15.default.bold(humanizePath(join(currentDirectory,VERCEL_DIR,VERCEL_DIR_MICROFRONTENDS)))} ${import_chalk15.default.gray(microfrontendsStamp())}`,emoji("success"))}
|
|
104
104
|
`),0}catch(error){return output_manager_default.stopSpinner(),printError(error),1}}var import_chalk16=__toESM(require_source(),1);import{writeFile}from"fs/promises";import{existsSync}from"fs";import{join as join2}from"path";async function ensureMicrofrontendsContext(client,options){let link=await ensureLink("microfrontends",client,client.cwd,{autoConfirm:options?.autoConfirm});if(typeof link=="number")return link;let{project,org,repoRoot}=link;if(org.type!=="team")return output_manager_default.error("Microfrontends are only available for teams."),1;client.config.currentTeam=org.id;let{team}=await getScope(client);return team?{project,org,team,repoRoot}:(output_manager_default.error("Microfrontends are only available for teams."),1)}async function fetchMicrofrontendsGroups(client,teamId){output_manager_default.spinner("Fetching microfrontends groups\u2026");let response=await client.fetch(`/v1/microfrontends/groups?teamId=${teamId}`,{method:"GET"});return output_manager_default.stopSpinner(),response}function validateDefaultRoute(path){if(!path||!path.startsWith("/"))return"Route must start with /";if(/\s/.test(path))return"Route must not contain spaces";if(path.includes("?")||path.includes("#"))return"Route must not contain query strings or fragments";try{new URL(path,"http://n")}catch{return"Route is not a valid URL path"}return!0}function validateRoutingPath(path){return!path||!path.startsWith("/")?"Path must start with /. See https://vercel.com/docs/microfrontends/path-routing for supported syntax.":/\s/.test(path)?"Path must not contain spaces. See https://vercel.com/docs/microfrontends/path-routing for supported syntax.":!0}var MAX_GROUP_NAME_LENGTH=48;async function createGroup(client){let parsedArgs,flagsSpecification=getFlagsSpecification(createGroupSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let{team}=await getScope(client);if(!team)return output_manager_default.error("Microfrontends are only available for teams."),1;let teamSlug=team.slug;output_manager_default.log("A microfrontends group allows multiple projects to be composed into one application with a seamless user experience."),output_manager_default.log(`Creating a new microfrontends group for team ${import_chalk16.default.bold(teamSlug)}.`),output_manager_default.log("");let groupsResponse=await fetchMicrofrontendsGroups(client,team.id),{groups,maxMicrofrontendsGroupsPerTeam,maxMicrofrontendsPerGroup}=groupsResponse,plan=team.billing.plan,isProTrialPlan=team.billing.plan==="pro"&&team.billing.status==="trialing",isLimitedPlan=isProTrialPlan||plan==="hobby";if(groups.length>=maxMicrofrontendsGroupsPerTeam){if(isLimitedPlan){let planName=isProTrialPlan?"Pro Trial":"Hobby",url=getTeamBillingUrl(teamSlug);return output_manager_default.log(`You've reached the microfrontends group limit for ${planName}. Upgrade to Pro to create more groups.`),output_manager_default.log(`Upgrade: ${output_manager_default.link(url,url,{fallback:!1})}`),1}return output_manager_default.error(`Maximum number of microfrontends groups (${maxMicrofrontendsGroupsPerTeam}) reached.`),1}let existingMfeProjectCount=groups.reduce((count,g)=>count+g.projects.length,0),freeProjects=2;if(isLimitedPlan&&existingMfeProjectCount+1>freeProjects){let planName=isProTrialPlan?"Pro Trial":"Hobby",url=`https://vercel.com/${teamSlug}/~/settings/billing`;return output_manager_default.log(`You've reached the microfrontends project limit for ${planName}. Upgrade to Pro to add more projects.`),output_manager_default.log(`Upgrade: ${output_manager_default.link(url,url,{fallback:!1})}`),1}let nameFlag=parsedArgs.flags["--name"],projectFlags=parsedArgs.flags["--project"],defaultAppFlag=parsedArgs.flags["--default-app"],defaultRouteFlag=parsedArgs.flags["--default-route"],projectDefaultRouteFlags=parsedArgs.flags["--project-default-route"],autoConfirm=!!parsedArgs.flags["--yes"],isNonInteractive=client.nonInteractive||client.argv.includes("--non-interactive");if(isNonInteractive){if(!nameFlag)return output_manager_default.error("Missing required option --name. Use --name in non-interactive mode."),2;if(!projectFlags||projectFlags.length===0)return output_manager_default.error("Missing required option --project. Use --project in non-interactive mode."),2;if(projectFlags.length>1&&!defaultAppFlag)return output_manager_default.error("Missing required option --default-app when using multiple --project values in non-interactive mode."),2}let projectsToAddCount=projectFlags?.length??1;if(existingMfeProjectCount+projectsToAddCount>freeProjects){if(isNonInteractive){let flags=getGlobalFlagsFromArgs(client.argv.slice(2)),interactiveCmd=getCommandNamePlain(`microfrontends create-group ${flags.filter(f=>f!=="--non-interactive").join(" ")}`.trim());return outputAgentError(client,{status:"error",reason:"purchase_requires_user",message:"Creating a microfrontends group affects billing and cannot be performed non-interactively. Agents must not make billing changes on behalf of a user. The user must run this command interactively in a terminal to review billing details and confirm, or complete the action in the Vercel dashboard.",next:[{command:interactiveCmd,when:"user runs this command interactively (remove --non-interactive)"}]},1),1}if(!client.stdin.isTTY)return output_manager_default.error("This command must be run interactively because it affects billing."),1}let groupName;if(nameFlag){let validation=validateGroupName(nameFlag,groups);if(validation!==!0)return output_manager_default.error(validation),1;groupName=nameFlag}else groupName=await client.input.text({message:"Group name:",validate:val=>validateGroupName(val,groups)});let selectedProjects;if(projectFlags){selectedProjects=[];for(let name of projectFlags)try{let project=await getProjectByNameOrId(client,name,team.id);if(project instanceof ProjectNotFound)return output_manager_default.error(`Project "${name}" not found.`),1;selectedProjects.push(project)}catch{return output_manager_default.error(`Project "${name}" not found.`),1}}else{output_manager_default.spinner("Fetching projects\u2026");let firstPage=await client.fetch(`/v9/projects?limit=100&teamId=${team.id}`,{method:"GET"});output_manager_default.stopSpinner();let allProjects=firstPage.projects,hasMoreProjects=firstPage.pagination.next!==null,availableProjects=allProjects.filter(p=>!isProjectInMicrofrontendsGroup(p,groups));selectedProjects=[];let addMore=!0;for(;addMore;){let project;if(hasMoreProjects)await client.input.text({message:selectedProjects.length===0?"Type a project name to add:":"Type another project name to add:",validate:async val=>{if(!val)return"Project name cannot be empty";let result=await getProjectByNameOrId(client,val,team.id);return result instanceof ProjectNotFound?"Project not found":isProjectInMicrofrontendsGroup(result,groups)?`Project "${val}" is already in a microfrontends group`:selectedProjects.some(s=>s.id===result.id)?`Project "${val}" is already selected`:(project=result,!0)}});else{if(availableProjects.length===0){if(selectedProjects.length===0)return output_manager_default.error("No available projects. All projects are already in a microfrontends group."),1;break}let remaining=availableProjects.filter(p=>!selectedProjects.some(s=>s.id===p.id));if(remaining.length===0)break;let projectId=await client.input.select({message:selectedProjects.length===0?"Select a project to add:":"Select another project to add:",choices:remaining.map(p=>({name:p.name,value:p.id}))});project=availableProjects.find(p=>p.id===projectId)}project&&selectedProjects.push(project),addMore=await client.input.confirm("Add another project?",!1)}if(selectedProjects.length===0)return output_manager_default.error("At least one project must be selected."),1}if(selectedProjects.length>maxMicrofrontendsPerGroup)return output_manager_default.error(`Cannot add more than ${maxMicrofrontendsPerGroup} projects to a group.`),1;let defaultApp;if(defaultAppFlag){let found=selectedProjects.find(p=>p.name===defaultAppFlag);if(!found)return output_manager_default.error(`Default app "${defaultAppFlag}" must be one of the selected projects.`),2;defaultApp=found}else if(selectedProjects.length===1)defaultApp=selectedProjects[0];else{let defaultAppId=await client.input.select({message:"Select the default application:",choices:selectedProjects.map(p=>({name:p.name,value:p.id}))});defaultApp=selectedProjects.find(p=>p.id===defaultAppId)}let defaultRoute;if(defaultRouteFlag){let validation=validateDefaultRoute(defaultRouteFlag);if(validation!==!0)return output_manager_default.error(validation),1;defaultRoute=defaultRouteFlag}else defaultRoute="/";let otherProjects=selectedProjects.filter(p=>p.id!==defaultApp.id),parsedProjectDefaultRoutes=parseProjectDefaultRouteFlags(projectDefaultRouteFlags,selectedProjects,defaultApp);if(typeof parsedProjectDefaultRoutes=="string")return output_manager_default.error(parsedProjectDefaultRoutes),1;let otherApplications=[];for(let project of otherProjects){let routeFromFlag=parsedProjectDefaultRoutes.get(project.id),route2;if(routeFromFlag)route2=routeFromFlag;else{if(isNonInteractive)return output_manager_default.error(`Missing required option --project-default-route for "${project.name}". Use --project-default-route=${project.name}=/<path> in non-interactive mode.`),2;route2=await client.input.text({message:`Default route for "${project.name}":`,validate:validateDefaultRoute})}otherApplications.push({projectId:project.id,defaultRoute:route2})}let newProjectCount=selectedProjects.length,totalAfter=existingMfeProjectCount+newProjectCount;output_manager_default.log(""),output_manager_default.log(import_chalk16.default.bold("Billing")),output_manager_default.log(` ${import_chalk16.default.bold("Team:")} ${teamSlug}`),output_manager_default.log(` ${import_chalk16.default.bold("Adding:")} ${newProjectCount} microfrontends project${newProjectCount>1?"s":""}`);let projectFee;if(totalAfter<=freeProjects)projectFee=import_chalk16.default.green("Free")+` (first ${freeProjects} included)`;else if(existingMfeProjectCount>=freeProjects)projectFee=import_chalk16.default.yellow(`$250.00/month x ${newProjectCount}`)+` project${newProjectCount>1?"s":""}`;else{let freeRemaining=freeProjects-existingMfeProjectCount,paidProjects=newProjectCount-freeRemaining;projectFee=import_chalk16.default.green(`${freeRemaining} free`)+", "+import_chalk16.default.yellow(`$250.00/month x ${paidProjects}`)}if(output_manager_default.log(` ${import_chalk16.default.bold("Project fee:")} ${projectFee}`),output_manager_default.log(` ${import_chalk16.default.bold("Request fee:")} ${import_chalk16.default.yellow("$2.00")} per million microfrontends routed requests`),output_manager_default.log(""),totalAfter<=freeProjects)output_manager_default.log(`This group is within the free tier, so no project fee will be charged to ${import_chalk16.default.bold(teamSlug)}'s bill. Request fees still apply for microfrontends routed requests.`);else{let newPaidProjects=Math.min(newProjectCount,totalAfter-freeProjects);output_manager_default.log(`By proceeding, ${import_chalk16.default.bold(teamSlug)} will be charged for ${newPaidProjects} additional paid project${newPaidProjects>1?"s":""} on the team's monthly bill.`)}if(output_manager_default.log(""),!autoConfirm&&!client.stdin.isTTY)return output_manager_default.error("Confirmation required. Use --yes to confirm group creation in non-interactive mode."),1;if(!(autoConfirm||await client.input.confirm("Create microfrontends group?",!0)))return output_manager_default.log("Aborted."),0;let createStamp=stamp_default();output_manager_default.spinner("Creating microfrontends group\u2026");try{await client.fetch(`/v1/microfrontends/group?teamId=${team.id}`,{method:"POST",body:{groupName,defaultApp:{projectId:defaultApp.id,defaultRoute},otherApplications}})}catch(error){return output_manager_default.stopSpinner(),isAPIError(error)&&error.status===403?(output_manager_default.error("You must be an Owner to create or modify microfrontends groups."),1):(printError(error),1)}output_manager_default.stopSpinner();let settingsUrl=`https://vercel.com/${teamSlug}/${defaultApp.name}/settings/microfrontends`;output_manager_default.success(`Microfrontends group "${groupName}" created ${import_chalk16.default.gray(createStamp())}`),output_manager_default.log(`View microfrontends group: ${output_manager_default.link(settingsUrl,settingsUrl,{fallback:!1})}`);let link=await getLinkedProject(client,{cwd:client.cwd}),linkedProject=link.status==="linked"?link.project:void 0;if(linkedProject&&linkedProject.id===defaultApp.id){let repoRoot=link.status==="linked"?link.repoRoot:void 0,projectDir=repoRoot?join2(repoRoot,linkedProject.rootDirectory||""):client.cwd,configPath=join2(projectDir,"microfrontends.json");if(!existsSync(configPath)&&(output_manager_default.log(""),output_manager_default.log(`No changes to production traffic will take effect until a ${import_chalk16.default.bold("microfrontends.json")} is added to the default app. This configuration file specifies the path routing for the microfrontends group.`),client.stdin.isTTY&&!isNonInteractive&&await client.input.confirm("Create a microfrontends.json now?",!0))){let routingPaths={};for(let project of otherProjects){output_manager_default.log(`Enter routing paths for ${import_chalk16.default.bold(project.name)} (comma-separated, e.g. /docs, /docs/*)`);let pathsInput=await client.input.text({message:`Paths for ${project.name}:`,validate:val=>{if(!val.trim())return"At least one path is required";let paths=val.split(",").map(p=>p.trim());for(let p of paths){let result=validateRoutingPath(p);if(result!==!0)return`Invalid path "${p}": ${result}`}return!0}});routingPaths[project.name]=pathsInput.split(",").map(p=>p.trim())}let productionAlias=defaultApp.targets?.production?.alias?.[0],config=generateMicrofrontendsConfig(defaultApp.name,routingPaths,productionAlias);await writeFile(configPath,config+`
|
|
105
105
|
`,"utf-8"),output_manager_default.success(`Created ${import_chalk16.default.bold("microfrontends.json")}`),output_manager_default.log("Create a preview deployment to test microfrontends before deploying to production.")}}else output_manager_default.log(`Next step: Add a ${import_chalk16.default.bold("microfrontends.json")} to your default app. See ${output_manager_default.link("https://vercel.com/docs/microfrontends/path-routing","https://vercel.com/docs/microfrontends/path-routing",{fallback:!1})}`);return 0}function generateMicrofrontendsConfig(defaultAppName,routingPaths,productionAlias){let fallback=productionAlias||"...your-production-domain.vercel.app",applications={[defaultAppName]:{development:{fallback}}};for(let[name,paths]of Object.entries(routingPaths))applications[name]={routing:[{paths}]};return JSON.stringify({$schema:"https://openapi.vercel.sh/microfrontends.json",applications},null,2)}function validateGroupName(name,existingGroups){return!name||name.trim().length===0?"Group name cannot be empty.":name.length>MAX_GROUP_NAME_LENGTH?`Group name must be ${MAX_GROUP_NAME_LENGTH} characters or less.`:existingGroups.some(g=>g.group.name===name)?`A group named "${name}" already exists.`:!0}function isProjectInMicrofrontendsGroup(project,groups){return groups.some(g=>g.projects.some(p=>p.id===project.id))}function parseProjectDefaultRouteFlags(projectDefaultRouteFlags,selectedProjects,defaultApp){let routeByProjectId=new Map;if(!projectDefaultRouteFlags||projectDefaultRouteFlags.length===0)return routeByProjectId;for(let entry of projectDefaultRouteFlags){let separatorIndex=entry.indexOf("=");if(separatorIndex<=0||separatorIndex===entry.length-1)return`Invalid --project-default-route value "${entry}". Use "<project>=<route>", for example "docs=/docs".`;let projectIdentifier=entry.slice(0,separatorIndex).trim(),route2=entry.slice(separatorIndex+1).trim();if(!projectIdentifier||!route2)return`Invalid --project-default-route value "${entry}". Use "<project>=<route>", for example "docs=/docs".`;let project=selectedProjects.find(p=>p.name===projectIdentifier||p.id===projectIdentifier);if(!project)return`Invalid --project-default-route value "${entry}". Project "${projectIdentifier}" is not one of the selected projects.`;if(project.id===defaultApp.id)return`Invalid --project-default-route value "${entry}". Use --default-route for the default app "${defaultApp.name}".`;let routeValidation=validateDefaultRoute(route2);if(routeValidation!==!0)return`Invalid --project-default-route value "${entry}": ${routeValidation}`;if(routeByProjectId.has(project.id))return`Duplicate --project-default-route for project "${project.name}".`;routeByProjectId.set(project.id,route2)}return routeByProjectId}var import_chalk17=__toESM(require_source(),1);async function addToGroup(client){let parsedArgs,flagsSpecification=getFlagsSpecification(addToGroupSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let context=await ensureMicrofrontendsContext(client);if(typeof context=="number")return context;let{project,team}=context,teamSlug=team.slug,groupsResponse=await fetchMicrofrontendsGroups(client,team.id),{groups,maxMicrofrontendsPerGroup}=groupsResponse,existingGroup=groups.find(g=>g.projects.some(p=>p.id===project.id));if(existingGroup)return output_manager_default.error(`Project "${project.name}" is already part of the microfrontends group "${existingGroup.group.name}". A project cannot be in more than one microfrontends group.`),1;if(groups.length===0)return output_manager_default.error("No microfrontends groups exist. Create one first with `vercel microfrontends create-group`."),1;let existingMfeProjectCount=groups.reduce((count,g)=>count+g.projects.length,0),freeProjects=2,totalAfter=existingMfeProjectCount+1,plan=team.billing.plan,isProTrialPlan=team.billing.plan==="pro"&&team.billing.status==="trialing",isLimitedPlan=isProTrialPlan||plan==="hobby";if(isLimitedPlan&&totalAfter>freeProjects){let planName=isProTrialPlan?"Pro Trial":"Hobby",url=getTeamBillingUrl(teamSlug);return output_manager_default.log(`You've reached the microfrontends project limit for ${planName}. Upgrade to Pro to add more projects.`),output_manager_default.log(`Upgrade: ${output_manager_default.link(url,url,{fallback:!1})}`),1}output_manager_default.log(`Adding project ${import_chalk17.default.bold(project.name)} to a microfrontends group on ${import_chalk17.default.bold(teamSlug)}.`),output_manager_default.log("");let groupFlag=parsedArgs.flags["--group"],defaultRouteFlag=parsedArgs.flags["--default-route"];if(totalAfter>freeProjects){if(client.nonInteractive){let settingsUrl2=`https://vercel.com/${teamSlug}/${project.name}/settings/microfrontends`,flags=getGlobalFlagsFromArgs(client.argv.slice(2)),interactiveCmd=getCommandNamePlain(`microfrontends add-to-group ${flags.filter(f=>f!=="--non-interactive").join(" ")}`.trim());outputAgentError(client,{status:"error",reason:"purchase_requires_user",message:"Adding a project to a microfrontends group affects billing and cannot be performed non-interactively. Agents must not make billing changes on behalf of a user. The user must run this command interactively in a terminal to review billing details and confirm, or complete the action in the Vercel dashboard.",next:[{command:openUrlInBrowserCommand(settingsUrl2),when:"user opens Microfrontends settings in the browser"},{command:interactiveCmd,when:"user runs this command interactively (remove --non-interactive)"}]},1)}if(!client.stdin.isTTY)return output_manager_default.error("This command must be run interactively because it affects billing."),1}let selectedGroup;if(groupFlag){let found=groups.find(g=>g.group.name===groupFlag||g.group.id===groupFlag);if(!found)return output_manager_default.error(`Microfrontends group "${groupFlag}" not found.`),1;selectedGroup=found}else{let groupId=await client.input.select({message:"Select a microfrontends group:",choices:groups.map(g=>({name:g.group.name,value:g.group.id}))});selectedGroup=groups.find(g=>g.group.id===groupId)}if(selectedGroup.projects.length>=maxMicrofrontendsPerGroup){if(isLimitedPlan){let planName=isProTrialPlan?"Pro Trial":"Hobby",url=getTeamBillingUrl(teamSlug);return output_manager_default.log(`You've reached the microfrontends project limit for ${planName}. Upgrade to Pro to add more projects.`),output_manager_default.log(`Upgrade: ${output_manager_default.link(url,url,{fallback:!1})}`),1}return output_manager_default.error(`Group "${selectedGroup.group.name}" has reached the maximum number of projects (${maxMicrofrontendsPerGroup}).`),1}let defaultRoute;if(defaultRouteFlag){let validation=validateDefaultRoute(defaultRouteFlag);if(validation!==!0)return output_manager_default.error(validation),1;defaultRoute=defaultRouteFlag}else client.stdin.isTTY&&(output_manager_default.log("Specify a default route for the project. This path will be used for deployment screenshots and the default link to the project."),defaultRoute=await client.input.text({message:"Default route (e.g. /docs):",validate:validateDefaultRoute}));output_manager_default.log(""),output_manager_default.log(import_chalk17.default.bold("Billing")),output_manager_default.log(` ${import_chalk17.default.bold("Team:")} ${teamSlug}`);let projectFee;if(totalAfter<=freeProjects?projectFee=import_chalk17.default.green("Free")+` (first ${freeProjects} included)`:existingMfeProjectCount>=freeProjects?projectFee=import_chalk17.default.yellow("$250.00/month"):projectFee=import_chalk17.default.yellow("$250.00/month")+` (${freeProjects} free projects used)`,output_manager_default.log(` ${import_chalk17.default.bold("Project fee:")} ${projectFee}`),output_manager_default.log(` ${import_chalk17.default.bold("Request fee:")} ${import_chalk17.default.yellow("$2.00")} per million microfrontends routed requests`),output_manager_default.log(""),totalAfter<=freeProjects?output_manager_default.log(`Adding "${project.name}" is within the free tier, so no project fee will be charged to ${import_chalk17.default.bold(teamSlug)}'s bill. Request fees still apply for microfrontends routed requests.`):output_manager_default.log(`By proceeding, ${import_chalk17.default.bold(teamSlug)} will be charged for this project on the team's monthly bill.`),output_manager_default.log(""),!await client.input.confirm(`Add "${project.name}" to "${selectedGroup.group.name}"?`,!0))return output_manager_default.log("Aborted."),0;let addStamp=stamp_default();output_manager_default.spinner("Adding project to microfrontends group\u2026");try{await client.fetch(`/v10/projects/${project.id}/microfrontends?teamId=${teamSlug}`,{method:"PATCH",body:{microfrontendsGroupId:selectedGroup.group.id,isDefaultApp:!1,defaultRoute,enabled:!0}})}catch(error){return output_manager_default.stopSpinner(),isAPIError(error)&&error.status===403?(output_manager_default.error("You must be an Owner to create or modify microfrontends groups."),1):(printError(error),1)}output_manager_default.stopSpinner();let settingsUrl=`https://vercel.com/${teamSlug}/${project.name}/settings/microfrontends`;return output_manager_default.success(`Project "${project.name}" added to group "${selectedGroup.group.name}" ${import_chalk17.default.gray(addStamp())}`),output_manager_default.log(`View microfrontends group: ${output_manager_default.link(settingsUrl,settingsUrl,{fallback:!1})}`),output_manager_default.log(`Next step: Add routing paths for this project in your microfrontends.json configuration. See ${output_manager_default.link("https://vercel.com/docs/microfrontends/path-routing","https://vercel.com/docs/microfrontends/path-routing",{fallback:!1})}`),0}var import_chalk18=__toESM(require_source(),1);async function removeFromGroup(client){let parsedArgs,flagsSpecification=getFlagsSpecification(removeFromGroupSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let autoConfirm=!!parsedArgs.flags["--yes"],context=await ensureMicrofrontendsContext(client,{autoConfirm});if(typeof context=="number")return context;let{project,team}=context,teamSlug=team.slug,groupsResponse=await fetchMicrofrontendsGroups(client,team.id),{groups}=groupsResponse,projectGroup=groups.find(g=>g.projects.some(p=>p.id===project.id));if(!projectGroup)return output_manager_default.error(`Project "${project.name}" is not part of any microfrontends group.`),1;if(projectGroup.projects.find(p=>p.id===project.id)?.microfrontends?.isDefaultApp)return output_manager_default.error(`Project "${project.name}" is the default app for group "${projectGroup.group.name}" and cannot be removed. To remove it, first change the default app in the dashboard.`),1;if(client.nonInteractive&&!autoConfirm)return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:`Removing "${project.name}" from microfrontends group "${projectGroup.group.name}" requires confirmation. Use --yes to confirm.`,next:[{command:buildCommandWithYes(client.argv),when:"to confirm removal"}]},1),1;output_manager_default.log(`Removing project ${import_chalk18.default.bold(project.name)} from microfrontends group ${import_chalk18.default.bold(projectGroup.group.name)} on ${import_chalk18.default.bold(teamSlug)}.`),output_manager_default.log(`After removal, "${project.name}" will no longer be a child app in the group and will not be part of the composed application.`);let isReferencedInConfig=!!projectGroup.config?.applications?.[project.name];if(isReferencedInConfig&&(output_manager_default.log(""),output_manager_default.warn(`The microfrontends.json configuration still contains an entry for "${project.name}".`),output_manager_default.warn("Removing this project will cause other microfrontends projects in the group to fail deploying until the configuration is updated."),!autoConfirm)){if(!client.stdin.isTTY)return output_manager_default.error("Cannot remove a project that is still referenced in microfrontends.json in non-interactive mode."),1;if(output_manager_default.log(""),!await client.input.confirm(`Remove "${project.name}" even though it is still referenced in microfrontends.json?`,!1))return output_manager_default.log("Aborted."),0}if(output_manager_default.log(""),!autoConfirm){if(!client.stdin.isTTY)return output_manager_default.error("This command must be run interactively to confirm removal."),1;if(!await client.input.confirm(`Remove "${project.name}" from "${projectGroup.group.name}"?`,!1))return output_manager_default.log("Aborted."),0}let removeStamp=stamp_default();output_manager_default.spinner("Removing project from microfrontends group\u2026");try{await client.fetch(`/v10/projects/${project.id}/microfrontends?teamId=${teamSlug}`,{method:"PATCH",body:{enabled:!1}})}catch(error){return output_manager_default.stopSpinner(),isAPIError(error)&&error.status===403?(output_manager_default.error("You must be an Owner to create or modify microfrontends groups."),1):(printError(error),1)}return output_manager_default.stopSpinner(),output_manager_default.success(`Project "${project.name}" removed from group "${projectGroup.group.name}" ${import_chalk18.default.gray(removeStamp())}`),isReferencedInConfig&&output_manager_default.log(`Remember to remove "${project.name}" from your microfrontends.json configuration.`),0}var import_chalk19=__toESM(require_source(),1);async function deleteGroup(client){let parsedArgs,flagsSpecification=getFlagsSpecification(deleteGroupSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let autoConfirm=!!parsedArgs.flags["--yes"],groupFlag=parsedArgs.flags["--group"];if(client.nonInteractive&&!autoConfirm)return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.CONFIRMATION_REQUIRED,action:AGENT_ACTION.CONFIRMATION_REQUIRED,message:"Deleting a microfrontends group requires confirmation. Use --yes and --group to confirm.",next:[{command:buildCommandWithYes(client.argv),when:"to confirm deletion"}]},1),1;let{team}=await getScope(client);if(!team)return output_manager_default.error("Microfrontends are only available for teams."),1;let groupsResponse=await fetchMicrofrontendsGroups(client,team.id),{groups}=groupsResponse;if(groups.length===0)return output_manager_default.error("No microfrontends groups exist. There is nothing to delete."),1;if(!client.stdin.isTTY&&!groupFlag)return output_manager_default.error("Missing required option --group. Use --group to specify the microfrontends group, or run interactively."),2;let selectedGroup;if(groupFlag){let found=groups.find(g=>g.group.name===groupFlag||g.group.id===groupFlag);if(!found)return output_manager_default.error(`Microfrontends group "${groupFlag}" not found.`),1;selectedGroup=found}else{let link=await getLinkedProject(client,{cwd:client.cwd}),linkedProject=link.status==="linked"?link.project:void 0,linkedGroup=linkedProject?groups.find(g=>g.projects.some(p=>p.id===linkedProject.id&&p.microfrontends?.isDefaultApp)):void 0;if(linkedGroup&&client.stdin.isTTY)if(await client.input.confirm(`Delete microfrontends group "${linkedGroup.group.name}" (linked to ${import_chalk19.default.bold(linkedProject.name)})?`,!0))selectedGroup=linkedGroup;else{if(groups.length===1)return output_manager_default.log("Aborted."),0;{let remaining=groups.filter(g=>g.group.id!==linkedGroup.group.id),groupId=await client.input.select({message:"Select a microfrontends group to delete:",choices:remaining.map(g=>({name:g.group.name,value:g.group.id}))});selectedGroup=groups.find(g=>g.group.id===groupId)}}else{let groupId=await client.input.select({message:"Select a microfrontends group to delete:",choices:groups.map(g=>({name:g.group.name,value:g.group.id}))});selectedGroup=groups.find(g=>g.group.id===groupId)}}let groupName=selectedGroup.group.name,projectCount=selectedGroup.projects.length;if(output_manager_default.log(""),output_manager_default.log(`This will delete the microfrontends group ${import_chalk19.default.bold(groupName)} and all of its settings.`),projectCount>0&&output_manager_default.log(`${projectCount} project${projectCount>1?"s":""} will be removed from the group.`),output_manager_default.log(import_chalk19.default.red("This action is not reversible.")),output_manager_default.log(""),!autoConfirm){if(!client.stdin.isTTY)return output_manager_default.error("This command must be run interactively to confirm deletion."),1;if(await client.input.text({message:`Type ${import_chalk19.default.bold(groupName)} to confirm deletion:`,validate:val=>val!==groupName?`You must type "${groupName}" to confirm.`:!0})!==groupName)return output_manager_default.log("Aborted."),0}let deleteStamp=stamp_default();output_manager_default.spinner("Deleting microfrontends group\u2026");try{await client.fetch(`/v2/teams/${team.id}/microfrontends/${selectedGroup.group.id}?teamId=${team.id}`,{method:"DELETE"})}catch(error){return output_manager_default.stopSpinner(),isAPIError(error)&&error.status===403?(output_manager_default.error("You must be an Owner to create or modify microfrontends groups."),1):(printError(error),1)}return output_manager_default.stopSpinner(),output_manager_default.success(`Microfrontends group "${groupName}" deleted ${import_chalk19.default.gray(deleteStamp())}`),0}import{existsSync as existsSync2}from"fs";import{join as join3}from"path";var import_chalk20=__toESM(require_source(),1);async function inspectGroup(client){let parsedArgs,flagsSpecification=getFlagsSpecification(inspectGroupSubcommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let formatResult=validateJsonOutput(parsedArgs.flags);if(!formatResult.valid)return output_manager_default.error("error"in formatResult?formatResult.error:"Invalid output format"),2;let asJson=formatResult.jsonOutput,groupFlag=parsedArgs.flags["--group"],configFileNameFlag=parsedArgs.flags["--config-file-name"],{team}=await getScope(client);if(!team)return output_manager_default.error("Microfrontends are only available for teams."),1;let groupsResponse=await fetchMicrofrontendsGroups(client,team.id),{groups}=groupsResponse;if(groups.length===0)return output_manager_default.error("No microfrontends groups exist."),1;if(!groupFlag&&client.nonInteractive)return outputActionRequired(client,{status:AGENT_STATUS.ACTION_REQUIRED,reason:AGENT_REASON.MISSING_ARGUMENTS,action:AGENT_ACTION.MISSING_ARGUMENTS,message:"Missing required option --group. Use --group and --json in non-interactive mode.",next:[{command:'vercel microfrontends inspect-group --group="<group-name-or-id>" --json',when:"to inspect a specific microfrontends group non-interactively"}]},2),2;if(!client.stdin.isTTY&&!groupFlag)return output_manager_default.error("Missing required option --group. Use --group to specify the microfrontends group, or run interactively."),2;let selectedGroup;if(groupFlag){let found=groups.find(g=>g.group.name===groupFlag||g.group.id===groupFlag||g.group.slug===groupFlag);if(!found)return output_manager_default.error(`Microfrontends group "${groupFlag}" not found.`),1;selectedGroup=found}else{let groupId=await client.input.select({message:"Select a microfrontends group to inspect:",choices:groups.map(g=>({name:g.group.name,value:g.group.id}))});selectedGroup=groups.find(g=>g.group.id===groupId)}let localRepoContext=await getLocalRepoContext(client);output_manager_default.spinner("Fetching project metadata\u2026");let projects=await Promise.all(selectedGroup.projects.map(project=>enrichGroupProject(client,team.id,selectedGroup,project,localRepoContext)));output_manager_default.stopSpinner();let defaultProject=projects.find(p=>p.isDefaultApp),configuredConfigFileName=resolveConfiguredMicrofrontendsConfigFileName(configFileNameFlag);if(configFileNameFlag&&!configuredConfigFileName)return output_manager_default.error("Invalid --config-file-name. Value must end with .json or .jsonc."),2;let configFile=resolveLocalConfigFilePath(projects,localRepoContext,configuredConfigFileName),json={group:{id:selectedGroup.group.id,slug:selectedGroup.group.slug,name:selectedGroup.group.name,fallbackEnvironment:selectedGroup.group.fallbackEnvironment??null},projectCount:projects.length,defaultApp:defaultProject?.name??defaultProject?.id??null,configFile,config:{exists:!!selectedGroup.config,applications:Object.keys(selectedGroup.config?.applications??{})},projects};if(asJson)return client.stdout.write(`${JSON.stringify(json,null,2)}
|
|
106
|
-
`),0;let groupTable=table([["Group",json.group.name],["ID",json.group.id],["Slug",json.group.slug],["Projects",String(json.projectCount)],["Default app",json.defaultApp??"(none)"],["Fallback environment",json.group.fallbackEnvironment??"(none)"],["Local config file",json.configFile??"(not found)"],["Config applications",json.config.applications.length>0?json.config.applications.join(", "):"(none)"]]);output_manager_default.log(""),output_manager_default.log(groupTable),output_manager_default.log(""),output_manager_default.log("Projects"),output_manager_default.log("");for(let project of projects){let rows=[["Project",project.isDefaultApp?`${project.name} (default app)`:project.name],["Default route",project.defaultRoute??"(none)"],["Production domain",project.productionDomain??"(none)"],["Framework",project.framework??"(unknown)"],["Git org/repo",`${project.git.org??"(unknown)"}/${project.git.repo??"(unknown)"}`],["Root directory",project.git.rootDirectory??"(unknown)"]];project.packageName&&rows.push(["Package name",project.packageName]),project.inGroupConfig||rows.push(["In config",(0,import_chalk20.red)("no")]);let projectTable=table(rows);output_manager_default.log(projectTable),output_manager_default.log("")}for(let project of projects)project.projectFetchStatus!=="ok"&&output_manager_default.warn(`Project metadata for "${project.id}" is incomplete (status: ${project.projectFetchStatus}).`);return 0}async function enrichGroupProject(client,teamId,group,groupProject,localRepoContext){let fullProject,projectFetchStatus="ok";try{let maybeProject=await getProjectByNameOrId(client,groupProject.id,teamId);maybeProject instanceof ProjectNotFound?projectFetchStatus="not_found":fullProject=maybeProject}catch{projectFetchStatus="error"}let name=groupProject.name??fullProject?.name??groupProject.id,inGroupConfig=Object.prototype.hasOwnProperty.call(group.config?.applications??{},name),rootDirectory=fullProject?.rootDirectory??null,gitRepo=fullProject?.link?.repo??null,gitOrg=fullProject?.link?.org??null,productionDomain=fullProject?.targets?.production?.alias?.[0]??fullProject?.targets?.production?.url??null,framework=fullProject?.framework??null,packageName=await resolvePackageNameFromLocalRepo(localRepoContext,gitOrg,gitRepo,rootDirectory);return{id:groupProject.id,name,isDefaultApp:!!groupProject.microfrontends?.isDefaultApp,enabled:!!groupProject.microfrontends?.enabled,defaultRoute:groupProject.microfrontends?.defaultRoute??null,productionDomain,framework,git:{org:gitOrg,repo:gitRepo,rootDirectory},packageName,inGroupConfig,projectFetchStatus}}async function getLocalRepoContext(client){try{let link=await getLinkedProject(client,{cwd:client.cwd});return link.status!=="linked"?{repoRoot:null,linkedProjectId:null,linkedRepoOrg:null,linkedRepoName:null}:{repoRoot:link.repoRoot??null,linkedProjectId:link.project.id,linkedRepoOrg:link.project.link?.org??null,linkedRepoName:link.project.link?.repo??null}}catch{return{repoRoot:null,linkedProjectId:null,linkedRepoOrg:null,linkedRepoName:null}}}function isProjectInLocalRepo(localRepoContext,gitOrg,gitRepo){return!localRepoContext.repoRoot||!localRepoContext.linkedRepoOrg||!localRepoContext.linkedRepoName?!1:localRepoContext.linkedRepoOrg===gitOrg&&localRepoContext.linkedRepoName===gitRepo}async function resolvePackageNameFromLocalRepo(localRepoContext,gitOrg,gitRepo,rootDirectory){if(!isProjectInLocalRepo(localRepoContext,gitOrg,gitRepo))return null;let projectDir=join3(localRepoContext.repoRoot,rootDirectory||""),packageJsonPath=join3(projectDir,"package.json"),pkg=await readJSONFile(packageJsonPath);return!pkg||pkg instanceof Error?null:typeof pkg.name=="string"?pkg.name:null}function resolveLocalConfigFilePath(projects,localRepoContext,configuredConfigFileName){let defaultProject=projects.find(project=>project.isDefaultApp);if(!defaultProject||!isProjectInLocalRepo(localRepoContext,defaultProject.git.org,defaultProject.git.repo))return null;let projectDir=join3(localRepoContext.repoRoot,defaultProject.git.rootDirectory||""),configuredName=configuredConfigFileName??null;if(configuredName){let configuredPath=join3(projectDir,configuredName);if(existsSync2(configuredPath))return configuredPath}let jsonPath=join3(projectDir,"microfrontends.json"),jsoncPath=join3(projectDir,"microfrontends.jsonc");return existsSync2(jsonPath)?jsonPath:existsSync2(jsoncPath)?jsoncPath:null}function resolveConfiguredMicrofrontendsConfigFileName(configured){if(!configured)return null;let normalized=configured.trim();return!normalized.endsWith(".json")&&!normalized.endsWith(".jsonc")?null:normalized.replace(/^\/+/,"")}var MicrofrontendsTelemetryClient=class extends TelemetryClient{trackCliSubcommandPull(actual){this.trackCliSubcommand({subcommand:"pull",value:actual})}trackCliSubcommandCreateGroup(actual){this.trackCliSubcommand({subcommand:"create-group",value:actual})}trackCliSubcommandAddToGroup(actual){this.trackCliSubcommand({subcommand:"add-to-group",value:actual})}trackCliSubcommandRemoveFromGroup(actual){this.trackCliSubcommand({subcommand:"remove-from-group",value:actual})}trackCliSubcommandDeleteGroup(actual){this.trackCliSubcommand({subcommand:"delete-group",value:actual})}trackCliSubcommandInspectGroup(actual){this.trackCliSubcommand({subcommand:"inspect-group",value:actual})}};var COMMAND_CONFIG3={"create-group":getCommandAliases(createGroupSubcommand),"add-to-group":getCommandAliases(addToGroupSubcommand),"remove-from-group":getCommandAliases(removeFromGroupSubcommand),"delete-group":getCommandAliases(deleteGroupSubcommand),"inspect-group":getCommandAliases(inspectGroupSubcommand),pull:getCommandAliases(pullSubcommand)};async function main2(client){let telemetry=new MicrofrontendsTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(microfrontendsCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}parsedArgs.args[0]==="mf"&&warnDeprecatedSubcommand(client,"mf","microfrontends");let{subcommand,subcommandOriginal}=getSubcommand2(parsedArgs.args.slice(1),COMMAND_CONFIG3),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("microfrontends"),output_manager_default.print(help(microfrontendsCommand,{stream:client.stderr,columns:client.stderr.columns})),0;function printHelp(command2){return output_manager_default.print(help(command2,{stream:client.stderr,parent:microfrontendsCommand,columns:client.stderr.columns})),0}switch(subcommand){case"create-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(createGroupSubcommand)):(telemetry.trackCliSubcommandCreateGroup(subcommandOriginal),createGroup(client));case"add-to-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(addToGroupSubcommand)):(telemetry.trackCliSubcommandAddToGroup(subcommandOriginal),addToGroup(client));case"remove-from-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(removeFromGroupSubcommand)):(telemetry.trackCliSubcommandRemoveFromGroup(subcommandOriginal),removeFromGroup(client));case"delete-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(deleteGroupSubcommand)):(telemetry.trackCliSubcommandDeleteGroup(subcommandOriginal),deleteGroup(client));case"inspect-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(inspectGroupSubcommand)):(telemetry.trackCliSubcommandInspectGroup(subcommandOriginal),inspectGroup(client));case"pull":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(pullSubcommand)):(telemetry.trackCliSubcommandPull(subcommandOriginal),pull(client));default:return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG3)),output_manager_default.print(help(microfrontendsCommand,{stream:client.stderr,columns:client.stderr.columns})),2}}var import_chalk22=__toESM(require_source(),1),import_client=__toESM(require_dist2(),1);var import_chalk21=__toESM(require_source(),1);async function getDeploymentByIdOrURL({client,contextName,deployIdOrUrl}){let{config}=client;if(!isValidName(deployIdOrUrl))throw new Error(`The provided argument "${deployIdOrUrl}" is not a valid deployment ID or URL`);let deployment,team;try{output_manager_default.spinner(`Fetching deployment "${deployIdOrUrl}" in ${import_chalk21.default.bold(contextName)}\u2026`);let[teamResult,deploymentResult]=await Promise.allSettled([config.currentTeam?getTeamByIdOrSlug(client,config.currentTeam):void 0,getDeployment(client,contextName,deployIdOrUrl)]);if(teamResult.status==="rejected")throw new Error(`Failed to retrieve team information: ${teamResult.reason}`);if(deploymentResult.status==="rejected")throw new Error(deploymentResult.reason.message);team=teamResult.value,deployment=deploymentResult.value,output_manager_default.log(`Fetching deployment "${deployIdOrUrl}" in ${import_chalk21.default.bold(contextName)}\u2026`)}finally{output_manager_default.stopSpinner()}if(deployment.team?.id){if(!team||deployment.team.id!==team.id){let err=new Error(team?`Deployment doesn't belong to current team ${import_chalk21.default.bold(contextName)}`:"Deployment belongs to a different team");throw err.code="ERR_INVALID_TEAM",err}}else if(team){let err=new Error(`Deployment doesn't belong to current team ${import_chalk21.default.bold(contextName)}`);throw err.code="ERR_INVALID_TEAM",err}return deployment}var import_error_utils=__toESM(require_dist(),1);var RedeployTelemetryClient=class extends TelemetryClient{trackCliArgumentDeployment(value){value&&this.trackCliArgument({arg:"urlOrDeploymentId",value:this.redactedValue})}trackCliFlagNoWait(noWait){noWait&&this.trackCliFlag("no-wait")}trackCliOptionTarget(target){target&&this.trackCliArgument({arg:"target",value:this.redactedTargetName(target)})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}};async function redeploy(client){let parsedArgs=null,flagsSpecification=getFlagsSpecification(redeployCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return printError(error),2}let telemetry=new RedeployTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("redeploy"),output_manager_default.print(help(redeployCommand,{stream:client.stderr,columns:client.stderr.columns})),0;let deployIdOrUrl=parsedArgs.args[1];if(!deployIdOrUrl)return output_manager_default.error(`Missing required deployment id or url: ${getCommandName("redeploy <deployment>")}`),1;if(telemetry.trackCliArgumentDeployment(deployIdOrUrl),telemetry.trackCliFlagNoWait(parsedArgs.flags["--no-wait"]),telemetry.trackCliOptionTarget(parsedArgs.flags["--target"]),telemetry.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),!applyDeprecatedTargetFlag(client,parsedArgs.flags))return 2;let contextName=await getContextName(client),noWait=!!parsedArgs.flags["--no-wait"],targetArgument=parsedArgs.flags["--environment"];try{let fromDeployment=await getDeploymentByIdOrURL({client,contextName,deployIdOrUrl}),target,customEnvironmentSlugOrId;targetArgument?targetArgument==="staging"||targetArgument==="production"?target=targetArgument:targetArgument==="preview"?target=void 0:targetArgument?(customEnvironmentSlugOrId=targetArgument,target=void 0):target=fromDeployment.target:(target=fromDeployment.target??void 0,customEnvironmentSlugOrId=fromDeployment.customEnvironment?.id);let customEnvironment;if(fromDeployment?.projectId&&customEnvironmentSlugOrId){let customEnvironments=await getCustomEnvironments(client,fromDeployment.projectId);customEnvironment=pickCustomEnvironment(customEnvironments,customEnvironmentSlugOrId)}if(customEnvironmentSlugOrId&&!customEnvironment)return output_manager_default.error(`The provided argument "${targetArgument}" is not a valid target environment.`),2;fromDeployment.prebuilt&&fromDeployment.manualProvisioning===void 0&&output_manager_default.warning([`Deployment ${fromDeployment.id} is a prebuilt deployment. Redeploying reuses its prebuilt output, so it is not rebuilt from source and will not use the latest environment variables or project settings.`,`To use the latest settings, create a new deployment instead: run ${getCommandName("pull")}, ${getCommandName("build")}, and ${getCommandName("deploy --prebuilt")} with the same ${import_chalk22.default.bold("--environment")} option (for example ${import_chalk22.default.bold("--environment production")}).`,`Learn More: ${link_default("https://vercel.com/docs/cli/deploy#prebuilt")}`].join(`
|
|
107
|
-
`));let deployStamp=stamp_default();output_manager_default.spinner(`Redeploying project ${fromDeployment.id}`,0);let deployment=await client.fetch("/v13/deployments?forceNew=1",{body:{deploymentId:fromDeployment.id,meta:{action:"redeploy"},name:fromDeployment.name,target,customEnvironmentSlugOrId},method:"POST"});output_manager_default.stopSpinner();let previewUrl=`https://${deployment.url}`,isProdDeployment=target==="production";if(customEnvironmentSlugOrId&&customEnvironment&&(isProdDeployment=customEnvironment.type==="production"),printAlignedLabel("Inspect",import_chalk22.default.cyan(deployment.inspectorUrl)),printAlignedLabel(isProdDeployment?"Production":"Preview",import_chalk22.default.cyan(previewUrl),isProdDeployment&&noWait?{gutter:"\u25B2"}:{})
|
|
108
|
-
`),1;if(event.type==="error")throw output_manager_default.stopSpinner(),await new Now({client,currentTeam:fromDeployment.team?.id}).handleDeploymentError(event.payload,{env:{}})}}catch(err){output_manager_default.prettyError(err),process.exit(1)}}return printDeploymentStatus(client,deployment,deployStamp,noWait,!1)}catch(err){return output_manager_default.prettyError(err),(0,import_error_utils.isErrnoException)(err)&&err.code==="ERR_INVALID_TEAM"&&output_manager_default.error(`Use ${import_chalk22.default.bold("vc switch")} to change your current team`),1}}var import_chalk23=__toESM(require_source(),1),import_pluralize3=__toESM(require_pluralize(),1);function withGlobalFlags3(client,commandTemplate){return withGlobalFlags(client,commandTemplate,{preserveProject:!0})}async function parseSubcommandArgs2(argv,command2){let parsedArgs;try{parsedArgs=parseSubcommandArguments(argv,command2)}catch(err){return printError(err),2}return parsedArgs}async function confirmAction(client,skipConfirmation,message,details){return skipConfirmation?!0:(details&&output_manager_default.print(` ${details}
|
|
106
|
+
`),0;let groupTable=table([["Group",json.group.name],["ID",json.group.id],["Slug",json.group.slug],["Projects",String(json.projectCount)],["Default app",json.defaultApp??"(none)"],["Fallback environment",json.group.fallbackEnvironment??"(none)"],["Local config file",json.configFile??"(not found)"],["Config applications",json.config.applications.length>0?json.config.applications.join(", "):"(none)"]]);output_manager_default.log(""),output_manager_default.log(groupTable),output_manager_default.log(""),output_manager_default.log("Projects"),output_manager_default.log("");for(let project of projects){let rows=[["Project",project.isDefaultApp?`${project.name} (default app)`:project.name],["Default route",project.defaultRoute??"(none)"],["Production domain",project.productionDomain??"(none)"],["Framework",project.framework??"(unknown)"],["Git org/repo",`${project.git.org??"(unknown)"}/${project.git.repo??"(unknown)"}`],["Root directory",project.git.rootDirectory??"(unknown)"]];project.packageName&&rows.push(["Package name",project.packageName]),project.inGroupConfig||rows.push(["In config",(0,import_chalk20.red)("no")]);let projectTable=table(rows);output_manager_default.log(projectTable),output_manager_default.log("")}for(let project of projects)project.projectFetchStatus!=="ok"&&output_manager_default.warn(`Project metadata for "${project.id}" is incomplete (status: ${project.projectFetchStatus}).`);return 0}async function enrichGroupProject(client,teamId,group,groupProject,localRepoContext){let fullProject,projectFetchStatus="ok";try{let maybeProject=await getProjectByNameOrId(client,groupProject.id,teamId);maybeProject instanceof ProjectNotFound?projectFetchStatus="not_found":fullProject=maybeProject}catch{projectFetchStatus="error"}let name=groupProject.name??fullProject?.name??groupProject.id,inGroupConfig=Object.prototype.hasOwnProperty.call(group.config?.applications??{},name),rootDirectory=fullProject?.rootDirectory??null,gitRepo=fullProject?.link?.repo??null,gitOrg=fullProject?.link?.org??null,productionDomain=fullProject?.targets?.production?.alias?.[0]??fullProject?.targets?.production?.url??null,framework=fullProject?.framework??null,packageName=await resolvePackageNameFromLocalRepo(localRepoContext,gitOrg,gitRepo,rootDirectory);return{id:groupProject.id,name,isDefaultApp:!!groupProject.microfrontends?.isDefaultApp,enabled:!!groupProject.microfrontends?.enabled,defaultRoute:groupProject.microfrontends?.defaultRoute??null,productionDomain,framework,git:{org:gitOrg,repo:gitRepo,rootDirectory},packageName,inGroupConfig,projectFetchStatus}}async function getLocalRepoContext(client){try{let link=await getLinkedProject(client,{cwd:client.cwd});return link.status!=="linked"?{repoRoot:null,linkedProjectId:null,linkedRepoOrg:null,linkedRepoName:null}:{repoRoot:link.repoRoot??null,linkedProjectId:link.project.id,linkedRepoOrg:link.project.link?.org??null,linkedRepoName:link.project.link?.repo??null}}catch{return{repoRoot:null,linkedProjectId:null,linkedRepoOrg:null,linkedRepoName:null}}}function isProjectInLocalRepo(localRepoContext,gitOrg,gitRepo){return!localRepoContext.repoRoot||!localRepoContext.linkedRepoOrg||!localRepoContext.linkedRepoName?!1:localRepoContext.linkedRepoOrg===gitOrg&&localRepoContext.linkedRepoName===gitRepo}async function resolvePackageNameFromLocalRepo(localRepoContext,gitOrg,gitRepo,rootDirectory){if(!isProjectInLocalRepo(localRepoContext,gitOrg,gitRepo))return null;let projectDir=join3(localRepoContext.repoRoot,rootDirectory||""),packageJsonPath=join3(projectDir,"package.json"),pkg=await readJSONFile(packageJsonPath);return!pkg||pkg instanceof Error?null:typeof pkg.name=="string"?pkg.name:null}function resolveLocalConfigFilePath(projects,localRepoContext,configuredConfigFileName){let defaultProject=projects.find(project=>project.isDefaultApp);if(!defaultProject||!isProjectInLocalRepo(localRepoContext,defaultProject.git.org,defaultProject.git.repo))return null;let projectDir=join3(localRepoContext.repoRoot,defaultProject.git.rootDirectory||""),configuredName=configuredConfigFileName??null;if(configuredName){let configuredPath=join3(projectDir,configuredName);if(existsSync2(configuredPath))return configuredPath}let jsonPath=join3(projectDir,"microfrontends.json"),jsoncPath=join3(projectDir,"microfrontends.jsonc");return existsSync2(jsonPath)?jsonPath:existsSync2(jsoncPath)?jsoncPath:null}function resolveConfiguredMicrofrontendsConfigFileName(configured){if(!configured)return null;let normalized=configured.trim();return!normalized.endsWith(".json")&&!normalized.endsWith(".jsonc")?null:normalized.replace(/^\/+/,"")}var MicrofrontendsTelemetryClient=class extends TelemetryClient{trackCliSubcommandPull(actual){this.trackCliSubcommand({subcommand:"pull",value:actual})}trackCliSubcommandCreateGroup(actual){this.trackCliSubcommand({subcommand:"create-group",value:actual})}trackCliSubcommandAddToGroup(actual){this.trackCliSubcommand({subcommand:"add-to-group",value:actual})}trackCliSubcommandRemoveFromGroup(actual){this.trackCliSubcommand({subcommand:"remove-from-group",value:actual})}trackCliSubcommandDeleteGroup(actual){this.trackCliSubcommand({subcommand:"delete-group",value:actual})}trackCliSubcommandInspectGroup(actual){this.trackCliSubcommand({subcommand:"inspect-group",value:actual})}};var COMMAND_CONFIG3={"create-group":getCommandAliases(createGroupSubcommand),"add-to-group":getCommandAliases(addToGroupSubcommand),"remove-from-group":getCommandAliases(removeFromGroupSubcommand),"delete-group":getCommandAliases(deleteGroupSubcommand),"inspect-group":getCommandAliases(inspectGroupSubcommand),pull:getCommandAliases(pullSubcommand)};async function main2(client){let telemetry=new MicrofrontendsTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(microfrontendsCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),2}parsedArgs.args[0]==="mf"&&warnDeprecatedSubcommand(client,"mf","microfrontends");let{subcommand,subcommandOriginal}=getSubcommand2(parsedArgs.args.slice(1),COMMAND_CONFIG3),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("microfrontends"),output_manager_default.print(help(microfrontendsCommand,{stream:client.stderr,columns:client.stderr.columns})),0;function printHelp(command2){return output_manager_default.print(help(command2,{stream:client.stderr,parent:microfrontendsCommand,columns:client.stderr.columns})),0}switch(subcommand){case"create-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(createGroupSubcommand)):(telemetry.trackCliSubcommandCreateGroup(subcommandOriginal),createGroup(client));case"add-to-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(addToGroupSubcommand)):(telemetry.trackCliSubcommandAddToGroup(subcommandOriginal),addToGroup(client));case"remove-from-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(removeFromGroupSubcommand)):(telemetry.trackCliSubcommandRemoveFromGroup(subcommandOriginal),removeFromGroup(client));case"delete-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(deleteGroupSubcommand)):(telemetry.trackCliSubcommandDeleteGroup(subcommandOriginal),deleteGroup(client));case"inspect-group":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(inspectGroupSubcommand)):(telemetry.trackCliSubcommandInspectGroup(subcommandOriginal),inspectGroup(client));case"pull":return needHelp?(telemetry.trackCliFlagHelp("microfrontends",subcommandOriginal),printHelp(pullSubcommand)):(telemetry.trackCliSubcommandPull(subcommandOriginal),pull(client));default:return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG3)),output_manager_default.print(help(microfrontendsCommand,{stream:client.stderr,columns:client.stderr.columns})),2}}var import_chalk22=__toESM(require_source(),1),import_client=__toESM(require_dist2(),1);var import_chalk21=__toESM(require_source(),1);async function getDeploymentByIdOrURL({client,contextName,deployIdOrUrl}){let{config}=client;if(!isValidName(deployIdOrUrl))throw new Error(`The provided argument "${deployIdOrUrl}" is not a valid deployment ID or URL`);let deployment,team;try{output_manager_default.spinner(`Fetching deployment "${deployIdOrUrl}" in ${import_chalk21.default.bold(contextName)}\u2026`);let[teamResult,deploymentResult]=await Promise.allSettled([config.currentTeam?getTeamByIdOrSlug(client,config.currentTeam):void 0,getDeployment(client,contextName,deployIdOrUrl)]);if(teamResult.status==="rejected")throw new Error(`Failed to retrieve team information: ${teamResult.reason}`);if(deploymentResult.status==="rejected")throw new Error(deploymentResult.reason.message);team=teamResult.value,deployment=deploymentResult.value,output_manager_default.log(`Fetching deployment "${deployIdOrUrl}" in ${import_chalk21.default.bold(contextName)}\u2026`)}finally{output_manager_default.stopSpinner()}if(deployment.team?.id){if(!team||deployment.team.id!==team.id){let err=new Error(team?`Deployment doesn't belong to current team ${import_chalk21.default.bold(contextName)}`:"Deployment belongs to a different team");throw err.code="ERR_INVALID_TEAM",err}}else if(team){let err=new Error(`Deployment doesn't belong to current team ${import_chalk21.default.bold(contextName)}`);throw err.code="ERR_INVALID_TEAM",err}return deployment}var import_error_utils=__toESM(require_dist(),1);var RedeployTelemetryClient=class extends TelemetryClient{trackCliArgumentDeployment(value){value&&this.trackCliArgument({arg:"urlOrDeploymentId",value:this.redactedValue})}trackCliFlagNoWait(noWait){noWait&&this.trackCliFlag("no-wait")}trackCliOptionTarget(target){target&&this.trackCliArgument({arg:"target",value:this.redactedTargetName(target)})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedTargetName(environment)})}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var import_error_utils2=__toESM(require_dist(),1);async function redeploy(client){return client.argv.includes("--json")?runWithJsonOutput(client,()=>redeployDeployment(client,!0)):redeployDeployment(client,!1)}async function redeployDeployment(client,json){let parsedArgs=null,flagsSpecification=getFlagsSpecification(redeployCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error){return json?writeJsonUsageError(client,error):(printError(error),2)}let telemetry=new RedeployTelemetryClient({opts:{store:client.telemetryEventStore}});if(parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("redeploy"),output_manager_default.print(help(redeployCommand,{stream:client.stderr,columns:client.stderr.columns})),0;let deployIdOrUrl=parsedArgs.args[1];if(!deployIdOrUrl)return output_manager_default.error(`Missing required deployment id or url: ${getCommandName("redeploy <deployment>")}`),1;if(telemetry.trackCliArgumentDeployment(deployIdOrUrl),telemetry.trackCliFlagNoWait(parsedArgs.flags["--no-wait"]),telemetry.trackCliOptionTarget(parsedArgs.flags["--target"]),telemetry.trackCliOptionEnvironment(parsedArgs.flags["--environment"]),telemetry.trackCliFlagJson(parsedArgs.flags["--json"]),!applyDeprecatedTargetFlag(client,parsedArgs.flags))return 2;let contextName=await getContextName(client),noWait=!!parsedArgs.flags["--no-wait"],targetArgument=parsedArgs.flags["--environment"],warnings=[];try{let fromDeployment=await getDeploymentByIdOrURL({client,contextName,deployIdOrUrl}),target,customEnvironmentSlugOrId;targetArgument?targetArgument==="staging"||targetArgument==="production"?target=targetArgument:targetArgument==="preview"?target=void 0:targetArgument?(customEnvironmentSlugOrId=targetArgument,target=void 0):target=fromDeployment.target:(target=fromDeployment.target??void 0,customEnvironmentSlugOrId=fromDeployment.customEnvironment?.id);let customEnvironment;if(fromDeployment?.projectId&&customEnvironmentSlugOrId){let customEnvironments=await getCustomEnvironments(client,fromDeployment.projectId);customEnvironment=pickCustomEnvironment(customEnvironments,customEnvironmentSlugOrId)}if(customEnvironmentSlugOrId&&!customEnvironment)return output_manager_default.error(`The provided argument "${targetArgument}" is not a valid target environment.`),2;fromDeployment.prebuilt&&fromDeployment.manualProvisioning===void 0&&(output_manager_default.warning([`Deployment ${fromDeployment.id} is a prebuilt deployment. Redeploying reuses its prebuilt output, so it is not rebuilt from source and will not use the latest environment variables or project settings.`,`To use the latest settings, create a new deployment instead: run ${getCommandName("pull")}, ${getCommandName("build")}, and ${getCommandName("deploy --prebuilt")} with the same ${import_chalk22.default.bold("--environment")} option (for example ${import_chalk22.default.bold("--environment production")}).`,`Learn More: ${link_default("https://vercel.com/docs/cli/deploy#prebuilt")}`].join(`
|
|
107
|
+
`)),warnings.push({reason:"prebuilt_output_reused",message:`Deployment ${fromDeployment.id} is a prebuilt deployment. Redeploying reuses its prebuilt output, so it is not rebuilt from source and will not use the latest environment variables or project settings.`}));let deployStamp=stamp_default();output_manager_default.spinner(`Redeploying project ${fromDeployment.id}`,0);let deployment=await client.fetch("/v13/deployments?forceNew=1",{body:{deploymentId:fromDeployment.id,meta:{action:"redeploy"},name:fromDeployment.name,target,customEnvironmentSlugOrId},method:"POST"});output_manager_default.stopSpinner();let previewUrl=`https://${deployment.url}`,isProdDeployment=target==="production";if(customEnvironmentSlugOrId&&customEnvironment&&(isProdDeployment=customEnvironment.type==="production"),printAlignedLabel("Inspect",import_chalk22.default.cyan(deployment.inspectorUrl)),printAlignedLabel(isProdDeployment?"Production":"Preview",import_chalk22.default.cyan(previewUrl),isProdDeployment&&noWait?{gutter:"\u25B2"}:{}),!json&&!client.stdout.isTTY&&client.stdout.write(`https://${deployment.url}`),!noWait){output_manager_default.spinner(deployment.readyState==="QUEUED"?"Queued\u2026":"Building\u2026",0);let project,rollingRelease;if(deployment.projectId&&deployment.projectId!=""&&(project=await getProjectByNameOrId(client,deployment.projectId),rollingRelease=project?.rollingRelease),deployment.readyState==="READY"&&deployment.aliasAssigned&&!rollingRelease){if(output_manager_default.spinner("Completing\u2026",0),deployment.target==="production"&&deployment.alias&&deployment.alias.length>0){output_manager_default.stopSpinner();let prodUrl=`https://${deployment.alias[0]}`;printAlignedLabel("Aliased",import_chalk22.default.cyan(prodUrl),{gutter:"\u25B2"})}}else try{let clientOptions={dispatcher:getFetchDispatcher(),apiUrl:client.apiUrl,debug:output_manager_default.debugEnabled,path:"",teamId:fromDeployment.team?.id,token:client.authConfig.token,getAuthHeaders:client.getAuthHeaders,userAgent:ua_default};for await(let event of(0,import_client.checkDeploymentStatus)(deployment,clientOptions))if(event.type==="building")output_manager_default.spinner("Building\u2026",0);else if(event.type==="ready"&&rollingRelease){output_manager_default.spinner("Releasing\u2026",0),output_manager_default.stopSpinner(),deployment=event.payload;break}else if(event.type==="ready"&&(!event.payload.checksState||event.payload.checksState==="completed"))output_manager_default.spinner("Completing\u2026",0);else if(event.type==="checks-running")output_manager_default.spinner("Running Checks\u2026",0);else if(event.type==="alias-assigned"||event.type==="checks-conclusion-failed"){if(output_manager_default.stopSpinner(),event.type==="alias-assigned"&&!Array.isArray(event.payload)&&event.payload.target==="production"&&event.payload.alias&&event.payload.alias.length>0){let prodUrl=`https://${event.payload.alias[0]}`;printAlignedLabel("Aliased",import_chalk22.default.cyan(prodUrl),{gutter:"\u25B2"})}deployment=event.payload;break}else{if(event.type==="canceled")return output_manager_default.stopSpinner(),output_manager_default.print(`The deployment has been canceled.
|
|
108
|
+
`),json?writeJsonFailure(client,{status:AGENT_STATUS.ERROR,reason:"deployment_canceled",message:"The deployment has been canceled.",data:{deployment:deploymentJson(deployment)}}):1;if(event.type==="error")throw output_manager_default.stopSpinner(),await new Now({client,currentTeam:fromDeployment.team?.id}).handleDeploymentError(event.payload,{env:{}})}}catch(err){if(json)return writeJsonFailure(client,{status:AGENT_STATUS.ERROR,reason:"deploy_failed",message:(0,import_error_utils2.errorToString)(err),next:[jsonNextStep(client,["inspect",deployment.id,"--logs"],"Print the build logs")],data:{deployment:deploymentJson(deployment)}});output_manager_default.prettyError(err),process.exit(1)}}return json?writeRedeployResult(client,deployment,noWait,warnings):printDeploymentStatus(client,deployment,deployStamp,noWait,!1)}catch(err){if(json)throw err;return output_manager_default.prettyError(err),(0,import_error_utils.isErrnoException)(err)&&err.code==="ERR_INVALID_TEAM"&&output_manager_default.error(`Use ${import_chalk22.default.bold("vc switch")} to change your current team`),1}}function writeRedeployResult(client,deployment,noWait,warnings){let extra=warnings.length>0?{warnings}:{};return noWait&&isDeploying(deployment.readyState)?writeJsonResult(client,{deployment:deploymentJson(deployment),outcome:"accepted",...extra,next:[jsonNextStep(client,["inspect",deployment.id,"--wait"],"Wait for the deployment to be ready")]}):deployment.readyState!=="READY"?writeJsonFailure(client,{status:AGENT_STATUS.ERROR,reason:"build_failed",message:"Your deployment failed.",next:[jsonNextStep(client,["inspect",deployment.id,"--logs"],"Print the build logs")],data:{deployment:deploymentJson(deployment)}}):writeJsonResult(client,{deployment:deploymentJson(deployment),outcome:"redeployed",...extra,next:[jsonNextStep(client,["inspect",deployment.id],"Inspect the deployment")]})}var import_chalk23=__toESM(require_source(),1),import_pluralize3=__toESM(require_pluralize(),1);function withGlobalFlags3(client,commandTemplate){return withGlobalFlags(client,commandTemplate,{preserveProject:!0})}async function parseSubcommandArgs2(argv,command2){let parsedArgs;try{parsedArgs=parseSubcommandArguments(argv,command2)}catch(err){return printError(err),2}return parsedArgs}async function confirmAction(client,skipConfirmation,message,details){return skipConfirmation?!0:(details&&output_manager_default.print(` ${details}
|
|
109
109
|
`),await client.input.confirm(message,!1))}function isValidUrl(url){if(url.startsWith("/"))return!0;try{let parsed=new URL(url);return parsed.protocol==="http:"||parsed.protocol==="https:"}catch{return!1}}function getArgsAfterRedirectsSubcommand(fullArgs,subcommand){let idx=fullArgs.indexOf(subcommand);return idx>=0?fullArgs.slice(idx+1):[]}function getRedirectGlobalFlagsOnly(afterSubcommandArgs){return getGlobalFlagsFromArgs(afterSubcommandArgs,{preserveProject:!0})}function getRedirectPromoteSuggestionFlags(afterSubcommandArgs){let parts=getRedirectGlobalFlagsOnly(afterSubcommandArgs);return parts.some(p=>p==="--yes"||p==="-y")||parts.push("--yes"),parts}function buildRedirectsSuggestionFlags(fullArgs,subcommand,options={}){let after=getArgsAfterRedirectsSubcommand(fullArgs,subcommand),flagParts=getSameSubcommandSuggestionFlags(after);return options.ensureYes!==!1&&!flagParts.some(a=>a==="--yes"||a==="-y")&&flagParts.push("--yes"),flagParts}async function getRedirects(client,projectId,options={}){let{teamId,search,page,perPage=50,versionId,diff}=options,params=new URLSearchParams;params.set("projectId",projectId),teamId&¶ms.set("teamId",teamId),versionId&¶ms.set("versionId",versionId),diff?params.set("diff",diff===!0?"true":diff):(params.set("per_page",perPage.toString()),search&¶ms.set("q",search),page&¶ms.set("page",page.toString()));let url=`/v1/bulk-redirects?${params}`;return await client.fetch(url)}async function getRedirectVersions(client,projectId,teamId){let params=new URLSearchParams;params.set("projectId",projectId),teamId&¶ms.set("teamId",teamId);let url=`/v1/bulk-redirects/versions?${params}`;return await client.fetch(url)}async function list2(client,argv){let parsed=await parseSubcommandArgs2(argv,listSubcommand4);if(typeof parsed=="number")return parsed;let asJson=!!parsed.flags["--json"],query=getRenamedOption(parsed.flags,"--query","--search",{json:asJson,typedName:getTypedOptionName(argv,getFlagsSpecification(listSubcommand4.options),"--search")});if("error"in query)return reportRenamedOptionError(client,query.error,{json:asJson});let nextPage=parseNumericCursor(parsed.flags["--next"]);if(Number.isNaN(nextPage))return output_manager_default.error(INVALID_NEXT_MESSAGE),2;let link=await requireProjectContext(client,"redirects",parsed.flags["--project"]);if(typeof link=="number")return link;let{project,org}=link,{flags}=parsed,teamId=org.type==="team"?org.id:void 0,search=query.value,page=nextPage??flags["--page"];flags["--page"]!==void 0&&warnDeprecatedOption(client.argv,"--page","--next");let perPage=flags["--limit"]??flags["--per-page"],staging=flags["--staging"],versionIdFlag=flags["--redirects-version"],versionId,versionName,useDiff=!1;if(staging){asJson||output_manager_default.spinner("Fetching staging version");let{versions}=await getRedirectVersions(client,project.id,teamId),stagingVersion=versions.find(v=>v.isStaging);if(!stagingVersion)return output_manager_default.error(`No staging version found for ${import_chalk23.default.bold(project.name)}. Run ${import_chalk23.default.cyan(withGlobalFlags3(client,"redirects list-versions"))} to see available versions.`),1;versionId=stagingVersion.id,versionName=stagingVersion.name||stagingVersion.id,!search&&!page&&(useDiff=!0)}if(versionIdFlag){if(staging)return output_manager_default.error("Cannot use both --staging and --redirects-version options together"),2;asJson||output_manager_default.spinner("Fetching version");let{versions}=await getRedirectVersions(client,project.id,teamId),version=versions.find(v=>v.id===versionIdFlag||v.name===versionIdFlag);if(!version)return output_manager_default.error(`Version "${versionIdFlag}" not found. Run ${import_chalk23.default.cyan(withGlobalFlags3(client,"redirects list-versions"))} to see available versions.`),1;versionId=version.id,versionName=version.name||version.id}let lsStamp=stamp_default(),spinnerMessage=`Fetching redirects for ${import_chalk23.default.bold(project.name)}`;versionName&&(spinnerMessage+=` (version: ${versionName})`),search&&(spinnerMessage+=` matching "${search}"`),asJson||output_manager_default.spinner(spinnerMessage);let{redirects,pagination}=await getRedirects(client,project.id,{teamId,search,page,perPage,versionId,diff:useDiff});if(asJson){let next=pagination&&pagination.page<pagination.numPages?pagination.page+1:null;return client.stdout.write(`${JSON.stringify(withWarnings({redirects,pagination:{next}},[query.warning]),null,2)}
|
|
110
110
|
`),0}if(useDiff){let added=redirects.filter(r=>r.action==="+"),removed=redirects.filter(r=>r.action==="-"),unchanged=redirects.filter(r=>!r.action);output_manager_default.log(`Changes in staging version ${import_chalk23.default.bold(versionName||"")} ${import_chalk23.default.gray(lsStamp())}`),added.length===0&&removed.length===0?output_manager_default.log(`
|
|
111
111
|
No changes from production version
|
|
@@ -247,7 +247,7 @@ ${import_chalk29.default.gray("No changes detected from current production versi
|
|
|
247
247
|
`),output_manager_default.print(` ${import_chalk34.default.gray("ID:")} ${route2.id}
|
|
248
248
|
`),output_manager_default.print(`
|
|
249
249
|
${import_chalk34.default.bold("Staging version:")} ${version.id}
|
|
250
|
-
`),await offerAutoPromote(client,projectId,version,!!existingStagingVersion,{teamId,skipPrompts}),0}catch(e){let error=e;return client.nonInteractive&&outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.ROUTE_CREATE_FAILED,message:"Route creation failed for this project. See hint for next steps.",hint:error.message||"Use `vercel routes list --diff` to inspect staged routes, then adjust options and retry.",next:[{command:withGlobalFlags2(client,"routes list --diff"),when:"to inspect staged state"}]},1),output_manager_default.error(error.message||"Failed to create route"),1}}var COMMAND_CONFIG5={list:getCommandAliases(listSubcommand5),"list-versions":getCommandAliases(listVersionsSubcommand2),inspect:getCommandAliases(inspectSubcommand4),add:getCommandAliases(addSubcommand3),update:getCommandAliases(editSubcommand),remove:getCommandAliases(deleteSubcommand2),enable:getCommandAliases(enableSubcommand),disable:getCommandAliases(disableSubcommand),move:getCommandAliases(reorderSubcommand),export:getCommandAliases(exportSubcommand),publish:getCommandAliases(publishSubcommand),restore:getCommandAliases(restoreSubcommand2),"discard-staging":getCommandAliases(discardSubcommand)};async function main4(client){let telemetry=new RoutesTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(routesCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(err){return printError(err),2}let subArgs=parsedArgs.args.slice(1),{subcommand,args,subcommandOriginal}=getSubcommand2(subArgs,COMMAND_CONFIG5),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("routes"),output_manager_default.print(help(routesCommand,{stream:client.stderr,columns:client.stderr.columns})),0;function printHelp(command2){output_manager_default.print(help(command2,{stream:client.stderr,parent:routesCommand,columns:client.stderr.columns}))}switch(subcommand&&!needHelp&&telemetry.trackCliOptionProject(getProjectOptionFromArgs(args)),subcommand){case"list":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listSubcommand5),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list3(client,args));case"list-versions":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listVersionsSubcommand2),0):(telemetry.trackCliSubcommandListVersions(subcommandOriginal),subcommandOriginal==="ls-versions"&&warnDeprecatedSubcommand(client,"routes ls-versions","routes list-versions"),listVersions2(client,args));case"inspect":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(inspectSubcommand4),0):(telemetry.trackCliSubcommandInspect(subcommandOriginal),inspect3(client,args));case"add":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(addSubcommand3),0):(telemetry.trackCliSubcommandAdd(subcommandOriginal),add3(client,args));case"update":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(editSubcommand),0):(telemetry.trackCliSubcommandUpdate(subcommandOriginal),subcommandOriginal==="edit"&&warnDeprecatedSubcommand(client,"routes edit","routes update"),(await import("./chunks/edit-A3M3GBGP.js")).default(client,args));case"remove":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(deleteSubcommand2),0):(telemetry.trackCliSubcommandRemove(subcommandOriginal),subcommandOriginal==="delete"&&warnDeprecatedSubcommand(client,"routes delete","routes remove"),(await import("./chunks/delete-SKYFHUWD.js")).default(client,args));case"enable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(enableSubcommand),0):(telemetry.trackCliSubcommandEnable(subcommandOriginal),(await import("./chunks/enable-6A5THWDP.js")).default(client,args));case"disable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(disableSubcommand),0):(telemetry.trackCliSubcommandDisable(subcommandOriginal),(await import("./chunks/disable-EBPZ2LYC.js")).default(client,args));case"move":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(reorderSubcommand),0):(telemetry.trackCliSubcommandMove(subcommandOriginal),subcommandOriginal==="reorder"&&warnDeprecatedSubcommand(client,"routes reorder","routes move"),(await import("./chunks/reorder-N2L43LXD.js")).default(client,args));case"export":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(exportSubcommand),0):(telemetry.trackCliSubcommandExport(subcommandOriginal),(await import("./chunks/export-R5IUWAW5.js")).default(client,args));case"publish":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(publishSubcommand),0):(telemetry.trackCliSubcommandPublish(subcommandOriginal),(await import("./chunks/publish-JIFRJNDV.js")).default(client,args));case"restore":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(restoreSubcommand2),0):(telemetry.trackCliSubcommandRestore(subcommandOriginal),(await import("./chunks/restore-AKAVSLAK.js")).default(client,args));case"discard-staging":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(discardSubcommand),0):(telemetry.trackCliSubcommandDiscardStaging(subcommandOriginal),(await import("./chunks/discard-SMVPENSP.js")).default(client,args));default:return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG5)),output_manager_default.print(help(routesCommand,{stream:client.stderr,columns:client.stderr.columns})),2}}var SchedulesTelemetryClient=class extends TelemetryClient{trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandCreate(actual){this.trackCliSubcommand({subcommand:"create",value:actual})}trackCliSubcommandUpdate(actual){this.trackCliSubcommand({subcommand:"update",value:actual})}trackCliSubcommandEnable(actual){this.trackCliSubcommand({subcommand:"enable",value:actual})}trackCliSubcommandDisable(actual){this.trackCliSubcommand({subcommand:"disable",value:actual})}trackCliSubcommandInvoke(actual){this.trackCliSubcommand({subcommand:"invoke",value:actual})}trackCliSubcommandDelete(actual){this.trackCliSubcommand({subcommand:"delete",value:actual})}trackCliSubcommandExecutions(actual){this.trackCliSubcommand({subcommand:"executions",value:actual})}trackCliSubcommandExecutionsList(actual){this.trackCliSubcommand({subcommand:"executions:list",value:actual})}};var import_ms8=__toESM(require_ms(),1);var SchedulesActionTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionUser(user){user&&this.trackCliOption({option:"user",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionFor(duration){duration&&this.trackCliOption({option:"for",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function asSentence(value){let trimmed=value.trim();return/[.!?]$/.test(trimmed)?trimmed:`${trimmed}.`}function apiErrorDetail(error){let message=error.serverMessage?.trim();return message&&message!=="Response Error"?asSentence(message):void 0}function requestDescription(context){return context.action==="list"?`list schedules in namespace ${context.namespace}`:context.action==="list-executions"?`list executions for schedule ${context.namespace}/${context.name}`:`${context.action} schedule ${context.namespace}/${context.name}`}function ambiguousInvokeError(local){return{reason:AGENT_REASON.API_ERROR,message:"The schedule invocation may have been accepted, but the CLI did not receive confirmation. Check whether the schedule ran before invoking it again."+(local?` Inspect the ${getCommandName("dev")} output for local executions.`:""),retryable:!1,userActionRequired:!0}}function getSchedulesError(client,error,context){if(!isAPIError(error))return context.action==="invoke"?ambiguousInvokeError(context.local):context.local?{reason:AGENT_REASON.API_ERROR,message:`${error instanceof Error?asSentence(error.message):"Failed to connect to local Schedules."} Check the local session and restart ${getCommandName("dev")} in this project if needed.`,retryable:!1,userActionRequired:!0}:{reason:AGENT_REASON.API_ERROR,message:"Failed to connect to the Schedules API. Check your connection and try again.",retryable:!0};let serverMessage=error.serverMessage?.trim().toLowerCase();if(context.local&&context.action==="invoke"&&error.status>=500)return ambiguousInvokeError(!0);if(context.local&&(error.status===401||error.status===402||error.status===403||/(?:project|session)_(?:mismatch|not_found|expired)/.test(error.code??"")||/^(?:local )?(?:project|session)\b/.test(serverMessage??"")))return{reason:AGENT_REASON.API_ERROR,message:`${apiErrorDetail(error)??"The local Schedules session is unavailable."} Restart ${getCommandName("dev")} in this project and use its local session.`,retryable:!1,userActionRequired:!0};if(error.code==="schedule_already_exists")return{reason:AGENT_REASON.SCHEDULE_ALREADY_EXISTS,message:context.name?`Schedule ${context.namespace}/${context.name} already exists. Choose a different name or update the existing schedule.`:"The schedule already exists. Choose a different name or update the existing schedule.",retryable:!1};if(error.code==="schedule_single_at_passed")return{reason:AGENT_REASON.SCHEDULE_SINGLE_AT_PASSED,message:context.name?`Schedule ${context.namespace}/${context.name} has passed its scheduled time and can't be modified. Delete it or create a new schedule.`:"The schedule has passed its scheduled time and can't be modified. Delete it or create a new schedule.",retryable:!1};if(error.code==="schedule_already_active"){let schedule=context.name?[quoteArg(context.name),`--namespace ${quoteArg(context.namespace)}`,...context.trackArgs??[]].join(" "):void 0;return{reason:AGENT_REASON.SCHEDULE_ALREADY_ACTIVE,message:context.name?`Schedule ${context.namespace}/${context.name} is already enabled without an end time. Disable it first, then enable it with --until or --for.`:"The schedule is already enabled without an end time. Disable it first, then enable it with --until or --for.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes","--until","--for"]}),when:"Disable the schedule before enabling it with an end time"}]}}}if(error.code==="static_schedule"){let schedule=context.name?[quoteArg(context.name),`--namespace ${quoteArg(context.namespace)}`,...context.trackArgs??[]].join(" "):void 0;return{reason:AGENT_REASON.STATIC_SCHEDULE,message:context.name?`Static schedule ${context.namespace}/${context.name} can't be updated or deleted. Enable or disable it instead.`:"Static schedules can't be updated or deleted. Enable or disable them instead.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules enable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Enable the static schedule"},{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Disable the static schedule"}]}}}if(error.code==="invalid_cron_expression")return{reason:AGENT_REASON.INVALID_CRON_EXPRESSION,message:`${apiErrorDetail(error)??"The cron expression is invalid."} Check \`--cron\` and try again.`,retryable:!1};if(error.code==="invalid_jitter")return{reason:AGENT_REASON.INVALID_JITTER,message:apiErrorDetail(error)??"The schedule jitter setting is invalid.",retryable:!1};if(error.code==="jitter_exceeds_cadence")return{reason:AGENT_REASON.JITTER_EXCEEDS_CADENCE,message:`${apiErrorDetail(error)??"The schedule jitter exceeds the interval between runs."} Increase the interval between runs.`,retryable:!1};if(error.code==="single_at_too_soon")return{reason:AGENT_REASON.SINGLE_AT_TOO_SOON,message:`${apiErrorDetail(error)??"The one-time schedule is too soon."} Choose a later value for \`--at\`.`,retryable:!1};if(error.code==="payload_too_large")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_TOO_LARGE,message:`${apiErrorDetail(error)??"The schedule payload is too large."} Reduce the value passed to \`--payload\` and try again.`,retryable:!1};if(error.code==="payload_store_failed")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_STORE_FAILED,message:"Failed to store the schedule payload. Try again later.",retryable:!0};if(error.code==="service_unavailable")return{reason:AGENT_REASON.SCHEDULE_SERVICE_UNAVAILABLE,message:"Schedule execution history is temporarily unavailable. Try again later.",retryable:!0};if(error.code==="service_error")return{reason:AGENT_REASON.SCHEDULE_SERVICE_ERROR,message:error.status>=500?"Failed to load schedule execution history. Try again later.":"Failed to load schedule execution history. Choose a shorter time range and try again.",retryable:error.status>=500};if(error.status===400){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.INVALID_ARGUMENTS,message:`The Schedules API rejected the request.${detail2?` ${detail2}`:""}`,retryable:!1}}if(error.status===401&&error.code==="missing_team_param")return{reason:AGENT_REASON.MISSING_SCOPE,message:"Schedules requires a team project. Run `vercel link` to link a project owned by a team.",retryable:!1,userActionRequired:!0};if(error.status===401){let tokenSource=client.authConfig.tokenSource;return{reason:AGENT_REASON.LOGIN_REQUIRED,message:tokenSource==="env"?"Schedules API authentication failed. Replace VERCEL_TOKEN, or unset it to use your saved login.":tokenSource==="flag"?"Schedules API authentication failed. Replace the token passed to `--token`.":`Schedules API authentication failed. Run ${getCommandName("login")} and try again.`,retryable:!1,userActionRequired:!0}}if(error.status===402){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.PLAN_UPGRADE_REQUIRED,message:`Schedules isn't available for this team.${detail2?` ${detail2}`:""} Ask a team owner to review the requirement.`,retryable:!1,userActionRequired:!0}}if(error.status===403&&error.code==="not_enabled"||!context.local&&error.status===404&&(serverMessage==="not found"||serverMessage==="not found."))return{reason:AGENT_REASON.SCHEDULES_NOT_ENABLED,message:"Vercel Schedules is not enabled for this team.",retryable:!1,userActionRequired:!0};if(error.status===403)return{reason:AGENT_REASON.PERMISSION_DENIED,message:"Can't access Schedules with the current credentials and team. Check the token and selected team. If both are correct, ask a team owner for access.",retryable:!1,userActionRequired:!0};if(error.status===404&&(serverMessage==="project not found"||serverMessage==="project not found."))return{reason:AGENT_REASON.PROJECT_NOT_FOUND,message:"The linked project isn't available to this team. Run `vercel link` to update the project link.",retryable:!1,userActionRequired:!0};if(error.status===404&&context.action!=="create"&&context.action!=="list"&&context.name)return{reason:AGENT_REASON.NOT_FOUND,message:`Schedule not found: ${context.namespace}/${context.name}.`,retryable:!1};if(error.status===429){let retryAfterMs=typeof error.retryAfterMs=="number"&&error.retryAfterMs>0?error.retryAfterMs:void 0;return{reason:AGENT_REASON.RATE_LIMITED,message:retryAfterMs===void 0?"The Schedules API request limit was reached. Wait and try again.":`The Schedules API request limit was reached. Try again in ${Math.ceil(retryAfterMs/1e3)} second${retryAfterMs>1e3?"s":""}.`,retryable:!0,...retryAfterMs&&{retryAfterMs}}}if(error.status>=500)return context.action==="invoke"?ambiguousInvokeError(context.local):{reason:AGENT_REASON.API_ERROR,message:context.local?`Local Schedules is unavailable. Check the ${getCommandName("dev")} output and restart the local session if needed.`:"The Schedules API is temporarily unavailable. Try again later.",retryable:!0};let detail=apiErrorDetail(error);return{reason:AGENT_REASON.API_ERROR,message:`Failed to ${requestDescription(context)}.${detail?` ${detail}`:""}`,retryable:!1}}function handleSchedulesApiError(client,error,context){let details=getSchedulesError(client,error,context);return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,...details},1),1):(output_manager_default.fatal(details.message),1)}var DEFAULT_SCHEDULES_BASE_URL="https://vercel-schedules.com",DEFAULT_SCHEDULE_NAMESPACE="default",DEFAULT_SCHEDULES_LIMIT=20,SCHEDULES_REQUEST_SOURCE_HEADER="x-vss-client",LocalSchedulesError=class extends Error{constructor(message){super(message),this.name="LocalSchedulesError"}};function sanitizeSchedule(schedule){let{trackId:_trackId,...publicSchedule}=schedule;return publicSchedule}var SchedulesClient=class{constructor(client,options){this.client=client;this.options=options;if("local"in options){if(!isLocalSchedulesOrigin(options.local.origin))throw new LocalSchedulesError("Local Schedules requires an HTTP 127.0.0.1 endpoint with a valid port.");this.baseUrl=new URL(options.local.origin);return}this.baseUrl=new URL(options.baseUrl??process.env.VERCEL_SCHEDULE_BASE_URL??DEFAULT_SCHEDULES_BASE_URL)}get localOrigin(){return"local"in this.options?this.baseUrl.origin:void 0}async request(path,options={}){let url=new URL(path,this.baseUrl);if("local"in this.options){let session=this.options.local;url.searchParams.set("projectId",session.projectId);let response;try{response=await directFetch(url.href,{method:options.method??"GET",headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id,[SCHEDULES_REQUEST_SOURCE_HEADER]:"cli",...options.body===void 0?{}:{"content-type":"application/json"}},body:options.body===void 0?void 0:JSON.stringify(options.body),redirect:"manual",signal:AbortSignal.timeout(3e4)})}catch{throw new LocalSchedulesError(`Could not reach local Schedules at ${session.origin}. No cloud request was made.`)}if(response.status>=300&&response.status<400||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session changed or returned an unexpected response. Restart vercel dev and try again.");if(!response.ok)throw await responseError(response);if(response.status===204)return;try{return await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned an invalid JSON response.")}}url.searchParams.set("projectId",this.options.projectId),this.options.environment!==void 0&&url.searchParams.set("env",this.options.environment),this.options.gitBranch!==void 0&&url.searchParams.set("branch",this.options.gitBranch),this.options.user!==void 0&&url.searchParams.set("user",this.options.user);let headers=new globalThis.Headers(options.headers);return headers.set(SCHEDULES_REQUEST_SOURCE_HEADER,"cli"),this.client.fetch(url.href,{...options,headers,accountId:this.options.ownerId,useCurrentTeam:!1})}schedulePath(name,namespace,suffix=""){return`${`/v1/schedules/${encodeURIComponent(name)}${suffix}`}?${new URLSearchParams({namespace})}`}async create({target,...params}){let schedule=await this.request("/v1/schedules",{method:"POST",bailOn429:!0,body:{...params,target:{type:"queue",topic:target.topic}}});return sanitizeSchedule(schedule)}async get({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){let schedule=await this.request(this.schedulePath(name,namespace),{bailOn429:!0});return sanitizeSchedule(schedule)}async list({namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT}={}){let searchParams=new URLSearchParams({namespace,limit:String(limit)});cursor!==void 0&&searchParams.set("cursor",cursor);let response=await this.request(`/v1/schedules?${searchParams}`,{bailOn429:!0});return{data:response.data.map(sanitizeSchedule),cursor:response.cursor}}async update({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,target,...params}){let schedule=await this.request(this.schedulePath(name,namespace),{method:"PATCH",bailOn429:!0,body:{...params,...target?{target:{type:"queue",topic:target.topic}}:{}}});return sanitizeSchedule(schedule)}async delete({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.request(this.schedulePath(name,namespace),{method:"DELETE",bailOn429:!0})}async enable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,activeUntil}){return this.changeState(name,namespace,"enable",activeUntil===void 0?void 0:{until:activeUntil})}async disable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.changeState(name,namespace,"disable")}async changeState(name,namespace,action,body){let schedule=await this.request(this.schedulePath(name,namespace,`/${action}`),{method:"POST",bailOn429:!0,...body&&{body}});return sanitizeSchedule(schedule)}async invoke({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){await this.request(this.schedulePath(name,namespace,"/invoke"),{method:"POST",bailOn429:!0,retry:{retries:0}})}async listExecutions({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT,sort,from,to,executionId}){if("local"in this.options)throw new LocalSchedulesError("Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.");let searchParams=new URLSearchParams({limit:String(limit)});return cursor!==void 0&&searchParams.set("cursor",cursor),sort!==void 0&&searchParams.set("sort",sort),from!==void 0&&searchParams.set("from",String(from)),to!==void 0&&searchParams.set("to",String(to)),executionId!==void 0&&searchParams.set("executionId",executionId),this.request(`${this.schedulePath(name,namespace,"/executions")}&${searchParams}`,{bailOn429:!0})}};async function createLocalSchedulesClient(client){let sessions=await readLocalSchedulesSessions(client.cwd);if(sessions.length===0)throw new LocalSchedulesError("No running local Schedules session was found in this directory. Start vercel dev here, or use --cwd to select its project directory.");if(sessions.length>1)throw new LocalSchedulesError("Multiple vercel dev sessions are running in this directory. Stop the extra instances before using schedules --local.");let[session]=sessions,response;try{response=await directFetch(`${session.origin}/v1/info`,{headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id,[SCHEDULES_REQUEST_SOURCE_HEADER]:"cli"},redirect:"manual",signal:AbortSignal.timeout(2e3)})}catch{throw new LocalSchedulesError(`The local Schedules session at ${session.origin} is unavailable. Restart vercel dev in this directory. No cloud request was made.`)}if(!response.ok||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session is stale, not ready, or incompatible. Restart vercel dev in this directory.");let info;try{info=await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned invalid metadata. Restart vercel dev in this directory.")}if(!info||info.version!==session.version||info.id!==session.id||info.pid!==session.pid||info.cwd!==session.cwd||info.origin!==session.origin||info.projectId!==session.projectId)throw new LocalSchedulesError("The local Schedules session does not match this project instance. Restart vercel dev in this directory.");return new SchedulesClient(client,{local:session})}var import_ms7=__toESM(require_ms(),1),MAX_IDENTIFIER_LENGTH=256,IDENTIFIER_PATTERN=/^[0-9A-Za-z][0-9A-Za-z._-]*$/,MAX_QUEUE_TOPIC_LENGTH=256,QUEUE_TOPIC_PATTERN=/^[A-Za-z0-9_-]+$/,MAX_JITTER_MINUTES=15,LOCAL_MINUTE_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/,LOCAL_SECOND_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/,TIMEZONE_PATTERN=/^[A-Za-z][A-Za-z0-9_+/-]*$/;function validateScheduleIdentifier(value,label){if(value.length>MAX_IDENTIFIER_LENGTH)return`${label} must be at most ${MAX_IDENTIFIER_LENGTH} characters.`;if(!IDENTIFIER_PATTERN.test(value))return`${label} must start with a letter or number and can contain only letters, numbers, periods, underscores, and hyphens.`}function validateScheduleTimezone(value){if(value!==void 0){if(value.length===0||value.length>50||!TIMEZONE_PATTERN.test(value))return"`--timezone` must be a valid IANA timezone.";try{new Intl.DateTimeFormat("en-US",{timeZone:value})}catch{return"`--timezone` must be a valid IANA timezone."}}}function validateScheduleQueueTopic(value){if(value.length>MAX_QUEUE_TOPIC_LENGTH||!QUEUE_TOPIC_PATTERN.test(value))return"`--topic` must be 1\u2013256 characters and contain only letters, numbers, underscores, and hyphens."}function normalizeLocalDatetime(value){let secondMatch=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(secondMatch){if(secondMatch[6]!=="00")return}else LOCAL_MINUTE_DATETIME_PATTERN.test(value)&&(value=`${value}:00`);let match=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(!match)return;let[,yearValue,monthValue,dayValue,hourValue,minuteValue]=match,year=Number(yearValue),month=Number(monthValue),day=Number(dayValue),hour=Number(hourValue),minute=Number(minuteValue),daysInMonth=[31,year%4===0&&(year%100!==0||year%400===0)?29:28,31,30,31,30,31,31,30,31,30,31];if(!(month<1||month>12||day<1||day>daysInMonth[month-1]||hour<0||hour>23||minute<0||minute>59))return value}function parseScheduleExpression(cron,at,required){if(cron!==void 0&&at!==void 0)return{valid:!1,error:"Use either `--cron` or `--at`, not both."};if(cron!==void 0)return cron.trim()?{valid:!0,value:{type:"cron",cron}}:{valid:!1,error:"`--cron` cannot be empty."};if(at!==void 0){let normalized=normalizeLocalDatetime(at);return normalized===void 0?{valid:!1,error:"`--at` must use YYYY-MM-DDTHH:mm or YYYY-MM-DDTHH:mm:00 without a timezone suffix. Use `--timezone` to select the timezone."}:{valid:!0,value:{type:"single",at:normalized}}}return required?{valid:!1,error:"A schedule expression is required. Use `--cron` or `--at`."}:{valid:!0,value:void 0}}function validateJitter(value){return!Number.isInteger(value)||value<1||value>MAX_JITTER_MINUTES?{valid:!1,error:"`--jitter` must be an integer between 1 and 15."}:{valid:!0,value}}function parseCreateJitter(value){return value===void 0?{valid:!0,value:void 0}:validateJitter(value)}function parseUpdateJitter(value){return value===void 0?{valid:!0,value:void 0}:value==="none"?{valid:!0,value:null}:validateJitter(Number(value))}function parseSchedulePayload(value){if(value===void 0)return{valid:!0,value:void 0};try{return{valid:!0,value:JSON.parse(value)}}catch{return{valid:!1,error:"`--payload` must be valid JSON."}}}var UNIX_MILLISECONDS_PATTERN=/^\d+$/,ISO_DATE_PATTERN=/^(\d{4})-(\d{2})-(\d{2})/,DURATION_PATTERN=/^\d+(?:\.\d+)?\s*[a-z]+$/i;function parseEnableUntil(until,duration,now=Date.now()){if(until!==void 0&&duration!==void 0)return{valid:!1,error:"`--until` and `--for` cannot be used together."};if(duration!==void 0){let durationMs=DURATION_PATTERN.test(duration.trim())?(0,import_ms7.default)(duration.trim()):void 0;return durationMs===void 0||!(durationMs>0)?{valid:!1,error:"`--for` must be a duration such as 30m, 5h, or 10s."}:{valid:!0,value:now+durationMs}}if(until===void 0)return{valid:!0,value:void 0};let untilMs,isoDate=ISO_DATE_PATTERN.exec(until);if(UNIX_MILLISECONDS_PATTERN.test(until))untilMs=Number(until);else if(isoDate){let[,year,month,day]=isoDate.map(Number),daysInMonth=new Date(Date.UTC(year,month,0)).getUTCDate();untilMs=day>=1&&day<=daysInMonth?Date.parse(until):NaN}else return{valid:!1,error:DURATION_PATTERN.test(until.trim())?`\`--until\` must be a time, not a duration. Use \`--for ${until.trim()}\` instead.`:"`--until` must be an ISO 8601 time or Unix milliseconds."};return Number.isFinite(untilMs)?untilMs<=now?{valid:!1,error:"`--until` must be in the future."}:{valid:!0,value:untilMs}:{valid:!1,error:"`--until` must be an ISO 8601 time or Unix milliseconds."}}var routingFlags2=getFlagsSpecification([...schedulesCommand.subcommands.flatMap(command2=>[...command2.options]),...executionsListSubcommand.options]);function takeScheduleCommand(argv){return takeCommand(argv,routingFlags2)}function scheduleCommandWithGlobalFlags(client,usage){let local=!1;try{local=!!parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags["--local"]}catch{}return buildCommandWithGlobalFlags(client.argv,`${usage}${local?" --local":""}`,void 0,{excludeFlags:local?["--scope","--team"]:[]})}function validateLocalScheduleFlags(client,flags,usage){if(flags["--environment"]!==void 0&&flags["--git-branch"]!==void 0)return invalidScheduleArguments(client,usage,"Use either --environment or --git-branch, not both.");if(flags["--environment"]!==void 0&&flags["--user"]!==void 0)return invalidScheduleArguments(client,usage,"Use either --environment or --user, not both.");if(!flags["--local"])return;for(let flag of["--environment","--git-branch","--user"])if(flags[flag]!==void 0)return invalidScheduleArguments(client,usage,`Cannot combine --local with ${flag}. Local Schedules uses the current vercel dev session.`);let originalFlags;try{originalFlags=parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags}catch(error){return invalidScheduleArguments(client,usage,error instanceof Error?error.message:String(error))}for(let flag of["--scope","--team","--token"])if(flags[flag]!==void 0||originalFlags[flag]!==void 0)return invalidScheduleArguments(client,usage,`Cannot combine --local with ${flag}. Local Schedules uses the current vercel dev session.`)}function unsupportedLocalExecutions(client){let message="Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.";return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}async function resolveSchedulesClient(client,flags){if(flags["--local"])try{let schedules=await createLocalSchedulesClient(client);return output_manager_default.log(`Using local Schedules at ${schedules.localOrigin}`),schedules}catch(error){let message=error instanceof Error?error.message:String(error);return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}let link=await requireProjectContext(client,"schedules");return typeof link=="number"?link:new SchedulesClient(client,{ownerId:link.org.id,projectId:link.project.id,environment:flags["--environment"]==="production"?void 0:flags["--environment"],gitBranch:flags["--git-branch"],user:flags["--user"]})}function scheduleTrackArgs(flags){let args=[];return flags["--environment"]!==void 0&&flags["--environment"]!=="production"&&args.push(`--environment ${quoteArg(flags["--environment"])}`),flags["--git-branch"]!==void 0&&args.push(`--git-branch ${quoteArg(flags["--git-branch"])}`),flags["--user"]!==void 0&&args.push(`--user ${quoteArg(flags["--user"])}`),args}function invalidScheduleArguments(client,usage,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,usage),when:"Provide valid schedule arguments"}]}),2):(output_manager_default.fatal(message),2)}function validateScheduleNameAndNamespace(client,args,namespaceFlag,usage){let[name]=args;if(!name)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,"A schedule name is required")};if(args.length!==1)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,`Expected one schedule name. Usage: ${getCommandName(usage)}`)};let namespace=namespaceFlag??DEFAULT_SCHEDULE_NAMESPACE,nameError=validateScheduleIdentifier(name,"Schedule name"),namespaceError=validateScheduleIdentifier(namespace,"Namespace"),error=nameError??namespaceError;return error?{valid:!1,exitCode:invalidScheduleArguments(client,usage,error)}:{valid:!0,name,namespace}}function parseScheduleOutput(client,usage,flags){let result=validateJsonOutput(flags);return result.valid?{valid:!0,json:result.jsonOutput||client.nonInteractive}:{valid:!1,exitCode:invalidScheduleArguments(client,usage,result.error)}}function writeScheduleMutationResult(client,schedule,message,json){if(json){let value=client.nonInteractive?{status:AGENT_STATUS.OK,schedule,message}:schedule;client.stdout.write(`${JSON.stringify(value,null,2)}
|
|
250
|
+
`),await offerAutoPromote(client,projectId,version,!!existingStagingVersion,{teamId,skipPrompts}),0}catch(e){let error=e;return client.nonInteractive&&outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.ROUTE_CREATE_FAILED,message:"Route creation failed for this project. See hint for next steps.",hint:error.message||"Use `vercel routes list --diff` to inspect staged routes, then adjust options and retry.",next:[{command:withGlobalFlags2(client,"routes list --diff"),when:"to inspect staged state"}]},1),output_manager_default.error(error.message||"Failed to create route"),1}}var COMMAND_CONFIG5={list:getCommandAliases(listSubcommand5),"list-versions":getCommandAliases(listVersionsSubcommand2),inspect:getCommandAliases(inspectSubcommand4),add:getCommandAliases(addSubcommand3),update:getCommandAliases(editSubcommand),remove:getCommandAliases(deleteSubcommand2),enable:getCommandAliases(enableSubcommand),disable:getCommandAliases(disableSubcommand),move:getCommandAliases(reorderSubcommand),export:getCommandAliases(exportSubcommand),publish:getCommandAliases(publishSubcommand),restore:getCommandAliases(restoreSubcommand2),"discard-staging":getCommandAliases(discardSubcommand)};async function main4(client){let telemetry=new RoutesTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs,flagsSpecification=getFlagsSpecification(routesCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(err){return printError(err),2}let subArgs=parsedArgs.args.slice(1),{subcommand,args,subcommandOriginal}=getSubcommand2(subArgs,COMMAND_CONFIG5),needHelp=parsedArgs.flags["--help"];if(!subcommand&&needHelp)return telemetry.trackCliFlagHelp("routes"),output_manager_default.print(help(routesCommand,{stream:client.stderr,columns:client.stderr.columns})),0;function printHelp(command2){output_manager_default.print(help(command2,{stream:client.stderr,parent:routesCommand,columns:client.stderr.columns}))}switch(subcommand&&!needHelp&&telemetry.trackCliOptionProject(getProjectOptionFromArgs(args)),subcommand){case"list":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listSubcommand5),0):(telemetry.trackCliSubcommandList(subcommandOriginal),list3(client,args));case"list-versions":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(listVersionsSubcommand2),0):(telemetry.trackCliSubcommandListVersions(subcommandOriginal),subcommandOriginal==="ls-versions"&&warnDeprecatedSubcommand(client,"routes ls-versions","routes list-versions"),listVersions2(client,args));case"inspect":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(inspectSubcommand4),0):(telemetry.trackCliSubcommandInspect(subcommandOriginal),inspect3(client,args));case"add":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(addSubcommand3),0):(telemetry.trackCliSubcommandAdd(subcommandOriginal),add3(client,args));case"update":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(editSubcommand),0):(telemetry.trackCliSubcommandUpdate(subcommandOriginal),subcommandOriginal==="edit"&&warnDeprecatedSubcommand(client,"routes edit","routes update"),(await import("./chunks/edit-QEDNQ33T.js")).default(client,args));case"remove":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(deleteSubcommand2),0):(telemetry.trackCliSubcommandRemove(subcommandOriginal),subcommandOriginal==="delete"&&warnDeprecatedSubcommand(client,"routes delete","routes remove"),(await import("./chunks/delete-WIGSOZR3.js")).default(client,args));case"enable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(enableSubcommand),0):(telemetry.trackCliSubcommandEnable(subcommandOriginal),(await import("./chunks/enable-TGQZWSBG.js")).default(client,args));case"disable":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(disableSubcommand),0):(telemetry.trackCliSubcommandDisable(subcommandOriginal),(await import("./chunks/disable-L54VGY5A.js")).default(client,args));case"move":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(reorderSubcommand),0):(telemetry.trackCliSubcommandMove(subcommandOriginal),subcommandOriginal==="reorder"&&warnDeprecatedSubcommand(client,"routes reorder","routes move"),(await import("./chunks/reorder-W3MXHSGZ.js")).default(client,args));case"export":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(exportSubcommand),0):(telemetry.trackCliSubcommandExport(subcommandOriginal),(await import("./chunks/export-YYQ2J5AT.js")).default(client,args));case"publish":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(publishSubcommand),0):(telemetry.trackCliSubcommandPublish(subcommandOriginal),(await import("./chunks/publish-R5IV2BH2.js")).default(client,args));case"restore":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(restoreSubcommand2),0):(telemetry.trackCliSubcommandRestore(subcommandOriginal),(await import("./chunks/restore-I7L3EOS4.js")).default(client,args));case"discard-staging":return needHelp?(telemetry.trackCliFlagHelp("routes",subcommandOriginal),printHelp(discardSubcommand),0):(telemetry.trackCliSubcommandDiscardStaging(subcommandOriginal),(await import("./chunks/discard-Q5UPTZR2.js")).default(client,args));default:return output_manager_default.error(getInvalidSubcommand(COMMAND_CONFIG5)),output_manager_default.print(help(routesCommand,{stream:client.stderr,columns:client.stderr.columns})),2}}var SchedulesTelemetryClient=class extends TelemetryClient{trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliSubcommandInspect(actual){this.trackCliSubcommand({subcommand:"inspect",value:actual})}trackCliSubcommandList(actual){this.trackCliSubcommand({subcommand:"list",value:actual})}trackCliSubcommandCreate(actual){this.trackCliSubcommand({subcommand:"create",value:actual})}trackCliSubcommandUpdate(actual){this.trackCliSubcommand({subcommand:"update",value:actual})}trackCliSubcommandEnable(actual){this.trackCliSubcommand({subcommand:"enable",value:actual})}trackCliSubcommandDisable(actual){this.trackCliSubcommand({subcommand:"disable",value:actual})}trackCliSubcommandInvoke(actual){this.trackCliSubcommand({subcommand:"invoke",value:actual})}trackCliSubcommandDelete(actual){this.trackCliSubcommand({subcommand:"delete",value:actual})}trackCliSubcommandExecutions(actual){this.trackCliSubcommand({subcommand:"executions",value:actual})}trackCliSubcommandExecutionsList(actual){this.trackCliSubcommand({subcommand:"executions:list",value:actual})}};var import_ms8=__toESM(require_ms(),1);var SchedulesActionTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionUser(user){user&&this.trackCliOption({option:"user",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionFor(duration){duration&&this.trackCliOption({option:"for",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};function asSentence(value){let trimmed=value.trim();return/[.!?]$/.test(trimmed)?trimmed:`${trimmed}.`}function apiErrorDetail(error){let message=error.serverMessage?.trim();return message&&message!=="Response Error"?asSentence(message):void 0}function requestDescription(context){return context.action==="list"?`list schedules in namespace ${context.namespace}`:context.action==="list-executions"?`list executions for schedule ${context.namespace}/${context.name}`:`${context.action} schedule ${context.namespace}/${context.name}`}function ambiguousInvokeError(local){return{reason:AGENT_REASON.API_ERROR,message:"The schedule invocation may have been accepted, but the CLI did not receive confirmation. Check whether the schedule ran before invoking it again."+(local?` Inspect the ${getCommandName("dev")} output for local executions.`:""),retryable:!1,userActionRequired:!0}}function getSchedulesError(client,error,context){if(!isAPIError(error))return context.action==="invoke"?ambiguousInvokeError(context.local):context.local?{reason:AGENT_REASON.API_ERROR,message:`${error instanceof Error?asSentence(error.message):"Failed to connect to local Schedules."} Check the local session and restart ${getCommandName("dev")} in this project if needed.`,retryable:!1,userActionRequired:!0}:{reason:AGENT_REASON.API_ERROR,message:"Failed to connect to the Schedules API. Check your connection and try again.",retryable:!0};let serverMessage=error.serverMessage?.trim().toLowerCase();if(context.local&&context.action==="invoke"&&error.status>=500)return ambiguousInvokeError(!0);if(context.local&&(error.status===401||error.status===402||error.status===403||/(?:project|session)_(?:mismatch|not_found|expired)/.test(error.code??"")||/^(?:local )?(?:project|session)\b/.test(serverMessage??"")))return{reason:AGENT_REASON.API_ERROR,message:`${apiErrorDetail(error)??"The local Schedules session is unavailable."} Restart ${getCommandName("dev")} in this project and use its local session.`,retryable:!1,userActionRequired:!0};if(error.code==="schedule_already_exists")return{reason:AGENT_REASON.SCHEDULE_ALREADY_EXISTS,message:context.name?`Schedule ${context.namespace}/${context.name} already exists. Choose a different name or update the existing schedule.`:"The schedule already exists. Choose a different name or update the existing schedule.",retryable:!1};if(error.code==="schedule_single_at_passed")return{reason:AGENT_REASON.SCHEDULE_SINGLE_AT_PASSED,message:context.name?`Schedule ${context.namespace}/${context.name} has passed its scheduled time and can't be modified. Delete it or create a new schedule.`:"The schedule has passed its scheduled time and can't be modified. Delete it or create a new schedule.",retryable:!1};if(error.code==="schedule_already_active"){let schedule=context.name?[quoteArg(context.name),`--namespace ${quoteArg(context.namespace)}`,...context.trackArgs??[]].join(" "):void 0;return{reason:AGENT_REASON.SCHEDULE_ALREADY_ACTIVE,message:context.name?`Schedule ${context.namespace}/${context.name} is already enabled without an end time. Disable it first, then enable it with --until or --for.`:"The schedule is already enabled without an end time. Disable it first, then enable it with --until or --for.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes","--until","--for"]}),when:"Disable the schedule before enabling it with an end time"}]}}}if(error.code==="static_schedule"){let schedule=context.name?[quoteArg(context.name),`--namespace ${quoteArg(context.namespace)}`,...context.trackArgs??[]].join(" "):void 0;return{reason:AGENT_REASON.STATIC_SCHEDULE,message:context.name?`Static schedule ${context.namespace}/${context.name} can't be updated or deleted. Enable or disable it instead.`:"Static schedules can't be updated or deleted. Enable or disable them instead.",retryable:!1,...schedule&&{next:[{command:buildCommandWithGlobalFlags(client.argv,`schedules enable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Enable the static schedule"},{command:buildCommandWithGlobalFlags(client.argv,`schedules disable ${schedule}`,void 0,{excludeFlags:["--yes"]}),when:"Disable the static schedule"}]}}}if(error.code==="invalid_cron_expression")return{reason:AGENT_REASON.INVALID_CRON_EXPRESSION,message:`${apiErrorDetail(error)??"The cron expression is invalid."} Check \`--cron\` and try again.`,retryable:!1};if(error.code==="invalid_jitter")return{reason:AGENT_REASON.INVALID_JITTER,message:apiErrorDetail(error)??"The schedule jitter setting is invalid.",retryable:!1};if(error.code==="jitter_exceeds_cadence")return{reason:AGENT_REASON.JITTER_EXCEEDS_CADENCE,message:`${apiErrorDetail(error)??"The schedule jitter exceeds the interval between runs."} Increase the interval between runs.`,retryable:!1};if(error.code==="single_at_too_soon")return{reason:AGENT_REASON.SINGLE_AT_TOO_SOON,message:`${apiErrorDetail(error)??"The one-time schedule is too soon."} Choose a later value for \`--at\`.`,retryable:!1};if(error.code==="payload_too_large")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_TOO_LARGE,message:`${apiErrorDetail(error)??"The schedule payload is too large."} Reduce the value passed to \`--payload\` and try again.`,retryable:!1};if(error.code==="payload_store_failed")return{reason:AGENT_REASON.SCHEDULE_PAYLOAD_STORE_FAILED,message:"Failed to store the schedule payload. Try again later.",retryable:!0};if(error.code==="service_unavailable")return{reason:AGENT_REASON.SCHEDULE_SERVICE_UNAVAILABLE,message:"Schedule execution history is temporarily unavailable. Try again later.",retryable:!0};if(error.code==="service_error")return{reason:AGENT_REASON.SCHEDULE_SERVICE_ERROR,message:error.status>=500?"Failed to load schedule execution history. Try again later.":"Failed to load schedule execution history. Choose a shorter time range and try again.",retryable:error.status>=500};if(error.status===400){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.INVALID_ARGUMENTS,message:`The Schedules API rejected the request.${detail2?` ${detail2}`:""}`,retryable:!1}}if(error.status===401&&error.code==="missing_team_param")return{reason:AGENT_REASON.MISSING_SCOPE,message:"Schedules requires a team project. Run `vercel link` to link a project owned by a team.",retryable:!1,userActionRequired:!0};if(error.status===401){let tokenSource=client.authConfig.tokenSource;return{reason:AGENT_REASON.LOGIN_REQUIRED,message:tokenSource==="env"?"Schedules API authentication failed. Replace VERCEL_TOKEN, or unset it to use your saved login.":tokenSource==="flag"?"Schedules API authentication failed. Replace the token passed to `--token`.":`Schedules API authentication failed. Run ${getCommandName("login")} and try again.`,retryable:!1,userActionRequired:!0}}if(error.status===402){let detail2=apiErrorDetail(error);return{reason:AGENT_REASON.PLAN_UPGRADE_REQUIRED,message:`Schedules isn't available for this team.${detail2?` ${detail2}`:""} Ask a team owner to review the requirement.`,retryable:!1,userActionRequired:!0}}if(error.status===403&&error.code==="not_enabled"||!context.local&&error.status===404&&(serverMessage==="not found"||serverMessage==="not found."))return{reason:AGENT_REASON.SCHEDULES_NOT_ENABLED,message:"Vercel Schedules is not enabled for this team.",retryable:!1,userActionRequired:!0};if(error.status===403)return{reason:AGENT_REASON.PERMISSION_DENIED,message:"Can't access Schedules with the current credentials and team. Check the token and selected team. If both are correct, ask a team owner for access.",retryable:!1,userActionRequired:!0};if(error.status===404&&(serverMessage==="project not found"||serverMessage==="project not found."))return{reason:AGENT_REASON.PROJECT_NOT_FOUND,message:"The linked project isn't available to this team. Run `vercel link` to update the project link.",retryable:!1,userActionRequired:!0};if(error.status===404&&context.action!=="create"&&context.action!=="list"&&context.name)return{reason:AGENT_REASON.NOT_FOUND,message:`Schedule not found: ${context.namespace}/${context.name}.`,retryable:!1};if(error.status===429){let retryAfterMs=typeof error.retryAfterMs=="number"&&error.retryAfterMs>0?error.retryAfterMs:void 0;return{reason:AGENT_REASON.RATE_LIMITED,message:retryAfterMs===void 0?"The Schedules API request limit was reached. Wait and try again.":`The Schedules API request limit was reached. Try again in ${Math.ceil(retryAfterMs/1e3)} second${retryAfterMs>1e3?"s":""}.`,retryable:!0,...retryAfterMs&&{retryAfterMs}}}if(error.status>=500)return context.action==="invoke"?ambiguousInvokeError(context.local):{reason:AGENT_REASON.API_ERROR,message:context.local?`Local Schedules is unavailable. Check the ${getCommandName("dev")} output and restart the local session if needed.`:"The Schedules API is temporarily unavailable. Try again later.",retryable:!0};let detail=apiErrorDetail(error);return{reason:AGENT_REASON.API_ERROR,message:`Failed to ${requestDescription(context)}.${detail?` ${detail}`:""}`,retryable:!1}}function handleSchedulesApiError(client,error,context){let details=getSchedulesError(client,error,context);return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,...details},1),1):(output_manager_default.fatal(details.message),1)}var DEFAULT_SCHEDULES_BASE_URL="https://vercel-schedules.com",DEFAULT_SCHEDULE_NAMESPACE="default",DEFAULT_SCHEDULES_LIMIT=20,SCHEDULES_REQUEST_SOURCE_HEADER="x-vss-client",LocalSchedulesError=class extends Error{constructor(message){super(message),this.name="LocalSchedulesError"}};function sanitizeSchedule(schedule){let{trackId:_trackId,...publicSchedule}=schedule;return publicSchedule}var SchedulesClient=class{constructor(client,options){this.client=client;this.options=options;if("local"in options){if(!isLocalSchedulesOrigin(options.local.origin))throw new LocalSchedulesError("Local Schedules requires an HTTP 127.0.0.1 endpoint with a valid port.");this.baseUrl=new URL(options.local.origin);return}this.baseUrl=new URL(options.baseUrl??process.env.VERCEL_SCHEDULE_BASE_URL??DEFAULT_SCHEDULES_BASE_URL)}get localOrigin(){return"local"in this.options?this.baseUrl.origin:void 0}async request(path,options={}){let url=new URL(path,this.baseUrl);if("local"in this.options){let session=this.options.local;url.searchParams.set("projectId",session.projectId);let response;try{response=await directFetch(url.href,{method:options.method??"GET",headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id,[SCHEDULES_REQUEST_SOURCE_HEADER]:"cli",...options.body===void 0?{}:{"content-type":"application/json"}},body:options.body===void 0?void 0:JSON.stringify(options.body),redirect:"manual",signal:AbortSignal.timeout(3e4)})}catch{throw new LocalSchedulesError(`Could not reach local Schedules at ${session.origin}. No cloud request was made.`)}if(response.status>=300&&response.status<400||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session changed or returned an unexpected response. Restart vercel dev and try again.");if(!response.ok)throw await responseError(response);if(response.status===204)return;try{return await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned an invalid JSON response.")}}url.searchParams.set("projectId",this.options.projectId),this.options.environment!==void 0&&url.searchParams.set("env",this.options.environment),this.options.gitBranch!==void 0&&url.searchParams.set("branch",this.options.gitBranch),this.options.user!==void 0&&url.searchParams.set("user",this.options.user);let headers=new globalThis.Headers(options.headers);return headers.set(SCHEDULES_REQUEST_SOURCE_HEADER,"cli"),this.client.fetch(url.href,{...options,headers,accountId:this.options.ownerId,useCurrentTeam:!1})}schedulePath(name,namespace,suffix=""){return`${`/v1/schedules/${encodeURIComponent(name)}${suffix}`}?${new URLSearchParams({namespace})}`}async create({target,...params}){let schedule=await this.request("/v1/schedules",{method:"POST",bailOn429:!0,body:{...params,target:{type:"queue",topic:target.topic}}});return sanitizeSchedule(schedule)}async get({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){let schedule=await this.request(this.schedulePath(name,namespace),{bailOn429:!0});return sanitizeSchedule(schedule)}async list({namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT}={}){let searchParams=new URLSearchParams({namespace,limit:String(limit)});cursor!==void 0&&searchParams.set("cursor",cursor);let response=await this.request(`/v1/schedules?${searchParams}`,{bailOn429:!0});return{data:response.data.map(sanitizeSchedule),cursor:response.cursor}}async update({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,target,...params}){let schedule=await this.request(this.schedulePath(name,namespace),{method:"PATCH",bailOn429:!0,body:{...params,...target?{target:{type:"queue",topic:target.topic}}:{}}});return sanitizeSchedule(schedule)}async delete({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.request(this.schedulePath(name,namespace),{method:"DELETE",bailOn429:!0})}async enable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,activeUntil}){return this.changeState(name,namespace,"enable",activeUntil===void 0?void 0:{until:activeUntil})}async disable({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){return this.changeState(name,namespace,"disable")}async changeState(name,namespace,action,body){let schedule=await this.request(this.schedulePath(name,namespace,`/${action}`),{method:"POST",bailOn429:!0,...body&&{body}});return sanitizeSchedule(schedule)}async invoke({name,namespace=DEFAULT_SCHEDULE_NAMESPACE}){await this.request(this.schedulePath(name,namespace,"/invoke"),{method:"POST",bailOn429:!0,retry:{retries:0}})}async listExecutions({name,namespace=DEFAULT_SCHEDULE_NAMESPACE,cursor,limit=DEFAULT_SCHEDULES_LIMIT,sort,from,to,executionId}){if("local"in this.options)throw new LocalSchedulesError("Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.");let searchParams=new URLSearchParams({limit:String(limit)});return cursor!==void 0&&searchParams.set("cursor",cursor),sort!==void 0&&searchParams.set("sort",sort),from!==void 0&&searchParams.set("from",String(from)),to!==void 0&&searchParams.set("to",String(to)),executionId!==void 0&&searchParams.set("executionId",executionId),this.request(`${this.schedulePath(name,namespace,"/executions")}&${searchParams}`,{bailOn429:!0})}};async function createLocalSchedulesClient(client){let sessions=await readLocalSchedulesSessions(client.cwd);if(sessions.length===0)throw new LocalSchedulesError("No running local Schedules session was found in this directory. Start vercel dev here, or use --cwd to select its project directory.");if(sessions.length>1)throw new LocalSchedulesError("Multiple vercel dev sessions are running in this directory. Stop the extra instances before using schedules --local.");let[session]=sessions,response;try{response=await directFetch(`${session.origin}/v1/info`,{headers:{authorization:`Bearer ${DEV_RESOURCE_TOKEN}`,[LOCAL_SCHEDULES_SESSION_HEADER]:session.id,[SCHEDULES_REQUEST_SOURCE_HEADER]:"cli"},redirect:"manual",signal:AbortSignal.timeout(2e3)})}catch{throw new LocalSchedulesError(`The local Schedules session at ${session.origin} is unavailable. Restart vercel dev in this directory. No cloud request was made.`)}if(!response.ok||response.headers.get(LOCAL_SCHEDULES_SESSION_HEADER)!==session.id)throw await response.body?.cancel(),new LocalSchedulesError("The local Schedules session is stale, not ready, or incompatible. Restart vercel dev in this directory.");let info;try{info=await response.json()}catch{throw new LocalSchedulesError("The local Schedules session returned invalid metadata. Restart vercel dev in this directory.")}if(!info||info.version!==session.version||info.id!==session.id||info.pid!==session.pid||info.cwd!==session.cwd||info.origin!==session.origin||info.projectId!==session.projectId)throw new LocalSchedulesError("The local Schedules session does not match this project instance. Restart vercel dev in this directory.");return new SchedulesClient(client,{local:session})}var import_ms7=__toESM(require_ms(),1),MAX_IDENTIFIER_LENGTH=256,IDENTIFIER_PATTERN=/^[0-9A-Za-z][0-9A-Za-z._-]*$/,MAX_QUEUE_TOPIC_LENGTH=256,QUEUE_TOPIC_PATTERN=/^[A-Za-z0-9_-]+$/,MAX_JITTER_MINUTES=15,LOCAL_MINUTE_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/,LOCAL_SECOND_DATETIME_PATTERN=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/,TIMEZONE_PATTERN=/^[A-Za-z][A-Za-z0-9_+/-]*$/;function validateScheduleIdentifier(value,label){if(value.length>MAX_IDENTIFIER_LENGTH)return`${label} must be at most ${MAX_IDENTIFIER_LENGTH} characters.`;if(!IDENTIFIER_PATTERN.test(value))return`${label} must start with a letter or number and can contain only letters, numbers, periods, underscores, and hyphens.`}function validateScheduleTimezone(value){if(value!==void 0){if(value.length===0||value.length>50||!TIMEZONE_PATTERN.test(value))return"`--timezone` must be a valid IANA timezone.";try{new Intl.DateTimeFormat("en-US",{timeZone:value})}catch{return"`--timezone` must be a valid IANA timezone."}}}function validateScheduleQueueTopic(value){if(value.length>MAX_QUEUE_TOPIC_LENGTH||!QUEUE_TOPIC_PATTERN.test(value))return"`--topic` must be 1\u2013256 characters and contain only letters, numbers, underscores, and hyphens."}function normalizeLocalDatetime(value){let secondMatch=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(secondMatch){if(secondMatch[6]!=="00")return}else LOCAL_MINUTE_DATETIME_PATTERN.test(value)&&(value=`${value}:00`);let match=LOCAL_SECOND_DATETIME_PATTERN.exec(value);if(!match)return;let[,yearValue,monthValue,dayValue,hourValue,minuteValue]=match,year=Number(yearValue),month=Number(monthValue),day=Number(dayValue),hour=Number(hourValue),minute=Number(minuteValue),daysInMonth=[31,year%4===0&&(year%100!==0||year%400===0)?29:28,31,30,31,30,31,31,30,31,30,31];if(!(month<1||month>12||day<1||day>daysInMonth[month-1]||hour<0||hour>23||minute<0||minute>59))return value}function parseScheduleExpression(cron,at,required){if(cron!==void 0&&at!==void 0)return{valid:!1,error:"Use either `--cron` or `--at`, not both."};if(cron!==void 0)return cron.trim()?{valid:!0,value:{type:"cron",cron}}:{valid:!1,error:"`--cron` cannot be empty."};if(at!==void 0){let normalized=normalizeLocalDatetime(at);return normalized===void 0?{valid:!1,error:"`--at` must use YYYY-MM-DDTHH:mm or YYYY-MM-DDTHH:mm:00 without a timezone suffix. Use `--timezone` to select the timezone."}:{valid:!0,value:{type:"single",at:normalized}}}return required?{valid:!1,error:"A schedule expression is required. Use `--cron` or `--at`."}:{valid:!0,value:void 0}}function validateJitter(value){return!Number.isInteger(value)||value<1||value>MAX_JITTER_MINUTES?{valid:!1,error:"`--jitter` must be an integer between 1 and 15."}:{valid:!0,value}}function parseCreateJitter(value){return value===void 0?{valid:!0,value:void 0}:validateJitter(value)}function parseUpdateJitter(value){return value===void 0?{valid:!0,value:void 0}:value==="none"?{valid:!0,value:null}:validateJitter(Number(value))}function parseSchedulePayload(value){if(value===void 0)return{valid:!0,value:void 0};try{return{valid:!0,value:JSON.parse(value)}}catch{return{valid:!1,error:"`--payload` must be valid JSON."}}}var UNIX_MILLISECONDS_PATTERN=/^\d+$/,ISO_DATE_PATTERN=/^(\d{4})-(\d{2})-(\d{2})/,DURATION_PATTERN=/^\d+(?:\.\d+)?\s*[a-z]+$/i;function parseEnableUntil(until,duration,now=Date.now()){if(until!==void 0&&duration!==void 0)return{valid:!1,error:"`--until` and `--for` cannot be used together."};if(duration!==void 0){let durationMs=DURATION_PATTERN.test(duration.trim())?(0,import_ms7.default)(duration.trim()):void 0;return durationMs===void 0||!(durationMs>0)?{valid:!1,error:"`--for` must be a duration such as 30m, 5h, or 10s."}:{valid:!0,value:now+durationMs}}if(until===void 0)return{valid:!0,value:void 0};let untilMs,isoDate=ISO_DATE_PATTERN.exec(until);if(UNIX_MILLISECONDS_PATTERN.test(until))untilMs=Number(until);else if(isoDate){let[,year,month,day]=isoDate.map(Number),daysInMonth=new Date(Date.UTC(year,month,0)).getUTCDate();untilMs=day>=1&&day<=daysInMonth?Date.parse(until):NaN}else return{valid:!1,error:DURATION_PATTERN.test(until.trim())?`\`--until\` must be a time, not a duration. Use \`--for ${until.trim()}\` instead.`:"`--until` must be an ISO 8601 time or Unix milliseconds."};return Number.isFinite(untilMs)?untilMs<=now?{valid:!1,error:"`--until` must be in the future."}:{valid:!0,value:untilMs}:{valid:!1,error:"`--until` must be an ISO 8601 time or Unix milliseconds."}}var routingFlags2=getFlagsSpecification([...schedulesCommand.subcommands.flatMap(command2=>[...command2.options]),...executionsListSubcommand.options]);function takeScheduleCommand(argv){return takeCommand(argv,routingFlags2)}function scheduleCommandWithGlobalFlags(client,usage){let local=!1;try{local=!!parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags["--local"]}catch{}return buildCommandWithGlobalFlags(client.argv,`${usage}${local?" --local":""}`,void 0,{excludeFlags:local?["--scope","--team"]:[]})}function validateLocalScheduleFlags(client,flags,usage){if(flags["--environment"]!==void 0&&flags["--git-branch"]!==void 0)return invalidScheduleArguments(client,usage,"Use either --environment or --git-branch, not both.");if(flags["--environment"]!==void 0&&flags["--user"]!==void 0)return invalidScheduleArguments(client,usage,"Use either --environment or --user, not both.");if(!flags["--local"])return;for(let flag of["--environment","--git-branch","--user"])if(flags[flag]!==void 0)return invalidScheduleArguments(client,usage,`Cannot combine --local with ${flag}. Local Schedules uses the current vercel dev session.`);let originalFlags;try{originalFlags=parseArguments(client.argv.slice(2),routingFlags2,{permissive:!0}).flags}catch(error){return invalidScheduleArguments(client,usage,error instanceof Error?error.message:String(error))}for(let flag of["--scope","--team","--token"])if(flags[flag]!==void 0||originalFlags[flag]!==void 0)return invalidScheduleArguments(client,usage,`Cannot combine --local with ${flag}. Local Schedules uses the current vercel dev session.`)}function unsupportedLocalExecutions(client){let message="Execution history is not supported for local Schedules. Inspect the vercel dev output for local executions.";return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}async function resolveSchedulesClient(client,flags){if(flags["--local"])try{let schedules=await createLocalSchedulesClient(client);return output_manager_default.log(`Using local Schedules at ${schedules.localOrigin}`),schedules}catch(error){let message=error instanceof Error?error.message:String(error);return client.nonInteractive?outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.API_ERROR,message,retryable:!1}):output_manager_default.fatal(message),1}let link=await requireProjectContext(client,"schedules");return typeof link=="number"?link:new SchedulesClient(client,{ownerId:link.org.id,projectId:link.project.id,environment:flags["--environment"]==="production"?void 0:flags["--environment"],gitBranch:flags["--git-branch"],user:flags["--user"]})}function scheduleTrackArgs(flags){let args=[];return flags["--environment"]!==void 0&&flags["--environment"]!=="production"&&args.push(`--environment ${quoteArg(flags["--environment"])}`),flags["--git-branch"]!==void 0&&args.push(`--git-branch ${quoteArg(flags["--git-branch"])}`),flags["--user"]!==void 0&&args.push(`--user ${quoteArg(flags["--user"])}`),args}function invalidScheduleArguments(client,usage,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:scheduleCommandWithGlobalFlags(client,usage),when:"Provide valid schedule arguments"}]}),2):(output_manager_default.fatal(message),2)}function validateScheduleNameAndNamespace(client,args,namespaceFlag,usage){let[name]=args;if(!name)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,"A schedule name is required")};if(args.length!==1)return{valid:!1,exitCode:invalidScheduleArguments(client,usage,`Expected one schedule name. Usage: ${getCommandName(usage)}`)};let namespace=namespaceFlag??DEFAULT_SCHEDULE_NAMESPACE,nameError=validateScheduleIdentifier(name,"Schedule name"),namespaceError=validateScheduleIdentifier(namespace,"Namespace"),error=nameError??namespaceError;return error?{valid:!1,exitCode:invalidScheduleArguments(client,usage,error)}:{valid:!0,name,namespace}}function parseScheduleOutput(client,usage,flags){let result=validateJsonOutput(flags);return result.valid?{valid:!0,json:result.jsonOutput||client.nonInteractive}:{valid:!1,exitCode:invalidScheduleArguments(client,usage,result.error)}}function writeScheduleMutationResult(client,schedule,message,json){if(json){let value=client.nonInteractive?{status:AGENT_STATUS.OK,schedule,message}:schedule;client.stdout.write(`${JSON.stringify(value,null,2)}
|
|
251
251
|
`)}else output_manager_default.success(message);return 0}async function runScheduleAction(client,argv,action){let subcommand=action==="enable"?enableSubcommand2:action==="disable"?disableSubcommand2:invokeSubcommand,usage=`schedules ${action} <name>`,telemetry=new SchedulesActionTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(subcommand.options))}catch(error){return invalidScheduleArguments(client,usage,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs,enableFlags=flags;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,usage);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionUser(flags["--user"]),telemetry.trackCliOptionUntil(enableFlags["--until"]),telemetry.trackCliOptionFor(enableFlags["--for"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],usage);if(!identifier.valid)return identifier.exitCode;let outputMode=parseScheduleOutput(client,usage,flags);if(!outputMode.valid)return outputMode.exitCode;let activeUntil=parseEnableUntil(enableFlags["--until"],enableFlags["--for"]);if(!activeUntil.valid)return invalidScheduleArguments(client,usage,activeUntil.error);let schedulesClient=await resolveSchedulesClient(client,flags);if(typeof schedulesClient=="number")return schedulesClient;let presentParticiple=action==="enable"?"Enabling":action==="disable"?"Disabling":"Invoking";outputMode.json||output_manager_default.spinner(`${presentParticiple} schedule\u2026`);let schedule;try{action==="enable"?schedule=await schedulesClient.enable({...identifier,activeUntil:activeUntil.value}):action==="disable"?schedule=await schedulesClient.disable(identifier):await schedulesClient.invoke(identifier)}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action,local:flags["--local"],name:identifier.name,namespace:identifier.namespace,trackArgs:scheduleTrackArgs(flags)})}output_manager_default.stopSpinner();let pastTense=action==="enable"?"Enabled":action==="disable"?"Disabled":"Invoked",enabledUntil=schedule?.activeUntil??activeUntil.value,message=action==="enable"&&enabledUntil!==void 0?`${pastTense} schedule ${identifier.namespace}/${identifier.name} until ${new Date(enabledUntil).toISOString()} (in ${(0,import_ms8.default)(Math.max(enabledUntil-Date.now(),1e3),{long:!0})}).`:`${pastTense} schedule ${identifier.namespace}/${identifier.name}.`;if(schedule)return writeScheduleMutationResult(client,schedule,message,outputMode.json);if(outputMode.json){let result=client.nonInteractive?{status:AGENT_STATUS.OK,message}:{invoked:!0,name:identifier.name,namespace:identifier.namespace};client.stdout.write(`${JSON.stringify(result,null,2)}
|
|
252
252
|
`)}else output_manager_default.success(message);return 0}var SchedulesCreateTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionUser(user){user&&this.trackCliOption({option:"user",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionCron(cron){cron&&this.trackCliOption({option:"cron",value:this.redactedValue})}trackCliOptionAt(at){at&&this.trackCliOption({option:"at",value:this.redactedValue})}trackCliOptionTimezone(timezone){timezone&&this.trackCliOption({option:"timezone",value:timezone})}trackCliOptionJitter(jitter){jitter!==void 0&&this.trackCliOption({option:"jitter",value:String(jitter)})}trackCliOptionTopic(topic){topic&&this.trackCliOption({option:"topic",value:this.redactedValue})}trackCliOptionPayload(payload){payload!==void 0&&this.trackCliOption({option:"payload",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE14="schedules create <name> --cron <expression> --topic <topic>";async function create(client,argv){let telemetry=new SchedulesCreateTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(createSubcommand2.options))}catch(error){return invalidScheduleArguments(client,USAGE14,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE14);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionUser(flags["--user"]),telemetry.trackCliOptionCron(flags["--cron"]),telemetry.trackCliOptionAt(flags["--at"]),telemetry.trackCliOptionTimezone(flags["--timezone"]),telemetry.trackCliOptionJitter(flags["--jitter"]),telemetry.trackCliOptionTopic(flags["--topic"]),telemetry.trackCliOptionPayload(flags["--payload"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE14);if(!identifier.valid)return identifier.exitCode;let expression=parseScheduleExpression(flags["--cron"],flags["--at"],!0);if(!expression.valid)return invalidScheduleArguments(client,USAGE14,expression.error);let topic=flags["--topic"];if(!topic?.trim())return invalidScheduleArguments(client,USAGE14,"A target queue topic is required. Use `--topic`.");let topicError=validateScheduleQueueTopic(topic);if(topicError)return invalidScheduleArguments(client,USAGE14,topicError);let jitter=parseCreateJitter(flags["--jitter"]);if(!jitter.valid)return invalidScheduleArguments(client,USAGE14,jitter.error);let timezoneError=validateScheduleTimezone(flags["--timezone"]);if(timezoneError)return invalidScheduleArguments(client,USAGE14,timezoneError);let payload=parseSchedulePayload(flags["--payload"]);if(!payload.valid)return invalidScheduleArguments(client,USAGE14,payload.error);let outputMode=parseScheduleOutput(client,USAGE14,flags);if(!outputMode.valid)return outputMode.exitCode;let schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;outputMode.json||output_manager_default.spinner("Creating schedule\u2026");let schedule;try{schedule=await schedules.create({name:identifier.name,namespace:identifier.namespace,expression:expression.value,target:{topic},...flags["--timezone"]!==void 0&&{timezone:flags["--timezone"]},...jitter.value!==void 0&&{jitter:jitter.value},...flags["--payload"]!==void 0&&{payload:payload.value}})}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"create",local:flags["--local"],name:identifier.name,namespace:identifier.namespace,trackArgs:scheduleTrackArgs(flags)})}return output_manager_default.stopSpinner(),writeScheduleMutationResult(client,schedule,`Created schedule ${identifier.namespace}/${identifier.name}.`,outputMode.json)}var SchedulesDeleteTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionUser(user){user&&this.trackCliOption({option:"user",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE15="schedules delete <name> --yes";async function deleteSchedule(client,argv){let telemetry=new SchedulesDeleteTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArgs;try{parsedArgs=parseArguments(argv,getFlagsSpecification(deleteSubcommand3.options))}catch(error){return invalidScheduleArguments(client,USAGE15,error instanceof Error?error.message:String(error))}let{args,flags}=parsedArgs;telemetry.trackCliFlagLocal(flags["--local"]);let conflict=validateLocalScheduleFlags(client,flags,USAGE15);if(conflict!==void 0)return conflict;telemetry.trackCliArgumentName(args[0]),telemetry.trackCliOptionNamespace(flags["--namespace"]),telemetry.trackCliOptionEnvironment(flags["--environment"]),telemetry.trackCliOptionGitBranch(flags["--git-branch"]),telemetry.trackCliOptionUser(flags["--user"]),telemetry.trackCliFlagYes(flags["--yes"]),telemetry.trackCliOptionFormat(flags["--format"]),telemetry.trackCliFlagJson(flags["--json"]);let identifier=validateScheduleNameAndNamespace(client,args,flags["--namespace"],USAGE15);if(!identifier.valid)return identifier.exitCode;let outputMode=parseScheduleOutput(client,USAGE15,flags);if(!outputMode.valid)return outputMode.exitCode;let skipConfirmation=flags["--yes"]??!1;if(client.nonInteractive&&!skipConfirmation)return outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.CONFIRMATION_REQUIRED,message:flags["--local"]?"Deleting a local schedule requires confirmation. Re-run with `--yes`.":"Deleting a schedule requires confirmation. Re-run with `--yes`.",next:[{command:flags["--local"]?scheduleCommandWithGlobalFlags(client,`schedules delete ${quoteArg(identifier.name)} --namespace ${quoteArg(identifier.namespace)} --yes`):buildCommandWithYes(client.argv)}]},1),1;let schedules=await resolveSchedulesClient(client,flags);if(typeof schedules=="number")return schedules;let target=flags["--local"]?"local schedule":"schedule";if(!skipConfirmation&&!await client.input.confirm(`Delete ${target} ${identifier.namespace}/${identifier.name}? This cannot be undone.`,!1))return output_manager_default.log("Canceled"),0;outputMode.json||output_manager_default.spinner("Deleting schedule\u2026");let deletedScheduleId;try{deletedScheduleId=(await schedules.delete(identifier)).scheduleId}catch(error){return output_manager_default.stopSpinner(),handleSchedulesApiError(client,error,{action:"delete",local:flags["--local"],name:identifier.name,namespace:identifier.namespace,trackArgs:scheduleTrackArgs(flags)})}output_manager_default.stopSpinner();let message=`Deleted ${target} ${identifier.namespace}/${identifier.name}.`;if(outputMode.json){let deleted={name:identifier.name,namespace:identifier.namespace,scheduleId:deletedScheduleId},result=client.nonInteractive?{status:AGENT_STATUS.OK,deleted,message}:{deleted:!0,...deleted};client.stdout.write(`${JSON.stringify(result,null,2)}
|
|
253
253
|
`)}else output_manager_default.success(message);return 0}var import_chalk35=__toESM(require_source(),1);var SchedulesListExecutionsTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliOptionEnvironment(environment){environment&&this.trackCliOption({option:"environment",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionUser(user){user&&this.trackCliOption({option:"user",value:this.redactedValue})}trackCliOptionNamespace(namespace){namespace&&this.trackCliOption({option:"namespace",value:this.redactedValue})}trackCliOptionLimit(limit){limit!==void 0&&this.trackCliOption({option:"limit",value:String(limit)})}trackCliOptionNext(next){next&&this.trackCliOption({option:"next",value:this.redactedValue})}trackCliOptionSort(sort){sort&&this.trackCliOption({option:"sort",value:sort})}trackCliOptionSince(since){since&&this.trackCliOption({option:"since",value:this.redactedValue})}trackCliOptionUntil(until){until&&this.trackCliOption({option:"until",value:this.redactedValue})}trackCliOptionFrom(from){from!==void 0&&this.trackCliOption({option:"from",value:String(from)})}trackCliOptionTo(to){to!==void 0&&this.trackCliOption({option:"to",value:String(to)})}trackCliOptionExecution(execution){execution&&this.trackCliOption({option:"execution",value:this.redactedValue})}trackCliOptionExecutionId(executionId){executionId&&this.trackCliOption({option:"execution-id",value:this.redactedValue})}trackCliOptionFormat(format2){format2&&this.trackCliOption({option:"format",value:format2})}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagJson(json){json&&this.trackCliFlag("json")}};var USAGE16="schedules executions list <name>",MAX_EXECUTION_RANGE_MS=30*864e5;function invalidArguments(client,message){return client.nonInteractive?(outputAgentError(client,{status:AGENT_STATUS.ERROR,reason:AGENT_REASON.INVALID_ARGUMENTS,message,next:[{command:buildCommandWithGlobalFlags(client.argv,USAGE16),when:"List schedule executions with valid options"}]}),2):(output_manager_default.fatal(message),2)}function capitalize(value){return`${value.charAt(0).toUpperCase()}${value.slice(1)}`}function formatExecutionStatus(status){return status==="succeeded"?import_chalk35.default.green("Succeeded"):status==="failed"?import_chalk35.default.red("Failed"):import_chalk35.default.gray("Unavailable")}function formatPercentage2(value){return value===null?import_chalk35.default.gray("-"):`${Number((value*100).toFixed(2))}%`}function formatDuration(value){return value===null?import_chalk35.default.gray("-"):value<1e3?`${Math.round(value)}ms`:value<6e4?`${Number((value/1e3).toFixed(1))}s`:`${Number((value/6e4).toFixed(1))}m`}function formatInvocationCount(value){return`${value} invocation${value===1?"":"s"}`}function executionMetrics(metrics){return[formatAlignedLabel("Range",`${formatDate(metrics.from)} \u2013 ${formatDate(metrics.to)}`),formatAlignedLabel("Recorded",formatInvocationCount(metrics.recordedInvocations)),formatAlignedLabel("Failed",formatInvocationCount(metrics.failedInvocations)),formatAlignedLabel("Error Rate",formatPercentage2(metrics.errorRate)),formatAlignedLabel("Avg Duration",formatDuration(metrics.averageDurationMs))].join(`
|
package/dist/help.js
CHANGED
|
@@ -4,4 +4,4 @@ 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{ROOT_HELP_EXAMPLES,help}from"./chunks/chunk-
|
|
7
|
+
import{ROOT_HELP_EXAMPLES,help}from"./chunks/chunk-WKIDCYKL.js";import"./chunks/chunk-OYIDWI5Y.js";import"./chunks/chunk-PUKYAALC.js";import"./chunks/chunk-AMPJ6RWT.js";import"./chunks/chunk-2BKALEOP.js";import"./chunks/chunk-NB2WLB3J.js";import"./chunks/chunk-ISWW3DKF.js";import"./chunks/chunk-BULSRTQE.js";import"./chunks/chunk-BRQUZ5NC.js";import"./chunks/chunk-BZENIQ7N.js";export{ROOT_HELP_EXAMPLES,help};
|