vercel 58.3.0 → 58.4.4

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 (82) hide show
  1. package/dist/chunks/{add-X634O3US.js → add-245XOFJO.js} +3 -3
  2. package/dist/chunks/{add-3RKTVRL7.js → add-P7WBQMBW.js} +4 -4
  3. package/dist/chunks/{add-YTFWON7N.js → add-XH24V5VU.js} +3 -3
  4. package/dist/chunks/{build-DJIDUWYB.js → build-M7NJYJPE.js} +3 -3
  5. package/dist/chunks/{chunk-C33L5ZKY.js → chunk-2FMPLU44.js} +3 -3
  6. package/dist/chunks/{chunk-UJNNTGJY.js → chunk-2LBVX2H3.js} +1 -1
  7. package/dist/chunks/{chunk-MTW6MVY7.js → chunk-2MAPZXVV.js} +4 -4
  8. package/dist/chunks/{chunk-752Z4JQP.js → chunk-2WILSD7J.js} +1 -1
  9. package/dist/chunks/{chunk-ZPH66MB6.js → chunk-3QAUXPIR.js} +122 -3
  10. package/dist/chunks/{chunk-UQJMDWCY.js → chunk-4BUPRO5B.js} +2 -2
  11. package/dist/chunks/{chunk-BM5FP7VW.js → chunk-4CCY5OPH.js} +997 -1184
  12. package/dist/chunks/{chunk-C6BDHNNF.js → chunk-62MH5KPX.js} +2 -2
  13. package/dist/chunks/{chunk-QZV24TDR.js → chunk-AQDWMAPM.js} +8 -8
  14. package/dist/chunks/chunk-CPFNFVCL.js +85 -0
  15. package/dist/chunks/{chunk-NVSQ6KXI.js → chunk-HSYF5SI3.js} +1 -1
  16. package/dist/chunks/{chunk-PNXQB4IO.js → chunk-IEDUCUDV.js} +3 -3
  17. package/dist/chunks/{chunk-5YXUTGSY.js → chunk-M5NOLAJ4.js} +1 -1
  18. package/dist/chunks/{chunk-AZNCOIGT.js → chunk-NJ6QXKQD.js} +1 -1
  19. package/dist/chunks/{chunk-WXJ6E3MY.js → chunk-SJYAUEZR.js} +209 -47
  20. package/dist/chunks/{chunk-Z5ZQJ5VJ.js → chunk-TJJ562C5.js} +3 -0
  21. package/dist/chunks/{chunk-OTQD3MHJ.js → chunk-UE3JUVUZ.js} +3 -3
  22. package/dist/chunks/chunk-V5P25P7F.js +22 -0
  23. package/dist/chunks/{chunk-D3EEVTWR.js → chunk-XE5VSQ25.js} +1 -1
  24. package/dist/chunks/{chunk-UDDCOV62.js → chunk-Y5GTPWXB.js} +2 -2
  25. package/dist/chunks/{chunk-RUOBMMEA.js → chunk-YCPUAG77.js} +1 -1
  26. package/dist/chunks/{chunk-JID5CRQL.js → chunk-YDUINEII.js} +2 -2
  27. package/dist/chunks/{chunk-IH5JOYGQ.js → chunk-ZGBBPJ6B.js} +7 -3
  28. package/dist/chunks/{clear-J3OCB2DQ.js → clear-HWIKQ4NC.js} +3 -3
  29. package/dist/chunks/{compile-vercel-config-G2WILJR4.js → compile-vercel-config-U5NRIMZ2.js} +2 -2
  30. package/dist/chunks/config-validator.mjs +1 -1
  31. package/dist/chunks/{delete-HKUZTZE7.js → delete-FZCOUFGN.js} +3 -3
  32. package/dist/chunks/{delete-3NQLU7PQ.js → delete-NVMGVD5Z.js} +3 -3
  33. package/dist/chunks/{disable-7AIA4JV3.js → disable-ERM2BWEQ.js} +3 -3
  34. package/dist/chunks/{discard-MIGUGPGO.js → discard-KM5OLEN4.js} +3 -3
  35. package/dist/chunks/{edit-3AU746TG.js → edit-HT3UTATZ.js} +4 -4
  36. package/dist/chunks/{edit-MDQW3S4R.js → edit-TOSB2EMI.js} +3 -3
  37. package/dist/chunks/{enable-EGNWRQEI.js → enable-BQL6AOQV.js} +3 -3
  38. package/dist/chunks/{export-EMBHNUMU.js → export-UOWQHOG3.js} +3 -3
  39. package/dist/chunks/{image-XXZ5DRIW.js → image-F5SC6Q7Y.js} +4 -4
  40. package/dist/chunks/{inspect-O7SVDBHM.js → inspect-35FU5R62.js} +3 -3
  41. package/dist/chunks/{inspect-TXVTHRAZ.js → inspect-5J5GSTOB.js} +3 -3
  42. package/dist/chunks/{inspect-MYUNZMLJ.js → inspect-GKJ6T5H4.js} +3 -3
  43. package/dist/chunks/{inspect-S5WJ47OH.js → inspect-LGKOLH2O.js} +4 -4
  44. package/dist/chunks/{inspect-7V5ZHBBB.js → inspect-PZJM2CWT.js} +3 -3
  45. package/dist/chunks/{list-NZ4ZOO6B.js → list-2IIE7CAP.js} +4 -4
  46. package/dist/chunks/{list-BQLJJACX.js → list-ITFJYYQ2.js} +3 -3
  47. package/dist/chunks/{list-LC2ON7OM.js → list-KZETH3ZE.js} +2 -2
  48. package/dist/chunks/{login-4B7KPSUW.js → login-BQPJCJEZ.js} +3 -3
  49. package/dist/chunks/{ls-TWNQ7KZN.js → ls-7GHDK4MD.js} +4 -4
  50. package/dist/chunks/{ls-FRSKR6K2.js → ls-DL2LA35C.js} +3 -3
  51. package/dist/chunks/{ls-WCTLFAPI.js → ls-UXUEP54B.js} +3 -3
  52. package/dist/chunks/{ls-4J2WGR7U.js → ls-YSFWSM6J.js} +3 -3
  53. package/dist/chunks/{ls-7XMM4KCU.js → ls-ZZFLH7PK.js} +3 -3
  54. package/dist/chunks/{open-J4SAVWUP.js → open-ADNJQN5E.js} +3 -3
  55. package/dist/chunks/{permissions-67T43WNH.js → permissions-72SZCBIY.js} +5 -5
  56. package/dist/chunks/{publish-CSXOTJLD.js → publish-OOAGSEBM.js} +3 -3
  57. package/dist/chunks/{push-7KOVRV5N.js → push-B6TZDXNF.js} +3 -3
  58. package/dist/chunks/{query-CTRPYYXR.js → query-LZWS5TDH.js} +2 -2
  59. package/dist/chunks/{reorder-E4PPJNEX.js → reorder-MRHFKPMK.js} +3 -3
  60. package/dist/chunks/{reply-Z742BMF3.js → reply-BKTJXO3B.js} +3 -3
  61. package/dist/chunks/{resolve-KPZJZ6IQ.js → resolve-BKVGSGPN.js} +3 -3
  62. package/dist/chunks/{restore-ZTH2FY4I.js → restore-USR7SKWV.js} +3 -3
  63. package/dist/chunks/{rm-FVGLSIHP.js → rm-2UO6BT3A.js} +4 -4
  64. package/dist/chunks/{rm-VOFJM4XW.js → rm-37MKKV3I.js} +3 -3
  65. package/dist/chunks/{rm-DE37CFKU.js → rm-KUWPNZIS.js} +3 -3
  66. package/dist/chunks/{rm-C4ODJDWP.js → rm-VY3OHKFH.js} +3 -3
  67. package/dist/chunks/{rule-inspect-6RLS3ZNB.js → rule-inspect-JVDOOTWK.js} +4 -4
  68. package/dist/chunks/{rules-VSXJT2QE.js → rules-NTBFZBIF.js} +7 -7
  69. package/dist/chunks/{schema-3E24G2AG.js → schema-6EZ72OVH.js} +2 -2
  70. package/dist/chunks/{tags-AIZLNITP.js → tags-HNPC63QA.js} +3 -3
  71. package/dist/chunks/{update-QHWT7YG4.js → update-LUYWNZP3.js} +4 -4
  72. package/dist/commands/build/index.js +9 -9
  73. package/dist/commands/deploy/index.js +15 -12
  74. package/dist/commands/dev/index.js +21 -10
  75. package/dist/commands/env/index.js +281 -17
  76. package/dist/commands/link/index.js +7 -7
  77. package/dist/commands/list/index.js +3 -3
  78. package/dist/commands-bulk.js +3160 -2263
  79. package/dist/index.js +19 -17
  80. package/dist/version.mjs +1 -1
  81. package/package.json +33 -40
  82. package/dist/chunks/chunk-V4RMJKQP.js +0 -36
