vercel 59.22.0 → 59.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/chunks/{add-4XDHZES6.js → add-JVSHQKWC.js} +1 -1
  2. package/dist/chunks/{add-DTHT6FBK.js → add-UKFIETLE.js} +1 -1
  3. package/dist/chunks/{add-ZQXW2ONT.js → add-Z3CJT63N.js} +1 -1
  4. package/dist/chunks/{build-JORIG5OD.js → build-SMQYQX23.js} +1 -1
  5. package/dist/chunks/{chunk-JOH6CUOG.js → chunk-2HEC5TDU.js} +1 -1
  6. package/dist/chunks/{chunk-NZGOQUNN.js → chunk-2SLHYWMC.js} +1 -1
  7. package/dist/chunks/{chunk-77GUJ4JC.js → chunk-32QBGZ2Z.js} +1 -1
  8. package/dist/chunks/{chunk-3RLCABDN.js → chunk-4YVA7TSY.js} +2 -2
  9. package/dist/chunks/{chunk-T2ECF6MX.js → chunk-5YA32S6K.js} +1 -1
  10. package/dist/chunks/{chunk-UB37A37M.js → chunk-64NJHVA3.js} +3 -3
  11. package/dist/chunks/{chunk-GPX6W4GB.js → chunk-66RYR2GI.js} +1 -1
  12. package/dist/chunks/{chunk-TX4PCSTY.js → chunk-6C7LA5RA.js} +1 -1
  13. package/dist/chunks/{chunk-2U7K4KDF.js → chunk-6SA6SOHU.js} +1 -1
  14. package/dist/chunks/{chunk-CLKTBUI7.js → chunk-73G2MHUX.js} +1 -1
  15. package/dist/chunks/{chunk-2EY7NJ5E.js → chunk-ABSRS5KC.js} +1 -1
  16. package/dist/chunks/{chunk-GQQKAFGS.js → chunk-DL665Q3Z.js} +1 -1
  17. package/dist/chunks/{chunk-PQTP73R4.js → chunk-E4X2DH4K.js} +1 -1
  18. package/dist/chunks/{chunk-CGXXEPYI.js → chunk-EHTHHCNG.js} +1 -0
  19. package/dist/chunks/chunk-FB5TMOLQ.js +7 -0
  20. package/dist/chunks/{chunk-FYSA677K.js → chunk-FZH7RIRX.js} +2 -2
  21. package/dist/chunks/{chunk-7JMXZGXY.js → chunk-GGNZLN4R.js} +1 -1
  22. package/dist/chunks/{chunk-XRHDE2NT.js → chunk-GL2AUBAI.js} +1 -1
  23. package/dist/chunks/{chunk-CKX6OH4B.js → chunk-GR3DLKYP.js} +1 -1
  24. package/dist/chunks/{chunk-B7FOQCPU.js → chunk-HOYHUMBD.js} +1 -1
  25. package/dist/chunks/{chunk-W27LUVFI.js → chunk-JGPECEYY.js} +1 -1
  26. package/dist/chunks/{chunk-PQ7YG2JU.js → chunk-KXYR43H5.js} +1 -1
  27. package/dist/chunks/{chunk-RJOVMJZI.js → chunk-M6A7UH4U.js} +1 -1
  28. package/dist/chunks/{chunk-JXHVB5A7.js → chunk-NYOQMU3P.js} +1 -1
  29. package/dist/chunks/{chunk-JOV4G2LZ.js → chunk-NZKBBY2A.js} +1 -1
  30. package/dist/chunks/{chunk-UXTHEQVJ.js → chunk-OI263FBO.js} +1 -1
  31. package/dist/chunks/chunk-PS645CWM.js +32 -0
  32. package/dist/chunks/{chunk-JWC64GEW.js → chunk-QI3JSWD6.js} +1 -1
  33. package/dist/chunks/{chunk-WBE23KLI.js → chunk-RRQTVE2P.js} +1 -1
  34. package/dist/chunks/{chunk-UDOFIJ7K.js → chunk-SFTXBTMI.js} +1 -1
  35. package/dist/chunks/{chunk-BSOZ3UP2.js → chunk-TJKM3345.js} +1 -1
  36. package/dist/chunks/{chunk-VG2V4NHC.js → chunk-TOGR3HUB.js} +1 -1
  37. package/dist/chunks/{chunk-W65SRO53.js → chunk-UGXNE4YE.js} +1 -1
  38. package/dist/chunks/{chunk-WXT35K53.js → chunk-UUM2N6IG.js} +2 -2
  39. package/dist/chunks/{chunk-I5CXJNW4.js → chunk-UWZ5VIIQ.js} +1 -1
  40. package/dist/chunks/{chunk-NNP5NITU.js → chunk-V6MR45PD.js} +1 -1
  41. package/dist/chunks/{chunk-7XSHE5SA.js → chunk-WDVSYGZS.js} +1 -1
  42. package/dist/chunks/{chunk-Q3OG3SC4.js → chunk-X4X5RB2V.js} +1 -1
  43. package/dist/chunks/{chunk-5LCQGGTH.js → chunk-YGJO25LP.js} +1 -1
  44. package/dist/chunks/{chunk-3VRLKRIC.js → chunk-Z6LKARXP.js} +1 -1
  45. package/dist/chunks/{chunk-GJTA7DJO.js → chunk-Z7PBDQNR.js} +8 -5
  46. package/dist/chunks/{clear-74Z2GBIF.js → clear-6IXTTZO6.js} +1 -1
  47. package/dist/chunks/{compile-vercel-config-MRWI6INC.js → compile-vercel-config-ZFMPTU47.js} +1 -1
  48. package/dist/chunks/{config-7SVPPW7T.js → config-HLVJQKP7.js} +1 -1
  49. package/dist/chunks/{config-UYP3XEDY.js → config-XXHMPW46.js} +1 -1
  50. package/dist/chunks/{delete-E355MKDF.js → delete-52QKO73X.js} +1 -1
  51. package/dist/chunks/{delete-QFKW4O7R.js → delete-6VOUZDIR.js} +1 -1
  52. package/dist/chunks/{detect-projects-J3VAJIQD.js → detect-projects-WLAFT5HC.js} +1 -1
  53. package/dist/chunks/detect-services-YYT3LUUX.js +7 -0
  54. package/dist/chunks/{disable-K4MMQGSO.js → disable-7FGR2S56.js} +1 -1
  55. package/dist/chunks/{discard-ITZDMBFI.js → discard-XKPTY3DC.js} +1 -1
  56. package/dist/chunks/{edit-7IGZ4EH7.js → edit-A3HJCNPW.js} +1 -1
  57. package/dist/chunks/{edit-3V4C747E.js → edit-A7WGTO6K.js} +1 -1
  58. package/dist/chunks/{enable-4TJRZIE7.js → enable-NGKLGHJ2.js} +1 -1
  59. package/dist/chunks/{export-XJIKF2WX.js → export-QCBAQNTT.js} +1 -1
  60. package/dist/chunks/{generate-cert-for-deploy-A4TZHE2Y.js → generate-cert-for-deploy-U7JF3HF3.js} +1 -1
  61. package/dist/chunks/{image-4UZ34VE5.js → image-DU7GJZR2.js} +1 -1
  62. package/dist/chunks/import-builders-IFZM44NL.js +7 -0
  63. package/dist/chunks/{inspect-FUJCRJTQ.js → inspect-CPOFKE4X.js} +1 -1
  64. package/dist/chunks/{inspect-YZP2TUXW.js → inspect-EMWJLBAW.js} +1 -1
  65. package/dist/chunks/{inspect-H3D3M4TY.js → inspect-IVJOEZC4.js} +1 -1
  66. package/dist/chunks/{inspect-2U47TXE3.js → inspect-PHUMEO4A.js} +1 -1
  67. package/dist/chunks/{inspect-QLPYWU6F.js → inspect-Q7OVSWFO.js} +1 -1
  68. package/dist/chunks/{list-AEKIXAC2.js → list-G4JM2TYX.js} +1 -1
  69. package/dist/chunks/{list-AO2NTDVE.js → list-KYZNCXBM.js} +1 -1
  70. package/dist/chunks/{list-UGFJDLK3.js → list-ZE2VPPXI.js} +1 -1
  71. package/dist/chunks/{login-GXL33UOO.js → login-AVVJFLSC.js} +1 -1
  72. package/dist/chunks/{logs-HXT43YFY.js → logs-3LTU2N25.js} +1 -1
  73. package/dist/chunks/{ls-RYBY45PV.js → ls-4M2OBNG6.js} +1 -1
  74. package/dist/chunks/{ls-DLX6OKJD.js → ls-7O63WIES.js} +1 -1
  75. package/dist/chunks/{ls-IFYHOVHI.js → ls-AKGRKWHM.js} +1 -1
  76. package/dist/chunks/{ls-LDTXN5NC.js → ls-DU5QTKKA.js} +1 -1
  77. package/dist/chunks/{ls-T6LDBBIZ.js → ls-HWUYP3XY.js} +1 -1
  78. package/dist/chunks/{ls-2GUHQ2QY.js → ls-P6LKMT33.js} +1 -1
  79. package/dist/chunks/{ls-MR4IEJXI.js → ls-Y4QR3I6O.js} +1 -1
  80. package/dist/chunks/{mutate-NMAFXSIS.js → mutate-KOAALPIL.js} +1 -1
  81. package/dist/chunks/{notifications-VDMQJUX4.js → notifications-3RDFNJSD.js} +1 -1
  82. package/dist/chunks/{open-OYT4SXL7.js → open-VD4F6MAO.js} +1 -1
  83. package/dist/chunks/{permissions-RVEIYB2B.js → permissions-AE5JO26V.js} +1 -1
  84. package/dist/chunks/{publish-I7FUMJAU.js → publish-YXVJXBQT.js} +1 -1
  85. package/dist/chunks/{pull-XCHJWKNY.js → pull-QLC2CV4J.js} +1 -1
  86. package/dist/chunks/{purchase-domain-if-available-5HP57BPC.js → purchase-domain-if-available-74ZYVVBE.js} +1 -1
  87. package/dist/chunks/{push-7H2NJAPB.js → push-TMPPU5NU.js} +1 -1
  88. package/dist/chunks/{query-TJ7WEORG.js → query-PHAGR43V.js} +1 -1
  89. package/dist/chunks/{reorder-JCS5LKA6.js → reorder-OAJ3NXQQ.js} +1 -1
  90. package/dist/chunks/{reply-SFRIWOPK.js → reply-Q3JFRFA3.js} +1 -1
  91. package/dist/chunks/{resolve-WTQUYVKI.js → resolve-XXJVOXNE.js} +1 -1
  92. package/dist/chunks/{restore-K442WYIM.js → restore-MO4B2EQV.js} +1 -1
  93. package/dist/chunks/{rm-576VOXTN.js → rm-63LFH6NA.js} +1 -1
  94. package/dist/chunks/{rm-OUXMNCHX.js → rm-F2XD2XKB.js} +1 -1
  95. package/dist/chunks/{rm-377WPSMT.js → rm-GMG2DZOV.js} +1 -1
  96. package/dist/chunks/{rm-XFZMZILG.js → rm-P6KA5RSP.js} +1 -1
  97. package/dist/chunks/{rm-K2SG5TT7.js → rm-SZ4HWA4R.js} +1 -1
  98. package/dist/chunks/{rule-inspect-MK7A5LPA.js → rule-inspect-JKAXOBII.js} +1 -1
  99. package/dist/chunks/{rules-4T3OHT34.js → rules-6TZ6GSKT.js} +1 -1
  100. package/dist/chunks/{schema-PUOL7JUI.js → schema-5CZLK6NI.js} +1 -1
  101. package/dist/chunks/{schema-RIUBZXVC.js → schema-S2ZAREKF.js} +1 -1
  102. package/dist/chunks/{set-HNSMZTBW.js → set-PIKLGKT6.js} +1 -1
  103. package/dist/chunks/setup-and-link-O5QSQ5K2.js +7 -0
  104. package/dist/chunks/{tags-7CY2YR27.js → tags-C3HWJLJ4.js} +1 -1
  105. package/dist/chunks/{update-QAGFDMEF.js → update-5HE4X45O.js} +1 -1
  106. package/dist/chunks/{utils-BG3TNJBX.js → utils-5BFO5HC4.js} +1 -1
  107. package/dist/commands/build/index.js +1 -1
  108. package/dist/commands/deploy/index.js +5 -5
  109. package/dist/commands/dev/index.js +3 -3
  110. package/dist/commands/env/index.js +1 -1
  111. package/dist/commands/link/index.js +2 -2
  112. package/dist/commands/list/index.js +1 -1
  113. package/dist/commands-bulk.js +660 -652
  114. package/dist/help.js +1 -1
  115. package/dist/index.js +3 -3
  116. package/dist/version.mjs +1 -1
  117. package/package.json +22 -22
  118. package/dist/chunks/chunk-EYXFDREA.js +0 -7
  119. package/dist/chunks/chunk-K2RAW5DI.js +0 -10
  120. package/dist/chunks/detect-services-JTGZ7NCQ.js +0 -7
  121. package/dist/chunks/import-builders-7BRUAJT2.js +0 -7
  122. package/dist/chunks/setup-and-link-X44IODXA.js +0 -7
@@ -4,9 +4,9 @@ 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{validatePaths,validateRootDirectory}from"../../chunks/chunk-3VRLKRIC.js";import{DeployTelemetryClient,Now,UploadErrorMissingArchive,getBuildMachineResourceConfig,printDeploymentStatus,printPrebuiltFilePathMapIgnoreWarning}from"../../chunks/chunk-FYSA677K.js";import"../../chunks/chunk-JOH6CUOG.js";import{parseRepoUrl}from"../../chunks/chunk-4WSAOLBH.js";import"../../chunks/chunk-2H77IRPI.js";import"../../chunks/chunk-OHDEHZLX.js";import"../../chunks/chunk-M2W3HKV3.js";import"../../chunks/chunk-PHW54NU5.js";import"../../chunks/chunk-U56NHYAH.js";import{readLocalConfig}from"../../chunks/chunk-JXHVB5A7.js";import"../../chunks/chunk-TRTEXGVN.js";import"../../chunks/chunk-T3GQAMBJ.js";import{require_ci_info}from"../../chunks/chunk-T52FMXWC.js";import{highlight}from"../../chunks/chunk-J3U3L45Y.js";import"../../chunks/chunk-KBKN7EI7.js";import"../../chunks/chunk-GQQKAFGS.js";import{isGuidanceEnabled}from"../../chunks/chunk-DQ2KI6FO.js";import{parseMeta}from"../../chunks/chunk-CZSOZKHX.js";import{validateJsonOutput}from"../../chunks/chunk-D4MW3RDW.js";import"../../chunks/chunk-P2O5DOYE.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{continueSubcommand,deployCommand,deprecatedArchiveSplitTgz,getCommandAliases,initSubcommand}from"../../chunks/chunk-2EY7NJ5E.js";import"../../chunks/chunk-M5AV545M.js";import"../../chunks/chunk-65JYSI26.js";import"../../chunks/chunk-YMVDWVMO.js";import"../../chunks/chunk-O7G3CZ42.js";import"../../chunks/chunk-N3N5UHIL.js";import"../../chunks/chunk-IVWPQYIH.js";import"../../chunks/chunk-WUZD4KBL.js";import"../../chunks/chunk-3QHJYVCY.js";import"../../chunks/chunk-NBVY237X.js";import"../../chunks/chunk-MEAY2K5Z.js";import"../../chunks/chunk-EQ52F4LH.js";import"../../chunks/chunk-EIXOJUNN.js";import"../../chunks/chunk-OAKO6LVS.js";import"../../chunks/chunk-CVKB54WW.js";import"../../chunks/chunk-JKTQV2QJ.js";import"../../chunks/chunk-AZ6NRDHG.js";import"../../chunks/chunk-FAW6NBLQ.js";import"../../chunks/chunk-ZKYS7EAB.js";import{pickOverrides,require_dist as require_dist2}from"../../chunks/chunk-WXT35K53.js";import"../../chunks/chunk-K2RAW5DI.js";import{compileVercelConfig}from"../../chunks/chunk-CLKTBUI7.js";import"../../chunks/chunk-NNP5NITU.js";import{require_types}from"../../chunks/chunk-GHM7V3GG.js";import"../../chunks/chunk-L3JDEHCQ.js";import"../../chunks/chunk-QR7QPUFN.js";import{stamp_default}from"../../chunks/chunk-XPXOV5UO.js";import"../../chunks/chunk-2I64AYHG.js";import"../../chunks/chunk-SOJCELXH.js";import"../../chunks/chunk-JZRMH5UA.js";import{require_ms}from"../../chunks/chunk-QTKJC2O5.js";import{ensureLink,parseEnv}from"../../chunks/chunk-UDOFIJ7K.js";import"../../chunks/chunk-CKX6OH4B.js";import{AGENT_STATUS}from"../../chunks/chunk-EQP3SW72.js";import"../../chunks/chunk-6LE3FU2P.js";import"../../chunks/chunk-KUVMCIR4.js";import{param}from"../../chunks/chunk-SXUEGVWB.js";import{help}from"../../chunks/chunk-V6IKQCOT.js";import{table}from"../../chunks/chunk-6TAQ6OWD.js";import{parseTarget}from"../../chunks/chunk-R3B67TKQ.js";import{getDeployment}from"../../chunks/chunk-GHULCYAR.js";import{mapCertError}from"../../chunks/chunk-UXCTETFN.js";import"../../chunks/chunk-WPS6JZF6.js";import"../../chunks/chunk-77GUJ4JC.js";import"../../chunks/chunk-A5VLP25I.js";import"../../chunks/chunk-RCTYVKM5.js";import"../../chunks/chunk-5XJNPXQK.js";import{printError}from"../../chunks/chunk-TBBU37TD.js";import{parseArguments}from"../../chunks/chunk-T4AZ3U7O.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7T6TL3GQ.js";import{VERCEL_DIR,VERCEL_DIR_PROJECT,addToGitIgnore,createGitMeta,getGitConfigPath,getGitExecutable,getLinkFromDir,getRepoLink,getVercelDirectory,isOwnerLookupUnavailableLink,isRemoteLookupSkippedLink,linkFolderToProject,parseGitConfig,pluckRemoteUrls,require_lib}from"../../chunks/chunk-UB37A37M.js";import"../../chunks/chunk-F2ZWW2IO.js";import"../../chunks/chunk-B4ATVYZW.js";import"../../chunks/chunk-PPCFQQSU.js";import"../../chunks/chunk-OSCCYU74.js";import{outputAgentError,quoteArg,withGlobalFlags}from"../../chunks/chunk-BX5KDMLT.js";import{getFlagsSpecification}from"../../chunks/chunk-JAJW3P42.js";import{printAlignedLabel}from"../../chunks/chunk-YMM3VY3J.js";import"../../chunks/chunk-V5DCSHYJ.js";import"../../chunks/chunk-VOZEB6PD.js";import{AliasDomainConfigured,BuildError,BuildsRateLimited,ConflictingConfigFiles,ConflictingFilePath,ConflictingPathSegment,DeploymentNotFound,DeploymentsRateLimited,DeprecatedNowJson,DomainNotFound,DomainNotVerified,DomainPermissionDenied,DomainVerificationFailed,InvalidDomain,MissingBuildScript,NotDomainOwner,NowError,SchemaValidationFailed,TooManyRequests,UserAborted,code,isAPIError,require_bytes}from"../../chunks/chunk-LKI6FRNM.js";import{getCommandName,packageName}from"../../chunks/chunk-FI772UVH.js";import{emoji,link_default,output_manager_default,prependEmoji,require_build_utils}from"../../chunks/chunk-EWWFNMPZ.js";import{require_dist}from"../../chunks/chunk-QGIQK47P.js";import"../../chunks/chunk-BRK4OB4B.js";import"../../chunks/chunk-AVSPFBLM.js";import"../../chunks/chunk-XCJDGQO7.js";import"../../chunks/chunk-YPTLSODC.js";import"../../chunks/chunk-7HL2RPUO.js";import{require_source}from"../../chunks/chunk-U7KCDTCH.js";import"../../chunks/chunk-N3ZZ7FHQ.js";import"../../chunks/chunk-GU6VIFR5.js";import{__toESM}from"../../chunks/chunk-6L236MNA.js";var import_build_utils2=__toESM(require_build_utils(),1),import_client=__toESM(require_dist2(),1),import_error_utils2=__toESM(require_dist(),1),import_bytes=__toESM(require_bytes(),1),import_chalk=__toESM(require_source(),1),import_fs_extra4=__toESM(require_lib(),1),import_ms=__toESM(require_ms(),1);import{join as join4,resolve as resolve2}from"path";async function createDeploy(client,now,contextName,path,createArgs,org,isSettingUpProject,archive){try{return await now.create(path,createArgs,org,isSettingUpProject,archive)}catch(err){if(isAPIError(err)){if(err.code==="rate_limited")throw new DeploymentsRateLimited(err.message);if(err.code==="domain_missing")throw new DomainNotFound(err.value);if(err.code==="domain_not_found"&&err.domain)throw new DomainNotFound(err.domain);if(err.code==="domain_not_verified"&&err.domain)throw new DomainNotVerified(err.domain);if(err.code==="domain_not_verified"&&err.value)throw new DomainVerificationFailed(err.value);if(err.code==="not_domain_owner")throw new NotDomainOwner(err.message);if(err.code==="builds_rate_limited")throw new BuildsRateLimited(err.message,{ctaLabel:err.ctaLabel,ctaUrl:err.ctaUrl,action:err.action,link:err.link});if(err.code==="forbidden")throw new DomainPermissionDenied(err.value,contextName);if(err.code==="bad_request"&&err.keyword)throw new SchemaValidationFailed(err.message,err.keyword,err.dataPath,err.params);if(err.code==="domain_configured")throw new AliasDomainConfigured(err);if(err.code==="missing_build_script")throw new MissingBuildScript(err);if(err.code==="conflicting_file_path")throw new ConflictingFilePath(err);if(err.code==="conflicting_path_segment")throw new ConflictingPathSegment(err);if(err.code==="cert_missing"){let{default:generateCertForDeploy}=await import("../../chunks/generate-cert-for-deploy-A4TZHE2Y.js"),result=await generateCertForDeploy(client,contextName,err.value);return result instanceof NowError?result:createDeploy(client,now,contextName,path,createArgs,org,isSettingUpProject)}if(err.code==="not_found")throw new DeploymentNotFound({context:contextName});let certError=mapCertError(err);if(certError)return certError}throw err}}async function getDeploymentChecks(client,deploymentId){return await client.fetch(`/v1/deployments/${encodeURIComponent(deploymentId)}/checks`)}async function getDeploymentCheckRuns(client,deploymentId){return await client.fetch(`/v2/deployments/${encodeURIComponent(deploymentId)}/check-runs`)}function parseNdjson(text){let entries=[];for(let line of text.split(`
7
+ import{validatePaths,validateRootDirectory}from"../../chunks/chunk-Z6LKARXP.js";import{DeployTelemetryClient,Now,UploadErrorMissingArchive,getBuildMachineResourceConfig,printDeploymentStatus,printPrebuiltFilePathMapIgnoreWarning}from"../../chunks/chunk-FZH7RIRX.js";import"../../chunks/chunk-2HEC5TDU.js";import{parseRepoUrl}from"../../chunks/chunk-4WSAOLBH.js";import"../../chunks/chunk-2H77IRPI.js";import"../../chunks/chunk-OHDEHZLX.js";import"../../chunks/chunk-M2W3HKV3.js";import"../../chunks/chunk-PHW54NU5.js";import"../../chunks/chunk-U56NHYAH.js";import{readLocalConfig}from"../../chunks/chunk-NYOQMU3P.js";import"../../chunks/chunk-TRTEXGVN.js";import"../../chunks/chunk-T3GQAMBJ.js";import{require_ci_info}from"../../chunks/chunk-T52FMXWC.js";import{highlight}from"../../chunks/chunk-J3U3L45Y.js";import"../../chunks/chunk-KBKN7EI7.js";import"../../chunks/chunk-DL665Q3Z.js";import{isGuidanceEnabled}from"../../chunks/chunk-DQ2KI6FO.js";import{parseMeta}from"../../chunks/chunk-CZSOZKHX.js";import{validateJsonOutput}from"../../chunks/chunk-D4MW3RDW.js";import{promptExperimentalServicesMigration}from"../../chunks/chunk-PS645CWM.js";import"../../chunks/chunk-P2O5DOYE.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{continueSubcommand,deployCommand,deprecatedArchiveSplitTgz,getCommandAliases,initSubcommand}from"../../chunks/chunk-ABSRS5KC.js";import"../../chunks/chunk-M5AV545M.js";import"../../chunks/chunk-65JYSI26.js";import"../../chunks/chunk-YMVDWVMO.js";import"../../chunks/chunk-O7G3CZ42.js";import"../../chunks/chunk-N3N5UHIL.js";import"../../chunks/chunk-IVWPQYIH.js";import"../../chunks/chunk-WUZD4KBL.js";import"../../chunks/chunk-3QHJYVCY.js";import"../../chunks/chunk-NBVY237X.js";import"../../chunks/chunk-MEAY2K5Z.js";import"../../chunks/chunk-EQ52F4LH.js";import"../../chunks/chunk-EIXOJUNN.js";import"../../chunks/chunk-OAKO6LVS.js";import"../../chunks/chunk-CVKB54WW.js";import"../../chunks/chunk-JKTQV2QJ.js";import"../../chunks/chunk-AZ6NRDHG.js";import"../../chunks/chunk-FAW6NBLQ.js";import"../../chunks/chunk-ZKYS7EAB.js";import{pickOverrides,require_dist as require_dist2}from"../../chunks/chunk-UUM2N6IG.js";import"../../chunks/chunk-V6MR45PD.js";import{stamp_default}from"../../chunks/chunk-XPXOV5UO.js";import"../../chunks/chunk-2I64AYHG.js";import"../../chunks/chunk-JZRMH5UA.js";import{require_ms}from"../../chunks/chunk-QTKJC2O5.js";import"../../chunks/chunk-FB5TMOLQ.js";import"../../chunks/chunk-Z7PBDQNR.js";import{compileVercelConfig}from"../../chunks/chunk-73G2MHUX.js";import{require_types}from"../../chunks/chunk-GHM7V3GG.js";import"../../chunks/chunk-L3JDEHCQ.js";import"../../chunks/chunk-QR7QPUFN.js";import"../../chunks/chunk-OI263FBO.js";import{ensureLink,parseEnv}from"../../chunks/chunk-SFTXBTMI.js";import"../../chunks/chunk-GR3DLKYP.js";import{AGENT_STATUS}from"../../chunks/chunk-EQP3SW72.js";import"../../chunks/chunk-KK4AJES5.js";import"../../chunks/chunk-6LE3FU2P.js";import"../../chunks/chunk-KUVMCIR4.js";import"../../chunks/chunk-SOJCELXH.js";import{param}from"../../chunks/chunk-SXUEGVWB.js";import{help}from"../../chunks/chunk-V6IKQCOT.js";import{table}from"../../chunks/chunk-6TAQ6OWD.js";import{parseTarget}from"../../chunks/chunk-R3B67TKQ.js";import{getDeployment}from"../../chunks/chunk-GHULCYAR.js";import{mapCertError}from"../../chunks/chunk-UXCTETFN.js";import"../../chunks/chunk-WPS6JZF6.js";import"../../chunks/chunk-32QBGZ2Z.js";import"../../chunks/chunk-A5VLP25I.js";import"../../chunks/chunk-RCTYVKM5.js";import"../../chunks/chunk-5XJNPXQK.js";import{printError}from"../../chunks/chunk-TBBU37TD.js";import{parseArguments}from"../../chunks/chunk-T4AZ3U7O.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7T6TL3GQ.js";import{VERCEL_DIR,VERCEL_DIR_PROJECT,addToGitIgnore,createGitMeta,getGitConfigPath,getGitExecutable,getLinkFromDir,getRepoLink,getVercelDirectory,isOwnerLookupUnavailableLink,isRemoteLookupSkippedLink,linkFolderToProject,parseGitConfig,pluckRemoteUrls,require_lib}from"../../chunks/chunk-64NJHVA3.js";import"../../chunks/chunk-F2ZWW2IO.js";import"../../chunks/chunk-B4ATVYZW.js";import"../../chunks/chunk-PPCFQQSU.js";import"../../chunks/chunk-OSCCYU74.js";import{outputAgentError,quoteArg,withGlobalFlags}from"../../chunks/chunk-BX5KDMLT.js";import{getFlagsSpecification}from"../../chunks/chunk-JAJW3P42.js";import{printAlignedLabel}from"../../chunks/chunk-YMM3VY3J.js";import"../../chunks/chunk-V5DCSHYJ.js";import"../../chunks/chunk-VOZEB6PD.js";import{AliasDomainConfigured,BuildError,BuildsRateLimited,ConflictingConfigFiles,ConflictingFilePath,ConflictingPathSegment,DeploymentNotFound,DeploymentsRateLimited,DeprecatedNowJson,DomainNotFound,DomainNotVerified,DomainPermissionDenied,DomainVerificationFailed,InvalidDomain,MissingBuildScript,NotDomainOwner,NowError,SchemaValidationFailed,TooManyRequests,UserAborted,code,isAPIError,require_bytes}from"../../chunks/chunk-LKI6FRNM.js";import{getCommandName,packageName}from"../../chunks/chunk-FI772UVH.js";import{emoji,link_default,output_manager_default,prependEmoji,require_build_utils}from"../../chunks/chunk-EWWFNMPZ.js";import{require_dist}from"../../chunks/chunk-QGIQK47P.js";import"../../chunks/chunk-BRK4OB4B.js";import"../../chunks/chunk-AVSPFBLM.js";import"../../chunks/chunk-XCJDGQO7.js";import"../../chunks/chunk-YPTLSODC.js";import"../../chunks/chunk-7HL2RPUO.js";import{require_source}from"../../chunks/chunk-U7KCDTCH.js";import"../../chunks/chunk-N3ZZ7FHQ.js";import"../../chunks/chunk-GU6VIFR5.js";import{__toESM}from"../../chunks/chunk-6L236MNA.js";var import_build_utils2=__toESM(require_build_utils(),1),import_client=__toESM(require_dist2(),1),import_error_utils2=__toESM(require_dist(),1),import_bytes=__toESM(require_bytes(),1),import_chalk=__toESM(require_source(),1),import_fs_extra4=__toESM(require_lib(),1),import_ms=__toESM(require_ms(),1);import{join as join4,resolve as resolve2}from"path";async function createDeploy(client,now,contextName,path,createArgs,org,isSettingUpProject,archive){try{return await now.create(path,createArgs,org,isSettingUpProject,archive)}catch(err){if(isAPIError(err)){if(err.code==="rate_limited")throw new DeploymentsRateLimited(err.message);if(err.code==="domain_missing")throw new DomainNotFound(err.value);if(err.code==="domain_not_found"&&err.domain)throw new DomainNotFound(err.domain);if(err.code==="domain_not_verified"&&err.domain)throw new DomainNotVerified(err.domain);if(err.code==="domain_not_verified"&&err.value)throw new DomainVerificationFailed(err.value);if(err.code==="not_domain_owner")throw new NotDomainOwner(err.message);if(err.code==="builds_rate_limited")throw new BuildsRateLimited(err.message,{ctaLabel:err.ctaLabel,ctaUrl:err.ctaUrl,action:err.action,link:err.link});if(err.code==="forbidden")throw new DomainPermissionDenied(err.value,contextName);if(err.code==="bad_request"&&err.keyword)throw new SchemaValidationFailed(err.message,err.keyword,err.dataPath,err.params);if(err.code==="domain_configured")throw new AliasDomainConfigured(err);if(err.code==="missing_build_script")throw new MissingBuildScript(err);if(err.code==="conflicting_file_path")throw new ConflictingFilePath(err);if(err.code==="conflicting_path_segment")throw new ConflictingPathSegment(err);if(err.code==="cert_missing"){let{default:generateCertForDeploy}=await import("../../chunks/generate-cert-for-deploy-U7JF3HF3.js"),result=await generateCertForDeploy(client,contextName,err.value);return result instanceof NowError?result:createDeploy(client,now,contextName,path,createArgs,org,isSettingUpProject)}if(err.code==="not_found")throw new DeploymentNotFound({context:contextName});let certError=mapCertError(err);if(certError)return certError}throw err}}async function getDeploymentChecks(client,deploymentId){return await client.fetch(`/v1/deployments/${encodeURIComponent(deploymentId)}/checks`)}async function getDeploymentCheckRuns(client,deploymentId){return await client.fetch(`/v2/deployments/${encodeURIComponent(deploymentId)}/check-runs`)}function parseNdjson(text){let entries=[];for(let line of text.split(`
8
8
  `))if(line.trim())try{entries.push(JSON.parse(line))}catch{}return entries}async function getDeploymentCheckRunLogs(client,deploymentId,checkRunId){let url=`/v2/deployments/${encodeURIComponent(deploymentId)}/check-runs/${encodeURIComponent(checkRunId)}/logs`;await new Promise(resolve3=>setTimeout(resolve3,1e3));for(let attempt=0;attempt<5;attempt++){attempt>0&&await new Promise(resolve3=>setTimeout(resolve3,2e3));let res=await client.fetch(url,{json:!1}),text=typeof res=="string"?res:await res.text(),entries=parseNdjson(text);if(entries.some(e=>e.level==="eof"))return entries.filter(e=>e.level!=="eof"&&e.level!=="debug").map(({level,timestamp,message})=>({level,timestamp,message}))}return[]}var import_fs_extra=__toESM(require_lib(),1);import{join}from"path";async function getPrebuiltJson(directory){try{return await import_fs_extra.default.readJSON(join(directory,"builds.json"))}catch{}return null}import{resolve}from"path";var SUPPORTED_PROVIDERS=new Set(["github","gitlab","bitbucket"]),defaultDeps={getGitConfigPath,parseGitConfig,fetchProject:(client,project)=>client.fetch(`/v9/projects/${encodeURIComponent(project.id)}`,{accountId:project.accountId}),buildCommand:(client,command)=>withGlobalFlags(client,command,{preserveProject:!0})};async function getGitConnectRecommendation(client,cwd,project,options={}){let{alreadyOffered=!1,deps=defaultDeps}=options;try{if(project.link||alreadyOffered)return;let gitConfigPath=deps.getGitConfigPath({cwd});if(!gitConfigPath)return;let gitConfig=await deps.parseGitConfig(gitConfigPath),remoteUrls=gitConfig&&pluckRemoteUrls(gitConfig);if(!remoteUrls)return;let remotes=Object.values(remoteUrls);if(!remotes.some(remoteUrl=>{let repo=parseRepoUrl(remoteUrl);return repo&&SUPPORTED_PROVIDERS.has(repo.provider)})||client.nonInteractive&&remotes.length!==1||(await deps.fetchProject(client,project)).link)return;let cwdFlag=resolve(cwd)===resolve(client.cwd)?"":` --cwd ${quoteArg(cwd)}`;return deps.buildCommand(client,`git connect${cwdFlag}`)}catch(error){output_manager_default.debug(`Failed to resolve Git connection guidance: ${error}`);return}}var import_types=__toESM(require_types(),1),validArchiveFormats=new Set(import_types.VALID_ARCHIVE_FORMATS);function isValidArchive(archive){return validArchiveFormats.has(archive)}function getErrorCta(source){if(typeof source.ctaLabel=="string"&&typeof source.ctaUrl=="string")return{label:source.ctaLabel,url:source.ctaUrl};if(typeof source.action=="string"&&typeof source.link=="string")return{label:source.action,url:source.link}}var import_fs_extra3=__toESM(require_lib(),1);import{join as join3}from"path";var import_fs_extra2=__toESM(require_lib(),1),import_ci_info=__toESM(require_ci_info(),1),import_build_utils=__toESM(require_build_utils(),1),import_error_utils=__toESM(require_dist(),1);import{join as join2}from"path";var VERCEL_DIR_ANONYMOUS="anonymous.json";function anonymousStatePath(cwd){return join2(cwd,VERCEL_DIR,VERCEL_DIR_ANONYMOUS)}async function readAnonymousState(cwd){try{let state=await(0,import_fs_extra2.readJSON)(anonymousStatePath(cwd));if(typeof state?.projectId=="string"&&typeof state.token=="string"&&typeof state.claimUrl=="string"&&typeof state.expiresAt=="number")return state}catch{}return null}async function writeAnonymousState(cwd,state){let path=anonymousStatePath(cwd);await(0,import_fs_extra2.outputJSON)(path,state,{spaces:2,mode:384}),await(0,import_fs_extra2.chmod)(path,384),await addToGitIgnore(cwd)}async function clearAnonymousState(cwd){await(0,import_fs_extra2.remove)(anonymousStatePath(cwd))}async function bootstrapAnonymousProject(client){let{projectId,token,claimUrl,expiresAt}=await client.fetch("/v1/anonymous/projects?surface=cli",{method:"POST",body:{},useCurrentTeam:!1,retry:{retries:0}});return{projectId,token,claimUrl,expiresAt}}async function ensureAnonymousLink(client,cwd,{requireExistingState=!1,confirmed=!0}={}){if(import_ci_info.default.isCI||!!((0,import_build_utils.getPlatformEnv)("ORG_ID")&&(0,import_build_utils.getPlatformEnv)("PROJECT_ID"))||!!await getLinkFromDir(getVercelDirectory(cwd))||!!(await getRepoLink(client,cwd))?.repoConfig)return"refused";let state=await readAnonymousState(cwd);if(state&&state.expiresAt<=Date.now())return output_manager_default.prettyError({message:`Your temporary deployment has expired. Run ${getCommandName("login")} to create an account and keep deploying this app.`}),"failed";if(!state&&requireExistingState)return"refused";if(!confirmed&&!state)return"confirmation-required";if(!state){try{state=await bootstrapAnonymousProject(client)}catch(err){return output_manager_default.debug(`Anonymous bootstrap failed: ${(0,import_error_utils.errorToString)(err)}`),"refused"}await writeAnonymousState(cwd,state),output_manager_default.log("Not authenticated. Deploying anonymously.")}return client.authConfig={token:state.token,skipWrite:!0},delete process.env.VERCEL_TEAM_ID,{status:"linked",anonymous:!0,expiresAt:state.expiresAt,claimUrl:state.claimUrl,org:{type:"user",id:"",slug:"anonymous"},project:{id:state.projectId,name:state.projectId}}}function validateAnonymousTarget(isAnonymous,target){return isAnonymous&&target&&target!=="production"?(output_manager_default.error(`Anonymous deployments always target production, so "${target}" is not available. Remove the ${param("--target")} option, or run ${getCommandName("login")} to deploy to other environments.`),!1):!0}async function setupAnonymousDeployment(client,cwd,{isAnonymous,dryRun}){isAnonymous||await clearAnonymousState(cwd);let anonymousLink;if(isAnonymous){let anonymous=await ensureAnonymousLink(client,cwd,{requireExistingState:dryRun});if(anonymous==="refused"){let{default:promptMissingCredentials}=await import("../../chunks/prompt-missing-credentials-QY4MZDT6.js"),loginExitCode=await promptMissingCredentials(client);if(loginExitCode!==0)return loginExitCode;isAnonymous=!1}else{if(anonymous==="failed")return 1;if(anonymous==="confirmation-required")return 1;anonymousLink=anonymous}}return{isAnonymous,anonymousLink}}async function handleAnonymousDeploymentError({client,cwd,error,link,isV0,retry}){if(!(!link||!isAPIError(error))){if(error.code==="anonymous_project_claimed"){if(client.nonInteractive||!client.stdin.isTTY)return output_manager_default.prettyError({message:`This project was claimed successfully. Run ${getCommandName("login")} to continue deploying it.`}),1;output_manager_default.log("This project was claimed successfully. Log in to continue deploying it.");let loginExitCode;try{let{default:login}=await import("../../chunks/login-RMAISH4F.js");loginExitCode=await login(client,{shouldParseArgs:!1})}catch(loginError){return printError(loginError),1}if(loginExitCode!==0)return loginExitCode;let claimedProjectLink=await ensureLink("deploy",client,cwd,{autoConfirm:!0,projectName:link.project.id,failIfNotFound:!0,allowOwnerLookupFallback:!0,v0:isV0});return typeof claimedProjectLink=="number"?claimedProjectLink:(await linkFolderToProject(client,cwd,{projectId:claimedProjectLink.project.id,orgId:claimedProjectLink.org.id},claimedProjectLink.project.name,claimedProjectLink.org.slug,"link",!0,!1),await clearAnonymousState(cwd),retry())}if(error.status===401||error.status===410)return await clearAnonymousState(cwd),output_manager_default.prettyError({message:`Your temporary deployment has expired. Run ${getCommandName("login")} to create an account and keep deploying this app.`}),1}}async function runImplicitBuild(client,cwd){let projectJsonPath=join3(cwd,VERCEL_DIR,VERCEL_DIR_PROJECT),projectJsonExists=await import_fs_extra3.default.pathExists(projectJsonPath);projectJsonExists||await import_fs_extra3.default.outputJSON(projectJsonPath,{settings:{}},{spaces:2}),await import_fs_extra3.default.pathExists(join3(cwd,"package.json"))&&output_manager_default.log("Building your project locally\u2026");let originalArgv=client.argv,originalCwd=client.cwd,originalStdout=client.stdout,previousVercelFirstDeployment=process.env.VERCEL_FIRST_DEPLOYMENT;client.cwd=cwd,client.setArgv([...originalArgv.slice(0,2),"build","--prod","--yes"]),process.env.VERCEL_FIRST_DEPLOYMENT="1",client.stdout=createSinkStream();try{let build=(await import("../build/index.js")).default;return await build(client)}finally{client.setArgv(originalArgv),client.cwd=originalCwd,client.stdout=originalStdout,previousVercelFirstDeployment===void 0?delete process.env.VERCEL_FIRST_DEPLOYMENT:process.env.VERCEL_FIRST_DEPLOYMENT=previousVercelFirstDeployment,projectJsonExists||await import_fs_extra3.default.remove(projectJsonPath)}}function createSinkStream(){return{isTTY:!1,write:()=>!0}}var COMMAND_CONFIG={init:getCommandAliases(initSubcommand),continue:getCommandAliases(continueSubcommand)},deploy_default=async client=>{let telemetryClient=new DeployTelemetryClient({opts:{store:client.telemetryEventStore}}),parsedArguments=null,flagsSpecification=getFlagsSpecification(deployCommand.options);try{parsedArguments=parseArguments(client.argv.slice(2),flagsSpecification,{permissive:!0})}catch(error){return printError(error),1}let subArgs=parsedArguments.args[0]===deployCommand.name?parsedArguments.args.slice(1):parsedArguments.args,{subcommand,subcommandOriginal}=getSubcommand(subArgs,COMMAND_CONFIG);function printSubcommandHelp(command){output_manager_default.print(help(command,{parent:deployCommand,columns:client.stderr.columns}))}switch(subcommand){case"init":return parsedArguments.flags["--help"]?(telemetryClient.trackCliFlagHelp("deploy",subcommandOriginal),printSubcommandHelp(initSubcommand),2):(telemetryClient.trackCliSubcommandInit(subcommandOriginal),handleInitDeployment(client,telemetryClient));case"continue":return parsedArguments.flags["--help"]?(telemetryClient.trackCliFlagHelp("deploy",subcommandOriginal),printSubcommandHelp(continueSubcommand),2):(telemetryClient.trackCliSubcommandContinue(subcommandOriginal),handleContinueSubcommand(client,telemetryClient));default:return parsedArguments.flags["--help"]?(telemetryClient.trackCliFlagHelp("deploy"),output_manager_default.print(help(deployCommand,{columns:client.stderr.columns})),2):handleDefaultDeploy(client,telemetryClient)}};async function handleInitDeployment(client,telemetryClient){let flagsSpecification=getFlagsSpecification(initSubcommand.options),parsedArguments;try{parsedArguments=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error2){return printError(error2),1}telemetryClient.trackCliFlagJson(parsedArguments.flags["--json"]),telemetryClient.trackCliOptionFormat(parsedArguments.flags["--format"]),telemetryClient.trackCliOptionProject(parsedArguments.flags["--project"]);let projectNameOrId=parsedArguments.flags["--project"],formatResult=validateJsonOutput(parsedArguments.flags);if(!formatResult.valid)return output_manager_default.error(formatResult.error),1;let asJson=formatResult.jsonOutput||client.nonInteractive,args=parsedArguments.args;args[0]==="deploy"&&(args=args.slice(1)),args[0]==="init"&&(args=args.slice(1));let paths;args.length>0?(paths=args.map(item=>resolve2(client.cwd,item)),telemetryClient.trackCliArgumentProjectPath(paths[0])):paths=[client.cwd];let pathValidation=await validatePaths(client,paths);if(!pathValidation.valid)return pathValidation.exitCode;await compileVercelConfig(paths[0]);let localConfig=paths[0]===client.cwd?client.localConfig||readLocalConfig(paths[0]):readLocalConfig(paths[0]);if(localConfig){client.localConfig=localConfig;let{version}=localConfig,file=highlight(localConfig[import_client.fileNameSymbol]),prop=code("version");if(version)if(typeof version=="number"){if(version!==2){let two=code(String(2));return output_manager_default.error(`The value of the ${prop} property within ${file} can only be ${two}.`),1}}else return output_manager_default.error(`The ${prop} property inside your ${file} file must be a number.`),1}let{log,debug,error}=output_manager_default,quiet=!client.stdout.isTTY,{path:cwd}=pathValidation,autoConfirm=parsedArguments.flags["--yes"],target=parseTarget({flagName:"target",flags:parsedArguments.flags});telemetryClient.trackTargetEnvironment(target);let parsedArchive=parsedArguments.flags["--archive"];if(typeof parsedArchive=="string"&&!(isValidArchive(parsedArchive)||parsedArchive===deprecatedArchiveSplitTgz))return output_manager_default.error(`Format must be one of: ${import_client.VALID_ARCHIVE_FORMATS.join(", ")}`),1;parsedArchive===deprecatedArchiveSplitTgz&&output_manager_default.print(`${prependEmoji(`${param("--archive=tgz")} now has the same behavior as ${param("--archive=split-tgz")}. Please use ${param("--archive=tgz")} instead.`,emoji("warning"))}
