@vercel/build-utils 8.3.3 → 8.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @vercel/build-utils
2
2
 
3
+ ## 8.3.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Revert "warn on mismatched corepack and detected package managers" ([#11879](https://github.com/vercel/vercel/pull/11879))
8
+
9
+ ## 8.3.4
10
+
11
+ ### Patch Changes
12
+
13
+ - Revert "Fix corepack `packageManager` detection on monorepos" ([#11865](https://github.com/vercel/vercel/pull/11865))
14
+
3
15
  ## 8.3.3
4
16
 
5
17
  ### Patch Changes
@@ -26,12 +26,6 @@ export interface ScanParentDirsResult {
26
26
  * or `undefined` if not found.
27
27
  */
28
28
  lockfileVersion?: number;
29
- /**
30
- * The contents of the `packageManager` field from `package.json` if found.
31
- * The value may come from a different `package.json` file than the one
32
- * specified by `packageJsonPath`, in the case of a monorepo.
33
- */
34
- packageJsonPackageManager?: string;
35
29
  }
36
30
  export interface TraverseUpDirectoriesProps {
37
31
  /**
@@ -103,12 +97,11 @@ export declare function getEnvForPackageManager({ cliType, lockfileVersion, pack
103
97
  * Helper to get the binary paths that link to the used package manager.
104
98
  * Note: Make sure it doesn't contain any `console.log` calls.
105
99
  */
106
- export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackPackageManager, corepackEnabled, }: {
100
+ export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackEnabled, nodeVersion, }: {
107
101
  cliType: CliType;
108
102
  lockfileVersion: number | undefined;
109
- corepackPackageManager: string | undefined;
103
+ corepackEnabled: boolean;
110
104
  nodeVersion: NodeVersion | undefined;
111
- corepackEnabled?: boolean;
112
105
  }): {
113
106
  /**
114
107
  * Which lockfile was detected.
@@ -124,15 +117,6 @@ export declare function getPathOverrideForPackageManager({ cliType, lockfileVers
124
117
  */
125
118
  path: string | undefined;
126
119
  };
127
- export declare function detectPackageManager(cliType: CliType, lockfileVersion: number | undefined): {
128
- path: string;
129
- detectedLockfile: string;
130
- detectedPackageManager: string;
131
- } | {
132
- path: undefined;
133
- detectedLockfile: string;
134
- detectedPackageManager: string;
135
- } | undefined;
136
120
  /**
137
121
  * Helper to get the binary paths that link to the used package manager.
138
122
  * Note: Make sure it doesn't contain any `console.log` calls.
@@ -28,7 +28,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var run_user_scripts_exports = {};
30
30
  __export(run_user_scripts_exports, {
31
- detectPackageManager: () => detectPackageManager,
32
31
  execCommand: () => execCommand,
33
32
  getEnvForPackageManager: () => getEnvForPackageManager,
34
33
  getNodeBinPath: () => getNodeBinPath,
@@ -65,11 +64,6 @@ var import_node_version = require("./node-version");
65
64
  var import_read_config_file = require("./read-config-file");
66
65
  var import_clone_env = require("../clone-env");
67
66
  const runNpmInstallSema = new import_async_sema.default(1);
68
- const NO_OVERRIDE = {
69
- detectedLockfile: void 0,
70
- detectedPackageManager: void 0,
71
- path: void 0
72
- };
73
67
  function spawnAsync(command, args, opts = {}) {
74
68
  return new Promise((resolve, reject) => {
75
69
  const stderrLogs = [];
@@ -219,10 +213,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
219
213
  filename: "package.json"
220
214
  });
221
215
  const packageJson = readPackageJson && pkgJsonPath ? JSON.parse(await import_fs_extra.default.readFile(pkgJsonPath, "utf8")) : void 0;
222
- const {
223
- paths: [yarnLockPath, npmLockPath, pnpmLockPath, bunLockPath],
224
- packageJsonPackageManager
225
- } = await walkParentDirsMulti({
216
+ const [yarnLockPath, npmLockPath, pnpmLockPath, bunLockPath] = await walkParentDirsMulti({
226
217
  base,
227
218
  start: destPath,
228
219
  filenames: [
@@ -261,21 +252,19 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
261
252
  lockfilePath = bunLockPath;
262
253
  lockfileVersion = 0;
263
254
  } else {
264
- cliType = detectPackageManagerNameWithoutLockfile(
265
- packageJsonPackageManager
266
- );
255
+ cliType = packageJson ? detectPackageManagerNameWithoutLockfile(packageJson) : "npm";
267
256
  }
268
257
  const packageJsonPath = pkgJsonPath || void 0;
269
258
  return {
270
259
  cliType,
271
260
  packageJson,
272
- packageJsonPackageManager,
273
261
  lockfilePath,
274
262
  lockfileVersion,
275
263
  packageJsonPath
276
264
  };
277
265
  }
278
- function detectPackageManagerNameWithoutLockfile(packageJsonPackageManager) {
266
+ function detectPackageManagerNameWithoutLockfile(packageJson) {
267
+ const packageJsonPackageManager = packageJson.packageManager;
279
268
  if (usingCorepack(process.env, packageJsonPackageManager)) {
280
269
  const corepackPackageManager = validateVersionSpecifier(
281
270
  packageJsonPackageManager
@@ -320,26 +309,17 @@ async function walkParentDirsMulti({
320
309
  start,
321
310
  filenames
322
311
  }) {
323
- let packageManager;
324
312
  for (const dir of traverseUpDirectories({ start, base })) {
325
313
  const fullPaths = filenames.map((f) => import_path.default.join(dir, f));
326
314
  const existResults = await Promise.all(
327
315
  fullPaths.map((f) => import_fs_extra.default.pathExists(f))
328
316
  );
329
317
  const foundOneOrMore = existResults.some((b) => b);
330
- const packageJsonPath = import_path.default.join(dir, "package.json");
331
- const packageJson = await import_fs_extra.default.readJSON(packageJsonPath).catch(() => null);
332
- if (packageJson?.packageManager) {
333
- packageManager = packageJson.packageManager;
334
- }
335
318
  if (foundOneOrMore) {
336
- return {
337
- paths: fullPaths.map((f, i) => existResults[i] ? f : void 0),
338
- packageJsonPackageManager: packageManager
339
- };
319
+ return fullPaths.map((f, i) => existResults[i] ? f : void 0);
340
320
  }
341
321
  }
342
- return { paths: [], packageJsonPackageManager: packageManager };
322
+ return [];
343
323
  }
344
324
  function isSet(v) {
345
325
  return v?.constructor?.name === "Set";
@@ -352,12 +332,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
352
332
  (0, import_assert.default)(import_path.default.isAbsolute(destPath));
353
333
  try {
354
334
  await runNpmInstallSema.acquire();
355
- const {
356
- cliType,
357
- packageJsonPath,
358
- lockfileVersion,
359
- packageJsonPackageManager
360
- } = await scanParentDirs(destPath);
335
+ const { cliType, packageJsonPath, packageJson, lockfileVersion } = await scanParentDirs(destPath, true);
361
336
  if (!packageJsonPath) {
362
337
  (0, import_debug.default)(
363
338
  `Skipping dependency installation because no package.json was found for ${destPath}`
@@ -386,7 +361,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
386
361
  opts.env = getEnvForPackageManager({
387
362
  cliType,
388
363
  lockfileVersion,
389
- packageJsonPackageManager,
364
+ packageJsonPackageManager: packageJson?.packageManager,
390
365
  nodeVersion,
391
366
  env
392
367
  });
@@ -450,9 +425,8 @@ function getEnvForPackageManager({
450
425
  } = getPathOverrideForPackageManager({
451
426
  cliType,
452
427
  lockfileVersion,
453
- corepackPackageManager: packageJsonPackageManager,
454
- nodeVersion,
455
- corepackEnabled
428
+ corepackEnabled,
429
+ nodeVersion
456
430
  });
457
431
  if (corepackEnabled) {
458
432
  (0, import_debug.default)(
@@ -490,8 +464,10 @@ function getEnvForPackageManager({
490
464
  }
491
465
  return newEnv;
492
466
  }
493
- function detectPnpmVersion(lockfileVersion) {
467
+ function detectPnpmVersion(lockfileVersion, corepackEnabled) {
494
468
  switch (true) {
469
+ case corepackEnabled:
470
+ return "corepack_enabled";
495
471
  case lockfileVersion === void 0:
496
472
  return "not found";
497
473
  case lockfileVersion === 5.3:
@@ -506,155 +482,99 @@ function detectPnpmVersion(lockfileVersion) {
506
482
  return "not found";
507
483
  }
508
484
  }
509
- function validLockfileForPackageManager(cliType, lockfileVersion, packageManagerVersion) {
510
- const packageManagerMajorVersion = packageManagerVersion.major;
511
- switch (cliType) {
512
- case "npm":
513
- case "bun":
514
- case "yarn":
515
- return true;
516
- case "pnpm":
517
- switch (packageManagerMajorVersion) {
518
- case 9:
519
- if ("9.0.0" === packageManagerVersion.version && lockfileVersion === 6) {
520
- return false;
521
- }
522
- return [6, 7, 9].includes(lockfileVersion);
523
- case 8:
524
- return [6, 6.1].includes(lockfileVersion);
525
- case 7:
526
- return [5.3, 5.4].includes(lockfileVersion);
527
- case 6:
528
- return [5.3, 5.4].includes(lockfileVersion);
529
- default:
530
- return true;
531
- }
532
- }
485
+ function shouldUseNpm7(lockfileVersion, nodeVersion) {
486
+ if (lockfileVersion === void 0)
487
+ return false;
488
+ return lockfileVersion >= 2 && (nodeVersion?.major || 0) < 16;
533
489
  }
534
490
  function getPathOverrideForPackageManager({
535
491
  cliType,
536
492
  lockfileVersion,
537
- corepackPackageManager,
538
- corepackEnabled = true
493
+ corepackEnabled,
494
+ nodeVersion
539
495
  }) {
540
- const detectedPackageManger = detectPackageManager(cliType, lockfileVersion);
541
- if (!corepackPackageManager) {
542
- return detectedPackageManger ?? NO_OVERRIDE;
543
- }
544
- if (lockfileVersion === void 0 || !corepackEnabled) {
545
- return NO_OVERRIDE;
546
- }
547
- if (validateCorepackPackageManager(
548
- cliType,
549
- lockfileVersion,
550
- corepackPackageManager
551
- )) {
552
- return NO_OVERRIDE;
553
- }
554
- console.warn(
555
- `WARN [package-manager-warning-1] Detected lockfile "${lockfileVersion}" which is not compatible with the intended corepack package manager "${corepackPackageManager}". Update your lockfile or change to a compatible corepack version.`
556
- );
557
- return NO_OVERRIDE;
558
- }
559
- function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackageManager) {
560
- const validatedCorepackPackageManager = validateVersionSpecifier(
561
- corepackPackageManager
562
- );
563
- if (!validatedCorepackPackageManager) {
564
- console.warn(
565
- `WARN [package-manager-warning-2] Intended corepack defined package manager "${corepackPackageManager}" is not a valid semver value.`
566
- );
567
- return false;
568
- }
569
- if (cliType !== validatedCorepackPackageManager.packageName) {
570
- console.warn(
571
- `WARN [package-manager-warning-3] Detected package manager "${cliType}" does not match intended corepack defined package manager "${validatedCorepackPackageManager.packageName}". Change your lockfile or "package.json#packageManager" value to match.`
572
- );
573
- return false;
574
- }
575
- const corepackPackageManagerVersion = (0, import_semver.coerce)(
576
- validatedCorepackPackageManager.packageVersionRange
577
- );
578
- if (corepackPackageManagerVersion === null) {
579
- return true;
580
- } else {
581
- return validLockfileForPackageManager(
582
- cliType,
583
- lockfileVersion,
584
- corepackPackageManagerVersion
585
- );
586
- }
587
- }
588
- function validateVersionSpecifier(version) {
589
- if (!version) {
590
- return void 0;
591
- }
592
- const [before, after, ...extra] = version.split("@");
593
- if (extra.length) {
594
- return void 0;
595
- }
596
- if (!before) {
597
- return void 0;
598
- }
599
- if (!after) {
600
- return void 0;
601
- }
602
- if (!(0, import_semver.validRange)(after)) {
603
- return void 0;
604
- }
605
- return {
606
- packageName: before,
607
- packageVersionRange: after
496
+ const no_override = {
497
+ detectedLockfile: void 0,
498
+ detectedPackageManager: void 0,
499
+ path: void 0
608
500
  };
609
- }
610
- function detectPackageManager(cliType, lockfileVersion) {
611
501
  switch (cliType) {
612
502
  case "npm":
613
- return void 0;
503
+ switch (true) {
504
+ case corepackEnabled:
505
+ return no_override;
506
+ case shouldUseNpm7(lockfileVersion, nodeVersion):
507
+ return {
508
+ path: "/node16/bin-npm7",
509
+ detectedLockfile: "package-lock.json",
510
+ detectedPackageManager: "npm 7+"
511
+ };
512
+ default:
513
+ return no_override;
514
+ }
614
515
  case "pnpm":
615
- switch (detectPnpmVersion(lockfileVersion)) {
516
+ switch (detectPnpmVersion(lockfileVersion, corepackEnabled)) {
517
+ case "corepack_enabled":
518
+ return no_override;
616
519
  case "pnpm 7":
617
520
  return {
618
521
  path: "/pnpm7/node_modules/.bin",
619
522
  detectedLockfile: "pnpm-lock.yaml",
620
- detectedPackageManager: "pnpm@7.x"
523
+ detectedPackageManager: "pnpm 7"
621
524
  };
622
525
  case "pnpm 8":
623
526
  return {
624
527
  path: "/pnpm8/node_modules/.bin",
625
528
  detectedLockfile: "pnpm-lock.yaml",
626
- detectedPackageManager: "pnpm@8.x"
529
+ detectedPackageManager: "pnpm 8"
627
530
  };
628
531
  case "pnpm 9":
629
532
  return {
630
533
  path: "/pnpm9/node_modules/.bin",
631
534
  detectedLockfile: "pnpm-lock.yaml",
632
- detectedPackageManager: "pnpm@9.x"
535
+ detectedPackageManager: "pnpm 9"
633
536
  };
634
537
  case "pnpm 6":
635
- return {
636
- // undefined because pnpm@6 is the current default in the build container
637
- path: void 0,
638
- detectedLockfile: "pnpm-lock.yaml",
639
- detectedPackageManager: "pnpm 6"
640
- };
641
538
  default:
642
- return void 0;
539
+ return no_override;
643
540
  }
644
541
  case "bun":
645
- return {
646
- path: "/bun1",
647
- detectedLockfile: "bun.lockb",
648
- detectedPackageManager: "bun@1.x"
649
- };
542
+ switch (true) {
543
+ case corepackEnabled:
544
+ return no_override;
545
+ default:
546
+ return {
547
+ path: "/bun1",
548
+ detectedLockfile: "bun.lockb",
549
+ detectedPackageManager: "Bun"
550
+ };
551
+ }
650
552
  case "yarn":
651
- return {
652
- path: void 0,
653
- detectedLockfile: "yarn.lock",
654
- detectedPackageManager: "yarn"
655
- };
553
+ return no_override;
656
554
  }
657
555
  }
556
+ function validateVersionSpecifier(version) {
557
+ if (!version) {
558
+ return void 0;
559
+ }
560
+ const [before, after, ...extra] = version.split("@");
561
+ if (extra.length) {
562
+ return void 0;
563
+ }
564
+ if (!before) {
565
+ return void 0;
566
+ }
567
+ if (!after) {
568
+ return void 0;
569
+ }
570
+ if (!(0, import_semver.validRange)(after)) {
571
+ return void 0;
572
+ }
573
+ return {
574
+ packageName: before,
575
+ packageVersionRange: after
576
+ };
577
+ }
658
578
  function getPathForPackageManager({
659
579
  cliType,
660
580
  lockfileVersion,
@@ -662,15 +582,12 @@ function getPathForPackageManager({
662
582
  env
663
583
  }) {
664
584
  const corepackEnabled = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
665
- let overrides = getPathOverrideForPackageManager({
585
+ const overrides = getPathOverrideForPackageManager({
666
586
  cliType,
667
587
  lockfileVersion,
668
- corepackPackageManager: void 0,
588
+ corepackEnabled,
669
589
  nodeVersion
670
590
  });
671
- if (corepackEnabled) {
672
- overrides = NO_OVERRIDE;
673
- }
674
591
  const alreadyInPath = (newPath) => {
675
592
  const oldPath = env.PATH ?? "";
676
593
  return oldPath.split(import_path.default.delimiter).includes(newPath);
@@ -696,11 +613,14 @@ async function runCustomInstallCommand({
696
613
  spawnOpts
697
614
  }) {
698
615
  console.log(`Running "install" command: \`${installCommand}\`...`);
699
- const { cliType, lockfileVersion, packageJsonPackageManager } = await scanParentDirs(destPath);
616
+ const { cliType, lockfileVersion, packageJson } = await scanParentDirs(
617
+ destPath,
618
+ true
619
+ );
700
620
  const env = getEnvForPackageManager({
701
621
  cliType,
702
622
  lockfileVersion,
703
- packageJsonPackageManager,
623
+ packageJsonPackageManager: packageJson?.packageManager,
704
624
  nodeVersion,
705
625
  env: spawnOpts?.env || {}
706
626
  });
@@ -713,7 +633,10 @@ async function runCustomInstallCommand({
713
633
  }
714
634
  async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
715
635
  (0, import_assert.default)(import_path.default.isAbsolute(destPath));
716
- const { packageJson, cliType, lockfileVersion, packageJsonPackageManager } = await scanParentDirs(destPath, true);
636
+ const { packageJson, cliType, lockfileVersion } = await scanParentDirs(
637
+ destPath,
638
+ true
639
+ );
717
640
  const scriptName = getScriptName(
718
641
  packageJson,
719
642
  typeof scriptNames === "string" ? [scriptNames] : scriptNames
@@ -728,7 +651,7 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
728
651
  env: getEnvForPackageManager({
729
652
  cliType,
730
653
  lockfileVersion,
731
- packageJsonPackageManager,
654
+ packageJsonPackageManager: packageJson?.packageManager,
732
655
  nodeVersion: void 0,
733
656
  env: (0, import_clone_env.cloneEnv)(process.env, spawnOpts?.env)
734
657
  })
@@ -785,7 +708,6 @@ const installDependencies = (0, import_util.deprecate)(
785
708
  );
786
709
  // Annotate the CommonJS export names for ESM import in node:
787
710
  0 && (module.exports = {
788
- detectPackageManager,
789
711
  execCommand,
790
712
  getEnvForPackageManager,
791
713
  getNodeBinPath,
package/dist/index.js CHANGED
@@ -13072,7 +13072,7 @@ var require_readShebang = __commonJS({
13072
13072
  // ../../node_modules/.pnpm/semver@5.7.2/node_modules/semver/semver.js
13073
13073
  var require_semver = __commonJS({
13074
13074
  "../../node_modules/.pnpm/semver@5.7.2/node_modules/semver/semver.js"(exports2, module2) {
13075
- exports2 = module2.exports = SemVer2;
13075
+ exports2 = module2.exports = SemVer;
13076
13076
  var debug2;
13077
13077
  if (typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
13078
13078
  debug2 = function() {
@@ -13205,7 +13205,7 @@ var require_semver = __commonJS({
13205
13205
  includePrerelease: false
13206
13206
  };
13207
13207
  }
13208
- if (version instanceof SemVer2) {
13208
+ if (version instanceof SemVer) {
13209
13209
  return version;
13210
13210
  }
13211
13211
  if (typeof version !== "string") {
@@ -13219,7 +13219,7 @@ var require_semver = __commonJS({
13219
13219
  return null;
13220
13220
  }
13221
13221
  try {
13222
- return new SemVer2(version, options);
13222
+ return new SemVer(version, options);
13223
13223
  } catch (er) {
13224
13224
  return null;
13225
13225
  }
@@ -13234,15 +13234,15 @@ var require_semver = __commonJS({
13234
13234
  var s = parse2(version.trim().replace(/^[=v]+/, ""), options);
13235
13235
  return s ? s.version : null;
13236
13236
  }
13237
- exports2.SemVer = SemVer2;
13238
- function SemVer2(version, options) {
13237
+ exports2.SemVer = SemVer;
13238
+ function SemVer(version, options) {
13239
13239
  if (!options || typeof options !== "object") {
13240
13240
  options = {
13241
13241
  loose: !!options,
13242
13242
  includePrerelease: false
13243
13243
  };
13244
13244
  }
13245
- if (version instanceof SemVer2) {
13245
+ if (version instanceof SemVer) {
13246
13246
  if (version.loose === options.loose) {
13247
13247
  return version;
13248
13248
  } else {
@@ -13254,8 +13254,8 @@ var require_semver = __commonJS({
13254
13254
  if (version.length > MAX_LENGTH) {
13255
13255
  throw new TypeError("version is longer than " + MAX_LENGTH + " characters");
13256
13256
  }
13257
- if (!(this instanceof SemVer2)) {
13258
- return new SemVer2(version, options);
13257
+ if (!(this instanceof SemVer)) {
13258
+ return new SemVer(version, options);
13259
13259
  }
13260
13260
  debug2("SemVer", version, options);
13261
13261
  this.options = options;
@@ -13293,32 +13293,32 @@ var require_semver = __commonJS({
13293
13293
  this.build = m[5] ? m[5].split(".") : [];
13294
13294
  this.format();
13295
13295
  }
13296
- SemVer2.prototype.format = function() {
13296
+ SemVer.prototype.format = function() {
13297
13297
  this.version = this.major + "." + this.minor + "." + this.patch;
13298
13298
  if (this.prerelease.length) {
13299
13299
  this.version += "-" + this.prerelease.join(".");
13300
13300
  }
13301
13301
  return this.version;
13302
13302
  };
13303
- SemVer2.prototype.toString = function() {
13303
+ SemVer.prototype.toString = function() {
13304
13304
  return this.version;
13305
13305
  };
13306
- SemVer2.prototype.compare = function(other) {
13306
+ SemVer.prototype.compare = function(other) {
13307
13307
  debug2("SemVer.compare", this.version, this.options, other);
13308
- if (!(other instanceof SemVer2)) {
13309
- other = new SemVer2(other, this.options);
13308
+ if (!(other instanceof SemVer)) {
13309
+ other = new SemVer(other, this.options);
13310
13310
  }
13311
13311
  return this.compareMain(other) || this.comparePre(other);
13312
13312
  };
13313
- SemVer2.prototype.compareMain = function(other) {
13314
- if (!(other instanceof SemVer2)) {
13315
- other = new SemVer2(other, this.options);
13313
+ SemVer.prototype.compareMain = function(other) {
13314
+ if (!(other instanceof SemVer)) {
13315
+ other = new SemVer(other, this.options);
13316
13316
  }
13317
13317
  return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
13318
13318
  };
13319
- SemVer2.prototype.comparePre = function(other) {
13320
- if (!(other instanceof SemVer2)) {
13321
- other = new SemVer2(other, this.options);
13319
+ SemVer.prototype.comparePre = function(other) {
13320
+ if (!(other instanceof SemVer)) {
13321
+ other = new SemVer(other, this.options);
13322
13322
  }
13323
13323
  if (this.prerelease.length && !other.prerelease.length) {
13324
13324
  return -1;
@@ -13345,7 +13345,7 @@ var require_semver = __commonJS({
13345
13345
  }
13346
13346
  } while (++i2);
13347
13347
  };
13348
- SemVer2.prototype.inc = function(release, identifier) {
13348
+ SemVer.prototype.inc = function(release, identifier) {
13349
13349
  switch (release) {
13350
13350
  case "premajor":
13351
13351
  this.prerelease.length = 0;
@@ -13431,7 +13431,7 @@ var require_semver = __commonJS({
13431
13431
  loose = void 0;
13432
13432
  }
13433
13433
  try {
13434
- return new SemVer2(version, loose).inc(release, identifier).version;
13434
+ return new SemVer(version, loose).inc(release, identifier).version;
13435
13435
  } catch (er) {
13436
13436
  return null;
13437
13437
  }
@@ -13475,19 +13475,19 @@ var require_semver = __commonJS({
13475
13475
  }
13476
13476
  exports2.major = major;
13477
13477
  function major(a, loose) {
13478
- return new SemVer2(a, loose).major;
13478
+ return new SemVer(a, loose).major;
13479
13479
  }
13480
13480
  exports2.minor = minor;
13481
13481
  function minor(a, loose) {
13482
- return new SemVer2(a, loose).minor;
13482
+ return new SemVer(a, loose).minor;
13483
13483
  }
13484
13484
  exports2.patch = patch;
13485
13485
  function patch(a, loose) {
13486
- return new SemVer2(a, loose).patch;
13486
+ return new SemVer(a, loose).patch;
13487
13487
  }
13488
13488
  exports2.compare = compare;
13489
13489
  function compare(a, b, loose) {
13490
- return new SemVer2(a, loose).compare(new SemVer2(b, loose));
13490
+ return new SemVer(a, loose).compare(new SemVer(b, loose));
13491
13491
  }
13492
13492
  exports2.compareLoose = compareLoose;
13493
13493
  function compareLoose(a, b) {
@@ -13610,7 +13610,7 @@ var require_semver = __commonJS({
13610
13610
  if (!m[2]) {
13611
13611
  this.semver = ANY;
13612
13612
  } else {
13613
- this.semver = new SemVer2(m[2], this.options.loose);
13613
+ this.semver = new SemVer(m[2], this.options.loose);
13614
13614
  }
13615
13615
  };
13616
13616
  Comparator.prototype.toString = function() {
@@ -13622,7 +13622,7 @@ var require_semver = __commonJS({
13622
13622
  return true;
13623
13623
  }
13624
13624
  if (typeof version === "string") {
13625
- version = new SemVer2(version, this.options);
13625
+ version = new SemVer(version, this.options);
13626
13626
  }
13627
13627
  return cmp(version, this.operator, this.semver, this.options);
13628
13628
  };
@@ -13919,7 +13919,7 @@ var require_semver = __commonJS({
13919
13919
  return false;
13920
13920
  }
13921
13921
  if (typeof version === "string") {
13922
- version = new SemVer2(version, this.options);
13922
+ version = new SemVer(version, this.options);
13923
13923
  }
13924
13924
  for (var i2 = 0; i2 < this.set.length; i2++) {
13925
13925
  if (testSet(this.set[i2], version, this.options)) {
@@ -13973,7 +13973,7 @@ var require_semver = __commonJS({
13973
13973
  if (rangeObj.test(v)) {
13974
13974
  if (!max || maxSV.compare(v) === -1) {
13975
13975
  max = v;
13976
- maxSV = new SemVer2(max, options);
13976
+ maxSV = new SemVer(max, options);
13977
13977
  }
13978
13978
  }
13979
13979
  });
@@ -13992,7 +13992,7 @@ var require_semver = __commonJS({
13992
13992
  if (rangeObj.test(v)) {
13993
13993
  if (!min || minSV.compare(v) === 1) {
13994
13994
  min = v;
13995
- minSV = new SemVer2(min, options);
13995
+ minSV = new SemVer(min, options);
13996
13996
  }
13997
13997
  }
13998
13998
  });
@@ -14001,11 +14001,11 @@ var require_semver = __commonJS({
14001
14001
  exports2.minVersion = minVersion;
14002
14002
  function minVersion(range, loose) {
14003
14003
  range = new Range(range, loose);
14004
- var minver = new SemVer2("0.0.0");
14004
+ var minver = new SemVer("0.0.0");
14005
14005
  if (range.test(minver)) {
14006
14006
  return minver;
14007
14007
  }
14008
- minver = new SemVer2("0.0.0-0");
14008
+ minver = new SemVer("0.0.0-0");
14009
14009
  if (range.test(minver)) {
14010
14010
  return minver;
14011
14011
  }
@@ -14013,7 +14013,7 @@ var require_semver = __commonJS({
14013
14013
  for (var i2 = 0; i2 < range.set.length; ++i2) {
14014
14014
  var comparators = range.set[i2];
14015
14015
  comparators.forEach(function(comparator) {
14016
- var compver = new SemVer2(comparator.semver.version);
14016
+ var compver = new SemVer(comparator.semver.version);
14017
14017
  switch (comparator.operator) {
14018
14018
  case ">":
14019
14019
  if (compver.prerelease.length === 0) {
@@ -14059,7 +14059,7 @@ var require_semver = __commonJS({
14059
14059
  }
14060
14060
  exports2.outside = outside;
14061
14061
  function outside(version, range, hilo, options) {
14062
- version = new SemVer2(version, options);
14062
+ version = new SemVer(version, options);
14063
14063
  range = new Range(range, options);
14064
14064
  var gtfn, ltefn, ltfn, comp, ecomp;
14065
14065
  switch (hilo) {
@@ -14123,7 +14123,7 @@ var require_semver = __commonJS({
14123
14123
  }
14124
14124
  exports2.coerce = coerce2;
14125
14125
  function coerce2(version) {
14126
- if (version instanceof SemVer2) {
14126
+ if (version instanceof SemVer) {
14127
14127
  return version;
14128
14128
  }
14129
14129
  if (typeof version !== "string") {
@@ -14304,7 +14304,7 @@ var require_cross_spawn = __commonJS({
14304
14304
  // ../../node_modules/.pnpm/semver@6.3.1/node_modules/semver/semver.js
14305
14305
  var require_semver2 = __commonJS({
14306
14306
  "../../node_modules/.pnpm/semver@6.3.1/node_modules/semver/semver.js"(exports2, module2) {
14307
- exports2 = module2.exports = SemVer2;
14307
+ exports2 = module2.exports = SemVer;
14308
14308
  var debug2;
14309
14309
  if (typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
14310
14310
  debug2 = function() {
@@ -14446,7 +14446,7 @@ var require_semver2 = __commonJS({
14446
14446
  includePrerelease: false
14447
14447
  };
14448
14448
  }
14449
- if (version instanceof SemVer2) {
14449
+ if (version instanceof SemVer) {
14450
14450
  return version;
14451
14451
  }
14452
14452
  if (typeof version !== "string") {
@@ -14460,7 +14460,7 @@ var require_semver2 = __commonJS({
14460
14460
  return null;
14461
14461
  }
14462
14462
  try {
14463
- return new SemVer2(version, options);
14463
+ return new SemVer(version, options);
14464
14464
  } catch (er) {
14465
14465
  return null;
14466
14466
  }
@@ -14475,15 +14475,15 @@ var require_semver2 = __commonJS({
14475
14475
  var s = parse2(version.trim().replace(/^[=v]+/, ""), options);
14476
14476
  return s ? s.version : null;
14477
14477
  }
14478
- exports2.SemVer = SemVer2;
14479
- function SemVer2(version, options) {
14478
+ exports2.SemVer = SemVer;
14479
+ function SemVer(version, options) {
14480
14480
  if (!options || typeof options !== "object") {
14481
14481
  options = {
14482
14482
  loose: !!options,
14483
14483
  includePrerelease: false
14484
14484
  };
14485
14485
  }
14486
- if (version instanceof SemVer2) {
14486
+ if (version instanceof SemVer) {
14487
14487
  if (version.loose === options.loose) {
14488
14488
  return version;
14489
14489
  } else {
@@ -14495,8 +14495,8 @@ var require_semver2 = __commonJS({
14495
14495
  if (version.length > MAX_LENGTH) {
14496
14496
  throw new TypeError("version is longer than " + MAX_LENGTH + " characters");
14497
14497
  }
14498
- if (!(this instanceof SemVer2)) {
14499
- return new SemVer2(version, options);
14498
+ if (!(this instanceof SemVer)) {
14499
+ return new SemVer(version, options);
14500
14500
  }
14501
14501
  debug2("SemVer", version, options);
14502
14502
  this.options = options;
@@ -14534,32 +14534,32 @@ var require_semver2 = __commonJS({
14534
14534
  this.build = m[5] ? m[5].split(".") : [];
14535
14535
  this.format();
14536
14536
  }
14537
- SemVer2.prototype.format = function() {
14537
+ SemVer.prototype.format = function() {
14538
14538
  this.version = this.major + "." + this.minor + "." + this.patch;
14539
14539
  if (this.prerelease.length) {
14540
14540
  this.version += "-" + this.prerelease.join(".");
14541
14541
  }
14542
14542
  return this.version;
14543
14543
  };
14544
- SemVer2.prototype.toString = function() {
14544
+ SemVer.prototype.toString = function() {
14545
14545
  return this.version;
14546
14546
  };
14547
- SemVer2.prototype.compare = function(other) {
14547
+ SemVer.prototype.compare = function(other) {
14548
14548
  debug2("SemVer.compare", this.version, this.options, other);
14549
- if (!(other instanceof SemVer2)) {
14550
- other = new SemVer2(other, this.options);
14549
+ if (!(other instanceof SemVer)) {
14550
+ other = new SemVer(other, this.options);
14551
14551
  }
14552
14552
  return this.compareMain(other) || this.comparePre(other);
14553
14553
  };
14554
- SemVer2.prototype.compareMain = function(other) {
14555
- if (!(other instanceof SemVer2)) {
14556
- other = new SemVer2(other, this.options);
14554
+ SemVer.prototype.compareMain = function(other) {
14555
+ if (!(other instanceof SemVer)) {
14556
+ other = new SemVer(other, this.options);
14557
14557
  }
14558
14558
  return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
14559
14559
  };
14560
- SemVer2.prototype.comparePre = function(other) {
14561
- if (!(other instanceof SemVer2)) {
14562
- other = new SemVer2(other, this.options);
14560
+ SemVer.prototype.comparePre = function(other) {
14561
+ if (!(other instanceof SemVer)) {
14562
+ other = new SemVer(other, this.options);
14563
14563
  }
14564
14564
  if (this.prerelease.length && !other.prerelease.length) {
14565
14565
  return -1;
@@ -14586,9 +14586,9 @@ var require_semver2 = __commonJS({
14586
14586
  }
14587
14587
  } while (++i2);
14588
14588
  };
14589
- SemVer2.prototype.compareBuild = function(other) {
14590
- if (!(other instanceof SemVer2)) {
14591
- other = new SemVer2(other, this.options);
14589
+ SemVer.prototype.compareBuild = function(other) {
14590
+ if (!(other instanceof SemVer)) {
14591
+ other = new SemVer(other, this.options);
14592
14592
  }
14593
14593
  var i2 = 0;
14594
14594
  do {
@@ -14608,7 +14608,7 @@ var require_semver2 = __commonJS({
14608
14608
  }
14609
14609
  } while (++i2);
14610
14610
  };
14611
- SemVer2.prototype.inc = function(release, identifier) {
14611
+ SemVer.prototype.inc = function(release, identifier) {
14612
14612
  switch (release) {
14613
14613
  case "premajor":
14614
14614
  this.prerelease.length = 0;
@@ -14694,7 +14694,7 @@ var require_semver2 = __commonJS({
14694
14694
  loose = void 0;
14695
14695
  }
14696
14696
  try {
14697
- return new SemVer2(version, loose).inc(release, identifier).version;
14697
+ return new SemVer(version, loose).inc(release, identifier).version;
14698
14698
  } catch (er) {
14699
14699
  return null;
14700
14700
  }
@@ -14738,19 +14738,19 @@ var require_semver2 = __commonJS({
14738
14738
  }
14739
14739
  exports2.major = major;
14740
14740
  function major(a, loose) {
14741
- return new SemVer2(a, loose).major;
14741
+ return new SemVer(a, loose).major;
14742
14742
  }
14743
14743
  exports2.minor = minor;
14744
14744
  function minor(a, loose) {
14745
- return new SemVer2(a, loose).minor;
14745
+ return new SemVer(a, loose).minor;
14746
14746
  }
14747
14747
  exports2.patch = patch;
14748
14748
  function patch(a, loose) {
14749
- return new SemVer2(a, loose).patch;
14749
+ return new SemVer(a, loose).patch;
14750
14750
  }
14751
14751
  exports2.compare = compare;
14752
14752
  function compare(a, b, loose) {
14753
- return new SemVer2(a, loose).compare(new SemVer2(b, loose));
14753
+ return new SemVer(a, loose).compare(new SemVer(b, loose));
14754
14754
  }
14755
14755
  exports2.compareLoose = compareLoose;
14756
14756
  function compareLoose(a, b) {
@@ -14758,8 +14758,8 @@ var require_semver2 = __commonJS({
14758
14758
  }
14759
14759
  exports2.compareBuild = compareBuild;
14760
14760
  function compareBuild(a, b, loose) {
14761
- var versionA = new SemVer2(a, loose);
14762
- var versionB = new SemVer2(b, loose);
14761
+ var versionA = new SemVer(a, loose);
14762
+ var versionB = new SemVer(b, loose);
14763
14763
  return versionA.compare(versionB) || versionA.compareBuild(versionB);
14764
14764
  }
14765
14765
  exports2.rcompare = rcompare;
@@ -14879,7 +14879,7 @@ var require_semver2 = __commonJS({
14879
14879
  if (!m[2]) {
14880
14880
  this.semver = ANY;
14881
14881
  } else {
14882
- this.semver = new SemVer2(m[2], this.options.loose);
14882
+ this.semver = new SemVer(m[2], this.options.loose);
14883
14883
  }
14884
14884
  };
14885
14885
  Comparator.prototype.toString = function() {
@@ -14892,7 +14892,7 @@ var require_semver2 = __commonJS({
14892
14892
  }
14893
14893
  if (typeof version === "string") {
14894
14894
  try {
14895
- version = new SemVer2(version, this.options);
14895
+ version = new SemVer(version, this.options);
14896
14896
  } catch (er) {
14897
14897
  return false;
14898
14898
  }
@@ -15213,7 +15213,7 @@ var require_semver2 = __commonJS({
15213
15213
  }
15214
15214
  if (typeof version === "string") {
15215
15215
  try {
15216
- version = new SemVer2(version, this.options);
15216
+ version = new SemVer(version, this.options);
15217
15217
  } catch (er) {
15218
15218
  return false;
15219
15219
  }
@@ -15270,7 +15270,7 @@ var require_semver2 = __commonJS({
15270
15270
  if (rangeObj.test(v)) {
15271
15271
  if (!max || maxSV.compare(v) === -1) {
15272
15272
  max = v;
15273
- maxSV = new SemVer2(max, options);
15273
+ maxSV = new SemVer(max, options);
15274
15274
  }
15275
15275
  }
15276
15276
  });
@@ -15289,7 +15289,7 @@ var require_semver2 = __commonJS({
15289
15289
  if (rangeObj.test(v)) {
15290
15290
  if (!min || minSV.compare(v) === 1) {
15291
15291
  min = v;
15292
- minSV = new SemVer2(min, options);
15292
+ minSV = new SemVer(min, options);
15293
15293
  }
15294
15294
  }
15295
15295
  });
@@ -15298,11 +15298,11 @@ var require_semver2 = __commonJS({
15298
15298
  exports2.minVersion = minVersion;
15299
15299
  function minVersion(range, loose) {
15300
15300
  range = new Range(range, loose);
15301
- var minver = new SemVer2("0.0.0");
15301
+ var minver = new SemVer("0.0.0");
15302
15302
  if (range.test(minver)) {
15303
15303
  return minver;
15304
15304
  }
15305
- minver = new SemVer2("0.0.0-0");
15305
+ minver = new SemVer("0.0.0-0");
15306
15306
  if (range.test(minver)) {
15307
15307
  return minver;
15308
15308
  }
@@ -15310,7 +15310,7 @@ var require_semver2 = __commonJS({
15310
15310
  for (var i2 = 0; i2 < range.set.length; ++i2) {
15311
15311
  var comparators = range.set[i2];
15312
15312
  comparators.forEach(function(comparator) {
15313
- var compver = new SemVer2(comparator.semver.version);
15313
+ var compver = new SemVer(comparator.semver.version);
15314
15314
  switch (comparator.operator) {
15315
15315
  case ">":
15316
15316
  if (compver.prerelease.length === 0) {
@@ -15356,7 +15356,7 @@ var require_semver2 = __commonJS({
15356
15356
  }
15357
15357
  exports2.outside = outside;
15358
15358
  function outside(version, range, hilo, options) {
15359
- version = new SemVer2(version, options);
15359
+ version = new SemVer(version, options);
15360
15360
  range = new Range(range, options);
15361
15361
  var gtfn, ltefn, ltfn, comp, ecomp;
15362
15362
  switch (hilo) {
@@ -15420,7 +15420,7 @@ var require_semver2 = __commonJS({
15420
15420
  }
15421
15421
  exports2.coerce = coerce2;
15422
15422
  function coerce2(version, options) {
15423
- if (version instanceof SemVer2) {
15423
+ if (version instanceof SemVer) {
15424
15424
  return version;
15425
15425
  }
15426
15426
  if (typeof version === "number") {
@@ -21786,11 +21786,6 @@ function cloneEnv(...envs) {
21786
21786
 
21787
21787
  // src/fs/run-user-scripts.ts
21788
21788
  var runNpmInstallSema = new import_async_sema4.default(1);
21789
- var NO_OVERRIDE = {
21790
- detectedLockfile: void 0,
21791
- detectedPackageManager: void 0,
21792
- path: void 0
21793
- };
21794
21789
  function spawnAsync(command, args, opts = {}) {
21795
21790
  return new Promise((resolve, reject) => {
21796
21791
  const stderrLogs = [];
@@ -21940,10 +21935,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
21940
21935
  filename: "package.json"
21941
21936
  });
21942
21937
  const packageJson = readPackageJson && pkgJsonPath ? JSON.parse(await import_fs_extra7.default.readFile(pkgJsonPath, "utf8")) : void 0;
21943
- const {
21944
- paths: [yarnLockPath, npmLockPath, pnpmLockPath, bunLockPath],
21945
- packageJsonPackageManager
21946
- } = await walkParentDirsMulti({
21938
+ const [yarnLockPath, npmLockPath, pnpmLockPath, bunLockPath] = await walkParentDirsMulti({
21947
21939
  base,
21948
21940
  start: destPath,
21949
21941
  filenames: [
@@ -21982,21 +21974,19 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
21982
21974
  lockfilePath = bunLockPath;
21983
21975
  lockfileVersion = 0;
21984
21976
  } else {
21985
- cliType = detectPackageManagerNameWithoutLockfile(
21986
- packageJsonPackageManager
21987
- );
21977
+ cliType = packageJson ? detectPackageManagerNameWithoutLockfile(packageJson) : "npm";
21988
21978
  }
21989
21979
  const packageJsonPath = pkgJsonPath || void 0;
21990
21980
  return {
21991
21981
  cliType,
21992
21982
  packageJson,
21993
- packageJsonPackageManager,
21994
21983
  lockfilePath,
21995
21984
  lockfileVersion,
21996
21985
  packageJsonPath
21997
21986
  };
21998
21987
  }
21999
- function detectPackageManagerNameWithoutLockfile(packageJsonPackageManager) {
21988
+ function detectPackageManagerNameWithoutLockfile(packageJson) {
21989
+ const packageJsonPackageManager = packageJson.packageManager;
22000
21990
  if (usingCorepack(process.env, packageJsonPackageManager)) {
22001
21991
  const corepackPackageManager = validateVersionSpecifier(
22002
21992
  packageJsonPackageManager
@@ -22041,26 +22031,17 @@ async function walkParentDirsMulti({
22041
22031
  start,
22042
22032
  filenames
22043
22033
  }) {
22044
- let packageManager;
22045
22034
  for (const dir of traverseUpDirectories({ start, base })) {
22046
22035
  const fullPaths = filenames.map((f) => import_path5.default.join(dir, f));
22047
22036
  const existResults = await Promise.all(
22048
22037
  fullPaths.map((f) => import_fs_extra7.default.pathExists(f))
22049
22038
  );
22050
22039
  const foundOneOrMore = existResults.some((b) => b);
22051
- const packageJsonPath = import_path5.default.join(dir, "package.json");
22052
- const packageJson = await import_fs_extra7.default.readJSON(packageJsonPath).catch(() => null);
22053
- if (packageJson?.packageManager) {
22054
- packageManager = packageJson.packageManager;
22055
- }
22056
22040
  if (foundOneOrMore) {
22057
- return {
22058
- paths: fullPaths.map((f, i) => existResults[i] ? f : void 0),
22059
- packageJsonPackageManager: packageManager
22060
- };
22041
+ return fullPaths.map((f, i) => existResults[i] ? f : void 0);
22061
22042
  }
22062
22043
  }
22063
- return { paths: [], packageJsonPackageManager: packageManager };
22044
+ return [];
22064
22045
  }
22065
22046
  function isSet(v) {
22066
22047
  return v?.constructor?.name === "Set";
@@ -22073,12 +22054,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
22073
22054
  (0, import_assert6.default)(import_path5.default.isAbsolute(destPath));
22074
22055
  try {
22075
22056
  await runNpmInstallSema.acquire();
22076
- const {
22077
- cliType,
22078
- packageJsonPath,
22079
- lockfileVersion,
22080
- packageJsonPackageManager
22081
- } = await scanParentDirs(destPath);
22057
+ const { cliType, packageJsonPath, packageJson, lockfileVersion } = await scanParentDirs(destPath, true);
22082
22058
  if (!packageJsonPath) {
22083
22059
  debug(
22084
22060
  `Skipping dependency installation because no package.json was found for ${destPath}`
@@ -22107,7 +22083,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
22107
22083
  opts.env = getEnvForPackageManager({
22108
22084
  cliType,
22109
22085
  lockfileVersion,
22110
- packageJsonPackageManager,
22086
+ packageJsonPackageManager: packageJson?.packageManager,
22111
22087
  nodeVersion,
22112
22088
  env
22113
22089
  });
@@ -22171,9 +22147,8 @@ function getEnvForPackageManager({
22171
22147
  } = getPathOverrideForPackageManager({
22172
22148
  cliType,
22173
22149
  lockfileVersion,
22174
- corepackPackageManager: packageJsonPackageManager,
22175
- nodeVersion,
22176
- corepackEnabled
22150
+ corepackEnabled,
22151
+ nodeVersion
22177
22152
  });
22178
22153
  if (corepackEnabled) {
22179
22154
  debug(
@@ -22211,8 +22186,10 @@ function getEnvForPackageManager({
22211
22186
  }
22212
22187
  return newEnv;
22213
22188
  }
22214
- function detectPnpmVersion(lockfileVersion) {
22189
+ function detectPnpmVersion(lockfileVersion, corepackEnabled) {
22215
22190
  switch (true) {
22191
+ case corepackEnabled:
22192
+ return "corepack_enabled";
22216
22193
  case lockfileVersion === void 0:
22217
22194
  return "not found";
22218
22195
  case lockfileVersion === 5.3:
@@ -22227,154 +22204,98 @@ function detectPnpmVersion(lockfileVersion) {
22227
22204
  return "not found";
22228
22205
  }
22229
22206
  }
22230
- function validLockfileForPackageManager(cliType, lockfileVersion, packageManagerVersion) {
22231
- const packageManagerMajorVersion = packageManagerVersion.major;
22232
- switch (cliType) {
22233
- case "npm":
22234
- case "bun":
22235
- case "yarn":
22236
- return true;
22237
- case "pnpm":
22238
- switch (packageManagerMajorVersion) {
22239
- case 9:
22240
- if ("9.0.0" === packageManagerVersion.version && lockfileVersion === 6) {
22241
- return false;
22242
- }
22243
- return [6, 7, 9].includes(lockfileVersion);
22244
- case 8:
22245
- return [6, 6.1].includes(lockfileVersion);
22246
- case 7:
22247
- return [5.3, 5.4].includes(lockfileVersion);
22248
- case 6:
22249
- return [5.3, 5.4].includes(lockfileVersion);
22250
- default:
22251
- return true;
22252
- }
22253
- }
22207
+ function shouldUseNpm7(lockfileVersion, nodeVersion) {
22208
+ if (lockfileVersion === void 0)
22209
+ return false;
22210
+ return lockfileVersion >= 2 && (nodeVersion?.major || 0) < 16;
22254
22211
  }
22255
22212
  function getPathOverrideForPackageManager({
22256
22213
  cliType,
22257
22214
  lockfileVersion,
22258
- corepackPackageManager,
22259
- corepackEnabled = true
22215
+ corepackEnabled,
22216
+ nodeVersion
22260
22217
  }) {
22261
- const detectedPackageManger = detectPackageManager(cliType, lockfileVersion);
22262
- if (!corepackPackageManager) {
22263
- return detectedPackageManger ?? NO_OVERRIDE;
22264
- }
22265
- if (lockfileVersion === void 0 || !corepackEnabled) {
22266
- return NO_OVERRIDE;
22267
- }
22268
- if (validateCorepackPackageManager(
22269
- cliType,
22270
- lockfileVersion,
22271
- corepackPackageManager
22272
- )) {
22273
- return NO_OVERRIDE;
22274
- }
22275
- console.warn(
22276
- `WARN [package-manager-warning-1] Detected lockfile "${lockfileVersion}" which is not compatible with the intended corepack package manager "${corepackPackageManager}". Update your lockfile or change to a compatible corepack version.`
22277
- );
22278
- return NO_OVERRIDE;
22279
- }
22280
- function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackageManager) {
22281
- const validatedCorepackPackageManager = validateVersionSpecifier(
22282
- corepackPackageManager
22283
- );
22284
- if (!validatedCorepackPackageManager) {
22285
- console.warn(
22286
- `WARN [package-manager-warning-2] Intended corepack defined package manager "${corepackPackageManager}" is not a valid semver value.`
22287
- );
22288
- return false;
22289
- }
22290
- if (cliType !== validatedCorepackPackageManager.packageName) {
22291
- console.warn(
22292
- `WARN [package-manager-warning-3] Detected package manager "${cliType}" does not match intended corepack defined package manager "${validatedCorepackPackageManager.packageName}". Change your lockfile or "package.json#packageManager" value to match.`
22293
- );
22294
- return false;
22295
- }
22296
- const corepackPackageManagerVersion = (0, import_semver2.coerce)(
22297
- validatedCorepackPackageManager.packageVersionRange
22298
- );
22299
- if (corepackPackageManagerVersion === null) {
22300
- return true;
22301
- } else {
22302
- return validLockfileForPackageManager(
22303
- cliType,
22304
- lockfileVersion,
22305
- corepackPackageManagerVersion
22306
- );
22307
- }
22308
- }
22309
- function validateVersionSpecifier(version) {
22310
- if (!version) {
22311
- return void 0;
22312
- }
22313
- const [before, after, ...extra] = version.split("@");
22314
- if (extra.length) {
22315
- return void 0;
22316
- }
22317
- if (!before) {
22318
- return void 0;
22319
- }
22320
- if (!after) {
22321
- return void 0;
22322
- }
22323
- if (!(0, import_semver2.validRange)(after)) {
22324
- return void 0;
22325
- }
22326
- return {
22327
- packageName: before,
22328
- packageVersionRange: after
22218
+ const no_override = {
22219
+ detectedLockfile: void 0,
22220
+ detectedPackageManager: void 0,
22221
+ path: void 0
22329
22222
  };
22330
- }
22331
- function detectPackageManager(cliType, lockfileVersion) {
22332
22223
  switch (cliType) {
22333
22224
  case "npm":
22334
- return void 0;
22225
+ switch (true) {
22226
+ case corepackEnabled:
22227
+ return no_override;
22228
+ case shouldUseNpm7(lockfileVersion, nodeVersion):
22229
+ return {
22230
+ path: "/node16/bin-npm7",
22231
+ detectedLockfile: "package-lock.json",
22232
+ detectedPackageManager: "npm 7+"
22233
+ };
22234
+ default:
22235
+ return no_override;
22236
+ }
22335
22237
  case "pnpm":
22336
- switch (detectPnpmVersion(lockfileVersion)) {
22238
+ switch (detectPnpmVersion(lockfileVersion, corepackEnabled)) {
22239
+ case "corepack_enabled":
22240
+ return no_override;
22337
22241
  case "pnpm 7":
22338
22242
  return {
22339
22243
  path: "/pnpm7/node_modules/.bin",
22340
22244
  detectedLockfile: "pnpm-lock.yaml",
22341
- detectedPackageManager: "pnpm@7.x"
22245
+ detectedPackageManager: "pnpm 7"
22342
22246
  };
22343
22247
  case "pnpm 8":
22344
22248
  return {
22345
22249
  path: "/pnpm8/node_modules/.bin",
22346
22250
  detectedLockfile: "pnpm-lock.yaml",
22347
- detectedPackageManager: "pnpm@8.x"
22251
+ detectedPackageManager: "pnpm 8"
22348
22252
  };
22349
22253
  case "pnpm 9":
22350
22254
  return {
22351
22255
  path: "/pnpm9/node_modules/.bin",
22352
22256
  detectedLockfile: "pnpm-lock.yaml",
22353
- detectedPackageManager: "pnpm@9.x"
22257
+ detectedPackageManager: "pnpm 9"
22354
22258
  };
22355
22259
  case "pnpm 6":
22356
- return {
22357
- // undefined because pnpm@6 is the current default in the build container
22358
- path: void 0,
22359
- detectedLockfile: "pnpm-lock.yaml",
22360
- detectedPackageManager: "pnpm 6"
22361
- };
22362
22260
  default:
22363
- return void 0;
22261
+ return no_override;
22364
22262
  }
22365
22263
  case "bun":
22366
- return {
22367
- path: "/bun1",
22368
- detectedLockfile: "bun.lockb",
22369
- detectedPackageManager: "bun@1.x"
22370
- };
22264
+ switch (true) {
22265
+ case corepackEnabled:
22266
+ return no_override;
22267
+ default:
22268
+ return {
22269
+ path: "/bun1",
22270
+ detectedLockfile: "bun.lockb",
22271
+ detectedPackageManager: "Bun"
22272
+ };
22273
+ }
22371
22274
  case "yarn":
22372
- return {
22373
- path: void 0,
22374
- detectedLockfile: "yarn.lock",
22375
- detectedPackageManager: "yarn"
22376
- };
22275
+ return no_override;
22276
+ }
22277
+ }
22278
+ function validateVersionSpecifier(version) {
22279
+ if (!version) {
22280
+ return void 0;
22281
+ }
22282
+ const [before, after, ...extra] = version.split("@");
22283
+ if (extra.length) {
22284
+ return void 0;
22285
+ }
22286
+ if (!before) {
22287
+ return void 0;
22377
22288
  }
22289
+ if (!after) {
22290
+ return void 0;
22291
+ }
22292
+ if (!(0, import_semver2.validRange)(after)) {
22293
+ return void 0;
22294
+ }
22295
+ return {
22296
+ packageName: before,
22297
+ packageVersionRange: after
22298
+ };
22378
22299
  }
22379
22300
  function getPathForPackageManager({
22380
22301
  cliType,
@@ -22383,15 +22304,12 @@ function getPathForPackageManager({
22383
22304
  env
22384
22305
  }) {
22385
22306
  const corepackEnabled = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
22386
- let overrides = getPathOverrideForPackageManager({
22307
+ const overrides = getPathOverrideForPackageManager({
22387
22308
  cliType,
22388
22309
  lockfileVersion,
22389
- corepackPackageManager: void 0,
22310
+ corepackEnabled,
22390
22311
  nodeVersion
22391
22312
  });
22392
- if (corepackEnabled) {
22393
- overrides = NO_OVERRIDE;
22394
- }
22395
22313
  const alreadyInPath = (newPath) => {
22396
22314
  const oldPath = env.PATH ?? "";
22397
22315
  return oldPath.split(import_path5.default.delimiter).includes(newPath);
@@ -22417,11 +22335,14 @@ async function runCustomInstallCommand({
22417
22335
  spawnOpts
22418
22336
  }) {
22419
22337
  console.log(`Running "install" command: \`${installCommand}\`...`);
22420
- const { cliType, lockfileVersion, packageJsonPackageManager } = await scanParentDirs(destPath);
22338
+ const { cliType, lockfileVersion, packageJson } = await scanParentDirs(
22339
+ destPath,
22340
+ true
22341
+ );
22421
22342
  const env = getEnvForPackageManager({
22422
22343
  cliType,
22423
22344
  lockfileVersion,
22424
- packageJsonPackageManager,
22345
+ packageJsonPackageManager: packageJson?.packageManager,
22425
22346
  nodeVersion,
22426
22347
  env: spawnOpts?.env || {}
22427
22348
  });
@@ -22434,7 +22355,10 @@ async function runCustomInstallCommand({
22434
22355
  }
22435
22356
  async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
22436
22357
  (0, import_assert6.default)(import_path5.default.isAbsolute(destPath));
22437
- const { packageJson, cliType, lockfileVersion, packageJsonPackageManager } = await scanParentDirs(destPath, true);
22358
+ const { packageJson, cliType, lockfileVersion } = await scanParentDirs(
22359
+ destPath,
22360
+ true
22361
+ );
22438
22362
  const scriptName = getScriptName(
22439
22363
  packageJson,
22440
22364
  typeof scriptNames === "string" ? [scriptNames] : scriptNames
@@ -22449,7 +22373,7 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
22449
22373
  env: getEnvForPackageManager({
22450
22374
  cliType,
22451
22375
  lockfileVersion,
22452
- packageJsonPackageManager,
22376
+ packageJsonPackageManager: packageJson?.packageManager,
22453
22377
  nodeVersion: void 0,
22454
22378
  env: cloneEnv(process.env, spawnOpts?.env)
22455
22379
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/build-utils",
3
- "version": "8.3.3",
3
+ "version": "8.3.5",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",