@vercel/build-utils 8.2.1 → 8.2.2

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,15 @@
1
1
  # @vercel/build-utils
2
2
 
3
+ ## 8.2.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Change node 16.x EOL for Vercel ([#11704](https://github.com/vercel/vercel/pull/11704))
8
+
9
+ - Improve error message and refactor ([#11706](https://github.com/vercel/vercel/pull/11706))
10
+
11
+ - [built-utils] Handle case of not having lockfile when corepack is enabled ([#11697](https://github.com/vercel/vercel/pull/11697))
12
+
3
13
  ## 8.2.1
4
14
 
5
15
  ### Patch Changes
@@ -46,7 +46,7 @@ const NODE_VERSIONS = [
46
46
  major: 16,
47
47
  range: "16.x",
48
48
  runtime: "nodejs16.x",
49
- discontinueDate: /* @__PURE__ */ new Date("2025-02-28")
49
+ discontinueDate: /* @__PURE__ */ new Date("2025-01-31")
50
50
  },
51
51
  {
52
52
  major: 14,
@@ -252,7 +252,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
252
252
  lockfilePath = bunLockPath;
253
253
  lockfileVersion = 0;
254
254
  } else {
255
- cliType = "npm";
255
+ cliType = packageJson ? detectPackageManagerNameWithoutLockfile(packageJson) : "npm";
256
256
  }
257
257
  const packageJsonPath = pkgJsonPath || void 0;
258
258
  return {
@@ -263,6 +263,32 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
263
263
  packageJsonPath
264
264
  };
265
265
  }
266
+ function detectPackageManagerNameWithoutLockfile(packageJson) {
267
+ const packageJsonPackageManager = packageJson.packageManager;
268
+ if (usingCorepack(process.env, packageJsonPackageManager)) {
269
+ const corepackPackageManager = validateVersionSpecifier(
270
+ packageJsonPackageManager
271
+ );
272
+ switch (corepackPackageManager?.packageName) {
273
+ case "npm":
274
+ case "pnpm":
275
+ case "yarn":
276
+ case "bun":
277
+ return corepackPackageManager.packageName;
278
+ case void 0:
279
+ return "npm";
280
+ default:
281
+ throw new Error(
282
+ `Unknown package manager "${corepackPackageManager?.packageName}". Change your package.json "packageManager" field to a known package manager: npm, pnpm, yarn, bun.`
283
+ );
284
+ }
285
+ }
286
+ return "npm";
287
+ }
288
+ function usingCorepack(env, packageJsonPackageManager) {
289
+ const corepackFlagged = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
290
+ return corepackFlagged && Boolean(packageJsonPackageManager);
291
+ }
266
292
  async function walkParentDirs({
267
293
  base,
268
294
  start,
@@ -391,8 +417,7 @@ function getEnvForPackageManager({
391
417
  nodeVersion,
392
418
  env
393
419
  }) {
394
- const corepackFlagged = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
395
- const corepackEnabled = corepackFlagged && Boolean(packageJsonPackageManager);
420
+ const corepackEnabled = usingCorepack(env, packageJsonPackageManager);
396
421
  const {
397
422
  detectedLockfile,
398
423
  detectedPackageManager,
@@ -528,6 +553,28 @@ function getPathOverrideForPackageManager({
528
553
  return no_override;
529
554
  }
530
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
+ }
531
578
  function getPathForPackageManager({
532
579
  cliType,
533
580
  lockfileVersion,
package/dist/index.js CHANGED
@@ -21620,7 +21620,7 @@ var NODE_VERSIONS = [
21620
21620
  major: 16,
21621
21621
  range: "16.x",
21622
21622
  runtime: "nodejs16.x",
21623
- discontinueDate: /* @__PURE__ */ new Date("2025-02-28")
21623
+ discontinueDate: /* @__PURE__ */ new Date("2025-01-31")
21624
21624
  },
21625
21625
  {
21626
21626
  major: 14,
@@ -21974,7 +21974,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
21974
21974
  lockfilePath = bunLockPath;
21975
21975
  lockfileVersion = 0;
21976
21976
  } else {
21977
- cliType = "npm";
21977
+ cliType = packageJson ? detectPackageManagerNameWithoutLockfile(packageJson) : "npm";
21978
21978
  }
21979
21979
  const packageJsonPath = pkgJsonPath || void 0;
21980
21980
  return {
@@ -21985,6 +21985,32 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
21985
21985
  packageJsonPath
21986
21986
  };
21987
21987
  }
21988
+ function detectPackageManagerNameWithoutLockfile(packageJson) {
21989
+ const packageJsonPackageManager = packageJson.packageManager;
21990
+ if (usingCorepack(process.env, packageJsonPackageManager)) {
21991
+ const corepackPackageManager = validateVersionSpecifier(
21992
+ packageJsonPackageManager
21993
+ );
21994
+ switch (corepackPackageManager?.packageName) {
21995
+ case "npm":
21996
+ case "pnpm":
21997
+ case "yarn":
21998
+ case "bun":
21999
+ return corepackPackageManager.packageName;
22000
+ case void 0:
22001
+ return "npm";
22002
+ default:
22003
+ throw new Error(
22004
+ `Unknown package manager "${corepackPackageManager?.packageName}". Change your package.json "packageManager" field to a known package manager: npm, pnpm, yarn, bun.`
22005
+ );
22006
+ }
22007
+ }
22008
+ return "npm";
22009
+ }
22010
+ function usingCorepack(env, packageJsonPackageManager) {
22011
+ const corepackFlagged = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
22012
+ return corepackFlagged && Boolean(packageJsonPackageManager);
22013
+ }
21988
22014
  async function walkParentDirs({
21989
22015
  base,
21990
22016
  start,
@@ -22113,8 +22139,7 @@ function getEnvForPackageManager({
22113
22139
  nodeVersion,
22114
22140
  env
22115
22141
  }) {
22116
- const corepackFlagged = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
22117
- const corepackEnabled = corepackFlagged && Boolean(packageJsonPackageManager);
22142
+ const corepackEnabled = usingCorepack(env, packageJsonPackageManager);
22118
22143
  const {
22119
22144
  detectedLockfile,
22120
22145
  detectedPackageManager,
@@ -22250,6 +22275,28 @@ function getPathOverrideForPackageManager({
22250
22275
  return no_override;
22251
22276
  }
22252
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;
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
+ };
22299
+ }
22253
22300
  function getPathForPackageManager({
22254
22301
  cliType,
22255
22302
  lockfileVersion,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/build-utils",
3
- "version": "8.2.1",
3
+ "version": "8.2.2",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",