9
- `);let cliMeta=parseMeta(parsedArguments.flags["--meta"]),isV0=cliMeta.v0==="true";getGitExecutable(cwd);let link=await ensureLink("deploy",client,cwd,{autoConfirm,projectName:projectNameOrId??localConfig?.name,failIfNotFound:!!projectNameOrId,v0:isV0});if(typeof link=="number")return link;let{org,project}=link,rootDirectory=project.rootDirectory,sourceFilesOutsideRootDirectory=project.sourceFilesOutsideRootDirectory??!0;link.repoRoot&&(cwd=link.repoRoot);let contextName=org.slug;if(client.config.currentTeam=org.type==="team"?org.id:void 0,rootDirectory&&await validateRootDirectory(cwd,join4(cwd,rootDirectory),project?`To change your Project Settings, go to https://vercel.com/${org?.slug}/${project.name}/settings`:"")===!1)return 1;if(rootDirectory){let rootDirectoryPath=join4(cwd,rootDirectory);await compileVercelConfig(rootDirectoryPath);let rootDirectoryConfig=readLocalConfig(rootDirectoryPath);rootDirectoryConfig?(debug(`Read local config from root directory (${rootDirectory})`),localConfig=rootDirectoryConfig):localConfig&&output_manager_default.print(`${prependEmoji(`The ${highlight(localConfig[import_client.fileNameSymbol])} file should be inside of the provided root directory.`,emoji("warning"))}
9
+ `);let cliMeta=parseMeta(parsedArguments.flags["--meta"]),isV0=cliMeta.v0==="true";getGitExecutable(cwd);let link=await ensureLink("deploy",client,cwd,{autoConfirm,projectName:projectNameOrId??localConfig?.name,failIfNotFound:!!projectNameOrId,v0:isV0});if(typeof link=="number")return link;let{org,project}=link,rootDirectory=project.rootDirectory,sourceFilesOutsideRootDirectory=project.sourceFilesOutsideRootDirectory??!0;link.repoRoot&&(cwd=link.repoRoot);let contextName=org.slug;if(client.config.currentTeam=org.type==="team"?org.id:void 0,rootDirectory&&await validateRootDirectory(cwd,join4(cwd,rootDirectory),project?`To change your Project Settings, go to https://vercel.com/${org?.slug}/${project.name}/settings`:"")===!1)return 1;if(await promptExperimentalServicesMigration({client,cwd:join4(cwd,rootDirectory||""),autoConfirm:!!parsedArguments.flags["--yes"],nonInteractive:client.nonInteractive})&&(localConfig=readLocalConfig(join4(cwd,rootDirectory||""))),rootDirectory){let rootDirectoryPath=join4(cwd,rootDirectory);await compileVercelConfig(rootDirectoryPath);let rootDirectoryConfig=readLocalConfig(rootDirectoryPath);rootDirectoryConfig?(debug(`Read local config from root directory (${rootDirectory})`),localConfig=rootDirectoryConfig):localConfig&&output_manager_default.print(`${prependEmoji(`The ${highlight(localConfig[import_client.fileNameSymbol])} file should be inside of the provided root directory.`,emoji("warning"))}
10
10
  `)}localConfig=localConfig||{},localConfig.name&&output_manager_default.print(`${prependEmoji(`The ${code("name")} property in ${highlight(localConfig[import_client.fileNameSymbol])} is deprecated (https://vercel.link/name-prop)`,emoji("warning"))}
11
11
  `);let isObject=item=>Object.prototype.toString.call(item)==="[object Object]";if(typeof localConfig.env<"u"&&!isObject(localConfig.env))return error(`The ${code("env")} property in ${highlight(localConfig[import_client.fileNameSymbol])} needs to be an object`),1;if(typeof localConfig.build<"u"){if(!isObject(localConfig.build))return error(`The ${code("build")} property in ${highlight(localConfig[import_client.fileNameSymbol])} needs to be an object`),1;if(typeof localConfig.build.env<"u"&&!isObject(localConfig.build.env))return error(`The ${code("build.env")} property in ${highlight(localConfig[import_client.fileNameSymbol])} needs to be an object`),1}let meta=Object.assign({},parseMeta(localConfig.meta),cliMeta),gitMetadata=createGitMeta(join4(cwd,project.rootDirectory||""),project);gitMetadata.catch(()=>{});let deploymentEnv=Object.assign({},parseEnv(localConfig.env),parseEnv(parsedArguments.flags["--env"])),deploymentBuildEnv=Object.assign({},parseEnv(localConfig.build&&localConfig.build.env),parseEnv(parsedArguments.flags["--build-env"]));try{await addProcessEnv(log,deploymentEnv),await addProcessEnv(log,deploymentBuildEnv)}catch(err){return error((0,import_error_utils2.errorToString)(err)),1}let regionFlag=(parsedArguments.flags["--regions"]||"").split(",").map(s=>s.trim()).filter(Boolean),regions=regionFlag.length>0?regionFlag:localConfig.regions,currentTeam=org.type==="team"?org.id:void 0,now=new Now({client,currentTeam}),deployStamp=stamp_default(),localConfigurationOverrides=pickOverrides(localConfig),name=project.name;if(!name)throw new Error("`name` not found on project or provided by existing project");let noWait=!0;try{let autoAssignCustomDomains=parsedArguments.flags["--skip-domain"]?!1:void 0,createArgs={name,env:deploymentEnv,build:{env:deploymentBuildEnv},forceNew:parsedArguments.flags["--force"],withCache:parsedArguments.flags["--with-cache"],prebuilt:!0,vercelOutputDir:void 0,rootDirectory,quiet,nowConfig:{...localConfig,images:void 0},regions,meta,gitMetadata,deployStamp,target,skipAutoDetectionConfirmation:autoConfirm,noWait,withFullLogs:!1,autoAssignCustomDomains,manual:!0,jsonOutput:asJson,linkedProject:project};(!localConfig.builds||localConfig.builds.length===0)&&(createArgs.projectSettings={sourceFilesOutsideRootDirectory,rootDirectory,...localConfigurationOverrides});let{packageJson}=await(0,import_build_utils2.findPackageJson)(join4(cwd,project?.rootDirectory??""),!0,cwd),nodeVersion;if(packageJson?.engines?.node)try{let{range}=await(0,import_build_utils2.getSupportedNodeVersion)(packageJson.engines.node);nodeVersion=range}catch(error2){error2 instanceof Error&&output_manager_default.warn(error2.message)}createArgs.projectSettings||(createArgs.projectSettings={}),createArgs.projectSettings.nodeVersion=nodeVersion;let deployment=await createDeploy(client,now,contextName,cwd,createArgs,org,!project,parsedArchive?"tgz":void 0);if(deployment instanceof NotDomainOwner)return client.nonInteractive?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"not_domain_owner",message:deployment.message,next:[{command:withGlobalFlags(client,"deploy"),when:"retry deploy"}]},null,2)}
12
12
  `),1):(output_manager_default.error(deployment.message),1);if(deployment instanceof Error){let msg=deployment.message||"An unexpected error occurred while deploying your project";return client.nonInteractive?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"deploy_failed",message:msg,next:[{command:withGlobalFlags(client,"deploy"),when:"retry deploy"}]},null,2)}