@@ -20,12 +20,12 @@ import {
20
20
  getLinkedProject,
21
21
  getProjectByNameOrId,
22
22
  getScope
23
- } from "./chunk-BM5FP7VW.js";
23
+ } from "./chunk-4CCY5OPH.js";
24
24
  import {
25
25
  AGENT_REASON,
26
26
  buildCommandWithGlobalFlags,
27
27
  outputAgentError
28
- } from "./chunk-Z5ZQJ5VJ.js";
28
+ } from "./chunk-TJJ562C5.js";
29
29
  import {
30
30
  ProjectNotFound,
31
31
  isAPIError,
@@ -7,10 +7,12 @@ const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  getUpdateCommandInfo,
9
9
  isGlobal
10
- } from "./chunk-AZNCOIGT.js";
10
+ } from "./chunk-NJ6QXKQD.js";
11
11
  import {
12
- progress
13
- } from "./chunk-WXJ6E3MY.js";
12
+ getGlobalPathConfig,
13
+ progress,
14
+ writeToConfigFile
15
+ } from "./chunk-SJYAUEZR.js";
14
16
  import {
15
17
  validateJsonOutput
16
18
  } from "./chunk-XPKWKPWA.js";
@@ -18,7 +20,7 @@ import {
18
20
  apiCommand,
19
21
  listSubcommand4 as listSubcommand,
20
22
  loginCommand
21
- } from "./chunk-ZPH66MB6.js";
23
+ } from "./chunk-3QAUXPIR.js";
22
24
  import {
23
25
  require_semver
24
26
  } from "./chunk-IB5L4LKZ.js";
