vercel 54.13.0 → 54.14.1

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 (61) hide show
  1. package/dist/chunks/{add-PVEKZBHH.js → add-INSQH24S.js} +7 -7
  2. package/dist/chunks/{chunk-FPRA7U2P.js → chunk-467YGYFK.js} +1 -1
  3. package/dist/chunks/{chunk-6K3WJDFA.js → chunk-4WQGP4Z4.js} +9 -9
  4. package/dist/chunks/{chunk-V4GROAUJ.js → chunk-5QKYBWW2.js} +4 -7
  5. package/dist/chunks/chunk-64IF634X.js +18 -0
  6. package/dist/chunks/{chunk-V2WFM23D.js → chunk-74VEZPM6.js} +1 -1
  7. package/dist/chunks/{chunk-5SYDEK2N.js → chunk-D7MGZH35.js} +1 -1
  8. package/dist/chunks/{chunk-Y76J3TGD.js → chunk-DAKMPPIS.js} +1 -1
  9. package/dist/chunks/{chunk-NR67NDOY.js → chunk-F4WXNECT.js} +209 -76
  10. package/dist/chunks/{chunk-ADLWAO5W.js → chunk-F6SCQ6XU.js} +58 -16
  11. package/dist/chunks/{chunk-7CJZCFLW.js → chunk-FKNOCLZU.js} +2 -2
  12. package/dist/chunks/{chunk-CO5D46AG.js → chunk-GGP5R3FU.js} +18 -38
  13. package/dist/chunks/{chunk-J5273CSE.js → chunk-HIYWSGI7.js} +19 -10
  14. package/dist/chunks/{chunk-UAI4ESAJ.js → chunk-J4LCBXF2.js} +14 -41
  15. package/dist/chunks/{chunk-ABOX5TXU.js → chunk-L7U3Z7E4.js} +3 -3
  16. package/dist/chunks/{chunk-7OZWGXPA.js → chunk-MKB32SJZ.js} +2 -2
  17. package/dist/chunks/{chunk-4KAFHBYE.js → chunk-NMGGBH7K.js} +1 -1
  18. package/dist/chunks/{chunk-C3VH3X5Y.js → chunk-P2AMQX7F.js} +3 -3
  19. package/dist/chunks/{chunk-6D6CSOSK.js → chunk-P6VIXOWO.js} +84 -60
  20. package/dist/chunks/{chunk-PV533MBH.js → chunk-PMUUPCDL.js} +1 -1
  21. package/dist/chunks/{chunk-S4VHXL2Y.js → chunk-TVBXGFEL.js} +1 -1
  22. package/dist/chunks/{chunk-G7QWUIGS.js → chunk-UEFCAT3N.js} +2 -2
  23. package/dist/chunks/{chunk-OEM7RB3X.js → chunk-UJ3ZCBUA.js} +1 -1
  24. package/dist/chunks/{chunk-VNUNCNPE.js → chunk-UPI3OHBK.js} +1 -1
  25. package/dist/chunks/chunk-VXYGCOKL.js +28 -0
  26. package/dist/chunks/{chunk-5UCWXYNH.js → chunk-XLLAD5DR.js} +87 -45
  27. package/dist/chunks/{chunk-Z7KOKD2G.js → chunk-YQPAAXUU.js} +1 -1
  28. package/dist/chunks/{chunk-B6C7NMT3.js → chunk-Z2MBXYZZ.js} +1 -1
  29. package/dist/chunks/{chunk-DAASB6YQ.js → chunk-ZRJQY3VK.js} +22 -2
  30. package/dist/chunks/{compile-vercel-config-MD37D2F7.js → compile-vercel-config-VPPGDFKL.js} +3 -3
  31. package/dist/chunks/{delete-6EMDCXSA.js → delete-O3EHQHYD.js} +8 -6
  32. package/dist/chunks/{disable-FLJ27NHG.js → disable-GJDQC34I.js} +8 -6
  33. package/dist/chunks/{discard-KEIII6RM.js → discard-UZT23XN2.js} +8 -6
  34. package/dist/chunks/{edit-DOL2ZJPG.js → edit-PEQIROSE.js} +10 -8
  35. package/dist/chunks/{enable-PZWZIETT.js → enable-ACNEAJ5S.js} +8 -6
  36. package/dist/chunks/{export-2PFHAELC.js → export-ZICIQKHJ.js} +4 -4
  37. package/dist/chunks/{inspect-WPWOZJ2K.js → inspect-PUFF7LND.js} +6 -6
  38. package/dist/chunks/{list-4R5DCLTB.js → list-FWUV4NO4.js} +5 -5
  39. package/dist/chunks/{list-ZT7QK2H7.js → list-L2UFHHQ7.js} +7 -7
  40. package/dist/chunks/{ls-4JTXQXMQ.js → ls-6HVFGIQS.js} +7 -7
  41. package/dist/chunks/{publish-JV4J3SOA.js → publish-HKTAQMYG.js} +8 -6
  42. package/dist/chunks/{query-N22EYSZZ.js → query-VQ5HDMFO.js} +97 -41
  43. package/dist/chunks/{reorder-TG53BKW4.js → reorder-CVMW6VL7.js} +8 -6
  44. package/dist/chunks/{restore-U7O4VESA.js → restore-32NXH4EH.js} +8 -6
  45. package/dist/chunks/{rm-XA4LYZXI.js → rm-7TPDWMJZ.js} +7 -7
  46. package/dist/chunks/{routes-EAMQVFU2.js → routes-YEU33SON.js} +2 -2
  47. package/dist/chunks/{rule-inspect-HC745CYT.js → rule-inspect-PQORU3SU.js} +7 -7
  48. package/dist/chunks/{rules-RMN72YHN.js → rules-VIITOYFN.js} +6 -6
  49. package/dist/chunks/{schema-CZVKUXM6.js → schema-AECGMSF5.js} +6 -6
  50. package/dist/chunks/{stamp-ENIXDCRO.js → stamp-AA7R3MZS.js} +3 -1
  51. package/dist/chunks/{update-PU3WLIA7.js → update-J4QCT3GS.js} +7 -7
  52. package/dist/commands/build/index.js +16 -14
  53. package/dist/commands/deploy/index.js +22 -163
  54. package/dist/commands/dev/index.js +13 -14
  55. package/dist/commands/env/index.js +153 -92
  56. package/dist/commands/link/index.js +11 -11
  57. package/dist/commands/list/index.js +10 -8
  58. package/dist/commands-bulk.js +2472 -1696
  59. package/dist/index.js +18 -18
  60. package/dist/version.mjs +1 -1
  61. package/package.json +14 -14
