@vercel/build-utils 13.2.14 → 13.2.15

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,11 @@
1
1
  # @vercel/build-utils
2
2
 
3
+ ## 13.2.15
4
+
5
+ ### Patch Changes
6
+
7
+ - Optimize `getAvailableNodeVersions` to skip discontinued versions and use non-throwing `statSync` ([#14686](https://github.com/vercel/vercel/pull/14686))
8
+
3
9
  ## 13.2.14
4
10
 
5
11
  ### Patch Changes
@@ -111,14 +111,11 @@ function getOptions() {
111
111
  return NODE_VERSIONS;
112
112
  }
113
113
  function isNodeVersionAvailable(version) {
114
- try {
115
- return (0, import_fs.statSync)(`/node${version.major}`).isDirectory();
116
- } catch {
117
- }
118
- return false;
114
+ const stat = (0, import_fs.statSync)(`/node${version.major}`, { throwIfNoEntry: false });
115
+ return stat?.isDirectory() ?? false;
119
116
  }
120
117
  function getAvailableNodeVersions() {
121
- return getOptions().filter(isNodeVersionAvailable).map((n) => n.major);
118
+ return getOptions().filter((v) => v.major >= 18).filter(isNodeVersionAvailable).map((n) => n.major);
122
119
  }
123
120
  function getHint(isAuto = false, availableVersions) {
124
121
  const { major, range } = getLatestNodeVersion(availableVersions);
@@ -153,7 +150,7 @@ async function getSupportedNodeVersion(engineRange, isAuto = false, availableVer
153
150
  throw new import_errors.NowBuildError({
154
151
  code: "BUILD_UTILS_NODE_VERSION_INVALID",
155
152
  link: "https://vercel.link/node-version",
156
- message: `Found invalid Node.js Version: "${engineRange}". ${getHint(
153
+ message: `Found invalid or discontinued Node.js Version: "${engineRange}". ${getHint(
157
154
  isAuto,
158
155
  availableVersions
159
156
  )}`
package/dist/index.js CHANGED
@@ -24940,14 +24940,11 @@ function getOptions() {
24940
24940
  return NODE_VERSIONS;
24941
24941
  }
24942
24942
  function isNodeVersionAvailable(version) {
24943
- try {
24944
- return (0, import_fs.statSync)(`/node${version.major}`).isDirectory();
24945
- } catch {
24946
- }
24947
- return false;
24943
+ const stat = (0, import_fs.statSync)(`/node${version.major}`, { throwIfNoEntry: false });
24944
+ return stat?.isDirectory() ?? false;
24948
24945
  }
24949
24946
  function getAvailableNodeVersions() {
24950
- return getOptions().filter(isNodeVersionAvailable).map((n) => n.major);
24947
+ return getOptions().filter((v) => v.major >= 18).filter(isNodeVersionAvailable).map((n) => n.major);
24951
24948
  }
24952
24949
  function getHint(isAuto = false, availableVersions) {
24953
24950
  const { major, range } = getLatestNodeVersion(availableVersions);
@@ -24982,7 +24979,7 @@ async function getSupportedNodeVersion(engineRange, isAuto = false, availableVer
24982
24979
  throw new NowBuildError({
24983
24980
  code: "BUILD_UTILS_NODE_VERSION_INVALID",
24984
24981
  link: "https://vercel.link/node-version",
24985
- message: `Found invalid Node.js Version: "${engineRange}". ${getHint(
24982
+ message: `Found invalid or discontinued Node.js Version: "${engineRange}". ${getHint(
24986
24983
  isAuto,
24987
24984
  availableVersions
24988
24985
  )}`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/build-utils",
3
- "version": "13.2.14",
3
+ "version": "13.2.15",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",
@@ -47,8 +47,8 @@
47
47
  "yazl": "2.5.1",
48
48
  "vitest": "2.0.1",
49
49
  "json5": "2.2.3",
50
- "@vercel/routing-utils": "5.3.2",
51
- "@vercel/error-utils": "2.0.3"
50
+ "@vercel/error-utils": "2.0.3",
51
+ "@vercel/routing-utils": "5.3.2"
52
52
  },
53
53
  "scripts": {
54
54
  "build": "node build.mjs",