@@ -20,7 +20,7 @@ ${err.stack}`),err instanceof UploadErrorMissingArchive)return output_manager_de
20
20
  `),telemetryClient.trackCliOptionName(parsedArguments.flags["--name"])),parsedArguments.flags["--no-clipboard"]&&(output_manager_default.print(`${prependEmoji(`The ${param("--no-clipboard")} option was ignored because it is the default behavior. Please remove it.`,emoji("warning"))}
21
21
  `),telemetryClient.trackCliFlagNoClipboard(!0));let isAnonymous=!client.authConfig.token&&!!parsedArguments.flags["--temporary"];if(!client.authConfig.token&&!isAnonymous)return output_manager_default.prettyError({message:`No existing credentials found. Run ${getCommandName("deploy --temporary")} to create a temporary deployment you can claim later, or ${getCommandName("login")} to log in.`,link:"https://err.sh/vercel/no-credentials-found"}),1;let target=parseTarget({flagName:"target",flags:parsedArguments.flags});if(telemetryClient.trackTargetEnvironment(target),!validateAnonymousTarget(isAnonymous,target))return 1;if(parsedArguments.flags["--skip-domain"]&&target!=="production")return output_manager_default.error("The `--skip-domain` option can only be used with production deployments. Use `--prod` or `--target=production`."),1;let parsedArchive=parsedArguments.flags["--archive"];if(typeof parsedArchive=="string"&&!(isValidArchive(parsedArchive)||parsedArchive===deprecatedArchiveSplitTgz))return output_manager_default.error(`Format must be one of: ${import_client.VALID_ARCHIVE_FORMATS.join(", ")}`),1;parsedArchive===deprecatedArchiveSplitTgz&&output_manager_default.print(`${prependEmoji(`${param("--archive=tgz")} now has the same behavior as ${param("--archive=split-tgz")}. Please use ${param("--archive=tgz")} instead.`,emoji("warning"))}
22
22
  `);let cliMeta=parseMeta(parsedArguments.flags["--meta"]),isV0=cliMeta.v0==="true";parsedArguments.flags["--dry"]||getGitExecutable(cwd);let anonymousSetup=await setupAnonymousDeployment(client,cwd,{isAnonymous,dryRun:!!parsedArguments.flags["--dry"]});if(typeof anonymousSetup=="number")return anonymousSetup;isAnonymous=anonymousSetup.isAnonymous;let anonymousLink=anonymousSetup.anonymousLink;anonymousLink&&(target="production");let link=anonymousLink??await ensureLink("deploy",client,cwd,{autoConfirm,projectName:projectNameOrId??parsedArguments.flags["--name"]??localConfig?.name,failIfNotFound:!!projectNameOrId,requireExistingLink:parsedArguments.flags["--dry"],allowOwnerLookupFallback:!0,skipRemoteLookup:!parsedArguments.flags["--dry"],v0:isV0});if(typeof link=="number")return link;let redeployCommand=withGlobalFlags(client,isAnonymous?"deploy --temporary":"deploy"),{org,project}=link,rootDirectory=project.rootDirectory,sourceFilesOutsideRootDirectory=project.sourceFilesOutsideRootDirectory??!0,projectCwd=cwd;link.repoRoot&&(cwd=link.repoRoot);let postDeployGuidanceEnabled=!anonymousLink&&(client.nonInteractive||!asJson)&&isGuidanceEnabled(client,parsedArguments.flags["--guidance"],!0),prebuilt=isAnonymous||!!parsedArguments.flags["--prebuilt"],vercelOutputDir,prebuiltBuild=null;if(prebuilt){vercelOutputDir=join4(cwd,".vercel/output"),link.repoRoot&&link.project.rootDirectory&&(vercelOutputDir=join4(cwd,link.project.rootDirectory,".vercel/output"));let prebuiltExists=await import_fs_extra4.default.pathExists(vercelOutputDir);if(isAnonymous&&!parsedArguments.flags["--prebuilt"]&&!parsedArguments.flags["--dry"]){let buildExitCode=await runImplicitBuild(client,cwd);if(buildExitCode!==0)return buildExitCode;prebuiltExists=await import_fs_extra4.default.pathExists(vercelOutputDir)}if(!prebuiltExists)return error(`The ${param("--prebuilt")} option was used, but no prebuilt output found in ".vercel/output". Run ${getCommandName("build")} to generate a local build.`),1;prebuiltBuild=await getPrebuiltJson(vercelOutputDir);let prebuiltError=prebuiltBuild?.error||prebuiltBuild?.builds?.find(build=>"error"in build)?.error;if(prebuiltError)return output_manager_default.log(`Prebuilt deployment cannot be created because ${getCommandName("build")} failed with error:
23
- `),prettyError(prebuiltError),1;let assumedTarget=target||"preview";if(prebuiltBuild?.target&&prebuiltBuild.target!==assumedTarget){let specifyTarget="";return prebuiltBuild.target==="production"&&(specifyTarget=" --prod"),prettyError({message:`The ${param("--prebuilt")} option was used with the target environment "${assumedTarget}", but the prebuilt output found in ".vercel/output" was built with target environment "${prebuiltBuild.target}". Please run ${getCommandName(`--prebuilt${specifyTarget}`)}.`,link:"https://vercel.link/prebuilt-environment-mismatch"}),1}}let orgSlug=isRemoteLookupSkippedLink(link)?void 0:org.slug,contextName=orgSlug??"the linked account",currentTeam=isOwnerLookupUnavailableLink(link)||org.type!=="team"?void 0:org.id;if(client.config.currentTeam=currentTeam,rootDirectory&&await validateRootDirectory(cwd,join4(cwd,rootDirectory),project&&orgSlug?`To change your Project Settings, go to https://vercel.com/${orgSlug}/${project.name}/settings`:"")===!1)return 1;if(rootDirectory){let rootDirectoryPath=join4(cwd,rootDirectory);await compileVercelConfig(rootDirectoryPath);let rootDirectoryConfig=readLocalConfig(rootDirectoryPath);rootDirectoryConfig?(debug(`Read local config from root directory (${rootDirectory})`),localConfig=rootDirectoryConfig):localConfig&&output_manager_default.print(`${prependEmoji(`The ${highlight(localConfig[import_client.fileNameSymbol])} file should be inside of the provided root directory.`,emoji("warning"))}
23
+ `),prettyError(prebuiltError),1;let assumedTarget=target||"preview";if(prebuiltBuild?.target&&prebuiltBuild.target!==assumedTarget){let specifyTarget="";return prebuiltBuild.target==="production"&&(specifyTarget=" --prod"),prettyError({message:`The ${param("--prebuilt")} option was used with the target environment "${assumedTarget}", but the prebuilt output found in ".vercel/output" was built with target environment "${prebuiltBuild.target}". Please run ${getCommandName(`--prebuilt${specifyTarget}`)}.`,link:"https://vercel.link/prebuilt-environment-mismatch"}),1}}let orgSlug=isRemoteLookupSkippedLink(link)?void 0:org.slug,contextName=orgSlug??"the linked account",currentTeam=isOwnerLookupUnavailableLink(link)||org.type!=="team"?void 0:org.id;if(client.config.currentTeam=currentTeam,rootDirectory&&await validateRootDirectory(cwd,join4(cwd,rootDirectory),project&&orgSlug?`To change your Project Settings, go to https://vercel.com/${orgSlug}/${project.name}/settings`:"")===!1)return 1;if(!parsedArguments.flags["--dry"]&&!prebuilt&&await promptExperimentalServicesMigration({client,cwd:join4(cwd,rootDirectory||""),autoConfirm:!!parsedArguments.flags["--yes"],nonInteractive:client.nonInteractive})&&(localConfig=readLocalConfig(join4(cwd,rootDirectory||""))),rootDirectory){let rootDirectoryPath=join4(cwd,rootDirectory);await compileVercelConfig(rootDirectoryPath);let rootDirectoryConfig=readLocalConfig(rootDirectoryPath);rootDirectoryConfig?(debug(`Read local config from root directory (${rootDirectory})`),localConfig=rootDirectoryConfig):localConfig&&output_manager_default.print(`${prependEmoji(`The ${highlight(localConfig[import_client.fileNameSymbol])} file should be inside of the provided root directory.`,emoji("warning"))}
24
24
  `)}if(localConfig=localConfig||{},parsedArguments.flags["--dry"])try{let summary=await(0,import_client.inspectDeploymentFiles)({path:cwd,archive:parsedArchive?"tgz":void 0,debug:output_manager_default.isDebugEnabled(),prebuilt,vercelOutputDir,projectName:project.name,rootDirectory,bulkRedirectsPath:localConfig.bulkRedirectsPath}),{resolveDeploymentFrameworkPreset}=await import("../../chunks/resolve-deployment-framework-preset-XF3NJIDS.js"),framework=resolveDeploymentFrameworkPreset({localFramework:localConfig.framework,projectFramework:project.framework});return summary.warning&&printPrebuiltFilePathMapIgnoreWarning(summary.warning,telemetryClient),printDeploymentDryRun(client,summary,framework,asJson||!client.stdout.isTTY),0}catch(err){return printError(err),1}localConfig.name&&output_manager_default.print(`${prependEmoji(`The ${code("name")} property in ${highlight(localConfig[import_client.fileNameSymbol])} is deprecated (https://vercel.link/name-prop)`,emoji("warning"))}
25
25
  `);let isObject=item=>Object.prototype.toString.call(item)==="[object Object]";if(typeof localConfig.env<"u"&&!isObject(localConfig.env))return error(`The ${code("env")} property in ${highlight(localConfig[import_client.fileNameSymbol])} needs to be an object`),1;if(typeof localConfig.build<"u"){if(!isObject(localConfig.build))return error(`The ${code("build")} property in ${highlight(localConfig[import_client.fileNameSymbol])} needs to be an object`),1;if(typeof localConfig.build.env<"u"&&!isObject(localConfig.build.env))return error(`The ${code("build.env")} property in ${highlight(localConfig[import_client.fileNameSymbol])} needs to be an object`),1}let meta=Object.assign({},parseMeta(localConfig.meta),cliMeta),gitMetadata=createGitMeta(join4(cwd,project.rootDirectory||""),project);gitMetadata.catch(()=>{});let deploymentEnv=Object.assign({},parseEnv(localConfig.env),parseEnv(parsedArguments.flags["--env"])),deploymentBuildEnv=Object.assign({},parseEnv(localConfig.build&&localConfig.build.env),parseEnv(parsedArguments.flags["--build-env"]));try{await addProcessEnv(log,deploymentEnv),await addProcessEnv(log,deploymentBuildEnv)}catch(err){return error((0,import_error_utils2.errorToString)(err)),1}let regionFlag=(parsedArguments.flags["--regions"]||"").split(",").map(s=>s.trim()).filter(Boolean),regions=regionFlag.length>0?regionFlag:localConfig.regions,now=new Now({client,currentTeam}),deployStamp=stamp_default(),deployment=null,noWait=!!parsedArguments.flags["--no-wait"],withFullLogs=!!parsedArguments.flags["--logs"],localConfigurationOverrides=pickOverrides(localConfig),name=project.name;if(!name)throw new Error("`name` not found on project or provided by existing project");try{let autoAssignCustomDomains=parsedArguments.flags["--skip-domain"]?!1:void 0,createArgs={name,project:project.id,env:deploymentEnv,build:{env:deploymentBuildEnv},buildMachine,forceNew:parsedArguments.flags["--force"],withCache:parsedArguments.flags["--with-cache"],prebuilt,anonymous:isAnonymous,vercelOutputDir,rootDirectory,quiet,nowConfig:{...localConfig,images:void 0},regions,meta,gitMetadata,deployStamp,target,skipAutoDetectionConfirmation:autoConfirm||isAnonymous,noWait,withFullLogs,autoAssignCustomDomains,agentName:client.agentName,jsonOutput:asJson,linkedProject:project,linkedProjectIsPartial:isRemoteLookupSkippedLink(link)};(!localConfig.builds||localConfig.builds.length===0)&&(createArgs.projectSettings={sourceFilesOutsideRootDirectory,rootDirectory,...localConfigurationOverrides});let{packageJson}=await(0,import_build_utils2.findPackageJson)(join4(cwd,project?.rootDirectory??""),!0,cwd),nodeVersion;if(packageJson?.engines?.node)try{let{range}=await(0,import_build_utils2.getSupportedNodeVersion)(packageJson.engines.node);nodeVersion=range}catch(error2){error2 instanceof Error&&output_manager_default.warn(error2.message)}if(createArgs.projectSettings||(createArgs.projectSettings={}),isAnonymous&&!Object.hasOwn(localConfig,"framework")&&createArgs.projectSettings.framework===void 0&&prebuiltBuild?.detectedFramework?.status==="detected"&&prebuiltBuild.detectedFramework.slug&&(createArgs.projectSettings.framework=prebuiltBuild.detectedFramework.slug),createArgs.projectSettings.nodeVersion=nodeVersion,deployment=await createDeploy(client,now,contextName,cwd,createArgs,org,!project,parsedArchive?"tgz":void 0),deployment&&!(deployment instanceof Error)&&telemetryClient.trackDeploymentId(deployment.id),deployment instanceof NotDomainOwner)return client.nonInteractive?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"not_domain_owner",message:deployment.message,next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
26
26
  `),1):(output_manager_default.error(deployment.message),1);if(deployment instanceof Error){let msg=deployment.message||"An unexpected error occurred while deploying your project";return client.nonInteractive?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"deploy_failed",message:msg,next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
@@ -31,9 +31,9 @@ ${err.stack}`),err instanceof UploadErrorMissingArchive)return output_manager_de
31
31
  `),1):(error("Uploading failed. Please try again."),1)}catch(err){(0,import_error_utils2.isError)(err)&&debug(`Error: ${err}
32
32
  ${err.stack}`);let anonymousExitCode=await handleAnonymousDeploymentError({client,cwd,error:err,link:anonymousLink,isV0,retry:()=>handleDefaultDeploy(client,telemetryClient)});if(anonymousExitCode!==void 0)return anonymousExitCode;if(err instanceof UploadErrorMissingArchive)return client.nonInteractive?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"missing_archive",message:err.message,next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
33
33
  `),1):(output_manager_default.prettyError(err),1);if(err instanceof NotDomainOwner)return client.nonInteractive?(client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"not_domain_owner",message:err.message,next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
34
- `),1):(output_manager_default.error(err.message),1);if(err instanceof DomainNotFound&&err.meta&&err.meta.domain){output_manager_default.debug(`The domain ${err.meta.domain} was not found, trying to purchase it`);let{default:purchaseDomainIfAvailable}=await import("../../chunks/purchase-domain-if-available-5HP57BPC.js"),purchase=await purchaseDomainIfAvailable(client,err.meta.domain,contextName);return purchase===!0?(output_manager_default.success(`Successfully purchased the domain ${err.meta.domain}!`),0):purchase===!1||purchase instanceof UserAborted?(handleCreateDeployError(deployment,localConfig),1):(handleCreateDeployError(purchase,localConfig),1)}if(err instanceof DomainNotFound||err instanceof DomainNotVerified||err instanceof NotDomainOwner||err instanceof DomainPermissionDenied||err instanceof DomainVerificationFailed||err instanceof SchemaValidationFailed||err instanceof InvalidDomain||err instanceof DeploymentNotFound||err instanceof BuildsRateLimited||err instanceof DeploymentsRateLimited||err instanceof AliasDomainConfigured||err instanceof MissingBuildScript||err instanceof ConflictingFilePath||err instanceof ConflictingPathSegment||err instanceof ConflictingConfigFiles)return client.nonInteractive&&client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"deploy_failed",message:err instanceof Error?err.message:String(err),next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
34
+ `),1):(output_manager_default.error(err.message),1);if(err instanceof DomainNotFound&&err.meta&&err.meta.domain){output_manager_default.debug(`The domain ${err.meta.domain} was not found, trying to purchase it`);let{default:purchaseDomainIfAvailable}=await import("../../chunks/purchase-domain-if-available-74ZYVVBE.js"),purchase=await purchaseDomainIfAvailable(client,err.meta.domain,contextName);return purchase===!0?(output_manager_default.success(`Successfully purchased the domain ${err.meta.domain}!`),0):purchase===!1||purchase instanceof UserAborted?(handleCreateDeployError(deployment,localConfig),1):(handleCreateDeployError(purchase,localConfig),1)}if(err instanceof DomainNotFound||err instanceof DomainNotVerified||err instanceof NotDomainOwner||err instanceof DomainPermissionDenied||err instanceof DomainVerificationFailed||err instanceof SchemaValidationFailed||err instanceof InvalidDomain||err instanceof DeploymentNotFound||err instanceof BuildsRateLimited||err instanceof DeploymentsRateLimited||err instanceof AliasDomainConfigured||err instanceof MissingBuildScript||err instanceof ConflictingFilePath||err instanceof ConflictingPathSegment||err instanceof ConflictingConfigFiles)return client.nonInteractive&&client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"deploy_failed",message:err instanceof Error?err.message:String(err),next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
35
35
  `),handleCreateDeployError(err,localConfig),1;if(err instanceof BuildError){if(now.url)try{let failedDeployment=await getDeployment(client,contextName,now.url);if(asJson)output_manager_default.stopSpinner(),client.stdout.write(`${JSON.stringify(getDeploymentOutputJson(failedDeployment,client.apiUrl,{name:"BUILD_ERROR",message:err.message}),null,2)}
36
- `);else if(withFullLogs===!1){let{displayBuildLogsUntilFinalError}=await import("../../chunks/logs-HXT43YFY.js");await displayBuildLogsUntilFinalError(client,failedDeployment,err.message)}}catch{asJson?(output_manager_default.stopSpinner(),client.stdout.write(`${JSON.stringify({error:{name:"BUILD_ERROR",message:err.message},url:`https://${now.url}`},null,2)}
36
+ `);else if(withFullLogs===!1){let{displayBuildLogsUntilFinalError}=await import("../../chunks/logs-3LTU2N25.js");await displayBuildLogsUntilFinalError(client,failedDeployment,err.message)}}catch{asJson?(output_manager_default.stopSpinner(),client.stdout.write(`${JSON.stringify({error:{name:"BUILD_ERROR",message:err.message},url:`https://${now.url}`},null,2)}
37
37
  `)):(output_manager_default.log(`To check build logs run: ${getCommandName(`inspect ${now.url} --logs`)}`),output_manager_default.log(`Or inspect them in your browser at https://${now.url}/_logs`))}return 1}if(isAPIError(err)&&err.code==="size_limit_exceeded"){let{sizeLimit=0}=err,message=`File size limit exceeded (${(0,import_bytes.default)(sizeLimit)})`;return client.nonInteractive&&client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"size_limit_exceeded",message,next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
38
38
  `),error(message),1}return client.nonInteractive&&client.stdout.write(`${JSON.stringify({status:AGENT_STATUS.ERROR,reason:"deploy_failed",message:err instanceof Error?err.message:String(err),next:[{command:redeployCommand,when:"retry deploy"}]},null,2)}
39
39
  `),printError(err),1}let gitConnectCommand=postDeployGuidanceEnabled?await getGitConnectRecommendation(client,projectCwd,project,{alreadyOffered:"gitConnectOffered"in link?link.gitConnectOffered:!1}):void 0;if(asJson){output_manager_default.stopSpinner();let anonymousUrl=anonymousLink?deployment.alias?.[0]:void 0,deploymentJson={...getDeploymentOutputJson(deployment,client.apiUrl),...anonymousLink?{expiresAt:anonymousLink.expiresAt,claimUrl:anonymousLink.claimUrl}:{},...anonymousUrl?{url:`https://${anonymousUrl}`,inspectorUrl:null}:{}},isImplicitProduction=deployment.target==="production"&&!target,payload=client.nonInteractive?{status:AGENT_STATUS.OK,deployment:deploymentJson,message:anonymousLink?`Anonymous deployment ${anonymousUrl??deployment.url} ready. It expires in ${(0,import_ms.default)(anonymousLink.expiresAt-Date.now(),{long:!0})}. Claim it at ${anonymousLink.claimUrl} to keep it.`:`Deployment ${deployment.url} ready.`,...isImplicitProduction?{hint:"This is the project\u2019s first deployment, so it was assigned to production. Future deployments will be preview deployments unless you use --prod."}:{},next:anonymousLink?[{command:redeployCommand,when:"Redeploy changes to the same anonymous deployment"},{command:withGlobalFlags(client,"login"),when:"Create an account to keep deploying"}]:[...gitConnectCommand?[{command:gitConnectCommand,when:"Automatically deploy changes on every push"}]:[],{command:`${packageName} curl https://${deployment.url}`,when:"Verify deployment, including when Deployment Protection is enabled"},{command:withGlobalFlags(client,`inspect ${deployment.url}`),when:"Inspect deployment"},...isImplicitProduction?[]:[{command:withGlobalFlags(client,"deploy --prod"),when:"Promote to production"}]]}:deploymentJson;return client.stdout.write(`${JSON.stringify(payload,null,2)}
@@ -4,7 +4,7 @@ import { dirname as __dirname_ } from 'node:path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
- import{displayDetectedServices,readConfig,setupAndLink}from"../../chunks/chunk-3RLCABDN.js";import{tryDetectServices}from"../../chunks/chunk-JWC64GEW.js";import"../../chunks/chunk-7XSHE5SA.js";import"../../chunks/chunk-7RR7MIMT.js";import"../../chunks/chunk-6LE44WCK.js";import"../../chunks/chunk-QHJLRTVY.js";import{getUpdateCommand}from"../../chunks/chunk-T2ECF6MX.js";import"../../chunks/chunk-3VRLKRIC.js";import"../../chunks/chunk-4WSAOLBH.js";import"../../chunks/chunk-2H77IRPI.js";import"../../chunks/chunk-OHDEHZLX.js";import"../../chunks/chunk-M2W3HKV3.js";import"../../chunks/chunk-PHW54NU5.js";import{highlight}from"../../chunks/chunk-J3U3L45Y.js";import{getGlobalPathConfig}from"../../chunks/chunk-KBKN7EI7.js";import{getLocalPathConfig}from"../../chunks/chunk-GQQKAFGS.js";import"../../chunks/chunk-P2O5DOYE.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{DEV_QUEUE_API_PREFIX,DEV_QUEUE_DEFAULT_PORT,DEV_QUEUE_PROXY_PREFIX,DEV_RESOURCE_TOKEN,DEV_RUNTIME_CACHE_DEFAULT_PORT,devCommand,getDevQueueEnv,isValidDevResourceHost,listenOnDevResourcePort}from"../../chunks/chunk-AZ6NRDHG.js";import{require_dist as require_dist2}from"../../chunks/chunk-FAW6NBLQ.js";import{import_write_build_result,require_detect_builders_with_services,require_get_files,require_mime_types,require_service_schedules}from"../../chunks/chunk-JOV4G2LZ.js";import{validateConfig}from"../../chunks/chunk-EYXFDREA.js";import{importBuilders,require_npa}from"../../chunks/chunk-VG2V4NHC.js";import"../../chunks/chunk-CJPM2DXZ.js";import{require_fast_deep_equal}from"../../chunks/chunk-4MZK6JT6.js";import{require_brace_expansion,require_dist as require_dist3,require_dist2 as require_dist4,require_minimatch}from"../../chunks/chunk-GJTA7DJO.js";import"../../chunks/chunk-KKS7XWEX.js";import{readJSONFile}from"../../chunks/chunk-BSOZ3UP2.js";import{pickOverrides,require_dist as require_dist5}from"../../chunks/chunk-WXT35K53.js";import"../../chunks/chunk-K2RAW5DI.js";import{require_main}from"../../chunks/chunk-CLKTBUI7.js";import"../../chunks/chunk-NNP5NITU.js";import"../../chunks/chunk-GHM7V3GG.js";import{require_inherits}from"../../chunks/chunk-L3JDEHCQ.js";import"../../chunks/chunk-QR7QPUFN.js";import"../../chunks/chunk-HWWHR7H3.js";import"../../chunks/chunk-2I64AYHG.js";import"../../chunks/chunk-SOJCELXH.js";import{require_ms}from"../../chunks/chunk-QTKJC2O5.js";import{VERCEL_OIDC_TOKEN,pullEnvRecords}from"../../chunks/chunk-W27LUVFI.js";import"../../chunks/chunk-GPX6W4GB.js";import"../../chunks/chunk-WHYH7DVI.js";import"../../chunks/chunk-ULLWCOYC.js";import{require_frameworks}from"../../chunks/chunk-KK4AJES5.js";import{require_json_parse_better_errors}from"../../chunks/chunk-N6CNMMSZ.js";import"../../chunks/chunk-VIR3KDCQ.js";import"../../chunks/chunk-UDOFIJ7K.js";import{printProjectNotFoundError}from"../../chunks/chunk-CKX6OH4B.js";import"../../chunks/chunk-EQP3SW72.js";import"../../chunks/chunk-KUVMCIR4.js";import{param}from"../../chunks/chunk-SXUEGVWB.js";import"../../chunks/chunk-6BZCSVH6.js";import{help}from"../../chunks/chunk-V6IKQCOT.js";import"../../chunks/chunk-6TAQ6OWD.js";import"../../chunks/chunk-R3B67TKQ.js";import"../../chunks/chunk-GHULCYAR.js";import"../../chunks/chunk-UXCTETFN.js";import"../../chunks/chunk-WPS6JZF6.js";import{detectExplicitScope}from"../../chunks/chunk-77GUJ4JC.js";import{TelemetryClient}from"../../chunks/chunk-A5VLP25I.js";import"../../chunks/chunk-RCTYVKM5.js";import"../../chunks/chunk-5XJNPXQK.js";import{printError}from"../../chunks/chunk-TBBU37TD.js";import{parseArguments}from"../../chunks/chunk-T4AZ3U7O.js";import{directFetch}from"../../chunks/chunk-MY4MONOH.js";import{isNativeBinaryInstall}from"../../chunks/chunk-7T6TL3GQ.js";import{VERCEL_DIR,findRepoRoot,getLinkedProject,getVercelDirectory,require_lib,require_pluralize,resolveProjectCwd}from"../../chunks/chunk-UB37A37M.js";import"../../chunks/chunk-F2ZWW2IO.js";import"../../chunks/chunk-B4ATVYZW.js";import"../../chunks/chunk-PPCFQQSU.js";import"../../chunks/chunk-OSCCYU74.js";import{buildCommandWithYes,outputActionRequired}from"../../chunks/chunk-BX5KDMLT.js";import{getFlagsSpecification}from"../../chunks/chunk-JAJW3P42.js";import{printAlignedLabel}from"../../chunks/chunk-YMM3VY3J.js";import"../../chunks/chunk-V5DCSHYJ.js";import"../../chunks/chunk-VOZEB6PD.js";import{CantParseJSONFile,LambdaSizeExceededError,MissingDotenvVarsError,NowError,require_bytes}from"../../chunks/chunk-LKI6FRNM.js";import{cmd,getCommandName,getCommandNamePlain,getTitleName}from"../../chunks/chunk-FI772UVH.js";import{Diagnostic,defineDiagnostics,link_default,output_manager_default,require_build_utils}from"../../chunks/chunk-EWWFNMPZ.js";import{require_dist}from"../../chunks/chunk-QGIQK47P.js";import"../../chunks/chunk-BRK4OB4B.js";import{pkg_default}from"../../chunks/chunk-AVSPFBLM.js";import"../../chunks/chunk-XCJDGQO7.js";import"../../chunks/chunk-YPTLSODC.js";import"../../chunks/chunk-7HL2RPUO.js";import{require_source}from"../../chunks/chunk-U7KCDTCH.js";import{require_supports_color}from"../../chunks/chunk-N3ZZ7FHQ.js";import"../../chunks/chunk-GU6VIFR5.js";import{__commonJS,__require,__toESM}from"../../chunks/chunk-6L236MNA.js";var require_bytes2=__commonJS({"../../node_modules/.pnpm/bytes@3.1.0/node_modules/bytes/index.js"(exports2,module2){"use strict";module2.exports=bytes2;module2.exports.format=format;module2.exports.parse=parse2;var formatThousandsRegExp=/\B(?=(\d{3})+(?!\d))/g,formatDecimalsRegExp=/(?:\.0*|(\.[^0]+)0+)$/,map={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},parseRegExp=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function bytes2(value,options){return typeof value=="string"?parse2(value):typeof value=="number"?format(value,options):null}function format(value,options){if(!Number.isFinite(value))return null;var mag=Math.abs(value),thousandsSeparator=options&&options.thousandsSeparator||"",unitSeparator=options&&options.unitSeparator||"",decimalPlaces=options&&options.decimalPlaces!==void 0?options.decimalPlaces:2,fixedDecimals=!!(options&&options.fixedDecimals),unit=options&&options.unit||"";(!unit||!map[unit.toLowerCase()])&&(mag>=map.pb?unit="PB":mag>=map.tb?unit="TB":mag>=map.gb?unit="GB":mag>=map.mb?unit="MB":mag>=map.kb?unit="KB":unit="B");var val=value/map[unit.toLowerCase()],str=val.toFixed(decimalPlaces);return fixedDecimals||(str=str.replace(formatDecimalsRegExp,"$1")),thousandsSeparator&&(str=str.replace(formatThousandsRegExp,thousandsSeparator)),str+unitSeparator+unit}function parse2(val){if(typeof val=="number"&&!isNaN(val))return val;if(typeof val!="string")return null;var results=parseRegExp.exec(val),floatValue,unit="b";return results?(floatValue=parseFloat(results[1]),unit=results[4].toLowerCase()):(floatValue=parseInt(val,10),unit="b"),Math.floor(map[unit]*floatValue)}}});var require_callsite_tostring=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/callsite-tostring.js"(exports2,module2){"use strict";module2.exports=callSiteToString2;function callSiteFileLocation(callSite){var fileName,fileLocation="";if(callSite.isNative()?fileLocation="native":callSite.isEval()?(fileName=callSite.getScriptNameOrSourceURL(),fileName||(fileLocation=callSite.getEvalOrigin())):fileName=callSite.getFileName(),fileName){fileLocation+=fileName;var lineNumber=callSite.getLineNumber();if(lineNumber!=null){fileLocation+=":"+lineNumber;var columnNumber=callSite.getColumnNumber();columnNumber&&(fileLocation+=":"+columnNumber)}}return fileLocation||"unknown source"}function callSiteToString2(callSite){var addSuffix=!0,fileLocation=callSiteFileLocation(callSite),functionName=callSite.getFunctionName(),isConstructor=callSite.isConstructor(),isMethodCall=!(callSite.isToplevel()||isConstructor),line="";if(isMethodCall){var methodName=callSite.getMethodName(),typeName=getConstructorName(callSite);functionName?(typeName&&functionName.indexOf(typeName)!==0&&(line+=typeName+"."),line+=functionName,methodName&&functionName.lastIndexOf("."+methodName)!==functionName.length-methodName.length-1&&(line+=" [as "+methodName+"]")):line+=typeName+"."+(methodName||"<anonymous>")}else isConstructor?line+="new "+(functionName||"<anonymous>"):functionName?line+=functionName:(addSuffix=!1,line+=fileLocation);return addSuffix&&(line+=" ("+fileLocation+")"),line}function getConstructorName(obj){var receiver=obj.receiver;return receiver.constructor&&receiver.constructor.name||null}}});var require_event_listener_count=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/event-listener-count.js"(exports2,module2){"use strict";module2.exports=eventListenerCount2;function eventListenerCount2(emitter,type){return emitter.listeners(type).length}}});var require_compat=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/index.js"(exports2,module2){"use strict";var EventEmitter=__require("events").EventEmitter;lazyProperty(module2.exports,"callSiteToString",function(){var limit=Error.stackTraceLimit,obj={},prep=Error.prepareStackTrace;function prepareObjectStackTrace2(obj2,stack3){return stack3}Error.prepareStackTrace=prepareObjectStackTrace2,Error.stackTraceLimit=2,Error.captureStackTrace(obj);var stack2=obj.stack.slice();return Error.prepareStackTrace=prep,Error.stackTraceLimit=limit,stack2[0].toString?toString:require_callsite_tostring()});lazyProperty(module2.exports,"eventListenerCount",function(){return EventEmitter.listenerCount||require_event_listener_count()});function lazyProperty(obj,prop,getter){function get(){var val=getter();return Object.defineProperty(obj,prop,{configurable:!0,enumerable:!0,value:val}),val}Object.defineProperty(obj,prop,{configurable:!0,enumerable:!0,get})}function toString(obj){return obj.toString()}}});var require_depd=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/index.js"(exports,module){var callSiteToString=require_compat().callSiteToString,eventListenerCount=require_compat().eventListenerCount,relative=__require("path").relative;module.exports=depd;var basePath=process.cwd();function containsNamespace(str,namespace){for(var vals=str.split(/[ ,]+/),ns=String(namespace).toLowerCase(),i=0;i<vals.length;i++){var val=vals[i];if(val&&(val==="*"||val.toLowerCase()===ns))return!0}return!1}function convertDataDescriptorToAccessor(obj,prop,message2){var descriptor=Object.getOwnPropertyDescriptor(obj,prop),value=descriptor.value;return descriptor.get=function(){return value},descriptor.writable&&(descriptor.set=function(val){return value=val}),delete descriptor.value,delete descriptor.writable,Object.defineProperty(obj,prop,descriptor),descriptor}function createArgumentsString(arity){for(var str="",i=0;i<arity;i++)str+=", arg"+i;return str.substr(2)}function createStackString(stack2){var str=this.name+": "+this.namespace;this.message&&(str+=" deprecated "+this.message);for(var i=0;i<stack2.length;i++)str+=`
7
+ import{displayDetectedServices,readConfig,setupAndLink}from"../../chunks/chunk-4YVA7TSY.js";import{tryDetectServices}from"../../chunks/chunk-QI3JSWD6.js";import"../../chunks/chunk-WDVSYGZS.js";import"../../chunks/chunk-7RR7MIMT.js";import"../../chunks/chunk-6LE44WCK.js";import"../../chunks/chunk-QHJLRTVY.js";import{getUpdateCommand}from"../../chunks/chunk-5YA32S6K.js";import"../../chunks/chunk-Z6LKARXP.js";import"../../chunks/chunk-4WSAOLBH.js";import"../../chunks/chunk-2H77IRPI.js";import"../../chunks/chunk-OHDEHZLX.js";import"../../chunks/chunk-M2W3HKV3.js";import"../../chunks/chunk-PHW54NU5.js";import{highlight}from"../../chunks/chunk-J3U3L45Y.js";import{getGlobalPathConfig}from"../../chunks/chunk-KBKN7EI7.js";import{getLocalPathConfig}from"../../chunks/chunk-DL665Q3Z.js";import{promptExperimentalServicesMigration}from"../../chunks/chunk-PS645CWM.js";import"../../chunks/chunk-P2O5DOYE.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{DEV_QUEUE_API_PREFIX,DEV_QUEUE_DEFAULT_PORT,DEV_QUEUE_PROXY_PREFIX,DEV_RESOURCE_TOKEN,DEV_RUNTIME_CACHE_DEFAULT_PORT,devCommand,getDevQueueEnv,isValidDevResourceHost,listenOnDevResourcePort}from"../../chunks/chunk-AZ6NRDHG.js";import{require_dist as require_dist2}from"../../chunks/chunk-FAW6NBLQ.js";import{import_write_build_result,require_detect_builders_with_services,require_get_files,require_mime_types,require_service_schedules}from"../../chunks/chunk-NZKBBY2A.js";import{importBuilders,require_npa}from"../../chunks/chunk-TOGR3HUB.js";import"../../chunks/chunk-CJPM2DXZ.js";import{require_fast_deep_equal}from"../../chunks/chunk-4MZK6JT6.js";import"../../chunks/chunk-KKS7XWEX.js";import{readJSONFile}from"../../chunks/chunk-TJKM3345.js";import{pickOverrides,require_dist as require_dist5}from"../../chunks/chunk-UUM2N6IG.js";import"../../chunks/chunk-V6MR45PD.js";import"../../chunks/chunk-HWWHR7H3.js";import"../../chunks/chunk-2I64AYHG.js";import{require_ms}from"../../chunks/chunk-QTKJC2O5.js";import{validateConfig}from"../../chunks/chunk-FB5TMOLQ.js";import{require_brace_expansion,require_dist as require_dist3,require_dist2 as require_dist4,require_minimatch}from"../../chunks/chunk-Z7PBDQNR.js";import{require_main}from"../../chunks/chunk-73G2MHUX.js";import"../../chunks/chunk-GHM7V3GG.js";import{require_inherits}from"../../chunks/chunk-L3JDEHCQ.js";import"../../chunks/chunk-QR7QPUFN.js";import{VERCEL_OIDC_TOKEN,pullEnvRecords}from"../../chunks/chunk-JGPECEYY.js";import"../../chunks/chunk-66RYR2GI.js";import"../../chunks/chunk-WHYH7DVI.js";import"../../chunks/chunk-ULLWCOYC.js";import{require_json_parse_better_errors}from"../../chunks/chunk-N6CNMMSZ.js";import"../../chunks/chunk-VIR3KDCQ.js";import"../../chunks/chunk-OI263FBO.js";import"../../chunks/chunk-SFTXBTMI.js";import{printProjectNotFoundError}from"../../chunks/chunk-GR3DLKYP.js";import"../../chunks/chunk-EQP3SW72.js";import{require_frameworks}from"../../chunks/chunk-KK4AJES5.js";import"../../chunks/chunk-KUVMCIR4.js";import"../../chunks/chunk-SOJCELXH.js";import{param}from"../../chunks/chunk-SXUEGVWB.js";import"../../chunks/chunk-6BZCSVH6.js";import{help}from"../../chunks/chunk-V6IKQCOT.js";import"../../chunks/chunk-6TAQ6OWD.js";import"../../chunks/chunk-R3B67TKQ.js";import"../../chunks/chunk-GHULCYAR.js";import"../../chunks/chunk-UXCTETFN.js";import"../../chunks/chunk-WPS6JZF6.js";import{detectExplicitScope}from"../../chunks/chunk-32QBGZ2Z.js";import{TelemetryClient}from"../../chunks/chunk-A5VLP25I.js";import"../../chunks/chunk-RCTYVKM5.js";import"../../chunks/chunk-5XJNPXQK.js";import{printError}from"../../chunks/chunk-TBBU37TD.js";import{parseArguments}from"../../chunks/chunk-T4AZ3U7O.js";import{directFetch}from"../../chunks/chunk-MY4MONOH.js";import{isNativeBinaryInstall}from"../../chunks/chunk-7T6TL3GQ.js";import{VERCEL_DIR,findRepoRoot,getLinkedProject,getVercelDirectory,require_lib,require_pluralize,resolveProjectCwd}from"../../chunks/chunk-64NJHVA3.js";import"../../chunks/chunk-F2ZWW2IO.js";import"../../chunks/chunk-B4ATVYZW.js";import"../../chunks/chunk-PPCFQQSU.js";import"../../chunks/chunk-OSCCYU74.js";import{buildCommandWithYes,outputActionRequired}from"../../chunks/chunk-BX5KDMLT.js";import{getFlagsSpecification}from"../../chunks/chunk-JAJW3P42.js";import{printAlignedLabel}from"../../chunks/chunk-YMM3VY3J.js";import"../../chunks/chunk-V5DCSHYJ.js";import"../../chunks/chunk-VOZEB6PD.js";import{CantParseJSONFile,LambdaSizeExceededError,MissingDotenvVarsError,NowError,require_bytes}from"../../chunks/chunk-LKI6FRNM.js";import{cmd,getCommandName,getCommandNamePlain,getTitleName}from"../../chunks/chunk-FI772UVH.js";import{Diagnostic,defineDiagnostics,link_default,output_manager_default,require_build_utils}from"../../chunks/chunk-EWWFNMPZ.js";import{require_dist}from"../../chunks/chunk-QGIQK47P.js";import"../../chunks/chunk-BRK4OB4B.js";import{pkg_default}from"../../chunks/chunk-AVSPFBLM.js";import"../../chunks/chunk-XCJDGQO7.js";import"../../chunks/chunk-YPTLSODC.js";import"../../chunks/chunk-7HL2RPUO.js";import{require_source}from"../../chunks/chunk-U7KCDTCH.js";import{require_supports_color}from"../../chunks/chunk-N3ZZ7FHQ.js";import"../../chunks/chunk-GU6VIFR5.js";import{__commonJS,__require,__toESM}from"../../chunks/chunk-6L236MNA.js";var require_bytes2=__commonJS({"../../node_modules/.pnpm/bytes@3.1.0/node_modules/bytes/index.js"(exports2,module2){"use strict";module2.exports=bytes2;module2.exports.format=format;module2.exports.parse=parse2;var formatThousandsRegExp=/\B(?=(\d{3})+(?!\d))/g,formatDecimalsRegExp=/(?:\.0*|(\.[^0]+)0+)$/,map={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},parseRegExp=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function bytes2(value,options){return typeof value=="string"?parse2(value):typeof value=="number"?format(value,options):null}function format(value,options){if(!Number.isFinite(value))return null;var mag=Math.abs(value),thousandsSeparator=options&&options.thousandsSeparator||"",unitSeparator=options&&options.unitSeparator||"",decimalPlaces=options&&options.decimalPlaces!==void 0?options.decimalPlaces:2,fixedDecimals=!!(options&&options.fixedDecimals),unit=options&&options.unit||"";(!unit||!map[unit.toLowerCase()])&&(mag>=map.pb?unit="PB":mag>=map.tb?unit="TB":mag>=map.gb?unit="GB":mag>=map.mb?unit="MB":mag>=map.kb?unit="KB":unit="B");var val=value/map[unit.toLowerCase()],str=val.toFixed(decimalPlaces);return fixedDecimals||(str=str.replace(formatDecimalsRegExp,"$1")),thousandsSeparator&&(str=str.replace(formatThousandsRegExp,thousandsSeparator)),str+unitSeparator+unit}function parse2(val){if(typeof val=="number"&&!isNaN(val))return val;if(typeof val!="string")return null;var results=parseRegExp.exec(val),floatValue,unit="b";return results?(floatValue=parseFloat(results[1]),unit=results[4].toLowerCase()):(floatValue=parseInt(val,10),unit="b"),Math.floor(map[unit]*floatValue)}}});var require_callsite_tostring=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/callsite-tostring.js"(exports2,module2){"use strict";module2.exports=callSiteToString2;function callSiteFileLocation(callSite){var fileName,fileLocation="";if(callSite.isNative()?fileLocation="native":callSite.isEval()?(fileName=callSite.getScriptNameOrSourceURL(),fileName||(fileLocation=callSite.getEvalOrigin())):fileName=callSite.getFileName(),fileName){fileLocation+=fileName;var lineNumber=callSite.getLineNumber();if(lineNumber!=null){fileLocation+=":"+lineNumber;var columnNumber=callSite.getColumnNumber();columnNumber&&(fileLocation+=":"+columnNumber)}}return fileLocation||"unknown source"}function callSiteToString2(callSite){var addSuffix=!0,fileLocation=callSiteFileLocation(callSite),functionName=callSite.getFunctionName(),isConstructor=callSite.isConstructor(),isMethodCall=!(callSite.isToplevel()||isConstructor),line="";if(isMethodCall){var methodName=callSite.getMethodName(),typeName=getConstructorName(callSite);functionName?(typeName&&functionName.indexOf(typeName)!==0&&(line+=typeName+"."),line+=functionName,methodName&&functionName.lastIndexOf("."+methodName)!==functionName.length-methodName.length-1&&(line+=" [as "+methodName+"]")):line+=typeName+"."+(methodName||"<anonymous>")}else isConstructor?line+="new "+(functionName||"<anonymous>"):functionName?line+=functionName:(addSuffix=!1,line+=fileLocation);return addSuffix&&(line+=" ("+fileLocation+")"),line}function getConstructorName(obj){var receiver=obj.receiver;return receiver.constructor&&receiver.constructor.name||null}}});var require_event_listener_count=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/event-listener-count.js"(exports2,module2){"use strict";module2.exports=eventListenerCount2;function eventListenerCount2(emitter,type){return emitter.listeners(type).length}}});var require_compat=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/lib/compat/index.js"(exports2,module2){"use strict";var EventEmitter=__require("events").EventEmitter;lazyProperty(module2.exports,"callSiteToString",function(){var limit=Error.stackTraceLimit,obj={},prep=Error.prepareStackTrace;function prepareObjectStackTrace2(obj2,stack3){return stack3}Error.prepareStackTrace=prepareObjectStackTrace2,Error.stackTraceLimit=2,Error.captureStackTrace(obj);var stack2=obj.stack.slice();return Error.prepareStackTrace=prep,Error.stackTraceLimit=limit,stack2[0].toString?toString:require_callsite_tostring()});lazyProperty(module2.exports,"eventListenerCount",function(){return EventEmitter.listenerCount||require_event_listener_count()});function lazyProperty(obj,prop,getter){function get(){var val=getter();return Object.defineProperty(obj,prop,{configurable:!0,enumerable:!0,value:val}),val}Object.defineProperty(obj,prop,{configurable:!0,enumerable:!0,get})}function toString(obj){return obj.toString()}}});var require_depd=__commonJS({"../../node_modules/.pnpm/depd@1.1.2/node_modules/depd/index.js"(exports,module){var callSiteToString=require_compat().callSiteToString,eventListenerCount=require_compat().eventListenerCount,relative=__require("path").relative;module.exports=depd;var basePath=process.cwd();function containsNamespace(str,namespace){for(var vals=str.split(/[ ,]+/),ns=String(namespace).toLowerCase(),i=0;i<vals.length;i++){var val=vals[i];if(val&&(val==="*"||val.toLowerCase()===ns))return!0}return!1}function convertDataDescriptorToAccessor(obj,prop,message2){var descriptor=Object.getOwnPropertyDescriptor(obj,prop),value=descriptor.value;return descriptor.get=function(){return value},descriptor.writable&&(descriptor.set=function(val){return value=val}),delete descriptor.value,delete descriptor.writable,Object.defineProperty(obj,prop,descriptor),descriptor}function createArgumentsString(arity){for(var str="",i=0;i<arity;i++)str+=", arg"+i;return str.substr(2)}function createStackString(stack2){var str=this.name+": "+this.namespace;this.message&&(str+=" deprecated "+this.message);for(var i=0;i<stack2.length;i++)str+=`
8
8
  at `+callSiteToString(stack2[i]);return str}function depd(namespace){if(!namespace)throw new TypeError("argument namespace is required");var stack2=getStack(),site2=callSiteLocation(stack2[1]),file=site2[0];function deprecate2(message2){log.call(deprecate2,message2)}return deprecate2._file=file,deprecate2._ignored=isignored(namespace),deprecate2._namespace=namespace,deprecate2._traced=istraced(namespace),deprecate2._warned=Object.create(null),deprecate2.function=wrapfunction,deprecate2.property=wrapproperty,deprecate2}function isignored(namespace){if(process.noDeprecation)return!0;var str=process.env.NO_DEPRECATION||"";return containsNamespace(str,namespace)}function istraced(namespace){if(process.traceDeprecation)return!0;var str=process.env.TRACE_DEPRECATION||"";return containsNamespace(str,namespace)}function log(message2,site2){var haslisteners=eventListenerCount(process,"deprecation")!==0;if(!(!haslisteners&&this._ignored)){var caller,callFile,callSite,depSite,i=0,seen=!1,stack2=getStack(),file=this._file;for(site2?(depSite=site2,callSite=callSiteLocation(stack2[1]),callSite.name=depSite.name,file=callSite[0]):(i=2,depSite=callSiteLocation(stack2[i]),callSite=depSite);i<stack2.length;i++)if(caller=callSiteLocation(stack2[i]),callFile=caller[0],callFile===file)seen=!0;else if(callFile===this._file)file=this._file;else if(seen)break;var key=caller?depSite.join(":")+"__"+caller.join(":"):void 0;if(!(key!==void 0&&key in this._warned)){this._warned[key]=!0;var msg=message2;if(msg||(msg=callSite===depSite||!callSite.name?defaultMessage(depSite):defaultMessage(callSite)),haslisteners){var err=DeprecationError(this._namespace,msg,stack2.slice(i));process.emit("deprecation",err);return}var format=process.stderr.isTTY?formatColor:formatPlain,output=format.call(this,msg,caller,stack2.slice(i));process.stderr.write(output+`
9
9
  `,"utf8")}}}function callSiteLocation(callSite){var file=callSite.getFileName()||"<anonymous>",line=callSite.getLineNumber(),colm=callSite.getColumnNumber();callSite.isEval()&&(file=callSite.getEvalOrigin()+", "+file);var site2=[file,line,colm];return site2.callSite=callSite,site2.name=callSite.getFunctionName(),site2}function defaultMessage(site2){var callSite=site2.callSite,funcName=site2.name;funcName||(funcName="<anonymous@"+formatLocation(site2)+">");var context=callSite.getThis(),typeName=context&&callSite.getTypeName();return typeName==="Object"&&(typeName=void 0),typeName==="Function"&&(typeName=context.name||typeName),typeName&&callSite.getMethodName()?typeName+"."+funcName:funcName}function formatPlain(msg,caller,stack2){var timestamp=new Date().toUTCString(),formatted=timestamp+" "+this._namespace+" deprecated "+msg;if(this._traced){for(var i=0;i<stack2.length;i++)formatted+=`
10
10
  at `+callSiteToString(stack2[i]);return formatted}return caller&&(formatted+=" at "+formatLocation(caller)),formatted}function formatColor(msg,caller,stack2){var formatted="\x1B[36;1m"+this._namespace+"\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m"+msg+"\x1B[39m";if(this._traced){for(var i=0;i<stack2.length;i++)formatted+=`
@@ -51,7 +51,7 @@ ${partHeaders}\r
51
51
  `)))}parts.push(Uint8Array.from(Buffer.from(`--${boundary}--\r
52
52
  `)));let body=Buffer.concat(parts);res.writeHead(200,{"Content-Type":`multipart/mixed; boundary=${boundary}`,"Content-Length":body.length}),res.end(body);return}let leaseMatch=topicPath.match(/^([A-Za-z0-9_-]+)\/consumer\/([A-Za-z0-9_-]+)\/lease\/([^/]+)(?:\/visibility)?$/);if(leaseMatch&&(req.method==="DELETE"||req.method==="PATCH")){let[,,consumer,receiptHandle]=leaseMatch,messageId=this.queueBroker.findMessageIdByReceiptHandle(consumer,receiptHandle);if(!messageId){res.writeHead(404,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Message not found"}));return}if(req.method==="DELETE"){this.queueBroker.acknowledge(messageId,consumer,receiptHandle),res.writeHead(204),res.end();return}let body=await(0,import_raw_body.default)(req),timeoutSeconds=DEV_QUEUES_DEFAULT_VISIBILITY_TIMEOUT_SECONDS;try{let parsed=JSON.parse(body.toString());typeof parsed.visibilityTimeoutSeconds=="number"&&parsed.visibilityTimeoutSeconds>=0&&(timeoutSeconds=parsed.visibilityTimeoutSeconds)}catch(err){output_manager_default.debug(`queues: failed to parse visibility timeout body: ${err}`)}this.queueBroker.changeVisibility(messageId,consumer,receiptHandle,timeoutSeconds),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}res.writeHead(404),res.end("Not Found")};this.handleRuntimeCacheRoute=async(req,res,pathname)=>{let store=this.runtimeCache;if(!store){res.writeHead(503),res.end("Runtime Cache not initialized");return}if(!pathname.startsWith(DEV_RUNTIME_CACHE_API_PREFIX)){res.writeHead(404),res.end("Not Found");return}let itemPath=pathname.slice(DEV_RUNTIME_CACHE_API_PREFIX.length),searchParams=new URL2(req.url||"/","http://localhost").searchParams;if(itemPath==="revalidate"){if(req.method!=="POST"){res.writeHead(405),res.end("Method Not Allowed");return}let tags=(searchParams.get("tags")||"").split(",").map(tag=>tag.trim()).filter(Boolean),itemId=searchParams.get("itemId")||void 0;if(tags.length===0&&!itemId){res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"No tags or itemId provided"}));return}tags.length>0&&(store.expireTags(tags),output_manager_default.debug(`runtime cache: expired tags "${tags.join(",")}"`)),itemId&&(store.delete(itemId),output_manager_default.debug(`runtime cache: expired item "${itemId}"`)),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({revalidated:!0}));return}let key;try{key=decodeURIComponent(itemPath)}catch{res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Invalid cache key"}));return}if(!key){res.writeHead(404),res.end("Not Found");return}if(req.method==="GET"){let hit=store.get(key);if(!hit){output_manager_default.debug(`runtime cache: MISS "${key}"`),res.writeHead(404),res.end("Not Found");return}output_manager_default.debug(`runtime cache: HIT "${key}"`);let headers={"Content-Type":"application/json","Content-Length":hit.value.length,[HEADER_CACHE_STATE]:"fresh",Age:String(hit.ageSeconds)};hit.tags.length>0&&(headers[HEADER_CACHE_TAGS]=hit.tags.join(",")),res.writeHead(200,headers),res.end(hit.value);return}if(req.method==="POST"){let revalidateHeader=req.headers[HEADER_REVALIDATE],ttlSeconds;if(revalidateHeader)if(revalidateHeader==="Infinity"||["false","False","FALSE","f","F"].includes(revalidateHeader))ttlSeconds=DEV_RUNTIME_CACHE_ONE_YEAR_SECONDS;else if(/^[+-]?\d+$/.test(revalidateHeader)){let parsedRevalidate=Number(revalidateHeader);if(!Number.isSafeInteger(parsedRevalidate)||parsedRevalidate<0){res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Invalid revalidate value"}));return}if(parsedRevalidate===0){res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}ttlSeconds=parsedRevalidate}else{res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Invalid revalidate value"}));return}let value;try{value=await(0,import_raw_body.default)(req,{limit:DEV_RUNTIME_CACHE_MAX_ITEM_SIZE})}catch(err){if(err.statusCode===413){res.writeHead(413,{"Content-Type":"application/json"}),res.end(JSON.stringify({error:"Cache item is too large"}));return}throw err}let tagsHeader=req.headers[HEADER_CACHE_TAGS];store.set(key,value,{ttlSeconds,tags:(tagsHeader||"").split(",").map(tag=>tag.trim()).filter(Boolean)});let name=req.headers[HEADER_CACHE_ITEM_NAME];output_manager_default.debug(`runtime cache: SET "${key}"${name?` (${name})`:""} ${value.length} bytes`),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}if(req.method==="DELETE"){store.delete(key),output_manager_default.debug(`runtime cache: DELETE "${key}"`),res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify({success:!0}));return}res.writeHead(405),res.end("Method Not Allowed")};this.serveProjectAsNowV2=async(req,res,requestId,vercelConfig,routes=vercelConfig.routes,callLevel=0)=>{let{debug}=output_manager_default,parsed=url3.parse(req.url||"/");if(typeof parsed.pathname=="string"&&parsed.pathname.includes("//")){let location=parsed.pathname.replace(/\/+/g,"/");if(parsed.search&&(location+=parsed.search),req.method==="GET"){await this.sendRedirect(req,res,requestId,location,301);return}debug(`Rewriting URL from "${req.url}" to "${location}"`),req.url=location}let queueProxyPrefix=`${DEV_QUEUE_PROXY_PREFIX}/${this.resourceProxyToken}`,runtimeCacheProxyPrefix=`${DEV_RUNTIME_CACHE_PREFIX}${this.resourceProxyToken}`;if(callLevel===0&&this.queueBroker){let pathname=parsed.pathname||"/";if(pathname.startsWith(`${queueProxyPrefix}/`)){if(!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}await this.handleQueuesRoute(req,res,pathname.slice(queueProxyPrefix.length));return}}if(callLevel===0){let pathname=parsed.pathname||"/";if(pathname.startsWith(`${runtimeCacheProxyPrefix}/`)){if(!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}await this.handleRuntimeCacheRoute(req,res,pathname.slice(runtimeCacheProxyPrefix.length));return}}if(callLevel===0&&this.bulkRedirects){let bulkMatch=resolveBulkRedirect(this.bulkRedirects,req.url||"/",typeof req.headers.host=="string"?req.headers.host:void 0);if(bulkMatch){debug(`Bulk redirect ${bulkMatch.statusCode}: ${req.url} -> ${bulkMatch.location}`),await this.sendRedirect(req,res,requestId,bulkMatch.location,bulkMatch.statusCode);return}}if(callLevel===0&&this.orchestrator){let pathname=parsed.pathname||"/",service=this.orchestrator.getServiceForRoute(pathname);if(service){debug(`Found service: ${service.name}`);let upstream=`http://${service.host}:${service.port}`;debug(`Proxying to service "${service.name}": ${upstream}`);let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.setResponseHeaders(res,requestId),proxyPass(req,res,upstream,this,requestId,!1)}}callLevel===0&&await this.updateBuildMatches(vercelConfig),this.blockingBuildsPromise&&(debug("Waiting for builds to complete before handling request"),await this.blockingBuildsPromise);let getReqUrl=rr=>{if(rr.dest){if(rr.query){let destParsed=url3.parse(rr.dest),destQuery=parseQueryString(destParsed.search);return Object.assign(destQuery,rr.query),destParsed.search=formatQueryString(destQuery),url3.format(destParsed)}return rr.dest}return req.url},handleMap=getRoutesTypes(routes),missRoutes=handleMap.get("miss")||[],hitRoutes=handleMap.get("hit")||[],errorRoutes=handleMap.get("error")||[],filesystemRoutes=handleMap.get("filesystem")||[],phases=[null,"filesystem"],routeResult=null,match=null,statusCode,prevUrl=req.url,prevHeaders={},requestTransforms=[],responseTransforms,middlewares=[...this.buildMatches.values()].filter(m=>m.config?.middleware===!0);for(let middleware of middlewares){let startMiddlewareResult,middlewarePid,{envConfigs,files,devCacheDir,cwd:workPath}=this;try{let{builder:builder2}=middleware.builderWithPkg;if(typeof builder2.startDevServer=="function"&&(startMiddlewareResult=await builder2.startDevServer({files,entrypoint:middleware.entrypoint,workPath,repoRootPath:this.repoRoot,config:{projectSettings:this.projectSettings,...middleware.config},meta:{isDev:!0,...this.getDevResourceMeta(),devCacheDir,requestUrl:req.url,env:this.getBuilderDevEnv(middleware,envConfigs.runEnv),buildEnv:{...envConfigs.buildEnv}}})),startMiddlewareResult){let{port,pid,shutdown}=startMiddlewareResult;middlewarePid=pid,this.shutdownCallbacks.set(pid,shutdown),debug(`Invoking middleware "${middleware.src}" (port=${port})`);let middlewareReqHeaders=nodeHeadersToFetchHeaders(req.headers),proxyHeaders=this.getProxyHeaders(req,requestId,!0);for(let[name,value]of nodeHeadersToFetchHeaders(proxyHeaders))middlewareReqHeaders.set(name,value);let middlewareReqPath=url3.parse(req.url||"/").path||"/",middlewareRes=await directFetch(`http://127.0.0.1:${port}${middlewareReqPath}`,{headers:middlewareReqHeaders,method:req.method,redirect:"manual"}),middlewareBody=Buffer.from(await middlewareRes.arrayBuffer());if(middlewareRes.status===500&&middlewareBody.byteLength===0){await this.sendError(req,res,requestId,"EDGE_FUNCTION_INVOCATION_FAILED",500);return}res.statusCode=middlewareRes.status;let rewritePath="",contentType2="",shouldContinue=!1,skipMiddlewareHeaders=new Set(["date","connection","content-length","transfer-encoding"]),middlewareHeaders=applyOverriddenHeaders(req.headers,middlewareRes.headers);for(let[name,value]of middlewareHeaders)name==="x-middleware-next"?shouldContinue=value==="1":name==="x-middleware-rewrite"?(rewritePath=value,shouldContinue=!0):name==="content-type"?contentType2=value:skipMiddlewareHeaders.has(name)||(applyChainResponseHeader(res,name,value),req.headers[name]=value);if(!shouldContinue){this.setResponseHeaders(res,requestId),middlewareBody.length>0?(res.setHeader("content-length",middlewareBody.length),contentType2&&res.setHeader("content-type",contentType2),res.end(middlewareBody)):res.end();return}if(rewritePath){debug(`Detected rewrite path from middleware: "${rewritePath}"`),prevUrl=rewritePath;let beforeRewriteUrl=req.url||"/";if(isURL(rewritePath)){let rewriteUrlParsed=new URL2(rewritePath);if(this.address.origin===rewriteUrlParsed.origin)req.url=rewritePath.slice(rewriteUrlParsed.origin.length)||"/",prevUrl=req.url;else{debug(`ProxyPass: ${rewritePath}`),this.setResponseHeaders(res,requestId),proxyPass(req,res,rewritePath,this,requestId);return}}else{let rewriteUrlParsed=url3.parse(beforeRewriteUrl);rewriteUrlParsed.search=url3.parse(rewritePath).search,req.url=url3.format(rewriteUrlParsed)}debug(`Rewrote incoming HTTP URL from "${beforeRewriteUrl}" to "${req.url}"`)}}}catch(err){(0,import_error_utils.isSpawnError)(err)&&err.code==="ENOENT"&&(err.message=`Command not found: ${import_chalk2.default.cyan(err.path,...err.spawnargs)}
53
53
  Please ensure that ${cmd(err.path)} is properly installed`,err.link="https://vercel.link/command-not-found"),output_manager_default.prettyError(err),await this.sendError(req,res,requestId,"MIDDLEWARE_INVOCATION_FAILED",500);return}finally{middlewarePid&&this.killBuilderDevServer(middlewarePid)}}for(let phase of phases){statusCode=void 0;let phaseRoutes=handleMap.get(phase)||[];if(routeResult=await devRouter(prevUrl,req.method,phaseRoutes,this,vercelConfig,prevHeaders,missRoutes,phase),routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms),routeResult.continue&&(routeResult.dest&&(prevUrl=getReqUrl(routeResult)),routeResult.headers&&(prevHeaders=routeResult.headers)),callLevel===0&&this.orchestrator&&!routeResult.continue&&isServiceDestination(routeResult.matched_route))return this.delegateToService(req,res,requestId,routeResult.matched_route,vercelConfig,requestTransforms,responseTransforms);if(routeResult.isDestUrl){let destParsed=url3.parse(routeResult.dest),destQuery=parseQueryString(destParsed.search);Object.assign(destQuery,routeResult.query),destParsed.search=formatQueryString(destQuery);let destUrl=url3.format(destParsed);return this.prepareTransforms(req,requestTransforms,responseTransforms),debug(`ProxyPass: ${destUrl}`),this.setResponseHeaders(res,requestId),proxyPass(req,res,destUrl,this,requestId)}if(match=await findBuildMatch(this.buildMatches,this.files,routeResult.dest,this,vercelConfig),await this.exitWithStatus(match,routeResult,phase,req,res,requestId,responseTransforms))return;if(!match&&missRoutes.length>0){if(routeResult=await devRouter(getReqUrl(routeResult),req.method,missRoutes,this,vercelConfig,routeResult.headers,[],"miss"),routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms),match=await findBuildMatch(this.buildMatches,this.files,routeResult.dest,this,vercelConfig),await this.exitWithStatus(match,routeResult,phase,req,res,requestId,responseTransforms))return}else if(match&&hitRoutes.length>0){let prevStatus=routeResult.status;routeResult=await devRouter(getReqUrl(routeResult),req.method,hitRoutes,this,vercelConfig,routeResult.headers,[],"hit"),routeResult.status=prevStatus,routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms)}if(statusCode=routeResult.status,match||phase===null&&filesystemRoutes.length===0)break}if(!match&&routeResult&&errorRoutes.length>0){let routeResultForError=await devRouter(getReqUrl(routeResult),req.method,errorRoutes,this,vercelConfig,routeResult.headers,[],"error"),{matched_route}=routeResultForError,matchForError=await findBuildMatch(this.buildMatches,this.files,routeResultForError.dest,this,vercelConfig);if(matchForError)debug("Route match detected in error phase, breaking loop"),routeResult=routeResultForError,statusCode=routeResultForError.status,match=matchForError,routeResult.requestTransforms&&requestTransforms.push(...routeResult.requestTransforms),routeResult.responseTransforms&&(responseTransforms=routeResult.responseTransforms);else if(matched_route&&matched_route.src&&!matched_route.dest&&(debug("Route without `dest` detected in error phase, attempting to exit early"),await this.exitWithStatus(matchForError,routeResultForError,"error",req,res,requestId,responseTransforms)))return}if(!routeResult)throw dev.DEV_INTERNAL_NO_ROUTE_RESULT();let{dest,query,headers}=routeResult;for(let[name,value]of Object.entries(headers))res.setHeader(name,value);statusCode&&Object.defineProperty(res,"statusCode",{get(){return statusCode},set(_){}});let requestPath=dest.replace(/^\//,"");if(!match){if(this.devProcessOrigin){let upstream=this.devProcessOrigin;debug(`Proxying to frontend dev server: ${upstream}`);let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;this.setResponseHeaders(res,requestId);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);return origUrl.pathname=dest,Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format(origUrl),this.prepareTransforms(req,requestTransforms,responseTransforms),proxyPass(req,res,upstream,this,requestId,!1)}(statusCode===404&&routeResult.phase==="miss"||!this.renderDirectoryListing(req,res,requestPath,requestId))&&await this.send404(req,res,requestId);return}let buildRequestPath=match.buildResults.has(null)?null:requestPath,buildResult=match.buildResults.get(buildRequestPath);if(buildResult&&Array.isArray(buildResult.routes)&&buildResult.routes.length>0){let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);origUrl.pathname=dest,Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery);let newUrl=url3.format(origUrl);debug(`Checking build result's ${buildResult.routes.length} \`routes\` to match ${newUrl}`);let matchedRoute=await devRouter(newUrl,req.method,buildResult.routes,this,vercelConfig);if(matchedRoute.found&&callLevel===0){debug(`Found matching route ${matchedRoute.dest} for ${newUrl}`),req.url=newUrl,await this.serveProjectAsNowV2(req,res,requestId,vercelConfig,buildResult.routes,callLevel+1);return}}let{builder,pkg:builderPkg}=match.builderWithPkg;if(typeof builder.startDevServer=="function"){let devServerResult=null;try{let{envConfigs,files,devCacheDir,cwd:workPath}=this;devServerResult=await builder.startDevServer({files,entrypoint:match.entrypoint,workPath,config:match.config||{},repoRootPath:this.repoRoot,meta:{isDev:!0,...this.getDevResourceMeta(),requestPath,devCacheDir,...this.getSidecarDevMeta(match),env:this.getBuilderDevEnv(match,{...envConfigs.runEnv,VERCEL_DEBUG_PREFIX:output_manager_default.debugEnabled?"[builder]":void 0}),buildEnv:{...envConfigs.buildEnv}}})}catch(err){(0,import_error_utils.isSpawnError)(err)&&err.code==="ENOENT"&&(err.message=`Command not found: ${import_chalk2.default.cyan(err.path,...err.spawnargs)}
54
- Please ensure that ${cmd(err.path)} is properly installed`,err.link="https://vercel.link/command-not-found"),output_manager_default.prettyError(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}if(devServerResult){requestId=generateRequestId(this.podId,!0);let{port,pid,shutdown,persistent}=devServerResult;this.shutdownCallbacks.set(pid,shutdown),persistent||res.once("close",()=>{this.killBuilderDevServer(pid)}),debug(`Proxying to "${builderPkg.name}" dev server (port=${port}, pid=${pid})`);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search});let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,`http://127.0.0.1:${port}`,this,requestId,!1)}else debug(`Skipping \`startDevServer()\` for ${match.entrypoint}`)}let foundAsset=findAsset(match,requestPath,vercelConfig);if(!foundAsset&&callLevel===0&&(await this.triggerBuild(match,buildRequestPath,req,vercelConfig),foundAsset=findAsset(match,requestPath,vercelConfig)),this.devProcessOrigin&&(!foundAsset||foundAsset&&foundAsset.asset.type!=="Lambda")){debug("Proxying to frontend dev server");let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,this.devProcessOrigin,this,requestId,!1)}if(!foundAsset){await this.send404(req,res,requestId);return}let{asset,assetKey}=foundAsset;switch(debug(`Serving asset: [${asset.type}] ${assetKey} ${asset.contentType||""}`),asset.type){case"FileFsRef":this.setResponseHeaders(res,requestId);let staticResHeaders={};applyResponseTransforms(staticResHeaders,responseTransforms??[]);for(let[name,value]of Object.entries(staticResHeaders))value!==void 0&&res.setHeader(name,value);return req.url=`/${basename(asset.fsPath)}`,serveStaticFile(req,res,dirname3(asset.fsPath),{headers:[{source:"**/*",headers:[{key:"Content-Type",value:asset.contentType||getMimeType(assetKey)}]}]});case"FileBlob":let headers2={"Content-Length":asset.data.length,"Content-Type":asset.contentType||getMimeType(assetKey)};applyResponseTransforms(headers2,responseTransforms??[]),this.setResponseHeaders(res,requestId,headers2),res.end(asset.data);return;case"Lambda":if(!asset.fn){await this.sendError(req,res,requestId,"INTERNAL_LAMBDA_NOT_FOUND");return}requestId=generateRequestId(this.podId,!0);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search}),applyRequestTransforms(req,requestTransforms);let path6=req.url||"/",body=await(0,import_raw_body.default)(req),payload={method:req.method||"GET",host:req.headers.host,path:path6,headers:{...req.headers,...this.getProxyHeaders(req,requestId,!0)},encoding:"base64",body:body.toString("base64")};debug(`Invoking lambda: "${assetKey}" with ${path6}`);let result;try{result=await asset.fn({Action:"Invoke",body:JSON.stringify(payload)})}catch(err){console.error(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}statusCode||(res.statusCode=result.statusCode);let lambdaHeaders=result.headers??{};applyResponseTransforms(lambdaHeaders,responseTransforms??[]),this.setResponseHeaders(res,requestId,lambdaHeaders);let resBody;return result.encoding==="base64"&&typeof result.body=="string"?resBody=Buffer.from(result.body,"base64"):resBody=result.body,res.end(resBody);default:await this.sendError(req,res,requestId,"UNKNOWN_ASSET_TYPE")}};this.cwd=cwd,this.repoRoot=options.repoRoot??cwd,this.envConfigs={buildEnv:{},runEnv:{},allEnv:{}},this.envValues=options.envValues||{},this.projectId=options.projectId,this.orgId=options.orgId,this.queuePort=options.queuePort,this.runtimeCachePort=options.runtimeCachePort,this.resourceProxyToken=randomBytes2(32).toString("base64url"),this.reportError=createErrorReporter(code=>options.onErrorCode?.(code)),this.files={},this.originalProjectSettings=options.projectSettings,this.projectSettings=options.projectSettings,this.services=options.services,this.useImplicitServicesEnvInjection=options.useImplicitServicesEnvInjection??!0,this.caseSensitive=!1,this.apiDir=null,this.apiExtensions=new Set,this.proxy=import_http_proxy_node16.default.createProxyServer({changeOrigin:!0,ws:!0,xfwd:!0}),this.proxy.on("proxyRes",(proxyRes,req)=>{proxyRes.headers.server="Vercel";let responseTransforms=this.responseTransformsByReq.get(req);responseTransforms&&(this.responseTransformsByReq.delete(req),applyResponseTransforms(proxyRes.headers,responseTransforms))}),this.proxy.on("error",(err,req,res)=>{if(output_manager_default.debug(`Proxy error for ${req?.url??"unknown request"}: ${(0,import_error_utils.errorToString)(err)}`),!!res){if("destroy"in res&&typeof res.destroy=="function"){res.destroy();return}res instanceof http.ServerResponse&&(res.headersSent||res.writeHead(502),res.end())}}),this.server=http.createServer(this.devServerHandler),this.server.timeout=0,this.queueServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.queueOrigin,this.handleQueuesRoute)}),this.runtimeCacheServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.runtimeCacheOrigin,this.handleRuntimeCacheRoute)}),this.stopping=!1,this.buildMatches=new Map,this.inProgressBuilds=new Map,this.devCacheDir=join4(getVercelDirectory(cwd),"cache"),this.vercelConfigWarning=!1,this.getVercelConfigPromise=null,this.blockingBuildsPromise=null,this.startPromise=null,this.bulkRedirects=null,this.bulkRedirectsSignature=null,this.bulkRedirectsLastPath=null,this.bulkRedirectsResolvedPath=null,this.bulkRedirectsDirty=!0,this.watchAggregationId=null,this.watchAggregationEvents=[],this.watchAggregationTimeout=500,this.filter=path6=>!!path6,this.podId=Math.random().toString(32).slice(-5),this.shutdownCallbacks=new Map}get address(){if(!this._address)throw dev.DEV_INTERNAL_ADDRESS_UNAVAILABLE();return this._address}shouldUseServicesOrchestrator(){return!!(this.services&&this.services.length>0)}hasSubscribers(){return!!this.sidecars?.length}getDevQueueEnv(){return this.queueOrigin?getDevQueueEnv(this.queueOrigin,this.hasSubscribers()):{}}getDevRuntimeCacheEnv(env){return!this.runtimeCacheOrigin||env.RUNTIME_CACHE_ENDPOINT?{}:process.env.RUNTIME_CACHE_ENDPOINT?{RUNTIME_CACHE_ENDPOINT:process.env.RUNTIME_CACHE_ENDPOINT,...process.env.RUNTIME_CACHE_HEADERS?{RUNTIME_CACHE_HEADERS:process.env.RUNTIME_CACHE_HEADERS}:{}}:getDevRuntimeCacheEnv(this.runtimeCacheOrigin,DEV_RUNTIME_CACHE_API_PREFIX)}get resourceEndpoints(){if(!this.queueOrigin||!this.runtimeCacheOrigin)throw new Error("Local resource servers have not started");return{queues:{direct:this.queueOrigin,proxy:`${this.address.origin}${DEV_QUEUE_PROXY_PREFIX}/${this.resourceProxyToken}`},runtimeCache:{direct:`${this.runtimeCacheOrigin}${DEV_RUNTIME_CACHE_API_PREFIX}`,proxy:`${this.address.origin}${DEV_RUNTIME_CACHE_PREFIX}${this.resourceProxyToken}${DEV_RUNTIME_CACHE_API_PREFIX}`}}}getDevResourceMeta(){return{devResourceEndpoints:this.resourceEndpoints}}handleResourceServerRequest(req,res,origin,handler){if(!origin||!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}if(!isValidDevResourceHost(origin,req.headers.host)){res.writeHead(403),res.end("Forbidden");return}let pathname=new URL2(req.url||"/","http://127.0.0.1").pathname;handler(req,res,pathname).catch(err=>{output_manager_default.debug(`Local resource request failed for ${req.url||"/"}: ${(0,import_error_utils.errorToString)(err)}`),res.headersSent||res.writeHead(500),res.end("Internal Server Error")})}isAuthorizedResourceRequest(req,token){let authorization=req.headers.authorization;if(typeof authorization!="string")return!1;let encoder=new TextEncoder,actual=encoder.encode(authorization),expected=encoder.encode(`Bearer ${token}`);return actual.length===expected.length&&timingSafeEqual(actual,expected)}getBuilderDevEnv(match,env){let result={...env};if(match.builderWithPkg.pkg.name!=="@vercel/container")return result;let endpoints=this.resourceEndpoints;return result.VERCEL_QUEUE_BASE_URL===endpoints.queues.direct&&Object.assign(result,getDevQueueEnv(endpoints.queues.proxy,result.VERCEL_HAS_WORKER_SERVICES!==void 0)),result.RUNTIME_CACHE_ENDPOINT===endpoints.runtimeCache.direct&&Object.assign(result,getDevRuntimeCacheEnv(endpoints.runtimeCache.proxy,"")),result}getSidecarDevMeta(match){let serviceCount=(this.sidecars??[]).filter(sidecar=>sidecar.builder.use!==match.use?!1:!sidecar.workspace||sidecar.workspace===".").length;return serviceCount>0?{serviceCount}:{}}async setupBuilderDevSidecars(){if(this.shouldUseServicesOrchestrator())return;let sidecars=this.sidecars??[];if(sidecars.length===0)return;Object.assign(this.envConfigs.runEnv,this.getDevQueueEnv());let services=sidecars.map(toOrchestratorService),orchestrator=new ServicesOrchestrator({services,cwd:this.cwd,repoRoot:this.repoRoot,env:this.envConfigs.allEnv,proxyOrigin:this.address.origin,resourceEndpoints:this.resourceEndpoints,useImplicitEnvInjection:!1,preferServiceBuilder:!0,onQueueSubscriptions:(serviceName,subscriptions)=>this.queueBroker?.updateServiceSubscriptions(serviceName,subscriptions)});this.sidecarOrchestrator=orchestrator,this.queueBroker?.registerServices(services);try{await orchestrator.startAll()}catch(err){throw await orchestrator.stopAll(),this.sidecarOrchestrator=void 0,this.sidecars=[],err}output_manager_default.log(`Started ${sidecars.length} development ${(0,import_pluralize2.default)("sidecar",sidecars.length)}`)}async exit(code=1){await this.stop(code),process.exit(code)}enqueueFsEvent(type,path6){this.bulkRedirectsResolvedPath&&(path6===this.bulkRedirectsResolvedPath||path6.startsWith(this.bulkRedirectsResolvedPath+sep2))&&(this.bulkRedirectsDirty=!0),this.watchAggregationEvents.push({type,path:path6}),this.watchAggregationId===null&&(this.watchAggregationId=setTimeout(()=>{let events=this.watchAggregationEvents.slice();this.watchAggregationEvents.length=0,this.watchAggregationId=null,this.handleFilesystemEvents(events).catch(err=>{output_manager_default.prettyError(err),(0,import_error_utils.isError)(err)&&typeof err.stack=="string"&&output_manager_default.debug(err.stack)})},this.watchAggregationTimeout))}async handleFilesystemEvents(events){output_manager_default.debug(`Filesystem watcher notified of ${events.length} events`);let filesChanged=new Set,filesRemoved=new Set,distPaths=[];for(let buildMatch of this.buildMatches.values())for(let buildResult of buildMatch.buildResults.values())buildResult.distPath&&distPaths.push(buildResult.distPath);events=events.filter(event=>distPaths.every(distPath=>!event.path.startsWith(distPath)));for(let event of events)event.type==="add"?await this.handleFileCreated(event.path,filesChanged,filesRemoved):event.type==="unlink"?this.handleFileDeleted(event.path,filesChanged,filesRemoved):event.type==="change"&&await this.handleFileModified(event.path,filesChanged,filesRemoved);let vercelConfig=await this.getVercelConfig();await this.updateBuildMatches(vercelConfig);let filesChangedArray=[...filesChanged],filesRemovedArray=[...filesRemoved],needsRebuild=new Map;for(let match of this.buildMatches.values())for(let[requestPath,result]of match.buildResults)if(!needsRebuild.has(result)&&Array.isArray(result.watch)){for(let pattern of result.watch)if(minimatches(filesChangedArray,pattern)||minimatches(filesRemovedArray,pattern)){needsRebuild.set(result,[requestPath,match]);break}}if(needsRebuild.size>0){output_manager_default.debug(`Triggering ${needsRebuild.size} rebuilds`),filesChangedArray.length>0&&output_manager_default.debug(`Files changed: ${filesChangedArray.join(", ")}`),filesRemovedArray.length>0&&output_manager_default.debug(`Files removed: ${filesRemovedArray.join(", ")}`);for(let[result,[requestPath,match]]of needsRebuild)requestPath===null||await shouldServe(match,this.files,requestPath,this,vercelConfig)?this.triggerBuild(match,requestPath,null,vercelConfig,result,filesChangedArray,filesRemovedArray).catch(err=>{output_manager_default.warn(`An error occurred while rebuilding \`${match.src}\`:`),console.error(err.stack)}):output_manager_default.debug(`Not rebuilding because \`shouldServe()\` returned \`false\` for "${match.use}" request path "${requestPath}"`)}}async handleFileCreated(fsPath,changed,removed){let name=relative2(this.cwd,fsPath);try{await this.getVercelConfig(),this.files[name]=await import_build_utils7.FileFsRef.fromFsPath({fsPath});let extensionless=this.getExtensionlessFile(name);extensionless&&(this.files[extensionless]=await import_build_utils7.FileFsRef.fromFsPath({fsPath})),fileChanged(name,changed,removed),output_manager_default.debug(`File created: ${name}`)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File created, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}handleFileDeleted(fsPath,changed,removed){let name=relative2(this.cwd,fsPath);output_manager_default.debug(`File deleted: ${name}`),fileRemoved(name,this.files,changed,removed);let extensionless=this.getExtensionlessFile(name);extensionless&&(output_manager_default.debug(`File deleted: ${extensionless}`),fileRemoved(extensionless,this.files,changed,removed))}async handleFileModified(fsPath,changed,removed){let name=relative2(this.cwd,fsPath);try{this.files[name]=await import_build_utils7.FileFsRef.fromFsPath({fsPath}),fileChanged(name,changed,removed),output_manager_default.debug(`File modified: ${name}`)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File modified, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}async updateBuildMatches(vercelConfig,isInitial=!1){let fileList=this.resolveBuildFiles(this.files),matches=await getBuildMatches(vercelConfig,this.cwd,this,fileList),sources=matches.map(m=>m.src);isInitial&&fileList.length===0&&output_manager_default.warn("There are no files inside your deployment.");let ops=[];for(let src of this.buildMatches.keys())if(!sources.includes(src)){output_manager_default.debug(`Removing build match for "${src}"`);let match=this.buildMatches.get(src);match&&ops.push(shutdownBuilder(match)),this.buildMatches.delete(src)}await Promise.all(ops);let blockingBuilds=[];for(let match of matches){let currentMatch=this.buildMatches.get(match.src);if(!buildMatchEquals(currentMatch,match)&&(output_manager_default.debug(`Adding build match for "${match.src}" with "${match.use}"`),this.buildMatches.set(match.src,match),!isInitial&&needsBlockingBuild(match))){let buildPromise=executeBuild(vercelConfig,this,this.files,match,null,!1);blockingBuilds.push(buildPromise)}}blockingBuilds.length>0&&(output_manager_default.debug(`Waiting for ${blockingBuilds.length} "blocking builds"`),this.blockingBuildsPromise=Promise.all(blockingBuilds).then(()=>{output_manager_default.debug('Cleaning up "blockingBuildsPromise" after successful resolve'),this.blockingBuildsPromise=null}).catch(err=>{output_manager_default.debug(`Cleaning up "blockingBuildsPromise" after error: ${err}`),this.blockingBuildsPromise=null,err&&output_manager_default.prettyError(err)})),this.buildMatches=new Map([...this.buildMatches.entries()].sort((matchA,matchB)=>sortBuilders(matchA[1],matchB[1])))}async getLocalEnv(fileName,base){let filePath=join4(this.cwd,fileName),env={};try{let dotenv=await import_fs_extra.default.readFile(filePath,"utf8");output_manager_default.debug(`Using local env: ${filePath}`),env=(0,import_dotenv.parse)(dotenv),env=this.injectSystemValuesInDotenv(env)}catch(err){if(!(0,import_error_utils.isErrnoException)(err)||err.code!=="ENOENT")throw err}try{return{...this.validateEnvConfig(fileName,base||{},env)}}catch(err){if(err instanceof MissingDotenvVarsError)this.reportError(err),await this.exit();else throw err}return{}}getVercelConfig(){if(this.getVercelConfigPromise)return this.getVercelConfigPromise;this.getVercelConfigPromise=this._getVercelConfig();let clear=this.clearVercelConfigPromise;return this.getVercelConfigPromise.then(clear,clear),this.getVercelConfigPromise}get devCommand(){if(this.projectSettings?.devCommand)return this.projectSettings.devCommand;if(this.projectSettings?.framework){let frameworkSlug=this.projectSettings.framework,framework=import_frameworks3.frameworkList.find(f=>f.slug===frameworkSlug);if(framework){let defaults=framework.settings.devCommand.value;if(defaults)return defaults}if((0,import_build_utils7.shouldUseExperimentalBackends)(frameworkSlug))return"npx @vercel/cervel dev"}}async _getVercelConfig(){let{compileVercelConfig}=await import("../../chunks/compile-vercel-config-MRWI6INC.js");await compileVercelConfig(this.cwd);let configPath=getLocalPathConfig(this.cwd),[pkg=null,vercelConfig={version:2,[import_client.fileNameSymbol]:"vercel.json"}]=await Promise.all([this.readJsonFile("package.json"),this.readJsonFile(configPath)]);await this.validateVercelConfig(vercelConfig),this.projectSettings={...this.originalProjectSettings,...pickOverrides(vercelConfig)};let{error:routeError,routes:maybeRoutes}=(0,import_routing_utils3.getTransformedRoutes)(vercelConfig);routeError&&(this.reportError(routeError),await this.exit()),vercelConfig.routes=maybeRoutes||[];let hasServices=(this.services?.length??0)>0,hasResolvedServices=!!this.services&&this.services.length>0;if(!vercelConfig.experimentalServices&&!hasResolvedServices&&(!vercelConfig.builds||vercelConfig.builds.length===0)){let{projectSettings,cleanUrls,trailingSlash}=vercelConfig,files=(await staticFiles(this.cwd,{})).map(f=>relative2(this.cwd,f)),detectedBuilders=await(0,import_detect_builders_with_services.detectBuildersWithServices)(files,pkg,{tag:"latest",bunVersion:vercelConfig.bunVersion,functions:vercelConfig.functions,projectSettings:projectSettings||this.projectSettings,featHandleMiss:!0,cleanUrls,trailingSlash,proxy:vercelConfig.proxy,workPath:this.cwd}),{builders,warnings,errors,defaultRoutes,redirectRoutes,rewriteRoutes,errorRoutes}=detectedBuilders,hostRewriteRoutes=detectedBuilders.hostRewriteRoutes;if(errors&&(this.reportError(errors[0]),await this.exit()),warnings?.length>0&&warnings.forEach(warning=>output_manager_default.warn(warning.message,null,warning.link,warning.action)),builders){let buildpackRuntime=builders.map(getBuildpackRuntime).find(runtime=>runtime!==void 0);if(buildpackRuntime)throw buildpackDevUnsupportedError(buildpackRuntime);vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push(...builders),delete vercelConfig.functions}let serviceRewrites=detectedBuilders.serviceRewrites,serviceRewriteRoutes=serviceRewrites&&serviceRewrites.length>0?(0,import_routing_utils3.convertRewrites)(serviceRewrites):null,routes=[];routes.push(...redirectRoutes||[]),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:hostRewriteRoutes??null,phase:null}),routes.push(...(0,import_routing_utils3.appendRoutesToPhase)({routes:vercelConfig.routes,newRoutes:[...rewriteRoutes||[],...serviceRewriteRoutes||[]],phase:"filesystem"})),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:errorRoutes,phase:"error"}),routes.push(...defaultRoutes||[]),vercelConfig.routes=routes}else if(hasResolvedServices&&vercelConfig.proxy){let{entrypoint}=vercelConfig.proxy;await import_fs_extra.default.pathExists(join4(this.cwd,entrypoint))||(output_manager_default.error(`The proxy entrypoint \`${entrypoint}\` does not exist. Set \`proxy.entrypoint\` to an existing \`.js\` or \`.ts\` file.`),await this.exit()),vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push((0,import_fs_detectors2.getProxyBuilder)(vercelConfig.proxy,"latest",vercelConfig.functions))}if(this.sidecars===void 0){let services=(this.services??[]).filter(import_build_utils7.isExperimentalServiceV2);this.sidecars=await collectBuilderDevSidecars({builds:this.shouldUseServicesOrchestrator()?services.map(service=>service.builder):vercelConfig.builds??[],workPath:this.cwd,services})}Array.isArray(vercelConfig.builds)&&((this.devCommand||hasServices)&&(vercelConfig.builds=vercelConfig.builds.filter(this.shouldBuildInDev)),vercelConfig.builds.sort(sortBuilders)),vercelConfig.routes=(vercelConfig.routes||[]).filter(route=>"has"in route?(this.vercelConfigWarning||(this.vercelConfigWarning=!0,output_manager_default.warn(`The "has" property in ${vercelConfig[import_client.fileNameSymbol]} will be ignored during development. Deployments will work as expected.`)),!1):!0),this.caseSensitive=hasNewRoutingProperties(vercelConfig),this.apiDir=(0,import_fs_detectors2.detectApiDirectory)(vercelConfig.builds||[]),this.apiExtensions=(0,import_fs_detectors2.detectApiExtensions)(vercelConfig.builds||[]);let[runEnv,buildEnv]=await Promise.all([this.getLocalEnv(".env",vercelConfig.env),this.getLocalEnv(".env.build",vercelConfig.build?.env)]),allEnv={...buildEnv,...runEnv};if(Object.keys(allEnv).length===0){let envValues={...this.envValues};this.address.host&&(envValues.VERCEL_URL=this.address.host),allEnv={...envValues},runEnv={...envValues},buildEnv={...envValues}}return runEnv.NOW_REGION="dev1",buildEnv.NOW_REGION="dev1",allEnv.NOW_REGION="dev1",allEnv.VERCEL_ENV="development",allEnv.VERCEL="1",this.projectId&&!process.env.VERCEL_PROJECT_ID&&("VERCEL_PROJECT_ID"in allEnv||(allEnv.VERCEL_PROJECT_ID=this.projectId),"VERCEL_PROJECT_ID"in runEnv||(runEnv.VERCEL_PROJECT_ID=this.projectId)),this.orgId&&!process.env.VERCEL_ORG_ID&&("VERCEL_ORG_ID"in allEnv||(allEnv.VERCEL_ORG_ID=this.orgId),"VERCEL_ORG_ID"in runEnv||(runEnv.VERCEL_ORG_ID=this.orgId)),this.projectSettings?.autoExposeSystemEnvs&&(runEnv.VERCEL_REGION="dev1"),Object.assign(runEnv,this.getDevQueueEnv()),Object.assign(runEnv,this.getDevRuntimeCacheEnv(runEnv)),this.envConfigs={buildEnv,runEnv,allEnv},this.initialDevCommandStarted&&await this.runDevCommand(),await this.refreshBulkRedirects(vercelConfig.bulkRedirectsPath),vercelConfig}async refreshBulkRedirects(bulkRedirectsPath){let configPath=bulkRedirectsPath??null;if(configPath===this.bulkRedirectsLastPath&&!this.bulkRedirectsDirty)return;if(this.bulkRedirectsLastPath=configPath,this.bulkRedirectsDirty=!1,this.bulkRedirectsResolvedPath=configPath?resolveBulkRedirectsPath(this.cwd,configPath):null,!configPath){this.bulkRedirects=null,this.bulkRedirectsSignature=null;return}let signature=await getBulkRedirectsSignature(this.cwd,configPath);if(signature!==this.bulkRedirectsSignature){this.bulkRedirectsSignature=signature;try{let result=await loadBulkRedirects(this.cwd,configPath);this.bulkRedirects=result.table;for(let warning of result.warnings)output_manager_default.warn(warning);let count=result.table.size;count>0&&output_manager_default.log(`Loaded ${count} bulk ${(0,import_pluralize2.default)("redirect",count)} from ${configPath}`)}catch(err){this.bulkRedirects=null,output_manager_default.warn(`Failed to load bulk redirects from "${configPath}": ${(0,import_error_utils.errorToString)(err)}`)}}}async readJsonFile(filePath){let rel,abs;isAbsolute3(filePath)?(rel=path4.relative(this.cwd,filePath),abs=filePath):(rel=filePath,abs=join4(this.cwd,filePath)),output_manager_default.debug(`Reading \`${rel}\` file`);try{let raw=await import_fs_extra.default.readFile(abs,"utf8"),parsed=(0,import_json_parse_better_errors.default)(raw);return parsed[import_client.fileNameSymbol]=rel,parsed}catch(err){if((0,import_error_utils.isError)(err))(0,import_error_utils.isErrnoException)(err)&&err.code==="ENOENT"?output_manager_default.debug(`No \`${rel}\` file present`):err.name==="SyntaxError"&&output_manager_default.warn(`There is a syntax error in the \`${rel}\` file: ${err.message}`);else throw err}}async tryValidateOrExit(config,validate){let message2=validate(config);message2&&(output_manager_default.error(message2),await this.exit(1))}async validateVercelConfig(config){if(config.version===1){this.reportError(dev.DEV_UNSUPPORTED_CONFIG_VERSION()),await this.exit(1);return}let error2=validateConfig(config);error2&&(this.reportError(error2),await this.exit(1))}validateEnvConfig(type,env={},localEnv={}){let missing=Object.entries(env).filter(([name,value])=>typeof value=="string"&&value.startsWith("@")&&!hasProp(localEnv,name)).map(([name])=>name);if(missing.length>0)throw new MissingDotenvVarsError(type,missing);let merged={...env,...localEnv},hasInvalidName=!1;for(let key of Object.keys(merged))/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)||(output_manager_default.warn(`Ignoring ${type.split(".").slice(1).reverse().join(" ")} var ${JSON.stringify(key)} because name is invalid`),hasInvalidName=!0,delete merged[key]);return hasInvalidName&&output_manager_default.log("The name contains invalid characters. Only letters, digits, and underscores are allowed. Furthermore, the name should not start with a digit"),merged}injectSystemValuesInDotenv(env){for(let name of Object.keys(env))name==="VERCEL_URL"?env.VERCEL_URL=this.address.host:name==="VERCEL_REGION"&&(env.VERCEL_REGION="dev1");return env}resolveBuildFiles(files){return Object.keys(files).filter(this.filter)}isWatcherIgnored(fsPath){let relativePath=relative2(this.cwd,fsPath);return relativePath===""?!1:!this.filter(relativePath)}start(...listenSpec){return this.startPromise||(this.startPromise=this._start(...listenSpec).catch(async err=>{throw await this.stop(),err})),this.startPromise}async _start(...listenSpec){if(!import_fs_extra.default.existsSync(this.cwd))throw dev.DEV_CWD_NOT_FOUND({cwd:this.cwd});if(!import_fs_extra.default.lstatSync(this.cwd).isDirectory())throw dev.DEV_CWD_NOT_DIRECTORY({cwd:this.cwd});let{ig}=await(0,import_client.getVercelIgnore)(this.cwd);this.filter=ig.createFilter();let address=null;for(;typeof address!="string";)try{address=(await(0,import_async_listen.listen)(this.server,...listenSpec)).toString()}catch(err){if((0,import_error_utils.isErrnoException)(err))output_manager_default.debug(`Got listen error: ${err.code}`),err.code==="EADDRINUSE"&&(typeof listenSpec[0]=="number"?(output_manager_default.note(`Requested port ${import_chalk2.default.yellow(String(listenSpec[0]))} is already in use`),listenSpec[0]++):(this.reportError(dev.DEV_LISTEN_ADDRESS_IN_USE({address:String(listenSpec[0])})),process.exit(1)));else throw err}this._address=new URL2(replaceLocalhost(address)),this.runtimeCache=new RuntimeCacheStore;let runtimeCacheListener=await listenOnDevResourcePort(this.runtimeCacheServer,{name:"Runtime Cache",flag:"--runtime-cache-port",defaultPort:DEV_RUNTIME_CACHE_DEFAULT_PORT,port:this.runtimeCachePort,reservedPorts:this.queuePort!==void 0&&this.queuePort!==0?[this.queuePort]:void 0});this.runtimeCacheOrigin=runtimeCacheListener.origin,runtimeCacheListener.defaultPort!==void 0&&output_manager_default.warn(`Runtime Cache default port ${runtimeCacheListener.defaultPort} is unavailable; listening on ${runtimeCacheListener.port} instead.
54
+ Please ensure that ${cmd(err.path)} is properly installed`,err.link="https://vercel.link/command-not-found"),output_manager_default.prettyError(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}if(devServerResult){requestId=generateRequestId(this.podId,!0);let{port,pid,shutdown,persistent}=devServerResult;this.shutdownCallbacks.set(pid,shutdown),persistent||res.once("close",()=>{this.killBuilderDevServer(pid)}),debug(`Proxying to "${builderPkg.name}" dev server (port=${port}, pid=${pid})`);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search});let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,`http://127.0.0.1:${port}`,this,requestId,!1)}else debug(`Skipping \`startDevServer()\` for ${match.entrypoint}`)}let foundAsset=findAsset(match,requestPath,vercelConfig);if(!foundAsset&&callLevel===0&&(await this.triggerBuild(match,buildRequestPath,req,vercelConfig),foundAsset=findAsset(match,requestPath,vercelConfig)),this.devProcessOrigin&&(!foundAsset||foundAsset&&foundAsset.asset.type!=="Lambda")){debug("Proxying to frontend dev server");let headers2=this.getProxyHeaders(req,requestId,!1);for(let[name,value]of Object.entries(headers2))req.headers[name]=value;return this.prepareTransforms(req,requestTransforms,responseTransforms),this.setResponseHeaders(res,requestId),proxyPass(req,res,this.devProcessOrigin,this,requestId,!1)}if(!foundAsset){await this.send404(req,res,requestId);return}let{asset,assetKey}=foundAsset;switch(debug(`Serving asset: [${asset.type}] ${assetKey} ${asset.contentType||""}`),asset.type){case"FileFsRef":this.setResponseHeaders(res,requestId);let staticResHeaders={};applyResponseTransforms(staticResHeaders,responseTransforms??[]);for(let[name,value]of Object.entries(staticResHeaders))value!==void 0&&res.setHeader(name,value);return req.url=`/${basename(asset.fsPath)}`,serveStaticFile(req,res,dirname3(asset.fsPath),{headers:[{source:"**/*",headers:[{key:"Content-Type",value:asset.contentType||getMimeType(assetKey)}]}]});case"FileBlob":let headers2={"Content-Length":asset.data.length,"Content-Type":asset.contentType||getMimeType(assetKey)};applyResponseTransforms(headers2,responseTransforms??[]),this.setResponseHeaders(res,requestId,headers2),res.end(asset.data);return;case"Lambda":if(!asset.fn){await this.sendError(req,res,requestId,"INTERNAL_LAMBDA_NOT_FOUND");return}requestId=generateRequestId(this.podId,!0);let origUrl=url3.parse(req.url||"/"),origQuery=parseQueryString(origUrl.search);Object.assign(origQuery,query),origUrl.search=formatQueryString(origQuery),req.url=url3.format({pathname:origUrl.pathname,search:origUrl.search}),applyRequestTransforms(req,requestTransforms);let path6=req.url||"/",body=await(0,import_raw_body.default)(req),payload={method:req.method||"GET",host:req.headers.host,path:path6,headers:{...req.headers,...this.getProxyHeaders(req,requestId,!0)},encoding:"base64",body:body.toString("base64")};debug(`Invoking lambda: "${assetKey}" with ${path6}`);let result;try{result=await asset.fn({Action:"Invoke",body:JSON.stringify(payload)})}catch(err){console.error(err),await this.sendError(req,res,requestId,"NO_RESPONSE_FROM_FUNCTION",502);return}statusCode||(res.statusCode=result.statusCode);let lambdaHeaders=result.headers??{};applyResponseTransforms(lambdaHeaders,responseTransforms??[]),this.setResponseHeaders(res,requestId,lambdaHeaders);let resBody;return result.encoding==="base64"&&typeof result.body=="string"?resBody=Buffer.from(result.body,"base64"):resBody=result.body,res.end(resBody);default:await this.sendError(req,res,requestId,"UNKNOWN_ASSET_TYPE")}};this.cwd=cwd,this.repoRoot=options.repoRoot??cwd,this.envConfigs={buildEnv:{},runEnv:{},allEnv:{}},this.envValues=options.envValues||{},this.projectId=options.projectId,this.orgId=options.orgId,this.queuePort=options.queuePort,this.runtimeCachePort=options.runtimeCachePort,this.resourceProxyToken=randomBytes2(32).toString("base64url"),this.reportError=createErrorReporter(code=>options.onErrorCode?.(code)),this.files={},this.originalProjectSettings=options.projectSettings,this.projectSettings=options.projectSettings,this.services=options.services,this.useImplicitServicesEnvInjection=options.useImplicitServicesEnvInjection??!0,this.caseSensitive=!1,this.apiDir=null,this.apiExtensions=new Set,this.proxy=import_http_proxy_node16.default.createProxyServer({changeOrigin:!0,ws:!0,xfwd:!0}),this.proxy.on("proxyRes",(proxyRes,req)=>{proxyRes.headers.server="Vercel";let responseTransforms=this.responseTransformsByReq.get(req);responseTransforms&&(this.responseTransformsByReq.delete(req),applyResponseTransforms(proxyRes.headers,responseTransforms))}),this.proxy.on("error",(err,req,res)=>{if(output_manager_default.debug(`Proxy error for ${req?.url??"unknown request"}: ${(0,import_error_utils.errorToString)(err)}`),!!res){if("destroy"in res&&typeof res.destroy=="function"){res.destroy();return}res instanceof http.ServerResponse&&(res.headersSent||res.writeHead(502),res.end())}}),this.server=http.createServer(this.devServerHandler),this.server.timeout=0,this.queueServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.queueOrigin,this.handleQueuesRoute)}),this.runtimeCacheServer=http.createServer((req,res)=>{this.handleResourceServerRequest(req,res,this.runtimeCacheOrigin,this.handleRuntimeCacheRoute)}),this.stopping=!1,this.buildMatches=new Map,this.inProgressBuilds=new Map,this.devCacheDir=join4(getVercelDirectory(cwd),"cache"),this.vercelConfigWarning=!1,this.getVercelConfigPromise=null,this.blockingBuildsPromise=null,this.startPromise=null,this.bulkRedirects=null,this.bulkRedirectsSignature=null,this.bulkRedirectsLastPath=null,this.bulkRedirectsResolvedPath=null,this.bulkRedirectsDirty=!0,this.watchAggregationId=null,this.watchAggregationEvents=[],this.watchAggregationTimeout=500,this.filter=path6=>!!path6,this.podId=Math.random().toString(32).slice(-5),this.shutdownCallbacks=new Map}get address(){if(!this._address)throw dev.DEV_INTERNAL_ADDRESS_UNAVAILABLE();return this._address}shouldUseServicesOrchestrator(){return!!(this.services&&this.services.length>0)}hasSubscribers(){return!!this.sidecars?.length}getDevQueueEnv(){return this.queueOrigin?getDevQueueEnv(this.queueOrigin,this.hasSubscribers()):{}}getDevRuntimeCacheEnv(env){return!this.runtimeCacheOrigin||env.RUNTIME_CACHE_ENDPOINT?{}:process.env.RUNTIME_CACHE_ENDPOINT?{RUNTIME_CACHE_ENDPOINT:process.env.RUNTIME_CACHE_ENDPOINT,...process.env.RUNTIME_CACHE_HEADERS?{RUNTIME_CACHE_HEADERS:process.env.RUNTIME_CACHE_HEADERS}:{}}:getDevRuntimeCacheEnv(this.runtimeCacheOrigin,DEV_RUNTIME_CACHE_API_PREFIX)}get resourceEndpoints(){if(!this.queueOrigin||!this.runtimeCacheOrigin)throw new Error("Local resource servers have not started");return{queues:{direct:this.queueOrigin,proxy:`${this.address.origin}${DEV_QUEUE_PROXY_PREFIX}/${this.resourceProxyToken}`},runtimeCache:{direct:`${this.runtimeCacheOrigin}${DEV_RUNTIME_CACHE_API_PREFIX}`,proxy:`${this.address.origin}${DEV_RUNTIME_CACHE_PREFIX}${this.resourceProxyToken}${DEV_RUNTIME_CACHE_API_PREFIX}`}}}getDevResourceMeta(){return{devResourceEndpoints:this.resourceEndpoints}}handleResourceServerRequest(req,res,origin,handler){if(!origin||!this.isAuthorizedResourceRequest(req,DEV_RESOURCE_TOKEN)){res.writeHead(401,{"WWW-Authenticate":"Bearer"}),res.end("Unauthorized");return}if(!isValidDevResourceHost(origin,req.headers.host)){res.writeHead(403),res.end("Forbidden");return}let pathname=new URL2(req.url||"/","http://127.0.0.1").pathname;handler(req,res,pathname).catch(err=>{output_manager_default.debug(`Local resource request failed for ${req.url||"/"}: ${(0,import_error_utils.errorToString)(err)}`),res.headersSent||res.writeHead(500),res.end("Internal Server Error")})}isAuthorizedResourceRequest(req,token){let authorization=req.headers.authorization;if(typeof authorization!="string")return!1;let encoder=new TextEncoder,actual=encoder.encode(authorization),expected=encoder.encode(`Bearer ${token}`);return actual.length===expected.length&&timingSafeEqual(actual,expected)}getBuilderDevEnv(match,env){let result={...env};if(match.builderWithPkg.pkg.name!=="@vercel/container")return result;let endpoints=this.resourceEndpoints;return result.VERCEL_QUEUE_BASE_URL===endpoints.queues.direct&&Object.assign(result,getDevQueueEnv(endpoints.queues.proxy,result.VERCEL_HAS_WORKER_SERVICES!==void 0)),result.RUNTIME_CACHE_ENDPOINT===endpoints.runtimeCache.direct&&Object.assign(result,getDevRuntimeCacheEnv(endpoints.runtimeCache.proxy,"")),result}getSidecarDevMeta(match){let serviceCount=(this.sidecars??[]).filter(sidecar=>sidecar.builder.use!==match.use?!1:!sidecar.workspace||sidecar.workspace===".").length;return serviceCount>0?{serviceCount}:{}}async setupBuilderDevSidecars(){if(this.shouldUseServicesOrchestrator())return;let sidecars=this.sidecars??[];if(sidecars.length===0)return;Object.assign(this.envConfigs.runEnv,this.getDevQueueEnv());let services=sidecars.map(toOrchestratorService),orchestrator=new ServicesOrchestrator({services,cwd:this.cwd,repoRoot:this.repoRoot,env:this.envConfigs.allEnv,proxyOrigin:this.address.origin,resourceEndpoints:this.resourceEndpoints,useImplicitEnvInjection:!1,preferServiceBuilder:!0,onQueueSubscriptions:(serviceName,subscriptions)=>this.queueBroker?.updateServiceSubscriptions(serviceName,subscriptions)});this.sidecarOrchestrator=orchestrator,this.queueBroker?.registerServices(services);try{await orchestrator.startAll()}catch(err){throw await orchestrator.stopAll(),this.sidecarOrchestrator=void 0,this.sidecars=[],err}output_manager_default.log(`Started ${sidecars.length} development ${(0,import_pluralize2.default)("sidecar",sidecars.length)}`)}async exit(code=1){await this.stop(code),process.exit(code)}enqueueFsEvent(type,path6){this.bulkRedirectsResolvedPath&&(path6===this.bulkRedirectsResolvedPath||path6.startsWith(this.bulkRedirectsResolvedPath+sep2))&&(this.bulkRedirectsDirty=!0),this.watchAggregationEvents.push({type,path:path6}),this.watchAggregationId===null&&(this.watchAggregationId=setTimeout(()=>{let events=this.watchAggregationEvents.slice();this.watchAggregationEvents.length=0,this.watchAggregationId=null,this.handleFilesystemEvents(events).catch(err=>{output_manager_default.prettyError(err),(0,import_error_utils.isError)(err)&&typeof err.stack=="string"&&output_manager_default.debug(err.stack)})},this.watchAggregationTimeout))}async handleFilesystemEvents(events){output_manager_default.debug(`Filesystem watcher notified of ${events.length} events`);let filesChanged=new Set,filesRemoved=new Set,distPaths=[];for(let buildMatch of this.buildMatches.values())for(let buildResult of buildMatch.buildResults.values())buildResult.distPath&&distPaths.push(buildResult.distPath);events=events.filter(event=>distPaths.every(distPath=>!event.path.startsWith(distPath)));for(let event of events)event.type==="add"?await this.handleFileCreated(event.path,filesChanged,filesRemoved):event.type==="unlink"?this.handleFileDeleted(event.path,filesChanged,filesRemoved):event.type==="change"&&await this.handleFileModified(event.path,filesChanged,filesRemoved);let vercelConfig=await this.getVercelConfig();await this.updateBuildMatches(vercelConfig);let filesChangedArray=[...filesChanged],filesRemovedArray=[...filesRemoved],needsRebuild=new Map;for(let match of this.buildMatches.values())for(let[requestPath,result]of match.buildResults)if(!needsRebuild.has(result)&&Array.isArray(result.watch)){for(let pattern of result.watch)if(minimatches(filesChangedArray,pattern)||minimatches(filesRemovedArray,pattern)){needsRebuild.set(result,[requestPath,match]);break}}if(needsRebuild.size>0){output_manager_default.debug(`Triggering ${needsRebuild.size} rebuilds`),filesChangedArray.length>0&&output_manager_default.debug(`Files changed: ${filesChangedArray.join(", ")}`),filesRemovedArray.length>0&&output_manager_default.debug(`Files removed: ${filesRemovedArray.join(", ")}`);for(let[result,[requestPath,match]]of needsRebuild)requestPath===null||await shouldServe(match,this.files,requestPath,this,vercelConfig)?this.triggerBuild(match,requestPath,null,vercelConfig,result,filesChangedArray,filesRemovedArray).catch(err=>{output_manager_default.warn(`An error occurred while rebuilding \`${match.src}\`:`),console.error(err.stack)}):output_manager_default.debug(`Not rebuilding because \`shouldServe()\` returned \`false\` for "${match.use}" request path "${requestPath}"`)}}async handleFileCreated(fsPath,changed,removed){let name=relative2(this.cwd,fsPath);try{await this.getVercelConfig(),this.files[name]=await import_build_utils7.FileFsRef.fromFsPath({fsPath});let extensionless=this.getExtensionlessFile(name);extensionless&&(this.files[extensionless]=await import_build_utils7.FileFsRef.fromFsPath({fsPath})),fileChanged(name,changed,removed),output_manager_default.debug(`File created: ${name}`)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File created, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}handleFileDeleted(fsPath,changed,removed){let name=relative2(this.cwd,fsPath);output_manager_default.debug(`File deleted: ${name}`),fileRemoved(name,this.files,changed,removed);let extensionless=this.getExtensionlessFile(name);extensionless&&(output_manager_default.debug(`File deleted: ${extensionless}`),fileRemoved(extensionless,this.files,changed,removed))}async handleFileModified(fsPath,changed,removed){let name=relative2(this.cwd,fsPath);try{this.files[name]=await import_build_utils7.FileFsRef.fromFsPath({fsPath}),fileChanged(name,changed,removed),output_manager_default.debug(`File modified: ${name}`)}catch(err){if((0,import_error_utils.isErrnoException)(err)&&err.code==="ENOENT")output_manager_default.debug(`File modified, but has since been deleted: ${name}`),fileRemoved(name,this.files,changed,removed);else throw err}}async updateBuildMatches(vercelConfig,isInitial=!1){let fileList=this.resolveBuildFiles(this.files),matches=await getBuildMatches(vercelConfig,this.cwd,this,fileList),sources=matches.map(m=>m.src);isInitial&&fileList.length===0&&output_manager_default.warn("There are no files inside your deployment.");let ops=[];for(let src of this.buildMatches.keys())if(!sources.includes(src)){output_manager_default.debug(`Removing build match for "${src}"`);let match=this.buildMatches.get(src);match&&ops.push(shutdownBuilder(match)),this.buildMatches.delete(src)}await Promise.all(ops);let blockingBuilds=[];for(let match of matches){let currentMatch=this.buildMatches.get(match.src);if(!buildMatchEquals(currentMatch,match)&&(output_manager_default.debug(`Adding build match for "${match.src}" with "${match.use}"`),this.buildMatches.set(match.src,match),!isInitial&&needsBlockingBuild(match))){let buildPromise=executeBuild(vercelConfig,this,this.files,match,null,!1);blockingBuilds.push(buildPromise)}}blockingBuilds.length>0&&(output_manager_default.debug(`Waiting for ${blockingBuilds.length} "blocking builds"`),this.blockingBuildsPromise=Promise.all(blockingBuilds).then(()=>{output_manager_default.debug('Cleaning up "blockingBuildsPromise" after successful resolve'),this.blockingBuildsPromise=null}).catch(err=>{output_manager_default.debug(`Cleaning up "blockingBuildsPromise" after error: ${err}`),this.blockingBuildsPromise=null,err&&output_manager_default.prettyError(err)})),this.buildMatches=new Map([...this.buildMatches.entries()].sort((matchA,matchB)=>sortBuilders(matchA[1],matchB[1])))}async getLocalEnv(fileName,base){let filePath=join4(this.cwd,fileName),env={};try{let dotenv=await import_fs_extra.default.readFile(filePath,"utf8");output_manager_default.debug(`Using local env: ${filePath}`),env=(0,import_dotenv.parse)(dotenv),env=this.injectSystemValuesInDotenv(env)}catch(err){if(!(0,import_error_utils.isErrnoException)(err)||err.code!=="ENOENT")throw err}try{return{...this.validateEnvConfig(fileName,base||{},env)}}catch(err){if(err instanceof MissingDotenvVarsError)this.reportError(err),await this.exit();else throw err}return{}}getVercelConfig(){if(this.getVercelConfigPromise)return this.getVercelConfigPromise;this.getVercelConfigPromise=this._getVercelConfig();let clear=this.clearVercelConfigPromise;return this.getVercelConfigPromise.then(clear,clear),this.getVercelConfigPromise}get devCommand(){if(this.projectSettings?.devCommand)return this.projectSettings.devCommand;if(this.projectSettings?.framework){let frameworkSlug=this.projectSettings.framework,framework=import_frameworks3.frameworkList.find(f=>f.slug===frameworkSlug);if(framework){let defaults=framework.settings.devCommand.value;if(defaults)return defaults}if((0,import_build_utils7.shouldUseExperimentalBackends)(frameworkSlug))return"npx @vercel/cervel dev"}}async _getVercelConfig(){let{compileVercelConfig}=await import("../../chunks/compile-vercel-config-ZFMPTU47.js");await compileVercelConfig(this.cwd);let configPath=getLocalPathConfig(this.cwd),[pkg=null,vercelConfig={version:2,[import_client.fileNameSymbol]:"vercel.json"}]=await Promise.all([this.readJsonFile("package.json"),this.readJsonFile(configPath)]);await this.validateVercelConfig(vercelConfig),this.projectSettings={...this.originalProjectSettings,...pickOverrides(vercelConfig)};let{error:routeError,routes:maybeRoutes}=(0,import_routing_utils3.getTransformedRoutes)(vercelConfig);routeError&&(this.reportError(routeError),await this.exit()),vercelConfig.routes=maybeRoutes||[];let hasServices=(this.services?.length??0)>0,hasResolvedServices=!!this.services&&this.services.length>0;if(!vercelConfig.experimentalServices&&!hasResolvedServices&&(!vercelConfig.builds||vercelConfig.builds.length===0)){let{projectSettings,cleanUrls,trailingSlash}=vercelConfig,files=(await staticFiles(this.cwd,{})).map(f=>relative2(this.cwd,f)),detectedBuilders=await(0,import_detect_builders_with_services.detectBuildersWithServices)(files,pkg,{tag:"latest",bunVersion:vercelConfig.bunVersion,functions:vercelConfig.functions,projectSettings:projectSettings||this.projectSettings,featHandleMiss:!0,cleanUrls,trailingSlash,proxy:vercelConfig.proxy,workPath:this.cwd}),{builders,warnings,errors,defaultRoutes,redirectRoutes,rewriteRoutes,errorRoutes}=detectedBuilders,hostRewriteRoutes=detectedBuilders.hostRewriteRoutes;if(errors&&(this.reportError(errors[0]),await this.exit()),warnings?.length>0&&warnings.forEach(warning=>output_manager_default.warn(warning.message,null,warning.link,warning.action)),builders){let buildpackRuntime=builders.map(getBuildpackRuntime).find(runtime=>runtime!==void 0);if(buildpackRuntime)throw buildpackDevUnsupportedError(buildpackRuntime);vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push(...builders),delete vercelConfig.functions}let serviceRewrites=detectedBuilders.serviceRewrites,serviceRewriteRoutes=serviceRewrites&&serviceRewrites.length>0?(0,import_routing_utils3.convertRewrites)(serviceRewrites):null,routes=[];routes.push(...redirectRoutes||[]),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:hostRewriteRoutes??null,phase:null}),routes.push(...(0,import_routing_utils3.appendRoutesToPhase)({routes:vercelConfig.routes,newRoutes:[...rewriteRoutes||[],...serviceRewriteRoutes||[]],phase:"filesystem"})),routes=(0,import_routing_utils3.appendRoutesToPhase)({routes,newRoutes:errorRoutes,phase:"error"}),routes.push(...defaultRoutes||[]),vercelConfig.routes=routes}else if(hasResolvedServices&&vercelConfig.proxy){let{entrypoint}=vercelConfig.proxy;await import_fs_extra.default.pathExists(join4(this.cwd,entrypoint))||(output_manager_default.error(`The proxy entrypoint \`${entrypoint}\` does not exist. Set \`proxy.entrypoint\` to an existing \`.js\` or \`.ts\` file.`),await this.exit()),vercelConfig.builds=vercelConfig.builds||[],vercelConfig.builds.push((0,import_fs_detectors2.getProxyBuilder)(vercelConfig.proxy,"latest",vercelConfig.functions))}if(this.sidecars===void 0){let services=(this.services??[]).filter(import_build_utils7.isExperimentalServiceV2);this.sidecars=await collectBuilderDevSidecars({builds:this.shouldUseServicesOrchestrator()?services.map(service=>service.builder):vercelConfig.builds??[],workPath:this.cwd,services})}Array.isArray(vercelConfig.builds)&&((this.devCommand||hasServices)&&(vercelConfig.builds=vercelConfig.builds.filter(this.shouldBuildInDev)),vercelConfig.builds.sort(sortBuilders)),vercelConfig.routes=(vercelConfig.routes||[]).filter(route=>"has"in route?(this.vercelConfigWarning||(this.vercelConfigWarning=!0,output_manager_default.warn(`The "has" property in ${vercelConfig[import_client.fileNameSymbol]} will be ignored during development. Deployments will work as expected.`)),!1):!0),this.caseSensitive=hasNewRoutingProperties(vercelConfig),this.apiDir=(0,import_fs_detectors2.detectApiDirectory)(vercelConfig.builds||[]),this.apiExtensions=(0,import_fs_detectors2.detectApiExtensions)(vercelConfig.builds||[]);let[runEnv,buildEnv]=await Promise.all([this.getLocalEnv(".env",vercelConfig.env),this.getLocalEnv(".env.build",vercelConfig.build?.env)]),allEnv={...buildEnv,...runEnv};if(Object.keys(allEnv).length===0){let envValues={...this.envValues};this.address.host&&(envValues.VERCEL_URL=this.address.host),allEnv={...envValues},runEnv={...envValues},buildEnv={...envValues}}return runEnv.NOW_REGION="dev1",buildEnv.NOW_REGION="dev1",allEnv.NOW_REGION="dev1",allEnv.VERCEL_ENV="development",allEnv.VERCEL="1",this.projectId&&!process.env.VERCEL_PROJECT_ID&&("VERCEL_PROJECT_ID"in allEnv||(allEnv.VERCEL_PROJECT_ID=this.projectId),"VERCEL_PROJECT_ID"in runEnv||(runEnv.VERCEL_PROJECT_ID=this.projectId)),this.orgId&&!process.env.VERCEL_ORG_ID&&("VERCEL_ORG_ID"in allEnv||(allEnv.VERCEL_ORG_ID=this.orgId),"VERCEL_ORG_ID"in runEnv||(runEnv.VERCEL_ORG_ID=this.orgId)),this.projectSettings?.autoExposeSystemEnvs&&(runEnv.VERCEL_REGION="dev1"),Object.assign(runEnv,this.getDevQueueEnv()),Object.assign(runEnv,this.getDevRuntimeCacheEnv(runEnv)),this.envConfigs={buildEnv,runEnv,allEnv},this.initialDevCommandStarted&&await this.runDevCommand(),await this.refreshBulkRedirects(vercelConfig.bulkRedirectsPath),vercelConfig}async refreshBulkRedirects(bulkRedirectsPath){let configPath=bulkRedirectsPath??null;if(configPath===this.bulkRedirectsLastPath&&!this.bulkRedirectsDirty)return;if(this.bulkRedirectsLastPath=configPath,this.bulkRedirectsDirty=!1,this.bulkRedirectsResolvedPath=configPath?resolveBulkRedirectsPath(this.cwd,configPath):null,!configPath){this.bulkRedirects=null,this.bulkRedirectsSignature=null;return}let signature=await getBulkRedirectsSignature(this.cwd,configPath);if(signature!==this.bulkRedirectsSignature){this.bulkRedirectsSignature=signature;try{let result=await loadBulkRedirects(this.cwd,configPath);this.bulkRedirects=result.table;for(let warning of result.warnings)output_manager_default.warn(warning);let count=result.table.size;count>0&&output_manager_default.log(`Loaded ${count} bulk ${(0,import_pluralize2.default)("redirect",count)} from ${configPath}`)}catch(err){this.bulkRedirects=null,output_manager_default.warn(`Failed to load bulk redirects from "${configPath}": ${(0,import_error_utils.errorToString)(err)}`)}}}async readJsonFile(filePath){let rel,abs;isAbsolute3(filePath)?(rel=path4.relative(this.cwd,filePath),abs=filePath):(rel=filePath,abs=join4(this.cwd,filePath)),output_manager_default.debug(`Reading \`${rel}\` file`);try{let raw=await import_fs_extra.default.readFile(abs,"utf8"),parsed=(0,import_json_parse_better_errors.default)(raw);return parsed[import_client.fileNameSymbol]=rel,parsed}catch(err){if((0,import_error_utils.isError)(err))(0,import_error_utils.isErrnoException)(err)&&err.code==="ENOENT"?output_manager_default.debug(`No \`${rel}\` file present`):err.name==="SyntaxError"&&output_manager_default.warn(`There is a syntax error in the \`${rel}\` file: ${err.message}`);else throw err}}async tryValidateOrExit(config,validate){let message2=validate(config);message2&&(output_manager_default.error(message2),await this.exit(1))}async validateVercelConfig(config){if(config.version===1){this.reportError(dev.DEV_UNSUPPORTED_CONFIG_VERSION()),await this.exit(1);return}let error2=validateConfig(config);error2&&(this.reportError(error2),await this.exit(1))}validateEnvConfig(type,env={},localEnv={}){let missing=Object.entries(env).filter(([name,value])=>typeof value=="string"&&value.startsWith("@")&&!hasProp(localEnv,name)).map(([name])=>name);if(missing.length>0)throw new MissingDotenvVarsError(type,missing);let merged={...env,...localEnv},hasInvalidName=!1;for(let key of Object.keys(merged))/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)||(output_manager_default.warn(`Ignoring ${type.split(".").slice(1).reverse().join(" ")} var ${JSON.stringify(key)} because name is invalid`),hasInvalidName=!0,delete merged[key]);return hasInvalidName&&output_manager_default.log("The name contains invalid characters. Only letters, digits, and underscores are allowed. Furthermore, the name should not start with a digit"),merged}injectSystemValuesInDotenv(env){for(let name of Object.keys(env))name==="VERCEL_URL"?env.VERCEL_URL=this.address.host:name==="VERCEL_REGION"&&(env.VERCEL_REGION="dev1");return env}resolveBuildFiles(files){return Object.keys(files).filter(this.filter)}isWatcherIgnored(fsPath){let relativePath=relative2(this.cwd,fsPath);return relativePath===""?!1:!this.filter(relativePath)}start(...listenSpec){return this.startPromise||(this.startPromise=this._start(...listenSpec).catch(async err=>{throw await this.stop(),err})),this.startPromise}async _start(...listenSpec){if(!import_fs_extra.default.existsSync(this.cwd))throw dev.DEV_CWD_NOT_FOUND({cwd:this.cwd});if(!import_fs_extra.default.lstatSync(this.cwd).isDirectory())throw dev.DEV_CWD_NOT_DIRECTORY({cwd:this.cwd});let{ig}=await(0,import_client.getVercelIgnore)(this.cwd);this.filter=ig.createFilter();let address=null;for(;typeof address!="string";)try{address=(await(0,import_async_listen.listen)(this.server,...listenSpec)).toString()}catch(err){if((0,import_error_utils.isErrnoException)(err))output_manager_default.debug(`Got listen error: ${err.code}`),err.code==="EADDRINUSE"&&(typeof listenSpec[0]=="number"?(output_manager_default.note(`Requested port ${import_chalk2.default.yellow(String(listenSpec[0]))} is already in use`),listenSpec[0]++):(this.reportError(dev.DEV_LISTEN_ADDRESS_IN_USE({address:String(listenSpec[0])})),process.exit(1)));else throw err}this._address=new URL2(replaceLocalhost(address)),this.runtimeCache=new RuntimeCacheStore;let runtimeCacheListener=await listenOnDevResourcePort(this.runtimeCacheServer,{name:"Runtime Cache",flag:"--runtime-cache-port",defaultPort:DEV_RUNTIME_CACHE_DEFAULT_PORT,port:this.runtimeCachePort,reservedPorts:this.queuePort!==void 0&&this.queuePort!==0?[this.queuePort]:void 0});this.runtimeCacheOrigin=runtimeCacheListener.origin,runtimeCacheListener.defaultPort!==void 0&&output_manager_default.warn(`Runtime Cache default port ${runtimeCacheListener.defaultPort} is unavailable; listening on ${runtimeCacheListener.port} instead.
55
55
  External clients configured for ${runtimeCacheListener.defaultPort} will not reach this dev server. Pin a port with --runtime-cache-port.`);let queueListener=await listenOnDevResourcePort(this.queueServer,{name:"Vercel Queues",flag:"--queue-port",defaultPort:DEV_QUEUE_DEFAULT_PORT,port:this.queuePort});this.queueOrigin=queueListener.origin,queueListener.defaultPort!==void 0&&output_manager_default.warn(`Vercel Queues default port ${queueListener.defaultPort} is unavailable; listening on ${queueListener.port} instead.
56
56
  External clients configured for ${queueListener.defaultPort} will not reach this dev server. Pin a port with --queue-port.`),this.queueBroker=new QueueBroker([],name=>this.orchestrator?.getServiceOrigin(name)??this.sidecarOrchestrator?.getServiceOrigin(name)??null);let vercelConfig=await this.getVercelConfig(),devCommandPromise,startDevCommand=()=>{this.initialDevCommandStarted=!0,devCommandPromise=this.runDevCommand(),devCommandPromise.catch(()=>{})};if(this.shouldUseServicesOrchestrator()){let orchestratorServices=[...this.services||[],...(this.sidecars||[]).map(toOrchestratorService)];this.orchestrator=new ServicesOrchestrator({services:orchestratorServices,cwd:this.cwd,repoRoot:this.repoRoot,env:this.envConfigs.allEnv,proxyOrigin:this.address.origin,resourceEndpoints:this.resourceEndpoints,useImplicitEnvInjection:this.useImplicitServicesEnvInjection,onQueueSubscriptions:(serviceName,subscriptions)=>this.queueBroker?.updateServiceSubscriptions(serviceName,subscriptions)});let queueServices=orchestratorServices.filter(import_build_utils7.isExperimentalService).filter(import_build_utils7.isQueueBackedService);this.queueBroker.registerServices(queueServices),devCommandPromise=this.orchestrator.startAll(),this.devProcessOrigin=void 0;let addressFormatted=this.address.toString();this.address.pathname==="/"&&this.address.protocol==="http:"&&(addressFormatted=addressFormatted.replace(/\/$/,"")),output_manager_default.print(`${import_chalk2.default.cyan(">")} Available at:
57
57
  `);let v1WebServices=(this.services||[]).filter(import_build_utils7.isExperimentalService).filter(service=>service.type==="web");if(v1WebServices.length>0)for(let service of v1WebServices){let servicePath=service.routePrefix||"/",serviceUrl=`${addressFormatted}${servicePath==="/"?"":servicePath}`;output_manager_default.print(` ${import_chalk2.default.bold(service.name)}: ${link_default(serviceUrl)}
@@ -66,7 +66,7 @@ ${error_code}
66
66
  - Environment variables will not be pulled from Vercel
67
67
  - Project settings are defined by local configuration
68
68
 
69
- To link your project, run ${getCommandName("dev")} without \`-L\` or \`--local\` or ${getCommandName("link")}.`);else{if(projectNameOrId)return await printProjectNotFoundError(client,projectNameOrId,"dev",link.orgId),1;if(link=await setupAndLink(client,cwd,{autoConfirm:opts["--yes"],link,successEmoji:"link",nonInteractive:client.nonInteractive}),link.status==="not_linked")return 0}if(link.status==="error")return link.reason==="HEADLESS"&&(client.nonInteractive?outputActionRequired(client,{status:"action_required",reason:"confirmation_required",message:`Command ${getCommandNamePlain("dev")} requires confirmation. Use option --yes to confirm.`,next:[{command:buildCommandWithYes(client.argv),when:"Confirm and run"}]},link.exitCode):output_manager_default.error(`Command ${getCommandName("dev")} requires confirmation. Use option ${param("--yes")} to confirm.`)),link.exitCode;let projectSettings,envValues={},repoRoot,projectId,orgId;if(link.status==="linked"){let{project,org}=link;if(link.repoRoot)repoRoot=cwd=link.repoRoot;else if(project.rootDirectory){let monorepoRoot=await findRepoRoot(cwd);monorepoRoot&&(repoRoot=cwd=monorepoRoot)}client.config.currentTeam=org.type==="team"?org.id:void 0,projectSettings=project,projectId=project.id,orgId=org.id,project.rootDirectory&&(cwd=join6(cwd,project.rootDirectory)),envValues=(await pullEnvRecords(client,project.id,"vercel-cli:dev")).env}let services,useImplicitServicesEnvInjection=!0,servicesResult=await tryDetectServices(cwd,cwd===localConfigCwd?localConfig:void 0),foundServices=servicesResult&&servicesResult.services.length>0;foundServices&&(services=servicesResult.services,displayDetectedServices(services),useImplicitServicesEnvInjection=servicesResult.useImplicitEnvInjection,assertNoBuildpackServices(services));let hasExplicitBuilds=!!localConfig?.builds?.length,hasExplicitFramework=localConfig?.framework!==void 0,hasServicesConfig=!!(localConfig?.services??localConfig?.experimentalServicesV2??localConfig?.experimentalServices);if(link.status==="not_linked"&&!!opts["--local"]&&!foundServices&&!hasServicesConfig&&!hasExplicitBuilds&&!hasExplicitFramework){let detectedFramework=await(0,import_fs_detectors3.detectFramework)({fs:new import_fs_detectors3.LocalFileSystemDetector(cwd),frameworkList:import_frameworks4.frameworkList});detectedFramework&&(output_manager_default.debug(`Detected framework ${detectedFramework} for unlinked local dev`),projectSettings={framework:detectedFramework})}let lockAcquired=!1;if(foundServices){let port=typeof listen2[0]=="number"?listen2[0]:0,lockResult=await acquireDevLock(cwd,port);if(!lockResult.acquired){let detail;if(lockResult.existingLock){let{existingLock}=lockResult,startTime=(0,import_ms8.default)(Date.now()-existingLock.startedAt);detail=`Port: ${existingLock.port}
69
+ To link your project, run ${getCommandName("dev")} without \`-L\` or \`--local\` or ${getCommandName("link")}.`);else{if(projectNameOrId)return await printProjectNotFoundError(client,projectNameOrId,"dev",link.orgId),1;if(link=await setupAndLink(client,cwd,{autoConfirm:opts["--yes"],link,successEmoji:"link",nonInteractive:client.nonInteractive}),link.status==="not_linked")return 0}if(link.status==="error")return link.reason==="HEADLESS"&&(client.nonInteractive?outputActionRequired(client,{status:"action_required",reason:"confirmation_required",message:`Command ${getCommandNamePlain("dev")} requires confirmation. Use option --yes to confirm.`,next:[{command:buildCommandWithYes(client.argv),when:"Confirm and run"}]},link.exitCode):output_manager_default.error(`Command ${getCommandName("dev")} requires confirmation. Use option ${param("--yes")} to confirm.`)),link.exitCode;let projectSettings,envValues={},repoRoot,projectId,orgId;if(link.status==="linked"){let{project,org}=link;if(link.repoRoot)repoRoot=cwd=link.repoRoot;else if(project.rootDirectory){let monorepoRoot=await findRepoRoot(cwd);monorepoRoot&&(repoRoot=cwd=monorepoRoot)}client.config.currentTeam=org.type==="team"?org.id:void 0,projectSettings=project,projectId=project.id,orgId=org.id,project.rootDirectory&&(cwd=join6(cwd,project.rootDirectory)),envValues=(await pullEnvRecords(client,project.id,"vercel-cli:dev")).env}let services,useImplicitServicesEnvInjection=!0,servicesResult=await tryDetectServices(cwd,cwd===localConfigCwd?localConfig:void 0);await promptExperimentalServicesMigration({client,cwd,autoConfirm:!!opts["--yes"],nonInteractive:client.nonInteractive,detectServicesResult:servicesResult})&&(servicesResult=await tryDetectServices(cwd));let foundServices=servicesResult&&servicesResult.services.length>0;servicesResult&&foundServices&&(services=servicesResult.services,displayDetectedServices(services),useImplicitServicesEnvInjection=servicesResult.useImplicitEnvInjection,assertNoBuildpackServices(services));let hasExplicitBuilds=!!localConfig?.builds?.length,hasExplicitFramework=localConfig?.framework!==void 0,hasServicesConfig=!!(localConfig?.services??localConfig?.experimentalServicesV2??localConfig?.experimentalServices);if(link.status==="not_linked"&&!!opts["--local"]&&!foundServices&&!hasServicesConfig&&!hasExplicitBuilds&&!hasExplicitFramework){let detectedFramework=await(0,import_fs_detectors3.detectFramework)({fs:new import_fs_detectors3.LocalFileSystemDetector(cwd),frameworkList:import_frameworks4.frameworkList});detectedFramework&&(output_manager_default.debug(`Detected framework ${detectedFramework} for unlinked local dev`),projectSettings={framework:detectedFramework})}let lockAcquired=!1;if(foundServices){let port=typeof listen2[0]=="number"?listen2[0]:0,lockResult=await acquireDevLock(cwd,port);if(!lockResult.acquired){let detail;if(lockResult.existingLock){let{existingLock}=lockResult,startTime=(0,import_ms8.default)(Date.now()-existingLock.startedAt);detail=`Port: ${existingLock.port}
70
70
  PID: ${existingLock.pid}
71
71
  Started: ${startTime} ago
72
72
  Stop it by pressing Ctrl+C in its terminal, or run \`kill ${existingLock.pid}\`.`}else detail=lockResult.reason;return reportError(dev.DEV_LOCK_HELD({detail})),1}lockAcquired=!0}let devServer=new DevServer(cwd,{projectSettings,envValues,repoRoot,services,useImplicitServicesEnvInjection,projectId,orgId,queuePort,runtimeCachePort,onErrorCode:code=>telemetry.trackError(code)}),controller=new AbortController,timeout=setTimeout(async()=>{if(link.status==="linked")try{let refreshCount=0;for await(let token of refreshOidcToken(controller.signal,client,link.project.id,envValues,"vercel-cli:dev"))output_manager_default.debug(`Refreshing ${import_chalk3.default.green(VERCEL_OIDC_TOKEN)}`),envValues[VERCEL_OIDC_TOKEN]=token,await devServer.runDevCommand(!0),telemetry.trackOidcTokenRefresh(++refreshCount)}catch(error2){if(error2 instanceof Error&&error2.name==="AbortError"){output_manager_default.debug("OIDC token refresh was aborted");return}if(error2 instanceof DevCommandExitError){output_manager_default.error(error2.message),await cleanup(error2.exitCode);return}throw error2}}),cleanupInProgress=!1,cleanup=async reason=>{if(cleanupInProgress)return;cleanupInProgress=!0,output_manager_default.debug(typeof reason=="number"?`Exiting with code ${reason}, shutting down...`:`Received ${reason}, shutting down...`),clearTimeout(timeout),controller.abort(),lockAcquired&&releaseDevLock(cwd),await devServer.stop();let exitCode;if(typeof reason=="number")exitCode=reason;else switch(reason){case"SIGINT":exitCode=130;break;case"SIGTERM":exitCode=143;break;case"SIGHUP":exitCode=129;break;default:exitCode=0}process.exit(exitCode)};if(process.on("SIGTERM",async()=>await cleanup("SIGTERM")),process.on("SIGINT",async()=>await cleanup("SIGINT")),process.on("SIGHUP",async()=>await cleanup("SIGHUP")),!devServer.devCommand){let outputDir=join6(cwd,import_write_build_result.OUTPUT_DIR);await import_fs_extra2.default.pathExists(outputDir)&&(output_manager_default.log(`Removing ${import_write_build_result.OUTPUT_DIR}`),await import_fs_extra2.default.remove(outputDir))}try{await devServer.start(...listen2)}catch(err){throw lockAcquired&&releaseDevLock(cwd),err}finally{clearTimeout(timeout),controller.abort()}}var import_error_utils2=__toESM(require_dist(),1);var DevTelemetryClient=class extends TelemetryClient{trackCliArgumentDir(dir){dir&&this.trackCliArgument({arg:"dir",value:this.redactedValue})}trackCliOptionListen(uri){uri&&this.trackCliOption({option:"listen",value:this.redactedValue})}trackCliOptionPort(port){port&&this.trackCliOption({option:"port",value:this.redactedValue})}trackCliOptionQueuePort(port){port&&this.trackCliOption({option:"queue-port",value:this.redactedValue})}trackCliOptionRuntimeCachePort(port){port&&this.trackCliOption({option:"runtime-cache-port",value:this.redactedValue})}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}trackCliFlagLocal(local){local&&this.trackCliFlag("local")}trackCliFlagConfirm(confirm){confirm&&this.trackCliFlag("confirm")}trackOidcTokenRefresh(count){super.trackOidcTokenRefresh(count)}trackError(code){code&&code!=="Diagnostic"&&this.trackErrorCode(code)}};var COMMAND_CONFIG={dev:["dev"]};async function main(client){let{telemetryEventStore}=client,telemetry=new DevTelemetryClient({opts:{store:telemetryEventStore}}),reportError=createErrorReporter(code=>telemetry.trackError(code));if(process.env.__VERCEL_DEV_RUNNING)return reportError(dev.DEV_RECURSIVE_INVOCATION()),1;process.env.__VERCEL_DEV_RUNNING="1";let parsedArgs=null,flagsSpecification=getFlagsSpecification(devCommand.options);try{parsedArgs=parseArguments(client.argv.slice(2),flagsSpecification)}catch(error2){return printError(error2),1}if(telemetry.trackCliFlagConfirm(parsedArgs.flags["--confirm"]),telemetry.trackCliFlagLocal(parsedArgs.flags["--local"]),telemetry.trackCliFlagYes(parsedArgs.flags["--yes"]),telemetry.trackCliOptionPort(parsedArgs.flags["--port"]),telemetry.trackCliOptionListen(parsedArgs.flags["--listen"]),telemetry.trackCliOptionQueuePort(parsedArgs.flags["--queue-port"]),telemetry.trackCliOptionRuntimeCachePort(parsedArgs.flags["--runtime-cache-port"]),telemetry.trackCliOptionProject(parsedArgs.flags["--project"]),parsedArgs.flags["--help"])return telemetry.trackCliFlagHelp("dev"),output_manager_default.print(help(devCommand,{columns:client.stderr.columns})),2;let args2=getSubcommand(parsedArgs.args.slice(1),COMMAND_CONFIG).args;"--confirm"in parsedArgs.flags&&(output_manager_default.warn("`--confirm` is deprecated, please use `--yes` instead"),parsedArgs.flags["--yes"]=parsedArgs.flags["--confirm"]),"--port"in parsedArgs.flags&&(output_manager_default.warn("`--port` is deprecated, please use `--listen` instead"),parsedArgs.flags["--listen"]=parsedArgs.flags["--port"]);let[passedDir]=args2;telemetry.trackCliArgumentDir(passedDir);let dir=passedDir||process.cwd(),vercelConfig=await readConfig(dir);if(vercelConfig instanceof Error)return reportError(vercelConfig),1;let hasBuilds=vercelConfig&&"builds"in vercelConfig&&vercelConfig.builds&&vercelConfig.builds.length>0;if(!vercelConfig||!hasBuilds){let pkg=await readJSONFile(path5.join(dir,"package.json"));if(pkg instanceof CantParseJSONFile)return reportError(pkg),1;if(/\b(now|vercel)\b\W+\bdev\b/.test(pkg?.scripts?.dev||""))return reportError(dev.DEV_RECURSIVE_INVOCATION()),1}if(parsedArgs.args.length>2)return output_manager_default.error(`${getCommandName("dev [dir]")} accepts at most one argument`),1;try{return await dev2(client,parsedArgs.flags,args2,telemetry,vercelConfig)}catch(err){if((err instanceof DevCommandExitError||err instanceof ServiceStartError)&&(reportError(err),process.exit(err instanceof DevCommandExitError?err.exitCode:1)),(0,import_error_utils2.isErrnoException)(err)&&err.code==="ENOTFOUND"){let matches=/getaddrinfo ENOTFOUND (.*)$/.exec(err.message||"");if(matches&&matches[1]){let hostname=matches[1];output_manager_default.error(`The hostname ${highlight(hostname)} could not be resolved. Please verify your internet connectivity and DNS configuration.`)}else reportError(err);return typeof err.stack=="string"&&output_manager_default.debug(err.stack),1}return reportError(err),output_manager_default.debug(stringifyError(err)),1}}function stringifyError(err){if(err instanceof NowError){let errMeta=JSON.stringify(err.meta,null,2).replace(/\\n/g,`
@@ -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{CHECKBOX_INSTRUCTIONS,getCustomEnvironments,readStandardInput,require_dist as require_dist3}from"../../chunks/chunk-COQGD2EI.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import{ellipsis}from"../../chunks/chunk-ZDX75YNZ.js";import{formatTable}from"../../chunks/chunk-UED2PPFP.js";import"../../chunks/chunk-MBL6TXEJ.js";import{isGuidanceEnabled,suggestNextCommands}from"../../chunks/chunk-DQ2KI6FO.js";import{formatEnvironment}from"../../chunks/chunk-LQBC5QPO.js";import{validateLsArgs}from"../../chunks/chunk-Z4VR6CQ2.js";import{validateJsonOutput}from"../../chunks/chunk-D4MW3RDW.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getCommandAliases}from"../../chunks/chunk-2EY7NJ5E.js";import"../../chunks/chunk-M5AV545M.js";import"../../chunks/chunk-65JYSI26.js";import"../../chunks/chunk-YMVDWVMO.js";import"../../chunks/chunk-O7G3CZ42.js";import"../../chunks/chunk-N3N5UHIL.js";import"../../chunks/chunk-IVWPQYIH.js";import"../../chunks/chunk-WUZD4KBL.js";import"../../chunks/chunk-3QHJYVCY.js";import"../../chunks/chunk-NBVY237X.js";import"../../chunks/chunk-MEAY2K5Z.js";import"../../chunks/chunk-EQ52F4LH.js";import"../../chunks/chunk-EIXOJUNN.js";import"../../chunks/chunk-OAKO6LVS.js";import"../../chunks/chunk-CVKB54WW.js";import"../../chunks/chunk-JKTQV2QJ.js";import"../../chunks/chunk-AZ6NRDHG.js";import"../../chunks/chunk-FAW6NBLQ.js";import"../../chunks/chunk-ZKYS7EAB.js";import{autoInstallVercelPlugin}from"../../chunks/chunk-WBE23KLI.js";import"../../chunks/chunk-UXTHEQVJ.js";import{require_execa}from"../../chunks/chunk-HWWHR7H3.js";import{stamp_default}from"../../chunks/chunk-XPXOV5UO.js";import"../../chunks/chunk-2I64AYHG.js";import"../../chunks/chunk-SOJCELXH.js";import"../../chunks/chunk-JZRMH5UA.js";import{require_ms}from"../../chunks/chunk-QTKJC2O5.js";import{ENV_VISIBILITY_DEPRECATION_MESSAGE,SENSITIVE_ENV_VALUE_PLACEHOLDER,formatVisibilityLabel,getApiPublicPrefix,getEnvKeyWarnings,getEnvRecords,getFrameworkPublicPrefix,getLocalSecretFallbackMessage,getLocalSvelteKitPublicPrefixes,getPublicPrefix,getPublicPrefixSecretVisibilityError,getUnavailableSecretValuesMessage,isFlagsSecretNeedingSplit,isSecretEnvVar,looksLikeSecret,looksLikeSecretValue,normalizeStdinEnvValue,pull,pullEnvRecords,removePublicPrefix,resolveEnvVarTypeOption,resolveEnvVarVisibility,shouldConfirmRotationBeforeDelete,validateEnvValue}from"../../chunks/chunk-W27LUVFI.js";import{resolveProjectContext}from"../../chunks/chunk-GPX6W4GB.js";import"../../chunks/chunk-WHYH7DVI.js";import"../../chunks/chunk-ULLWCOYC.js";import"../../chunks/chunk-KK4AJES5.js";import"../../chunks/chunk-N6CNMMSZ.js";import"../../chunks/chunk-VIR3KDCQ.js";import"../../chunks/chunk-UDOFIJ7K.js";import"../../chunks/chunk-CKX6OH4B.js";import"../../chunks/chunk-EQP3SW72.js";import"../../chunks/chunk-6LE3FU2P.js";import{addSubcommand,envCommand,envTargetChoices,getEnvTargetPlaceholder,isValidEnvTarget,listSubcommand,parseEnvTargetArg,pullSubcommand,removeSubcommand,runSubcommand,updateSubcommand}from"../../chunks/chunk-KUVMCIR4.js";import{param}from"../../chunks/chunk-SXUEGVWB.js";import{STANDARD_ENVIRONMENTS,formatProject}from"../../chunks/chunk-6BZCSVH6.js";import{help}from"../../chunks/chunk-V6IKQCOT.js";import"../../chunks/chunk-6TAQ6OWD.js";import{parseTarget}from"../../chunks/chunk-R3B67TKQ.js";import"../../chunks/chunk-GHULCYAR.js";import"../../chunks/chunk-UXCTETFN.js";import"../../chunks/chunk-WPS6JZF6.js";import"../../chunks/chunk-77GUJ4JC.js";import{TelemetryClient,require_dist as require_dist2}from"../../chunks/chunk-A5VLP25I.js";import"../../chunks/chunk-RCTYVKM5.js";import"../../chunks/chunk-5XJNPXQK.js";import{printError}from"../../chunks/chunk-TBBU37TD.js";import{parseArguments}from"../../chunks/chunk-T4AZ3U7O.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7T6TL3GQ.js";import"../../chunks/chunk-UB37A37M.js";import"../../chunks/chunk-F2ZWW2IO.js";import"../../chunks/chunk-B4ATVYZW.js";import"../../chunks/chunk-PPCFQQSU.js";import"../../chunks/chunk-OSCCYU74.js";import{buildCommandWithYes,buildEnvAddCommandWithPreservedArgs,buildEnvRmCommandWithPreservedArgs,buildEnvUpdateCommandWithPreservedArgs,getPreservedArgsForEnvAdd,getPreservedArgsForEnvRm,getPreservedArgsForEnvUpdate,outputActionRequired,outputAgentError,quoteArg,redactEnvValueArgs,withGlobalFlags}from"../../chunks/chunk-BX5KDMLT.js";import{getFlagsSpecification,getGlobalFlagsFromArgs}from"../../chunks/chunk-JAJW3P42.js";import{printAlignedLabel}from"../../chunks/chunk-YMM3VY3J.js";import"../../chunks/chunk-V5DCSHYJ.js";import{getTeamByIdOrSlug}from"../../chunks/chunk-VOZEB6PD.js";import{isAPIError}from"../../chunks/chunk-LKI6FRNM.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-FI772UVH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-EWWFNMPZ.js";import{require_dist}from"../../chunks/chunk-QGIQK47P.js";import"../../chunks/chunk-BRK4OB4B.js";import"../../chunks/chunk-AVSPFBLM.js";import"../../chunks/chunk-XCJDGQO7.js";import"../../chunks/chunk-YPTLSODC.js";import"../../chunks/chunk-7HL2RPUO.js";import{require_source}from"../../chunks/chunk-U7KCDTCH.js";import"../../chunks/chunk-N3ZZ7FHQ.js";import"../../chunks/chunk-GU6VIFR5.js";import{__toESM}from"../../chunks/chunk-6L236MNA.js";var import_chalk=__toESM(require_source(),1);var import_constants=__toESM(require_dist2(),1);async function addEnvRecord(client,projectId,upsert,type,key,value,targets,gitBranch,visibility){let actionWord=upsert?"Overriding":"Adding";output_manager_default.debug(`${actionWord} ${type} Environment Variable ${key} to ${targets.length} targets`);let target=[],customEnvironmentIds=[];for(let t of targets)(import_constants.PROJECT_ENV_TARGET.includes(t)?target:customEnvironmentIds).push(t);let body={type,key,value,target,customEnvironmentIds:customEnvironmentIds.length>0?customEnvironmentIds:void 0,gitBranch:gitBranch||void 0,...visibility!==void 0?{visibility}:{}},args=upsert?`?upsert=${upsert}`:"",url=`/v10/projects/${projectId}/env${args}`;await client.fetch(url,{method:"POST",body})}var import_error_utils=__toESM(require_dist(),1),knownErrorsCodes=new Set(["BAD_REQUEST","ENV_ALREADY_EXISTS","ENV_CONFLICT","EXISTING_KEY_AND_TARGET","FORBIDDEN","ID_NOT_FOUND","INVALID_KEY","INVALID_VALUE","KEY_INVALID_CHARACTERS","KEY_INVALID_LENGTH","KEY_RESERVED","RESERVED_ENV_VARIABLE","MAX_ENVS_EXCEEDED","MISSING_ID","MISSING_KEY","MISSING_TARGET","MISSING_VALUE","NOT_AUTHORIZED","NOT_DECRYPTABLE","SYSTEM_ENV_WITH_VALUE","TEAM_NOT_FOUND","TOO_MANY_IDS","TOO_MANY_KEYS","UNKNOWN_ERROR","VALUE_INVALID_LENGTH","VALUE_INVALID_TYPE"]);function isKnownError(error){let code=(0,import_error_utils.isErrnoException)(error)?error.code:null;return code?knownErrorsCodes.has(code.toUpperCase()):!1}var EnvAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliArgumentEnvironment(environment){if(environment){let allStandard=environment.split(",").map(t=>t.trim()).every(t=>STANDARD_ENVIRONMENTS.includes(t));this.trackCliArgument({arg:"environment",value:allStandard?environment:this.redactedValue})}}trackCliArgumentGitBranch(gitBranch){gitBranch&&this.trackCliArgument({arg:"git-branch",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionValue(value){value&&this.trackCliOption({option:"value",value:this.redactedValue})}trackCliOptionVisibility(visibility){if(visibility){let validVisibilities=["config","secret"];this.trackCliOption({option:"visibility",value:validVisibilities.includes(visibility)?visibility:this.redactedValue})}}trackCliOptionType(type){if(type){let validTypes=["config","secret"];this.trackCliOption({option:"type",value:validTypes.includes(type)?type:this.redactedValue})}}trackCliFlagSensitive(sensitive){sensitive&&this.trackCliFlag("sensitive")}trackCliFlagNoSensitive(noSensitive){noSensitive&&this.trackCliFlag("no-sensitive")}trackCliFlagForce(force){force&&this.trackCliFlag("force")}trackCliFlagGuidance(guidance){guidance&&this.trackCliFlag("guidance")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};import{determineAgent}from"@vercel/detect-agent";function includesDevelopment(targets){return targets.length===0||targets.includes("development")}function getProductionSecretPolicyErrorKind(message){return/production secrets?.*different value|different value.*production secrets?/i.test(message)?"different-values":/production secrets?.*(?:own environment group|separat)|(?:own environment group|separat).*production secrets?/i.test(message)?"separate-environments":null}function getProductionSecretPolicyRecovery(kind){return kind==="different-values"?"Use different Secret values for Production and non-Production.":"Create separate Production and non-Production variables with different values."}function getSecretStorageChoice(targets,recommendedReason){let availability=includesDevelopment(targets)?"hidden in the dashboard; Development values can be pulled":"hidden in the dashboard and unavailable to pulls",recommendation=recommendedReason?`; recommended ${recommendedReason}`:"";return`Secret (${availability}${recommendation})`}function getDefaultSecretStorageGuidance(targets){return includesDevelopment(targets)?"Stored as Secret by default. This value is hidden in the dashboard; Development values can be pulled. Use `--type config` for other values you need to read later.":"Stored as Secret by default. This value is hidden in the dashboard and unavailable to pulls; use `--type config` for values you need to read later."}function looksLikeCredentialName(key,publicPrefix=getPublicPrefix(key)){return looksLikeSecret(publicPrefix?key.slice(publicPrefix.length):key)}function filterEnvChoicesForSensitivity(choices,opts){return opts.policyOn?choices.filter(c=>c.value==="development"):choices}function getTargetCompatibilityError(envTargets,isSensitive,policyOn){let hasSensitiveCapable=envTargets.some(t=>t!=="development");return!isSensitive&&policyOn&&hasSensitiveCapable?`Your team requires sensitive Environment Variables for Production and Preview. To add a non-sensitive value, target the Development Environment only. Run ${getCommandName("env add")} with the development target instead.`:null}function resolveFinalType(envTargets,isSensitive,opts){return envTargets.includes("development")&&!isSensitive||opts.forceEncrypted&&!opts.policyOn?"encrypted":isSensitive||opts.forceSensitive||opts.policyOn?"sensitive":"encrypted"}function fillEnvAddTemplate(template,opts){let targetPlaceholder=getEnvTargetPlaceholder();return template.replace(/<name>/g,opts.envName?quoteArg(opts.envName):"<name>").split(targetPlaceholder).join(opts.envTargetArg?quoteArg(opts.envTargetArg):targetPlaceholder).replace(/<git-branch>/g,opts.envGitBranch?quoteArg(opts.envGitBranch):"<git-branch>").replace(/<gitbranch>/g,opts.envGitBranch?quoteArg(opts.envGitBranch):"<gitbranch>").replace(/<value>/g,"<value>")}function multiTargetSuggestion(argv,envName,targets,addNoSensitive){let flag=addNoSensitive?" --no-sensitive":"";return{command:buildEnvAddCommandWithPreservedArgs(argv,`env add ${envName} ${targets.join(",")} --value "<value>"${flag} --yes`),when:addNoSensitive?"Add one non-sensitive variable to all listed environments":"Add one variable to multiple environments"}}function filterSensitiveMultiTargetSuggestionTargets(targets,_opts){return targets}function projectLabel(link){return`${link.org.slug}/${link.project.name}`}function formatEnvironmentTarget(target,customEnvironments){let standardTarget=envTargetChoices.find(choice=>choice.value===target);return standardTarget?standardTarget.name:customEnvironments.find(env=>env.id===target||env.slug===target)?.slug??target}function formatEnvironmentTargets(envTargets,customEnvironments){return envTargets.map(target=>formatEnvironmentTarget(target,customEnvironments)).join(", ")}function printEnvAddResult(link,envName,envTargets,envGitBranch,customEnvironments,finalType,force,visibility){output_manager_default.print(`
7
+ import{CHECKBOX_INSTRUCTIONS,getCustomEnvironments,readStandardInput,require_dist as require_dist3}from"../../chunks/chunk-COQGD2EI.js";import{getInvalidSubcommand}from"../../chunks/chunk-TG2RCYTH.js";import{ellipsis}from"../../chunks/chunk-ZDX75YNZ.js";import{formatTable}from"../../chunks/chunk-UED2PPFP.js";import"../../chunks/chunk-MBL6TXEJ.js";import{isGuidanceEnabled,suggestNextCommands}from"../../chunks/chunk-DQ2KI6FO.js";import{formatEnvironment}from"../../chunks/chunk-LQBC5QPO.js";import{validateLsArgs}from"../../chunks/chunk-Z4VR6CQ2.js";import{validateJsonOutput}from"../../chunks/chunk-D4MW3RDW.js";import{getSubcommand}from"../../chunks/chunk-ETV3C2CV.js";import{getCommandAliases}from"../../chunks/chunk-ABSRS5KC.js";import"../../chunks/chunk-M5AV545M.js";import"../../chunks/chunk-65JYSI26.js";import"../../chunks/chunk-YMVDWVMO.js";import"../../chunks/chunk-O7G3CZ42.js";import"../../chunks/chunk-N3N5UHIL.js";import"../../chunks/chunk-IVWPQYIH.js";import"../../chunks/chunk-WUZD4KBL.js";import"../../chunks/chunk-3QHJYVCY.js";import"../../chunks/chunk-NBVY237X.js";import"../../chunks/chunk-MEAY2K5Z.js";import"../../chunks/chunk-EQ52F4LH.js";import"../../chunks/chunk-EIXOJUNN.js";import"../../chunks/chunk-OAKO6LVS.js";import"../../chunks/chunk-CVKB54WW.js";import"../../chunks/chunk-JKTQV2QJ.js";import"../../chunks/chunk-AZ6NRDHG.js";import"../../chunks/chunk-FAW6NBLQ.js";import"../../chunks/chunk-ZKYS7EAB.js";import{autoInstallVercelPlugin}from"../../chunks/chunk-RRQTVE2P.js";import{require_execa}from"../../chunks/chunk-HWWHR7H3.js";import{stamp_default}from"../../chunks/chunk-XPXOV5UO.js";import"../../chunks/chunk-2I64AYHG.js";import"../../chunks/chunk-JZRMH5UA.js";import{require_ms}from"../../chunks/chunk-QTKJC2O5.js";import{ENV_VISIBILITY_DEPRECATION_MESSAGE,SENSITIVE_ENV_VALUE_PLACEHOLDER,formatVisibilityLabel,getApiPublicPrefix,getEnvKeyWarnings,getEnvRecords,getFrameworkPublicPrefix,getLocalSecretFallbackMessage,getLocalSvelteKitPublicPrefixes,getPublicPrefix,getPublicPrefixSecretVisibilityError,getUnavailableSecretValuesMessage,isFlagsSecretNeedingSplit,isSecretEnvVar,looksLikeSecret,looksLikeSecretValue,normalizeStdinEnvValue,pull,pullEnvRecords,removePublicPrefix,resolveEnvVarTypeOption,resolveEnvVarVisibility,shouldConfirmRotationBeforeDelete,validateEnvValue}from"../../chunks/chunk-JGPECEYY.js";import{resolveProjectContext}from"../../chunks/chunk-66RYR2GI.js";import"../../chunks/chunk-WHYH7DVI.js";import"../../chunks/chunk-ULLWCOYC.js";import"../../chunks/chunk-N6CNMMSZ.js";import"../../chunks/chunk-VIR3KDCQ.js";import"../../chunks/chunk-OI263FBO.js";import"../../chunks/chunk-SFTXBTMI.js";import"../../chunks/chunk-GR3DLKYP.js";import"../../chunks/chunk-EQP3SW72.js";import"../../chunks/chunk-KK4AJES5.js";import"../../chunks/chunk-6LE3FU2P.js";import{addSubcommand,envCommand,envTargetChoices,getEnvTargetPlaceholder,isValidEnvTarget,listSubcommand,parseEnvTargetArg,pullSubcommand,removeSubcommand,runSubcommand,updateSubcommand}from"../../chunks/chunk-KUVMCIR4.js";import"../../chunks/chunk-SOJCELXH.js";import{param}from"../../chunks/chunk-SXUEGVWB.js";import{STANDARD_ENVIRONMENTS,formatProject}from"../../chunks/chunk-6BZCSVH6.js";import{help}from"../../chunks/chunk-V6IKQCOT.js";import"../../chunks/chunk-6TAQ6OWD.js";import{parseTarget}from"../../chunks/chunk-R3B67TKQ.js";import"../../chunks/chunk-GHULCYAR.js";import"../../chunks/chunk-UXCTETFN.js";import"../../chunks/chunk-WPS6JZF6.js";import"../../chunks/chunk-32QBGZ2Z.js";import{TelemetryClient,require_dist as require_dist2}from"../../chunks/chunk-A5VLP25I.js";import"../../chunks/chunk-RCTYVKM5.js";import"../../chunks/chunk-5XJNPXQK.js";import{printError}from"../../chunks/chunk-TBBU37TD.js";import{parseArguments}from"../../chunks/chunk-T4AZ3U7O.js";import"../../chunks/chunk-MY4MONOH.js";import"../../chunks/chunk-7T6TL3GQ.js";import"../../chunks/chunk-64NJHVA3.js";import"../../chunks/chunk-F2ZWW2IO.js";import"../../chunks/chunk-B4ATVYZW.js";import"../../chunks/chunk-PPCFQQSU.js";import"../../chunks/chunk-OSCCYU74.js";import{buildCommandWithYes,buildEnvAddCommandWithPreservedArgs,buildEnvRmCommandWithPreservedArgs,buildEnvUpdateCommandWithPreservedArgs,getPreservedArgsForEnvAdd,getPreservedArgsForEnvRm,getPreservedArgsForEnvUpdate,outputActionRequired,outputAgentError,quoteArg,redactEnvValueArgs,withGlobalFlags}from"../../chunks/chunk-BX5KDMLT.js";import{getFlagsSpecification,getGlobalFlagsFromArgs}from"../../chunks/chunk-JAJW3P42.js";import{printAlignedLabel}from"../../chunks/chunk-YMM3VY3J.js";import"../../chunks/chunk-V5DCSHYJ.js";import{getTeamByIdOrSlug}from"../../chunks/chunk-VOZEB6PD.js";import{isAPIError}from"../../chunks/chunk-LKI6FRNM.js";import{getCommandName,getCommandNamePlain,require_lib}from"../../chunks/chunk-FI772UVH.js";import{emoji,output_manager_default,prependEmoji}from"../../chunks/chunk-EWWFNMPZ.js";import{require_dist}from"../../chunks/chunk-QGIQK47P.js";import"../../chunks/chunk-BRK4OB4B.js";import"../../chunks/chunk-AVSPFBLM.js";import"../../chunks/chunk-XCJDGQO7.js";import"../../chunks/chunk-YPTLSODC.js";import"../../chunks/chunk-7HL2RPUO.js";import{require_source}from"../../chunks/chunk-U7KCDTCH.js";import"../../chunks/chunk-N3ZZ7FHQ.js";import"../../chunks/chunk-GU6VIFR5.js";import{__toESM}from"../../chunks/chunk-6L236MNA.js";var import_chalk=__toESM(require_source(),1);var import_constants=__toESM(require_dist2(),1);async function addEnvRecord(client,projectId,upsert,type,key,value,targets,gitBranch,visibility){let actionWord=upsert?"Overriding":"Adding";output_manager_default.debug(`${actionWord} ${type} Environment Variable ${key} to ${targets.length} targets`);let target=[],customEnvironmentIds=[];for(let t of targets)(import_constants.PROJECT_ENV_TARGET.includes(t)?target:customEnvironmentIds).push(t);let body={type,key,value,target,customEnvironmentIds:customEnvironmentIds.length>0?customEnvironmentIds:void 0,gitBranch:gitBranch||void 0,...visibility!==void 0?{visibility}:{}},args=upsert?`?upsert=${upsert}`:"",url=`/v10/projects/${projectId}/env${args}`;await client.fetch(url,{method:"POST",body})}var import_error_utils=__toESM(require_dist(),1),knownErrorsCodes=new Set(["BAD_REQUEST","ENV_ALREADY_EXISTS","ENV_CONFLICT","EXISTING_KEY_AND_TARGET","FORBIDDEN","ID_NOT_FOUND","INVALID_KEY","INVALID_VALUE","KEY_INVALID_CHARACTERS","KEY_INVALID_LENGTH","KEY_RESERVED","RESERVED_ENV_VARIABLE","MAX_ENVS_EXCEEDED","MISSING_ID","MISSING_KEY","MISSING_TARGET","MISSING_VALUE","NOT_AUTHORIZED","NOT_DECRYPTABLE","SYSTEM_ENV_WITH_VALUE","TEAM_NOT_FOUND","TOO_MANY_IDS","TOO_MANY_KEYS","UNKNOWN_ERROR","VALUE_INVALID_LENGTH","VALUE_INVALID_TYPE"]);function isKnownError(error){let code=(0,import_error_utils.isErrnoException)(error)?error.code:null;return code?knownErrorsCodes.has(code.toUpperCase()):!1}var EnvAddTelemetryClient=class extends TelemetryClient{trackCliArgumentName(name){name&&this.trackCliArgument({arg:"name",value:this.redactedValue})}trackCliArgumentEnvironment(environment){if(environment){let allStandard=environment.split(",").map(t=>t.trim()).every(t=>STANDARD_ENVIRONMENTS.includes(t));this.trackCliArgument({arg:"environment",value:allStandard?environment:this.redactedValue})}}trackCliArgumentGitBranch(gitBranch){gitBranch&&this.trackCliArgument({arg:"git-branch",value:this.redactedValue})}trackCliOptionGitBranch(gitBranch){gitBranch&&this.trackCliOption({option:"git-branch",value:this.redactedValue})}trackCliOptionValue(value){value&&this.trackCliOption({option:"value",value:this.redactedValue})}trackCliOptionVisibility(visibility){if(visibility){let validVisibilities=["config","secret"];this.trackCliOption({option:"visibility",value:validVisibilities.includes(visibility)?visibility:this.redactedValue})}}trackCliOptionType(type){if(type){let validTypes=["config","secret"];this.trackCliOption({option:"type",value:validTypes.includes(type)?type:this.redactedValue})}}trackCliFlagSensitive(sensitive){sensitive&&this.trackCliFlag("sensitive")}trackCliFlagNoSensitive(noSensitive){noSensitive&&this.trackCliFlag("no-sensitive")}trackCliFlagForce(force){force&&this.trackCliFlag("force")}trackCliFlagGuidance(guidance){guidance&&this.trackCliFlag("guidance")}trackCliFlagYes(yes){yes&&this.trackCliFlag("yes")}};import{determineAgent}from"@vercel/detect-agent";function includesDevelopment(targets){return targets.length===0||targets.includes("development")}function getProductionSecretPolicyErrorKind(message){return/production secrets?.*different value|different value.*production secrets?/i.test(message)?"different-values":/production secrets?.*(?:own environment group|separat)|(?:own environment group|separat).*production secrets?/i.test(message)?"separate-environments":null}function getProductionSecretPolicyRecovery(kind){return kind==="different-values"?"Use different Secret values for Production and non-Production.":"Create separate Production and non-Production variables with different values."}function getSecretStorageChoice(targets,recommendedReason){let availability=includesDevelopment(targets)?"hidden in the dashboard; Development values can be pulled":"hidden in the dashboard and unavailable to pulls",recommendation=recommendedReason?`; recommended ${recommendedReason}`:"";return`Secret (${availability}${recommendation})`}function getDefaultSecretStorageGuidance(targets){return includesDevelopment(targets)?"Stored as Secret by default. This value is hidden in the dashboard; Development values can be pulled. Use `--type config` for other values you need to read later.":"Stored as Secret by default. This value is hidden in the dashboard and unavailable to pulls; use `--type config` for values you need to read later."}function looksLikeCredentialName(key,publicPrefix=getPublicPrefix(key)){return looksLikeSecret(publicPrefix?key.slice(publicPrefix.length):key)}function filterEnvChoicesForSensitivity(choices,opts){return opts.policyOn?choices.filter(c=>c.value==="development"):choices}function getTargetCompatibilityError(envTargets,isSensitive,policyOn){let hasSensitiveCapable=envTargets.some(t=>t!=="development");return!isSensitive&&policyOn&&hasSensitiveCapable?`Your team requires sensitive Environment Variables for Production and Preview. To add a non-sensitive value, target the Development Environment only. Run ${getCommandName("env add")} with the development target instead.`:null}function resolveFinalType(envTargets,isSensitive,opts){return envTargets.includes("development")&&!isSensitive||opts.forceEncrypted&&!opts.policyOn?"encrypted":isSensitive||opts.forceSensitive||opts.policyOn?"sensitive":"encrypted"}function fillEnvAddTemplate(template,opts){let targetPlaceholder=getEnvTargetPlaceholder();return template.replace(/<name>/g,opts.envName?quoteArg(opts.envName):"<name>").split(targetPlaceholder).join(opts.envTargetArg?quoteArg(opts.envTargetArg):targetPlaceholder).replace(/<git-branch>/g,opts.envGitBranch?quoteArg(opts.envGitBranch):"<git-branch>").replace(/<gitbranch>/g,opts.envGitBranch?quoteArg(opts.envGitBranch):"<gitbranch>").replace(/<value>/g,"<value>")}function multiTargetSuggestion(argv,envName,targets,addNoSensitive){let flag=addNoSensitive?" --no-sensitive":"";return{command:buildEnvAddCommandWithPreservedArgs(argv,`env add ${envName} ${targets.join(",")} --value "<value>"${flag} --yes`),when:addNoSensitive?"Add one non-sensitive variable to all listed environments":"Add one variable to multiple environments"}}function filterSensitiveMultiTargetSuggestionTargets(targets,_opts){return targets}function projectLabel(link){return`${link.org.slug}/${link.project.name}`}function formatEnvironmentTarget(target,customEnvironments){let standardTarget=envTargetChoices.find(choice=>choice.value===target);return standardTarget?standardTarget.name:customEnvironments.find(env=>env.id===target||env.slug===target)?.slug??target}function formatEnvironmentTargets(envTargets,customEnvironments){return envTargets.map(target=>formatEnvironmentTarget(target,customEnvironments)).join(", ")}function printEnvAddResult(link,envName,envTargets,envGitBranch,customEnvironments,finalType,force,visibility){output_manager_default.print(`
8
8
  `),printAlignedLabel(force?"Overrode":"Added",envName,{gutter:"\u2713"}),printAlignedLabel("Project",projectLabel(link)),printAlignedLabel("Environments",formatEnvironmentTargets(envTargets,customEnvironments)),envGitBranch&&printAlignedLabel("Branch",envGitBranch);let visibilityLabel=formatVisibilityLabel(visibility,finalType);visibilityLabel&&printAlignedLabel("Type",visibilityLabel)}function printEnvAddWarning(message){output_manager_default.print(`${import_chalk.default.yellow("!")} ${message}
9
9
  `)}function promptEnvValue(client,opts){return client.input.text({message:"Value?",...opts.isSensitive?{transformer:value=>"*".repeat(value.length)}:{}})}function buildHumanEnvAddCommand(argv,commandTemplate){let globalFlags=getGlobalFlagsFromArgs(argv.slice(2),{preserveProject:!0}).filter(flag=>!flag.startsWith("--non-interactive")),suffix=globalFlags.length>0?` ${globalFlags.map(quoteArg).join(" ")}`:"";return getCommandNamePlain(`${commandTemplate}${suffix}`)}async function add(client,argv){let parsedArgs,flagsSpecification=getFlagsSpecification(addSubcommand.options);try{parsedArgs=parseArguments(argv,flagsSpecification)}catch(err){return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_arguments",message:err instanceof Error?err.message:String(err)},1),printError(err),1}let{args,flags:opts}=parsedArgs,stdInput=await readStandardInput(client.stdin),valueFromFlag=typeof opts["--value"]=="string"?opts["--value"]:void 0,[envName,envTargetArg]=args,positionalGitBranch=args[2],optionGitBranch=typeof opts["--git-branch"]=="string"?opts["--git-branch"]:void 0,envGitBranch=optionGitBranch??positionalGitBranch,forceSensitive=!!opts["--sensitive"],forceEncrypted=!!opts["--no-sensitive"],typeOption=resolveEnvVarTypeOption({type:typeof opts["--type"]=="string"?opts["--type"]:void 0,visibility:typeof opts["--visibility"]=="string"?opts["--visibility"]:void 0}),explicitType=typeOption.explicitVisibility,typeSource=explicitType||forceSensitive||forceEncrypted?"argv":void 0,telemetryClient=new EnvAddTelemetryClient({opts:{store:client.telemetryEventStore}});if(telemetryClient.trackCliArgumentName(envName),telemetryClient.trackCliArgumentEnvironment(envTargetArg),telemetryClient.trackCliArgumentGitBranch(positionalGitBranch),telemetryClient.trackCliOptionGitBranch(optionGitBranch),telemetryClient.trackCliOptionValue(valueFromFlag===void 0?void 0:"<redacted>"),telemetryClient.trackCliFlagSensitive(opts["--sensitive"]),telemetryClient.trackCliFlagNoSensitive(opts["--no-sensitive"]),telemetryClient.trackCliFlagForce(opts["--force"]),telemetryClient.trackCliFlagGuidance(opts["--guidance"]),telemetryClient.trackCliFlagYes(opts["--yes"]),telemetryClient.trackCliOptionType(typeof opts["--type"]=="string"?opts["--type"]:void 0),telemetryClient.trackCliOptionVisibility(typeof opts["--visibility"]=="string"?opts["--visibility"]:void 0),telemetryClient.trackCliOptionProject(opts["--project"]),typeOption.error)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:typeOption.errorReason??"invalid_type",message:typeOption.error},1),output_manager_default.fatal(typeOption.error),1;typeOption.usedDeprecatedVisibility&&printEnvAddWarning(ENV_VISIBILITY_DEPRECATION_MESSAGE);let typeConflictMessage=forceSensitive?forceEncrypted?"`--sensitive` and `--no-sensitive` cannot be used together. Pick one.":explicitType==="config"?"`--type config` cannot be used with `--sensitive`. Pick one.":null:forceEncrypted&&explicitType==="secret"?"`--type secret` cannot be used with `--no-sensitive`. Pick one.":null;if(typeConflictMessage)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"conflicting_type_flags",message:typeConflictMessage},1),output_manager_default.fatal(typeConflictMessage),1;if(positionalGitBranch&&optionGitBranch)return output_manager_default.error("Git branch was provided twice. Use either `--git-branch <git-branch>` or the legacy third argument."),1;if(args.length>3)return output_manager_default.error(`Invalid number of arguments. Usage: ${getCommandName(`env add <name> ${getEnvTargetPlaceholder()} --git-branch <git-branch>`)}`),1;if(stdInput&&(!envName||!envTargetArg))return output_manager_default.error(`Invalid number of arguments. Usage: ${getCommandName("env add <name> <target> --git-branch <git-branch> < <file>")}`),1;let envTargets=envTargetArg?parseEnvTargetArg(envTargetArg):[],resolvedLink;if(client.nonInteractive){let link2=await resolveProjectContext({client,projectNameOrId:opts["--project"]});if(link2.status==="error")return link2.exitCode;if(link2.status==="not_linked"){let preserved=getPreservedArgsForEnvAdd(client.argv),linkPreserved=preserved.filter((a,i)=>!(a==="--value"||a.startsWith("--value=")||i>0&&preserved[i-1]==="--value")),linkArgv=[...client.argv.slice(0,2),"link","--scope","<scope>",...linkPreserved],envAddRetryArgv=redactEnvValueArgs(client.argv);if(envTargetArg==="preview"&&envGitBranch===void 0){let argvArgs=client.argv.slice(2),addIdx=argvArgs.indexOf("add");if(addIdx!==-1){let pos=addIdx+1,positionals=0;for(;pos<argvArgs.length&&positionals<3&&!argvArgs[pos].startsWith("-");)positionals++,pos++;let insertAt=2+pos;envAddRetryArgv=redactEnvValueArgs([...client.argv.slice(0,insertAt),"<gitbranch>",...client.argv.slice(insertAt)])}}outputAgentError(client,{status:"error",reason:"not_linked",message:`Your codebase isn't linked to a project on Vercel. Run \`${getCommandNamePlain("link")}\` to begin. Use \`--yes\` for non-interactive mode; use \`--scope\` or \`--project\` to specify a team or project. Then run your \`env add\` command.`,next:[{command:buildCommandWithYes(linkArgv)},{command:buildCommandWithYes(envAddRetryArgv)}]},1)}if(link2.status!=="linked")return 1;resolvedLink=link2;let{project:project2}=link2,org=link2.org;client.config.currentTeam=org.type==="team"?org.id:void 0;let[{envs:envs2},customEnvironments2]=await Promise.all([getEnvRecords(client,project2.id,"vercel-cli:env:add"),getCustomEnvironments(client,project2.id)]),matchingEnvs2=envs2.filter(r=>r.key===envName),existingTargets2=new Set,existingCustomEnvs2=new Set;for(let env of matchingEnvs2){if(typeof env.target=="string")existingTargets2.add(env.target);else if(Array.isArray(env.target))for(let target of env.target)existingTargets2.add(target);if(env.customEnvironmentIds)for(let customEnvId of env.customEnvironmentIds)existingCustomEnvs2.add(customEnvId)}let choices2=[...envTargetChoices.filter(c=>!existingTargets2.has(c.value)),...customEnvironments2.filter(c=>!existingCustomEnvs2.has(c.id)).map(c=>({name:c.slug,value:c.id}))],missing=[];if(envName||missing.push("missing_name"),valueFromFlag===void 0&&!stdInput&&missing.push("missing_value"),!envTargetArg&&choices2.length>0&&missing.push("missing_environment"),envTargetArg==="preview"&&envGitBranch===void 0&&!(client.nonInteractive&&args.length===2)&&missing.push("git_branch_required"),missing.length>0){let parts=missing.map(m=>m==="missing_name"?"variable name":m==="missing_value"?"--value or stdin":m==="missing_environment"?"environment (production, preview, development, or a comma-separated list)":m==="git_branch_required"?"`--git-branch <git-branch>` for Preview, or omit for all Preview branches":m),fullTemplate=`env add <name> ${getEnvTargetPlaceholder()} --value "<value>" --yes`,filledTemplate=fillEnvAddTemplate(fullTemplate,{envName,envTargetArg,envGitBranch}),next=[];if(missing.length===1&&missing[0]==="git_branch_required"||next.push({command:buildEnvAddCommandWithPreservedArgs(client.argv,filledTemplate)}),missing.includes("git_branch_required")&&envName&&(valueFromFlag!==void 0||stdInput)){let branchSpecific=fillEnvAddTemplate('env add <name> preview --git-branch <git-branch> --value "<value>" --yes',{envName,envTargetArg:"preview"}),branchAll=fillEnvAddTemplate('env add <name> preview --value "<value>" --yes',{envName,envTargetArg:"preview"});next.push({command:buildEnvAddCommandWithPreservedArgs(client.argv,branchSpecific),when:"Add to a specific Git branch"},{command:buildEnvAddCommandWithPreservedArgs(client.argv,branchAll),when:"Add to all Preview branches"})}if(missing.includes("missing_environment")){let standardAvailable=choices2.map(c=>c.value).filter(v=>isValidEnvTarget(v)),multiTargets=filterSensitiveMultiTargetSuggestionTargets(standardAvailable,{forceSensitive:!!opts["--sensitive"],policyOn:!1});multiTargets.length>1&&next.push(multiTargetSuggestion(client.argv,envName||"<name>",multiTargets,multiTargets.includes("development")&&!opts["--no-sensitive"]))}outputActionRequired(client,{status:"action_required",reason:"missing_requirements",missing,message:`Provide all required inputs for non-interactive mode: ${parts.join("; ")}. Example: \`${filledTemplate}\``,next},1)}}if(envName||(envName=await client.input.text({message:"Name?",validate:val=>val?!0:"Name cannot be empty"})),!resolvedLink){let link2=await resolveProjectContext({client,projectNameOrId:opts["--project"]});if(link2.status==="error")return link2.exitCode;if(link2.status==="not_linked"){if(client.nonInteractive){let preserved=getPreservedArgsForEnvAdd(client.argv),linkPreserved=preserved.filter((a,i)=>!(a==="--value"||a.startsWith("--value=")||i>0&&preserved[i-1]==="--value")),linkArgv=[...client.argv.slice(0,2),"link","--scope","<scope>",...linkPreserved];outputAgentError(client,{status:"error",reason:"not_linked",message:`Your codebase isn't linked to a project on Vercel. Run ${getCommandNamePlain("link")} to begin. Use --yes for non-interactive; use --scope or --project to specify team or project. Then run your env add command.`,next:[{command:buildCommandWithYes(linkArgv)},{command:buildCommandWithYes(redactEnvValueArgs(client.argv))}]},1)}else output_manager_default.error(`Your codebase isn\u2019t linked to a project on Vercel. Run ${getCommandName("link")} to begin.`);return 1}resolvedLink=link2}let link=resolvedLink;client.config.currentTeam=link.org.type==="team"?link.org.id:void 0;let{project}=link;if(explicitType==="secret"||forceSensitive){let publicPrefixError=getPublicPrefixSecretVisibilityError(envName,{visibility:explicitType==="secret"?"secret":void 0,type:"sensitive",context:"add"});if(publicPrefixError)return client.nonInteractive&&outputAgentError(client,{status:"error",reason:"invalid_type",message:publicPrefixError},1),output_manager_default.fatal(publicPrefixError),1}let keyAccepted=!1;for(;!keyAccepted;){let apiPublicPrefix2=getApiPublicPrefix(envName),frameworkPublicPrefix=getFrameworkPublicPrefix(project.framework,envName),globallyKnownPrefix=getPublicPrefix(envName),keyWarnings=frameworkPublicPrefix!==null&&(explicitType==="secret"||forceSensitive)||globallyKnownPrefix!==null&&apiPublicPrefix2===null&&frameworkPublicPrefix===null?[]:getEnvKeyWarnings(envName);if(!keyWarnings.find(w=>w.requiresConfirmation)){for(let warning of keyWarnings)printEnvAddWarning(warning.message);keyAccepted=!0;break}let nameWithoutPrefix=removePublicPrefix(envName),publicPrefix=getPublicPrefix(envName);if(typeSource==="argv"){for(let warning of keyWarnings)printEnvAddWarning(warning.message);keyAccepted=!0;break}let privateCommand=buildEnvAddCommandWithPreservedArgs(client.argv,`env add ${nameWithoutPrefix} ${envTargetArg??getEnvTargetPlaceholder()} --type secret --value "<value>" --yes`),publicCommand=buildEnvAddCommandWithPreservedArgs(client.argv,`env add ${envName} ${envTargetArg??getEnvTargetPlaceholder()} --type config --value "<value>" --yes`),humanTargetArg=envTargetArg?` ${envTargetArg}`:"",privateHumanCommand=buildHumanEnvAddCommand(client.argv,`env add ${nameWithoutPrefix}${humanTargetArg} --type secret`),publicHumanCommand=buildHumanEnvAddCommand(client.argv,`env add ${envName}${humanTargetArg} --type config`),message=`\`${envName}\` looks like a credential, and \`${publicPrefix}\` exposes its value to anyone visiting your site. Choose explicitly: rename to \`${nameWithoutPrefix}\` with \`--type secret\` to keep it private, or keep the name with \`--type config\` to expose it.`;if(client.nonInteractive||opts["--yes"]||stdInput)return client.nonInteractive&&outputActionRequired(client,{status:"action_required",reason:"public_prefix_requires_type",message,choices:[{id:"private",name:`Keep private: rename to ${nameWithoutPrefix} and use Secret`},{id:"public",name:`Expose publicly: keep ${envName} as Config`}],next:[{command:privateCommand,when:"Keep it private; replace <value> before running"},{command:publicCommand,when:"Expose it publicly; replace <value> before running"}]}),output_manager_default.fatal(message),output_manager_default.print(` Keep it private:
10
10
  ${privateHumanCommand}