@@ -26,10 +28,8 @@ import {
26
28
  help
27
29
  } from "./chunk-ZX2FSPWV.js";
28
30
  import {
29
- getGlobalPathConfig,
30
- login,
31
- writeToConfigFile
32
- } from "./chunk-BM5FP7VW.js";
31
+ login
32
+ } from "./chunk-4CCY5OPH.js";
33
33
  import {
34
34
  TelemetryClient,
35
35
  isNativeBinaryInstall
@@ -0,0 +1,85 @@
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
+ VERCEL_DIR
9
+ } from "./chunk-4CCY5OPH.js";
10
+ import {
11
+ parseArguments
12
+ } from "./chunk-XLKFJPMT.js";
13
+ import {
14
+ ConflictingConfigFiles,
15
+ DeprecatedNowJson,
16
+ InvalidLocalConfig
17
+ } from "./chunk-SOFC4MLS.js";
18
+
19
+ // src/util/input/prompt-cancellation.ts
20
+ var PromptCanceledError = class extends Error {
21
+ constructor() {
22
+ super("Prompt canceled");
23
+ this.name = "PromptCanceledError";
24
+ }
25
+ };
26
+ var PromptBackError = class extends Error {
27
+ constructor() {
28
+ super("Prompt back");
29
+ this.name = "PromptBackError";
30
+ }
31
+ };
32
+ function isPromptBackError(error) {
33
+ return error instanceof PromptBackError;
34
+ }
35
+ function isPromptCanceledError(error) {
36
+ if (error instanceof PromptCanceledError) {
37
+ return true;
38
+ }
39
+ return error instanceof Error && error.message.includes("User force closed the prompt");
40
+ }
41
+
42
+ // src/util/config/local-path.ts
43
+ import path from "path";
44
+ import { existsSync } from "fs";
45
+ function getLocalPathConfig(prefix) {
46
+ const argv = parseArguments(process.argv.slice(2), {}, { permissive: true });
47
+ const customPath = argv.flags["--local-config"];
48
+ if (customPath) {
49
+ if (typeof customPath !== "string") {
50
+ throw new InvalidLocalConfig(customPath);
51
+ }
52
+ return path.resolve(process.cwd(), customPath);
53
+ }
54
+ const vercelConfigPath = path.join(prefix, "vercel.json");
55
+ const vercelTomlPath = path.join(prefix, "vercel.toml");
56
+ const nowConfigPath = path.join(prefix, "now.json");
57
+ const vercelConfigExists = existsSync(vercelConfigPath);
58
+ const vercelTomlExists = existsSync(vercelTomlPath);
59
+ const nowConfigExists = existsSync(nowConfigPath);
60
+ const foundConfigs = [];
61
+ if (vercelConfigExists)
62
+ foundConfigs.push(vercelConfigPath);
63
+ if (vercelTomlExists)
64
+ foundConfigs.push(vercelTomlPath);
65
+ if (nowConfigExists) {
66
+ throw new DeprecatedNowJson(nowConfigPath);
67
+ }
68
+ if (foundConfigs.length > 1) {
69
+ throw new ConflictingConfigFiles(foundConfigs);
70
+ }
71
+ const compiledConfigPath = path.join(prefix, VERCEL_DIR, "vercel.json");
72
+ const compiledConfigExists = existsSync(compiledConfigPath);
73
+ if (compiledConfigExists) {
74
+ return compiledConfigPath;
75
+ }
76
+ return vercelConfigPath;
77
+ }
78
+
79
+ export {
80
+ getLocalPathConfig,
81
+ PromptCanceledError,
82
+ PromptBackError,
83
+ isPromptBackError,
84
+ isPromptCanceledError
85
+ };
@@ -8,7 +8,7 @@ import {
8
8
  formatCondition,
9
9
  formatTransform,
10
10
  isTargetTransform
11
- } from "./chunk-UQJMDWCY.js";
11
+ } from "./chunk-4BUPRO5B.js";
12
12
  import {
13
13
  output_manager_default
14
14
  } from "./chunk-OX7KI3LF.js";