@@ -10,10 +10,10 @@ import {
10
10
  } from "./chunk-LJ5WXXG6.js";
11
11
  import {
12
12
  getLocalPathConfig
13
- } from "./chunk-V2WFM23D.js";
13
+ } from "./chunk-74VEZPM6.js";
14
14
  import {
15
15
  getScope
16
- } from "./chunk-Z7KOKD2G.js";
16
+ } from "./chunk-YQPAAXUU.js";
17
17
  import {
18
18
  VERCEL_DIR_PROJECT,
19
19
  VERCEL_DIR_README,
@@ -37,6 +37,7 @@ import {
37
37
  linkRepoProject,
38
38
  parseGitConfig,
39
39
  pluckRemoteUrls,
40
+ printAlignedLabel,
40
41
  pull,
41
42
  readJSONFile,
42
43
  require_dist3 as require_dist,
@@ -47,7 +48,7 @@ import {
47
48
  selectAndParseRemoteUrl,
48
49
  selectOrg,
49
50
  writeServicesConfig
50
- } from "./chunk-5UCWXYNH.js";
51
+ } from "./chunk-XLLAD5DR.js";
51
52
  import {
52
53
  buildCommandWithGlobalFlags,
53
54
  outputAgentError,
@@ -364,6 +365,20 @@ import { join as join2, basename } from "path";
364
365
  // src/util/input/input-project.ts
365
366
  var import_chalk2 = __toESM(require_source(), 1);
366
367
  var import_slugify = __toESM(require_slugify(), 1);
368
+ async function inputProjectDecision(client, defaultDecision) {
369
+ const createChoice = {
370
+ name: "Create new project",
371
+ value: "create"
372
+ };
373
+ const existingChoice = {
374
+ name: "Link existing project",
375
+ value: "existing"
376
+ };
377
+ return await client.input.select({
378
+ message: "Project?",
379
+ choices: defaultDecision === "existing" ? [existingChoice, createChoice] : [createChoice, existingChoice]
380
+ });
381
+ }
367
382
  async function inputProject(client, org, detectedProjectName, autoConfirm = false, skipAutoDetect = false) {
368
383
  const slugifiedName = (0, import_slugify.default)(detectedProjectName);
369
384
  let detectedProject = null;
@@ -392,23 +407,20 @@ async function inputProject(client, org, detectedProjectName, autoConfirm = fals
392
407
  }
393
408
  let shouldLinkProject;
394
409
  if (!detectedProject) {
395
- shouldLinkProject = await client.input.confirm(
396
- `Link to existing project?`,
397
- false
410
+ const decision = await inputProjectDecision(
411
+ client,
412
+ skipAutoDetect ? "existing" : "create"
398
413
  );
414
+ shouldLinkProject = decision === "existing";
399
415
  } else {
400
- if (await client.input.confirm(
401
- `Found project ${import_chalk2.default.cyan(
402
- `"${org.slug}/${detectedProject.name}"`
403
- )}. Link to it?`,
404
- true
405
- )) {
416
+ output_manager_default.print(` ${import_chalk2.default.bold("Found existing project")}
417
+ `);
418
+ printAlignedLabel("Project", `${org.slug}/${detectedProject.name}`);
419
+ if (await client.input.confirm(`Link directory to project?`, true)) {
406
420
  return detectedProject;
407
421
  }
408
- shouldLinkProject = await client.input.confirm(
409
- `Link to different existing project?`,
410
- true
411
- );
422
+ const decision = await inputProjectDecision(client, "existing");
423
+ shouldLinkProject = decision === "existing";
412
424
  }
413
425
  if (shouldLinkProject) {
414
426
  const firstPage = await client.fetch(`/v9/projects?limit=100`, { accountId: org.id });
@@ -441,7 +453,7 @@ async function inputProject(client, org, detectedProjectName, autoConfirm = fals
441
453
  value: project
442
454
  }));
443
455
  const toLink = await client.input.select({
444
- message: "Which existing project do you want to link?",
456
+ message: "Which project?",
445
457
  choices
446
458
  });
447
459
  return toLink;
@@ -473,7 +485,7 @@ async function inputRootDirectory(client, cwd, autoConfirm = false) {
473
485
  }
474
486
  while (true) {
475
487
  const rootDirectory = await client.input.text({
476
- message: `In which directory is your code located?`,
488
+ message: `Code directory?`,
477
489
  transformer: (input) => {
478
490
  return `${import_chalk3.default.dim(`./`)}${input}`;
479
491
  }
@@ -565,6 +577,7 @@ async function editProjectSettings(client, projectSettings, framework, autoConfi
565
577
  settings.framework = null;
566
578
  return settings;
567
579
  }
580
+ output_manager_default.print("\n");
568
581
  if (!framework.slug) {
569
582
  output_manager_default.print(` No framework detected. Default Project Settings:
570
583
  `);
@@ -942,22 +955,29 @@ function formatCrossTeamMatch(match) {
942
955
  match
943
956
  )}`;
944
957
  }
945
- function formatTeamList(slugs) {
946
- const shown = slugs.slice(0, 5);
947
- const suffix = slugs.length > shown.length ? `, and ${slugs.length - shown.length} more` : "";
948
- return `${shown.join(", ")}${suffix}`;
958
+ function formatMatchSource(match) {
959
+ return match.reason === "repo-root" ? "Git repository" : "Folder name";
949
960
  }
961
+ var CHECKBOX_INSTRUCTIONS = [
962
+ "\n ",
963
+ import_chalk6.default.dim("("),
964
+ import_chalk6.default.cyan("<space>"),
965
+ import_chalk6.default.dim(" select, "),
966
+ import_chalk6.default.cyan("<enter>"),
967
+ import_chalk6.default.dim(" confirm, "),
968
+ import_chalk6.default.cyan("<a>"),
969
+ import_chalk6.default.dim(" toggle all, "),
970
+ import_chalk6.default.cyan("<i>"),
971
+ import_chalk6.default.dim(" invert)")
972
+ ].join("");
950
973
  function printCrossTeamSearchScope({
951
- searchedTeamSlugs,
952
- skippedLimitedTeamSlugs
974
+ searchedTeamSlugs
953
975
  }) {
954
976
  if (searchedTeamSlugs.length > 0) {
955
- output_manager_default.print(` Searched teams: ${formatTeamList(searchedTeamSlugs)}
956
- `);
957
- }
958
- if (skippedLimitedTeamSlugs.length > 0) {
959
977
  output_manager_default.print(
960
- ` Skipped ${skippedLimitedTeamSlugs.length} SSO-protected ${skippedLimitedTeamSlugs.length === 1 ? "team" : "teams"}
978
+ ` ${import_chalk6.default.dim(
979
+ `Searched ${searchedTeamSlugs.length} ${searchedTeamSlugs.length === 1 ? "team" : "teams"}`
980
+ )}
961
981
  `
962
982
  );
963
983
  }
@@ -998,8 +1018,9 @@ async function maybePullEnvAfterLink(client, path2, autoConfirm, pullEnv) {
998
1018
  if (!pullEnv || !client.stdin.isTTY || client.nonInteractive) {
999
1019
  return;
1000
1020
  }
1021
+ output_manager_default.print("\n");
1001
1022
  const pullEnvConfirmed = autoConfirm || await client.input.confirm(
1002
- "Would you like to pull environment variables now?",
1023
+ "Pull development environment variables into .env.local?",
1003
1024
  true
1004
1025
  );
1005
1026
  if (!pullEnvConfirmed) {
@@ -1065,7 +1086,8 @@ async function promptForLimitedTeams(client, teams) {
1065
1086
  return [];
1066
1087
  }
1067
1088
  return await client.input.checkbox({
1068
- message: "Which SSO-protected teams should be searched?",
1089
+ message: "Select teams that require SSO",
1090
+ instructions: CHECKBOX_INSTRUCTIONS,
1069
1091
  choices: teams.map((team) => ({
1070
1092
  name: team.name ? `${team.name} (${team.slug})` : team.slug,
1071
1093
  value: team
@@ -1083,7 +1105,7 @@ async function searchSelectedLimitedTeams({
1083
1105
  if (selectedTeams.length === 0) {
1084
1106
  return [];
1085
1107
  }
1086
- output_manager_default.spinner("Searching selected SSO-protected teams\u2026", 1e3);
1108
+ output_manager_default.spinner("Searching selected teams that require SSO\u2026", 1e3);
1087
1109
  try {
1088
1110
  const result = await searchProjectAcrossTeams(client, projectName, path2, {
1089
1111
  teams: selectedTeams,
@@ -1091,12 +1113,11 @@ async function searchSelectedLimitedTeams({
1091
1113
  gitProjectName
1092
1114
  });
1093
1115
  printCrossTeamSearchScope({
1094
- searchedTeamSlugs: result.searchedTeamSlugs,
1095
- skippedLimitedTeamSlugs: []
1116
+ searchedTeamSlugs: result.searchedTeamSlugs
1096
1117
  });
1097
1118
  return result.matches;
1098
1119
  } catch (err) {
1099
- output_manager_default.debug(`Selected SSO-protected team search failed: ${err}`);
1120
+ output_manager_default.debug(`Selected team search requiring SSO failed: ${err}`);
1100
1121
  return [];
1101
1122
  } finally {
1102
1123
  output_manager_default.stopSpinner();
@@ -1126,8 +1147,17 @@ async function linkCrossTeamMatches({
1126
1147
  pullEnv
1127
1148
  });
1128
1149
  }
1150
+ output_manager_default.print("\n");
1151
+ output_manager_default.print(` ${import_chalk6.default.bold("Found existing project")}
1152
+ `);
1153
+ if (match.reason === "repo-root") {
1154
+ printAlignedLabel("Project", `${match.org.slug}/${match.project.name}`);
1155
+ printAlignedLabel("Source", formatMatchSource(match));
1156
+ } else {
1157
+ printAlignedLabel("Project", `${match.org.slug}/${match.project.name}`);
1158
+ }
1129
1159
  const confirmed = await client.input.confirm(
1130
- `Found project ${formatCrossTeamMatch(match)}. Link to it?`,
1160
+ match.reason === "repo-root" ? "Link repository to project?" : "Link directory to project?",
1131
1161
  true
1132
1162
  );
1133
1163
  if (confirmed) {
@@ -1166,8 +1196,10 @@ async function linkCrossTeamMatches({
1166
1196
  name: "Not one of these projects",
1167
1197
  value: null
1168
1198
  });
1199
+ output_manager_default.print("\n");
1200
+ printAlignedLabel("Projects", `${matches.length} matches across teams`);
1169
1201
  const selected = await client.input.select({
1170
- message: "Found matching projects across teams. Which one do you want to link?",
1202
+ message: "Which project?",
1171
1203
  choices,
1172
1204
  default: currentTeamMatch ?? void 0
1173
1205
  });
@@ -1188,7 +1220,6 @@ async function setupAndLink(client, path2, {
1188
1220
  forceDelete = false,
1189
1221
  link,
1190
1222
  successEmoji = "link",
1191
- setupMsg = "Set up",
1192
1223
  projectName,
1193
1224
  nonInteractive = false,
1194
1225
  pullEnv = true,
@@ -1220,16 +1251,13 @@ async function setupAndLink(client, path2, {
1220
1251
  if (!isTTY && !autoConfirm && !nonInteractive) {
1221
1252
  return { status: "error", exitCode: 1, reason: "HEADLESS" };
1222
1253
  }
1223
- output_manager_default.print(
1224
- `
1225
- ${import_chalk6.default.bold(setupMsg)} ${import_chalk6.default.dim(`"${humanizePath(path2)}"`)}
1226
- `
1227
- );
1254
+ output_manager_default.print("\n");
1255
+ printAlignedLabel("Directory", humanizePath(path2));
1256
+ output_manager_default.print("\n");
1228
1257
  let skipAutoDetect = false;
1229
1258
  if (searchAcrossTeams) {
1230
1259
  let crossTeamMatches = [];
1231
1260
  let searchedTeamSlugs = [];
1232
- let skippedLimitedTeamSlugs = [];
1233
1261
  let skippedLimitedTeams = [];
1234
1262
  output_manager_default.spinner("Searching for existing projects\u2026", 1e3);
1235
1263
  try {
@@ -1245,17 +1273,15 @@ async function setupAndLink(client, path2, {
1245
1273
  );
1246
1274
  crossTeamMatches = searchResult.matches;
1247
1275
  searchedTeamSlugs = searchResult.searchedTeamSlugs;
1248
- skippedLimitedTeamSlugs = searchResult.skippedLimitedTeamSlugs;
1249
1276
  skippedLimitedTeams = searchResult.skippedLimitedTeams;
1250
1277
  } catch (err) {
1251
1278
  output_manager_default.debug(`Cross-team search failed: ${err}`);
1252
1279
  } finally {
1253
1280
  output_manager_default.stopSpinner();
1254
1281
  }
1255
- if (crossTeamMatches.length > 0 && !autoConfirm && !nonInteractive) {
1282
+ if (crossTeamMatches.length > 0 && searchedTeamSlugs.length > 1 && !autoConfirm && !nonInteractive) {
1256
1283
  printCrossTeamSearchScope({
1257
- searchedTeamSlugs,
1258
- skippedLimitedTeamSlugs
1284
+ searchedTeamSlugs
1259
1285
  });
1260
1286
  }
1261
1287
  const linkedMatch = await linkCrossTeamMatches({
@@ -1272,10 +1298,11 @@ async function setupAndLink(client, path2, {
1272
1298
  }
1273
1299
  if (!autoConfirm && !nonInteractive && skippedLimitedTeams.length > 0) {
1274
1300
  if (crossTeamMatches.length === 0) {
1275
- output_manager_default.print(
1276
- ` No matching projects found in the ${searchedTeamSlugs.length} ${searchedTeamSlugs.length === 1 ? "team" : "teams"} available in your current session.
1277
- `
1301
+ printAlignedLabel(
1302
+ "Searched",
1303
+ `${searchedTeamSlugs.length} ${searchedTeamSlugs.length === 1 ? "team" : "teams"} available without SSO`
1278
1304
  );
1305
+ output_manager_default.print(" No matching projects found\n");
1279
1306
  }
1280
1307
  const limitedTeamMatches = await searchSelectedLimitedTeams({
1281
1308
  client,
@@ -1297,9 +1324,7 @@ async function setupAndLink(client, path2, {
1297
1324
  return linkedLimitedMatch;
1298
1325
  }
1299
1326
  if (limitedTeamMatches.length === 0) {
1300
- output_manager_default.print(
1301
- " No matching projects found in the selected SSO-protected teams.\n"
1302
- );
1327
+ output_manager_default.print(" No matching projects found in the selected teams.\n");
1303
1328
  }
1304
1329
  skipAutoDetect = skipAutoDetect || crossTeamMatches.length > 0 || limitedTeamMatches.length > 0;
1305
1330
  } else if (crossTeamMatches.length > 0) {
@@ -1467,7 +1492,7 @@ async function setupAndLink(client, path2, {
1467
1492
  let changeAdditionalSettings = false;
1468
1493
  if (!autoConfirm) {
1469
1494
  changeAdditionalSettings = await client.input.confirm(
1470
- "Do you want to change additional project settings?",
1495
+ "Customize advanced settings?",
1471
1496
  false
1472
1497
  );
1473
1498
  }
@@ -1497,8 +1522,9 @@ async function setupAndLink(client, path2, {
1497
1522
  org.slug,
1498
1523
  successEmoji,
1499
1524
  autoConfirm,
1500
- false
1525
+ false,
1501
1526
  // don't prompt to pull env for newly created projects
1527
+ "Created"
1502
1528
  );
1503
1529
  await connectGitRepository(client, path2, project, autoConfirm, org);
1504
1530
  return { status: "linked", org, project };
@@ -1524,10 +1550,8 @@ async function connectGitRepository(client, path2, project, autoConfirm, org) {
1524
1550
  if (!remoteUrls || Object.keys(remoteUrls).length === 0) {
1525
1551
  return;
1526
1552
  }
1527
- const shouldConnect = autoConfirm || await client.input.confirm(
1528
- `Detected a repository. Connect it to this project?`,
1529
- true
1530
- );
1553
+ output_manager_default.print("\n");
1554
+ const shouldConnect = autoConfirm || await client.input.confirm(`Connect detected Git repository?`, true);
1531
1555
  if (!shouldConnect) {
1532
1556
  return;
1533
1557
  }
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  TelemetryClient
9
- } from "./chunk-J5273CSE.js";
9
+ } from "./chunk-HIYWSGI7.js";
10
10
 
11
11
  // src/util/telemetry/commands/routes/index.ts
12
12
  var RoutesTelemetryClient = class extends TelemetryClient {
@@ -7,7 +7,7 @@ const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  formatCondition,
9
9
  formatTransform
10
- } from "./chunk-G7QWUIGS.js";
10
+ } from "./chunk-UEFCAT3N.js";
11
11
  import {
12
12
  output_manager_default
13
13
  } from "./chunk-Z5SBJH6L.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-LJ5WXXG6.js";
11
11
  import {
12
12
  getLinkedProject
13
- } from "./chunk-5UCWXYNH.js";
13
+ } from "./chunk-XLLAD5DR.js";
14
14
  import {
15
15
  buildCommandWithYes,
16
16
  outputAgentError
@@ -262,7 +262,7 @@ function parsePosition(position) {
262
262
  }
263
263
  async function offerAutoPromote(client, projectId, version, hadExistingStagingVersion, opts) {
264
264
  const { default: updateRouteVersion } = await import("./update-route-version-E3V47KNI.js");
265
- const { default: stamp } = await import("./stamp-ENIXDCRO.js");
265
+ const { default: stamp } = await import("./stamp-AA7R3MZS.js");
266
266
  output_manager_default.print(
267
267
  `
268
268
  ${import_chalk.default.gray(`This change is staged. Run ${import_chalk.default.cyan(getCommandName("routes publish"))} to make it live, or ${import_chalk.default.cyan(getCommandName("routes discard-staging"))} to undo.`)}
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  getEnvTargetPlaceholder
9
- } from "./chunk-5UCWXYNH.js";
9
+ } from "./chunk-XLLAD5DR.js";
10
10
  import {
11
11
  projectOption,
12
12
  yesOption
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  require_dist
9
- } from "./chunk-J5273CSE.js";
9
+ } from "./chunk-HIYWSGI7.js";
10
10
  import {
11
11
  noBorderChars,
12
12
  require_cli_table3
@@ -0,0 +1,28 @@
1
+ import { createRequire as __createRequire } from 'node:module';
2
+ import { fileURLToPath as __fileURLToPath } from 'node:url';
3
+ import { dirname as __dirname_ } from 'node:path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __dirname_(__filename);
7
+ import {
8
+ require_ms
9
+ } from "./chunk-GGP5R3FU.js";
10
+ import {
11
+ require_source
12
+ } from "./chunk-S7KYDPEM.js";
13
+ import {
14
+ __toESM
15
+ } from "./chunk-TZ2YI2VH.js";
16
+
17
+ // src/util/output/elapsed.ts
18
+ var import_ms = __toESM(require_ms(), 1);
19
+ var import_chalk = __toESM(require_source(), 1);
20
+ function elapsed(time, ago = false) {
21
+ return import_chalk.default.gray(
22
+ `[${time < 1e3 ? `${time}ms` : (0, import_ms.default)(time)}${ago ? " ago" : ""}]`
23
+ );
24
+ }
25
+
26
+ export {
27
+ elapsed
28
+ };