@@ -13,13 +13,13 @@ import {
13
13
  progress,
14
14
  require_dist as require_dist2,
15
15
  sleep
16
- } from "./chunk-WXJ6E3MY.js";
16
+ } from "./chunk-SJYAUEZR.js";
17
17
  import {
18
18
  suggestNextCommands
19
19
  } from "./chunk-XBN2O34P.js";
20
20
  import {
21
21
  CommandTimeout
22
- } from "./chunk-ZPH66MB6.js";
22
+ } from "./chunk-3QAUXPIR.js";
23
23
  import {
24
24
  showPluginTipIfNeeded
25
25
  } from "./chunk-NJUPUGOE.js";
@@ -36,7 +36,7 @@ import {
36
36
  require_dist as require_dist3,
37
37
  require_pluralize,
38
38
  ua_default
39
- } from "./chunk-BM5FP7VW.js";
39
+ } from "./chunk-4CCY5OPH.js";
40
40
  import {
41
41
  require_strip_ansi,
42
42
  responseError
@@ -8,7 +8,7 @@ import {
8
8
  VERCEL_DIR,
9
9
  VERCEL_DIR_PROJECT,
10
10
  require_lib
11
- } from "./chunk-BM5FP7VW.js";
11
+ } from "./chunk-4CCY5OPH.js";
12
12
  import {
13
13
  require_dist
14
14
  } from "./chunk-OX7KI3LF.js";
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
8
  require_lib
9
- } from "./chunk-BM5FP7VW.js";
9
+ } from "./chunk-4CCY5OPH.js";
10
10
  import {
11
11
  isNativeBinaryInstall
12
12
  } from "./chunk-ECCWJHC6.js";
@@ -4,34 +4,44 @@ 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 {
8
+ highlight
9
+ } from "./chunk-V5P25P7F.js";
7
10
  import {
8
11
  PromptBackError,
9
- PromptCanceledError
10
- } from "./chunk-V4RMJKQP.js";
12
+ PromptCanceledError,
13
+ getLocalPathConfig
14
+ } from "./chunk-CPFNFVCL.js";
11
15
  import {
16
+ DEFAULT_VERCEL_CONFIG_FILENAME,
17
+ VERCEL_CONFIG_EXTENSIONS,
18
+ VERCEL_DIR,
12
19
  createPrompt,
13
20
  esm_default,
14
21
  esm_default2,
15
22
  esm_default3,
23
+ humanizePath,
16
24
  isBackspaceKey,
17
25
  isEnterKey,
18
26
  isOAuthError,
19
27
  makeTheme,
20
28
  onExit,
21
29
  performDeviceCodeFlow,
22
- persistAuthConfig,
23
30
  processTokenResponse,
24
31
  refreshTokenRequest,
25
32
  require_cli_width,
33
+ require_dist as require_dist2,
26
34
  require_lib2 as require_lib,
27
35
  require_source as require_source2,
28
36
  require_wrap_ansi,
29
37
  ua_default,
30
38
  useKeypress,
31
39
  usePrefix,
32
- useState,
33
- writeToConfigFile
34
- } from "./chunk-BM5FP7VW.js";
40
+ useState
41
+ } from "./chunk-4CCY5OPH.js";
42
+ import {
43
+ require_load_json_file
44
+ } from "./chunk-ECCWJHC6.js";
35
45
  import {
36
46
  require_strip_ansi
37
47
  } from "./chunk-KBEX5MYS.js";
@@ -39,7 +49,8 @@ import {
39
49
  parseArguments
40
50
  } from "./chunk-XLKFJPMT.js";
41
51
  import {
42
- APIError
52
+ APIError,
53
+ NowError
43
54
  } from "./chunk-SOFC4MLS.js";
44
55
  import {
45
56
  pkg_default
@@ -353,7 +364,7 @@ var require_retry2 = __commonJS({
353
364
  });
354
365
 
355
366
  // ../../node_modules/.pnpm/async-retry@1.1.3/node_modules/async-retry/dist/index.js
356
- var require_dist2 = __commonJS({
367
+ var require_dist3 = __commonJS({
357
368
  "../../node_modules/.pnpm/async-retry@1.1.3/node_modules/async-retry/dist/index.js"(exports, module) {
358
369
  "use strict";
359
370
  var retrier = require_retry2();
@@ -388,19 +399,162 @@ var require_dist2 = __commonJS({
388
399
  }
389
400
  });
390
401
 
402
+ // src/util/config/global-path.ts
403
+ import path from "path";
404
+ import * as config from "@vercel/cli-config";
405
+ function getGlobalPathConfig2(argvSlice = process.argv.slice(2), cwd = process.cwd()) {
406
+ const args = parseArguments(argvSlice, {}, { permissive: true });
407
+ const confFlag = args.flags["--global-config"];
408
+ if (confFlag) {
409
+ return path.resolve(cwd, confFlag);
410
+ } else {
411
+ return config.getGlobalPathConfig();
412
+ }
413
+ }
414
+
415
+ // src/util/config/files.ts
416
+ var import_load_json_file = __toESM(require_load_json_file(), 1);
417
+ var import_error_utils = __toESM(require_dist(), 1);
418
+ var import_client = __toESM(require_dist2(), 1);
419
+ import { join, basename, dirname } from "path";
420
+ import { accessSync, constants } from "fs";
421
+ import * as config2 from "@vercel/cli-config";
422
+ import {
423
+ persistCliAuthConfig,
424
+ readCliAuthConfig
425
+ } from "@vercel/cli-auth/credentials-store.js";
426
+ var VERCEL_DIR2 = getGlobalPathConfig2();
427
+ var CONFIG_FILE_PATH = config2.getConfigFilePath(VERCEL_DIR2);
428
+ var AUTH_CONFIG_FILE_PATH = config2.getAuthConfigFilePath(VERCEL_DIR2);
429
+ var readConfigFile = () => {
430
+ return config2.readGlobalConfigFile(CONFIG_FILE_PATH);
431
+ };
432
+ var writeToConfigFile = (stuff) => {
433
+ try {
434
+ config2.writeGlobalConfigFile(CONFIG_FILE_PATH, stuff);
435
+ } catch (err) {
436
+ if ((0, import_error_utils.isErrnoException)(err)) {
437
+ if ((0, import_error_utils.isErrnoException)(err) && err.code === "EPERM") {
438
+ output_manager_default.error(
439
+ `Not able to create ${highlight(
440
+ CONFIG_FILE_PATH
441
+ )} (operation not permitted).`
442
+ );
443
+ process.exit(1);
444
+ } else if (err.code === "EBADF") {
445
+ output_manager_default.error(
446
+ `Not able to create ${highlight(
447
+ CONFIG_FILE_PATH
448
+ )} (bad file descriptor).`
449
+ );
450
+ process.exit(1);
451
+ }
452
+ }
453
+ throw err;
454
+ }
455
+ };
456
+ var readAuthConfigFile = (_globalConfig) => {
457
+ return {
458
+ ...config2.getDefaultAuthConfig(),
459
+ ...readCliAuthConfig(VERCEL_DIR2)
460
+ };
461
+ };
462
+ var persistAuthConfig = (authConfig, _globalConfig) => {
463
+ try {
464
+ return persistCliAuthConfig(VERCEL_DIR2, authConfig);
465
+ } catch (err) {
466
+ const wrappedError = new Error(
467
+ `Not able to create ${humanizePath(AUTH_CONFIG_FILE_PATH)} (${(0, import_error_utils.errorToStringFriendly)(
468
+ err
469
+ )}).`
470
+ );
471
+ wrappedError.cause = err;
472
+ throw wrappedError;
473
+ }
474
+ };
475
+ function getConfigFilePath2() {
476
+ return CONFIG_FILE_PATH;
477
+ }
478
+ function getAuthConfigFilePath2() {
479
+ return AUTH_CONFIG_FILE_PATH;
480
+ }
481
+ function readLocalConfig(prefix = process.cwd()) {
482
+ let config3 = void 0;
483
+ let target = "";
484
+ try {
485
+ target = getLocalPathConfig(prefix);
486
+ } catch (err) {
487
+ if (err instanceof NowError) {
488
+ output_manager_default.error(err.message);
489
+ process.exit(1);
490
+ } else {
491
+ throw err;
492
+ }
493
+ }
494
+ if (!target) {
495
+ return;
496
+ }
497
+ try {
498
+ accessSync(target, constants.F_OK);
499
+ config3 = import_load_json_file.default.sync(target);
500
+ } catch (err) {
501
+ if ((0, import_error_utils.isErrnoException)(err) && err.code === "ENOENT") {
502
+ } else if ((0, import_error_utils.isError)(err) && err.name === "JSONError") {
503
+ output_manager_default.error(err.message);
504
+ process.exit(1);
505
+ } else if ((0, import_error_utils.isErrnoException)(err)) {
506
+ const code = err.code ? ` (${err.code})` : "";
507
+ output_manager_default.error(`Failed to read config file: ${target}${code}`);
508
+ process.exit(1);
509
+ } else {
510
+ output_manager_default.prettyError(err);
511
+ process.exit(1);
512
+ }
513
+ }
514
+ if (!config3) {
515
+ return;
516
+ }
517
+ const isCompiledConfig = basename(target) === "vercel.json" && basename(dirname(target)) === VERCEL_DIR;
518
+ if (isCompiledConfig) {
519
+ const workPath = dirname(dirname(target));
520
+ let sourceFile = null;
521
+ for (const ext of VERCEL_CONFIG_EXTENSIONS) {
522
+ const configPath = join(workPath, `vercel.${ext}`);
523
+ try {
524
+ accessSync(configPath, constants.F_OK);
525
+ sourceFile = basename(configPath);
526
+ break;
527
+ } catch {
528
+ }
529
+ }
530
+ if (!sourceFile) {
531
+ const tomlPath = join(workPath, "vercel.toml");
532
+ try {
533
+ accessSync(tomlPath, constants.F_OK);
534
+ sourceFile = "vercel.toml";
535
+ } catch {
536
+ }
537
+ }
538
+ config3[import_client.fileNameSymbol] = sourceFile || DEFAULT_VERCEL_CONFIG_FILENAME;
539
+ } else {
540
+ config3[import_client.fileNameSymbol] = basename(target);
541
+ }
542
+ return config3;
543
+ }
544
+
391
545
  // src/util/client.ts
392
546
  var import_chalk4 = __toESM(require_source(), 1);
393
547
 
394
548
  // ../../node_modules/.pnpm/@inquirer+confirm@3.1.2/node_modules/@inquirer/confirm/dist/esm/index.mjs
395
- var esm_default4 = createPrompt((config, done) => {
396
- const { transformer = (answer) => answer ? "yes" : "no" } = config;
549
+ var esm_default4 = createPrompt((config3, done) => {
550
+ const { transformer = (answer) => answer ? "yes" : "no" } = config3;
397
551
  const [status, setStatus] = useState("pending");
398
552
  const [value, setValue] = useState("");
399
- const theme = makeTheme(config.theme);
553
+ const theme = makeTheme(config3.theme);
400
554
  const prefix = usePrefix({ theme });
401
555
  useKeypress((key, rl) => {
402
556
  if (isEnterKey(key)) {
403
- let answer = config.default !== false;
557
+ let answer = config3.default !== false;
404
558
  if (/^(y|yes)/i.test(value))
405
559
  answer = true;
406
560
  else if (/^(n|no)/i.test(value))
@@ -417,9 +571,9 @@ var esm_default4 = createPrompt((config, done) => {
417
571
  if (status === "done") {
418
572
  formattedValue = theme.style.answer(value);
419
573
  } else {
420
- defaultValue = ` ${theme.style.defaultAnswer(config.default === false ? "y/N" : "Y/n")}`;
574
+ defaultValue = ` ${theme.style.defaultAnswer(config3.default === false ? "y/N" : "Y/n")}`;
421
575
  }
422
- const message = theme.style.message(config.message);
576
+ const message = theme.style.message(config3.message);
423
577
  return `${prefix} ${message}${defaultValue} ${formattedValue}`;
424
578
  });
425
579
 
@@ -440,13 +594,13 @@ function getChoiceKey(choice, key) {
440
594
  return choice.value;
441
595
  return choice.name;
442
596
  }
443
- var esm_default5 = createPrompt((config, done) => {
444
- const { choices, default: defaultKey = "h", expanded: defaultExpandState = false } = config;
597
+ var esm_default5 = createPrompt((config3, done) => {
598
+ const { choices, default: defaultKey = "h", expanded: defaultExpandState = false } = config3;
445
599
  const [status, setStatus] = useState("pending");
446
600
  const [value, setValue] = useState("");
447
601
  const [expanded, setExpanded] = useState(defaultExpandState);
448
602
  const [errorMsg, setError] = useState(void 0);
449
- const theme = makeTheme(config.theme);
603
+ const theme = makeTheme(config3.theme);
450
604
  const prefix = usePrefix({ theme });
451
605
  useKeypress((event, rl) => {
452
606
  if (isEnterKey(event)) {
@@ -471,7 +625,7 @@ var esm_default5 = createPrompt((config, done) => {
471
625
  setError(void 0);
472
626
  }
473
627
  });
474
- const message = theme.style.message(config.message);
628
+ const message = theme.style.message(config3.message);
475
629
  if (status === "done") {
476
630
  return `${prefix} ${message} ${theme.style.answer(value)}`;
477
631
  }
@@ -510,11 +664,11 @@ var esm_default5 = createPrompt((config, done) => {
510
664
  });
511
665
 
512
666
  // ../../node_modules/.pnpm/@inquirer+input@2.1.2/node_modules/@inquirer/input/dist/esm/index.mjs
513
- var esm_default6 = createPrompt((config, done) => {
514
- const { validate = () => true } = config;
515
- const theme = makeTheme(config.theme);
667
+ var esm_default6 = createPrompt((config3, done) => {
668
+ const { validate = () => true } = config3;
669
+ const theme = makeTheme(config3.theme);
516
670
  const [status, setStatus] = useState("pending");
517
- const [defaultValue = "", setDefaultValue] = useState(config.default);
671
+ const [defaultValue = "", setDefaultValue] = useState(config3.default);
518
672
  const [errorMsg, setError] = useState(void 0);
519
673
  const [value, setValue] = useState("");
520
674
  const isLoading = status === "loading";
@@ -548,10 +702,10 @@ var esm_default6 = createPrompt((config, done) => {
548
702
  setError(void 0);
549
703
  }
550
704
  });
551
- const message = theme.style.message(config.message);
705
+ const message = theme.style.message(config3.message);
552
706
  let formattedValue = value;
553
- if (typeof config.transformer === "function") {
554
- formattedValue = config.transformer(value, { isFinal: status === "done" });
707
+ if (typeof config3.transformer === "function") {
708
+ formattedValue = config3.transformer(value, { isFinal: status === "done" });
555
709
  } else if (status === "done") {
556
710
  formattedValue = theme.style.answer(value);
557
711
  }
@@ -571,9 +725,9 @@ var esm_default6 = createPrompt((config, done) => {
571
725
 
572
726
  // ../../node_modules/.pnpm/@inquirer+password@2.1.2/node_modules/@inquirer/password/dist/esm/index.mjs
573
727
  var import_ansi_escapes = __toESM(require_ansi_escapes(), 1);
574
- var esm_default7 = createPrompt((config, done) => {
575
- const { validate = () => true } = config;
576
- const theme = makeTheme(config.theme);
728
+ var esm_default7 = createPrompt((config3, done) => {
729
+ const { validate = () => true } = config3;
730
+ const theme = makeTheme(config3.theme);
577
731
  const [status, setStatus] = useState("pending");
578
732
  const [errorMsg, setError] = useState(void 0);
579
733
  const [value, setValue] = useState("");
@@ -601,11 +755,11 @@ var esm_default7 = createPrompt((config, done) => {
601
755
  setError(void 0);
602
756
  }
603
757
  });
604
- const message = theme.style.message(config.message);
758
+ const message = theme.style.message(config3.message);
605
759
  let formattedValue = "";
606
760
  let helpTip;
607
- if (config.mask) {
608
- const maskChar = typeof config.mask === "string" ? config.mask : "*";
761
+ if (config3.mask) {
762
+ const maskChar = typeof config3.mask === "string" ? config3.mask : "*";
609
763
  formattedValue = maskChar.repeat(value.length);
610
764
  } else if (status !== "done") {
611
765
  helpTip = `${theme.style.help("[input is masked]")}${import_ansi_escapes.default.cursorHide}`;
@@ -1102,7 +1256,7 @@ var PromisePolyfill = class extends Promise {
1102
1256
 
1103
1257
  // ../../node_modules/.pnpm/@inquirer+core@9.2.1/node_modules/@inquirer/core/dist/esm/lib/create-prompt.mjs
1104
1258
  function createPrompt2(view) {
1105
- const prompt = (config, context = {}) => {
1259
+ const prompt = (config3, context = {}) => {
1106
1260
  const { input = process.stdin, signal } = context;
1107
1261
  const cleanups = /* @__PURE__ */ new Set();
1108
1262
  const output = new import_mute_stream.default();
@@ -1136,7 +1290,7 @@ function createPrompt2(view) {
1136
1290
  cleanups.add(() => rl.removeListener("close", hooksCleanup));
1137
1291
  cycle(() => {
1138
1292
  try {
1139
- const nextView = view(config, (value) => {
1293
+ const nextView = view(config3, (value) => {
1140
1294
  setImmediate(() => resolve2(value));
1141
1295
  });
1142
1296
  const [content, bottomContent] = typeof nextView === "string" ? [nextView] : nextView;
@@ -1213,9 +1367,9 @@ function normalizeChoices(choices) {
1213
1367
  };
1214
1368
  });
1215
1369
  }
1216
- var esm_default8 = createPrompt2((config, done) => {
1217
- const { pageSize = 7, validate = () => true } = config;
1218
- const theme = makeTheme2(searchTheme, config.theme);
1370
+ var esm_default8 = createPrompt2((config3, done) => {
1371
+ const { pageSize = 7, validate = () => true } = config3;
1372
+ const theme = makeTheme2(searchTheme, config3.theme);
1219
1373
  const firstRender = useRef(true);
1220
1374
  const [status, setStatus] = useState2("loading");
1221
1375
  const [searchTerm, setSearchTerm] = useState2("");
@@ -1234,7 +1388,7 @@ var esm_default8 = createPrompt2((config, done) => {
1234
1388
  setSearchError(void 0);
1235
1389
  const fetchResults = async () => {
1236
1390
  try {
1237
- const results = await config.source(searchTerm || void 0, {
1391
+ const results = await config3.source(searchTerm || void 0, {
1238
1392
  signal: controller.signal
1239
1393
  });
1240
1394
  if (!controller.signal.aborted) {
@@ -1291,7 +1445,7 @@ var esm_default8 = createPrompt2((config, done) => {
1291
1445
  setSearchTerm(rl.line);
1292
1446
  }
1293
1447
  });
1294
- const message = theme.style.message(config.message, status);
1448
+ const message = theme.style.message(config3.message, status);
1295
1449
  if (active > 0) {
1296
1450
  firstRender.current = false;
1297
1451
  }
@@ -1341,8 +1495,8 @@ ${theme.style.description(selectedChoice.description)}` : ``;
1341
1495
  });
1342
1496
 
1343
1497
  // src/util/client.ts
1344
- var import_async_retry = __toESM(require_dist2(), 1);
1345
- import { join, resolve } from "path";
1498
+ var import_async_retry = __toESM(require_dist3(), 1);
1499
+ import { join as join2, resolve } from "path";
1346
1500
  import { EventEmitter } from "events";
1347
1501
  import { URL } from "url";
1348
1502
  import {
@@ -1450,7 +1604,7 @@ function sharedPromise(fn) {
1450
1604
  }
1451
1605
 
1452
1606
  // src/util/client.ts
1453
- var import_error_utils = __toESM(require_dist(), 1);
1607
+ var import_error_utils2 = __toESM(require_dist(), 1);
1454
1608
 
1455
1609
  // src/util/sleep.ts
1456
1610
  function sleep(ms) {
@@ -1710,7 +1864,7 @@ ${error.stack}`);
1710
1864
  return getSharedGlobalPathConfig();
1711
1865
  }
1712
1866
  async readConfig(fileName, schema) {
1713
- const filePath = join(this.getGlobalPathConfig(), fileName);
1867
+ const filePath = join2(this.getGlobalPathConfig(), fileName);
1714
1868
  return readSharedConfigFile(filePath, schema);
1715
1869
  }
1716
1870
  async maybeReadConfig(fileName, schema) {
@@ -1721,11 +1875,11 @@ ${error.stack}`);
1721
1875
  }
1722
1876
  }
1723
1877
  async writeConfig(fileName, schema, value) {
1724
- const filePath = join(this.getGlobalPathConfig(), fileName);
1878
+ const filePath = join2(this.getGlobalPathConfig(), fileName);
1725
1879
  writeSharedConfigFile(filePath, schema, value);
1726
1880
  }
1727
- updateConfig(config) {
1728
- this.config = { ...this.config, ...config };
1881
+ updateConfig(config3) {
1882
+ this.config = { ...this.config, ...config3 };
1729
1883
  }
1730
1884
  writeToConfigFile() {
1731
1885
  writeToConfigFile(this.config);
@@ -1880,7 +2034,7 @@ Are you sure you want to proceed?`;
1880
2034
  try {
1881
2035
  await this.reauthenticate(error);
1882
2036
  } catch (reauthError) {
1883
- return bail((0, import_error_utils.normalizeError)(reauthError));
2037
+ return bail((0, import_error_utils2.normalizeError)(reauthError));
1884
2038
  }
1885
2039
  } else if (res.status === 429 && opts.bailOn429) {
1886
2040
  return bail(error);
@@ -1941,8 +2095,16 @@ function progress(current, total, opts = {}) {
1941
2095
  }
1942
2096
 
1943
2097
  export {
1944
- require_dist2 as require_dist,
2098
+ getGlobalPathConfig2 as getGlobalPathConfig,
2099
+ require_dist3 as require_dist,
1945
2100
  printIndications,
2101
+ readConfigFile,
2102
+ writeToConfigFile,
2103
+ readAuthConfigFile,
2104
+ persistAuthConfig,
2105
+ getConfigFilePath2 as getConfigFilePath,
2106
+ getAuthConfigFilePath2 as getAuthConfigFilePath,
2107
+ readLocalConfig,
1946
2108
  sleep,
1947
2109
  isJSONObject,
1948
2110
  Client,
@@ -393,6 +393,9 @@ function buildNextStepsForProjectSubcommands(client, variant) {
393
393
  } : variant === "checks" ? {
394
394
  template: "project checks add <name>",
395
395
  when: "Create a deployment check by project name (replace <name>)"
396
+ } : variant === "inspect" ? {
397
+ template: "project inspect <name>",
398
+ when: "Inspect a project by name (replace <name>)"
396
399
  } : {
397
400
  template: "project members <name>",
398
401
  when: "List members by project name (replace <name>)"
@@ -5,9 +5,10 @@ const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __dirname_(__filename);
7
7
  import {
8
+ getLocalPathConfig,
8
9
  isPromptBackError,
9
10
  isPromptCanceledError
10
- } from "./chunk-V4RMJKQP.js";
11
+ } from "./chunk-CPFNFVCL.js";
11
12
  import {
12
13
  table
13
14
  } from "./chunk-KT4XXKJK.js";
@@ -25,7 +26,6 @@ import {
25
26
  findRepoRoot,
26
27
  findSourceVercelConfigFile,
27
28
  getLinkedProject,
28
- getLocalPathConfig,
29
29
  getProjectByNameOrId,
30
30
  getServicesConfigWriteBlocker,
31
31
  getVercelDirectory,
@@ -46,7 +46,7 @@ import {
46
46
  selectAndParseRemoteUrl,
47
47
  selectOrg,
48
48
  writeServicesConfig
49
- } from "./chunk-BM5FP7VW.js";
49
+ } from "./chunk-4CCY5OPH.js";
50
50
  import {
51
51
  printError
52
52
  } from "./chunk-KBEX5MYS.js";