@vercel/build-utils 6.7.5 → 6.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @vercel/build-utils
2
2
 
3
+ ## 6.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Revert "[build-utils] Allow file-ref sema to be controlled through env flag" ([#10167](https://github.com/vercel/vercel/pull/10167))
8
+
9
+ ## 6.8.0
10
+
11
+ ### Minor Changes
12
+
13
+ - Add `getNodeBinPaths()` and `traverseUpDirectories()` functions ([#10150](https://github.com/vercel/vercel/pull/10150))
14
+
3
15
  ## 6.7.5
4
16
 
5
17
  ### Patch Changes
@@ -8,8 +8,7 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
8
8
  const multistream_1 = __importDefault(require("multistream"));
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const async_sema_1 = __importDefault(require("async-sema"));
11
- const DEFAULT_SEMA = 20;
12
- const semaToPreventEMFILE = new async_sema_1.default(parseInt(process.env.VERCEL_INTERNAL_FILE_FS_REF_SEMA || String(DEFAULT_SEMA), 10) || DEFAULT_SEMA);
11
+ const semaToPreventEMFILE = new async_sema_1.default(20);
13
12
  class FileFsRef {
14
13
  constructor({ mode = 0o100644, contentType, fsPath }) {
15
14
  (0, assert_1.default)(typeof mode === 'number');
package/dist/file-ref.js CHANGED
@@ -8,8 +8,7 @@ const node_fetch_1 = __importDefault(require("node-fetch"));
8
8
  const multistream_1 = __importDefault(require("multistream"));
9
9
  const async_retry_1 = __importDefault(require("async-retry"));
10
10
  const async_sema_1 = __importDefault(require("async-sema"));
11
- const DEFAULT_SEMA = 5;
12
- const semaToDownloadFromS3 = new async_sema_1.default(parseInt(process.env.VERCEL_INTERNAL_FILE_REF_SEMA || String(DEFAULT_SEMA), 10) || DEFAULT_SEMA);
11
+ const semaToDownloadFromS3 = new async_sema_1.default(5);
13
12
  class BailableError extends Error {
14
13
  constructor(...args) {
15
14
  super(...args);
@@ -27,22 +27,28 @@ export interface ScanParentDirsResult {
27
27
  */
28
28
  lockfileVersion?: number;
29
29
  }
30
- export interface WalkParentDirsProps {
30
+ export interface TraverseUpDirectoriesProps {
31
31
  /**
32
- * The highest directory, typically the workPath root of the project.
33
- * If this directory is reached and it doesn't contain the file, null is returned.
32
+ * The directory to start iterating from, typically the same directory of the entrypoint.
34
33
  */
35
- base: string;
34
+ start: string;
36
35
  /**
37
- * The directory to start searching, typically the same directory of the entrypoint.
38
- * If this directory doesn't contain the file, the parent is checked, etc.
36
+ * The highest directory, typically the workPath root of the project.
39
37
  */
40
- start: string;
38
+ base?: string;
39
+ }
40
+ export interface WalkParentDirsProps extends Required<TraverseUpDirectoriesProps> {
41
41
  /**
42
42
  * The name of the file to search for, typically `package.json` or `Gemfile`.
43
43
  */
44
44
  filename: string;
45
45
  }
46
+ export interface WalkParentDirsMultiProps extends Required<TraverseUpDirectoriesProps> {
47
+ /**
48
+ * The name of the file to search for, typically `package.json` or `Gemfile`.
49
+ */
50
+ filenames: string[];
51
+ }
46
52
  export interface SpawnOptionsExtended extends SpawnOptions {
47
53
  /**
48
54
  * Pretty formatted command that is being spawned for logging purposes.
@@ -58,9 +64,14 @@ export interface SpawnOptionsExtended extends SpawnOptions {
58
64
  export declare function spawnAsync(command: string, args: string[], opts?: SpawnOptionsExtended): Promise<void>;
59
65
  export declare function spawnCommand(command: string, options?: SpawnOptions): import("child_process").ChildProcess;
60
66
  export declare function execCommand(command: string, options?: SpawnOptions): Promise<boolean>;
67
+ export declare function traverseUpDirectories({ start, base, }: TraverseUpDirectoriesProps): Generator<string, void, unknown>;
68
+ /**
69
+ * @deprecated Use `getNodeBinPaths()` instead.
70
+ */
61
71
  export declare function getNodeBinPath({ cwd, }: {
62
72
  cwd: string;
63
73
  }): Promise<string>;
74
+ export declare function getNodeBinPaths({ start, base, }: TraverseUpDirectoriesProps): string[];
64
75
  export declare function runShellScript(fsPath: string, args?: string[], spawnOpts?: SpawnOptions): Promise<boolean>;
65
76
  export declare function getSpawnOptions(meta: Meta, nodeVersion: NodeVersion): SpawnOptions;
66
77
  export declare function getNodeVersion(destPath: string, nodeVersionFallback?: string | undefined, config?: Config, meta?: Meta): Promise<NodeVersion>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.installDependencies = exports.getScriptName = exports.runPipInstall = exports.runBundleInstall = exports.runPackageJsonScript = exports.runCustomInstallCommand = exports.getEnvForPackageManager = exports.runNpmInstall = exports.walkParentDirs = exports.scanParentDirs = exports.getNodeVersion = exports.getSpawnOptions = exports.runShellScript = exports.getNodeBinPath = exports.execCommand = exports.spawnCommand = exports.spawnAsync = void 0;
6
+ exports.installDependencies = exports.getScriptName = exports.runPipInstall = exports.runBundleInstall = exports.runPackageJsonScript = exports.runCustomInstallCommand = exports.getEnvForPackageManager = exports.runNpmInstall = exports.walkParentDirs = exports.scanParentDirs = exports.getNodeVersion = exports.getSpawnOptions = exports.runShellScript = exports.getNodeBinPaths = exports.getNodeBinPath = exports.traverseUpDirectories = exports.execCommand = exports.spawnCommand = exports.spawnAsync = void 0;
7
7
  const assert_1 = __importDefault(require("assert"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
9
  const path_1 = __importDefault(require("path"));
@@ -63,12 +63,32 @@ async function execCommand(command, options = {}) {
63
63
  return true;
64
64
  }
65
65
  exports.execCommand = execCommand;
66
+ function* traverseUpDirectories({ start, base, }) {
67
+ let current = path_1.default.normalize(start);
68
+ const normalizedRoot = base ? path_1.default.normalize(base) : undefined;
69
+ while (current) {
70
+ yield current;
71
+ if (current === normalizedRoot)
72
+ break;
73
+ // Go up one directory
74
+ const next = path_1.default.join(current, '..');
75
+ current = next === current ? undefined : next;
76
+ }
77
+ }
78
+ exports.traverseUpDirectories = traverseUpDirectories;
79
+ /**
80
+ * @deprecated Use `getNodeBinPaths()` instead.
81
+ */
66
82
  async function getNodeBinPath({ cwd, }) {
67
83
  const { lockfilePath } = await scanParentDirs(cwd);
68
84
  const dir = path_1.default.dirname(lockfilePath || cwd);
69
85
  return path_1.default.join(dir, 'node_modules', '.bin');
70
86
  }
71
87
  exports.getNodeBinPath = getNodeBinPath;
88
+ function getNodeBinPaths({ start, base, }) {
89
+ return Array.from(traverseUpDirectories({ start, base })).map(dir => path_1.default.join(dir, 'node_modules/.bin'));
90
+ }
91
+ exports.getNodeBinPaths = getNodeBinPaths;
72
92
  async function chmodPlusX(fsPath) {
73
93
  const s = await fs_extra_1.default.stat(fsPath);
74
94
  const newMode = s.mode | 64 | 8 | 1; // eslint-disable-line no-bitwise
@@ -194,36 +214,24 @@ exports.scanParentDirs = scanParentDirs;
194
214
  async function walkParentDirs({ base, start, filename, }) {
195
215
  (0, assert_1.default)(path_1.default.isAbsolute(base), 'Expected "base" to be absolute path');
196
216
  (0, assert_1.default)(path_1.default.isAbsolute(start), 'Expected "start" to be absolute path');
197
- let parent = '';
198
- for (let current = start; base.length <= current.length; current = parent) {
199
- const fullPath = path_1.default.join(current, filename);
217
+ for (const dir of traverseUpDirectories({ start, base })) {
218
+ const fullPath = path_1.default.join(dir, filename);
200
219
  // eslint-disable-next-line no-await-in-loop
201
220
  if (await fs_extra_1.default.pathExists(fullPath)) {
202
221
  return fullPath;
203
222
  }
204
- parent = path_1.default.dirname(current);
205
- if (parent === current) {
206
- // Reached root directory of the filesystem
207
- break;
208
- }
209
223
  }
210
224
  return null;
211
225
  }
212
226
  exports.walkParentDirs = walkParentDirs;
213
227
  async function walkParentDirsMulti({ base, start, filenames, }) {
214
- let parent = '';
215
- for (let current = start; base.length <= current.length; current = parent) {
216
- const fullPaths = filenames.map(f => path_1.default.join(current, f));
228
+ for (const dir of traverseUpDirectories({ start, base })) {
229
+ const fullPaths = filenames.map(f => path_1.default.join(dir, f));
217
230
  const existResults = await Promise.all(fullPaths.map(f => fs_extra_1.default.pathExists(f)));
218
231
  const foundOneOrMore = existResults.some(b => b);
219
232
  if (foundOneOrMore) {
220
233
  return fullPaths.map((f, i) => (existResults[i] ? f : undefined));
221
234
  }
222
- parent = path_1.default.dirname(current);
223
- if (parent === current) {
224
- // Reached root directory of the filesystem
225
- break;
226
- }
227
235
  }
228
236
  return [];
229
237
  }
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ import download, { downloadFile, DownloadedFiles, isSymbolicLink, isDirectory }
8
8
  import getWriteableDirectory from './fs/get-writable-directory';
9
9
  import glob, { GlobOptions } from './fs/glob';
10
10
  import rename from './fs/rename';
11
- import { spawnAsync, execCommand, spawnCommand, walkParentDirs, getScriptName, installDependencies, runPackageJsonScript, runNpmInstall, runBundleInstall, runPipInstall, runShellScript, runCustomInstallCommand, getEnvForPackageManager, getNodeVersion, getSpawnOptions, getNodeBinPath, scanParentDirs } from './fs/run-user-scripts';
11
+ import { spawnAsync, execCommand, spawnCommand, walkParentDirs, getScriptName, installDependencies, runPackageJsonScript, runNpmInstall, runBundleInstall, runPipInstall, runShellScript, runCustomInstallCommand, getEnvForPackageManager, getNodeVersion, getSpawnOptions, getNodeBinPath, getNodeBinPaths, scanParentDirs, traverseUpDirectories } from './fs/run-user-scripts';
12
12
  import { getLatestNodeVersion, getDiscontinuedNodeVersions } from './fs/node-version';
13
13
  import streamToBuffer from './fs/stream-to-buffer';
14
14
  import debug from './debug';
@@ -18,7 +18,7 @@ import { getPrefixedEnvVars } from './get-prefixed-env-vars';
18
18
  import { cloneEnv } from './clone-env';
19
19
  import { hardLinkDir } from './hard-link-dir';
20
20
  import { validateNpmrc } from './validate-npmrc';
21
- export { FileBlob, FileFsRef, FileRef, Lambda, NodejsLambda, createLambda, Prerender, download, downloadFile, DownloadedFiles, getWriteableDirectory, glob, GlobOptions, rename, spawnAsync, getScriptName, installDependencies, runPackageJsonScript, execCommand, spawnCommand, walkParentDirs, getNodeBinPath, runNpmInstall, runBundleInstall, runPipInstall, runShellScript, runCustomInstallCommand, getEnvForPackageManager, getNodeVersion, getLatestNodeVersion, getDiscontinuedNodeVersions, getSpawnOptions, getPlatformEnv, getPrefixedEnvVars, streamToBuffer, debug, isSymbolicLink, isDirectory, getLambdaOptionsFromFunction, scanParentDirs, getIgnoreFilter, cloneEnv, hardLinkDir, validateNpmrc, };
21
+ export { FileBlob, FileFsRef, FileRef, Lambda, NodejsLambda, createLambda, Prerender, download, downloadFile, DownloadedFiles, getWriteableDirectory, glob, GlobOptions, rename, spawnAsync, getScriptName, installDependencies, runPackageJsonScript, execCommand, spawnCommand, walkParentDirs, getNodeBinPath, getNodeBinPaths, runNpmInstall, runBundleInstall, runPipInstall, runShellScript, runCustomInstallCommand, getEnvForPackageManager, getNodeVersion, getLatestNodeVersion, getDiscontinuedNodeVersions, getSpawnOptions, getPlatformEnv, getPrefixedEnvVars, streamToBuffer, debug, isSymbolicLink, isDirectory, getLambdaOptionsFromFunction, scanParentDirs, getIgnoreFilter, cloneEnv, hardLinkDir, traverseUpDirectories, validateNpmrc, };
22
22
  export { EdgeFunction } from './edge-function';
23
23
  export { readConfigFile } from './fs/read-config-file';
24
24
  export { normalizePath } from './fs/normalize-path';
package/dist/index.js CHANGED
@@ -28355,8 +28355,7 @@ const fs_extra_1 = __importDefault(__webpack_require__(6365));
28355
28355
  const multistream_1 = __importDefault(__webpack_require__(4106));
28356
28356
  const path_1 = __importDefault(__webpack_require__(5622));
28357
28357
  const async_sema_1 = __importDefault(__webpack_require__(2219));
28358
- const DEFAULT_SEMA = 20;
28359
- const semaToPreventEMFILE = new async_sema_1.default(parseInt(process.env.VERCEL_INTERNAL_FILE_FS_REF_SEMA || String(DEFAULT_SEMA), 10) || DEFAULT_SEMA);
28358
+ const semaToPreventEMFILE = new async_sema_1.default(20);
28360
28359
  class FileFsRef {
28361
28360
  constructor({ mode = 0o100644, contentType, fsPath }) {
28362
28361
  (0, assert_1.default)(typeof mode === 'number');
@@ -28434,8 +28433,7 @@ const node_fetch_1 = __importDefault(__webpack_require__(1596));
28434
28433
  const multistream_1 = __importDefault(__webpack_require__(4106));
28435
28434
  const async_retry_1 = __importDefault(__webpack_require__(1635));
28436
28435
  const async_sema_1 = __importDefault(__webpack_require__(2219));
28437
- const DEFAULT_SEMA = 5;
28438
- const semaToDownloadFromS3 = new async_sema_1.default(parseInt(process.env.VERCEL_INTERNAL_FILE_REF_SEMA || String(DEFAULT_SEMA), 10) || DEFAULT_SEMA);
28436
+ const semaToDownloadFromS3 = new async_sema_1.default(5);
28439
28437
  class BailableError extends Error {
28440
28438
  constructor(...args) {
28441
28439
  super(...args);
@@ -28956,7 +28954,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28956
28954
  return (mod && mod.__esModule) ? mod : { "default": mod };
28957
28955
  };
28958
28956
  Object.defineProperty(exports, "__esModule", ({ value: true }));
28959
- exports.installDependencies = exports.getScriptName = exports.runPipInstall = exports.runBundleInstall = exports.runPackageJsonScript = exports.runCustomInstallCommand = exports.getEnvForPackageManager = exports.runNpmInstall = exports.walkParentDirs = exports.scanParentDirs = exports.getNodeVersion = exports.getSpawnOptions = exports.runShellScript = exports.getNodeBinPath = exports.execCommand = exports.spawnCommand = exports.spawnAsync = void 0;
28957
+ exports.installDependencies = exports.getScriptName = exports.runPipInstall = exports.runBundleInstall = exports.runPackageJsonScript = exports.runCustomInstallCommand = exports.getEnvForPackageManager = exports.runNpmInstall = exports.walkParentDirs = exports.scanParentDirs = exports.getNodeVersion = exports.getSpawnOptions = exports.runShellScript = exports.getNodeBinPaths = exports.getNodeBinPath = exports.traverseUpDirectories = exports.execCommand = exports.spawnCommand = exports.spawnAsync = void 0;
28960
28958
  const assert_1 = __importDefault(__webpack_require__(2357));
28961
28959
  const fs_extra_1 = __importDefault(__webpack_require__(6365));
28962
28960
  const path_1 = __importDefault(__webpack_require__(5622));
@@ -29016,12 +29014,32 @@ async function execCommand(command, options = {}) {
29016
29014
  return true;
29017
29015
  }
29018
29016
  exports.execCommand = execCommand;
29017
+ function* traverseUpDirectories({ start, base, }) {
29018
+ let current = path_1.default.normalize(start);
29019
+ const normalizedRoot = base ? path_1.default.normalize(base) : undefined;
29020
+ while (current) {
29021
+ yield current;
29022
+ if (current === normalizedRoot)
29023
+ break;
29024
+ // Go up one directory
29025
+ const next = path_1.default.join(current, '..');
29026
+ current = next === current ? undefined : next;
29027
+ }
29028
+ }
29029
+ exports.traverseUpDirectories = traverseUpDirectories;
29030
+ /**
29031
+ * @deprecated Use `getNodeBinPaths()` instead.
29032
+ */
29019
29033
  async function getNodeBinPath({ cwd, }) {
29020
29034
  const { lockfilePath } = await scanParentDirs(cwd);
29021
29035
  const dir = path_1.default.dirname(lockfilePath || cwd);
29022
29036
  return path_1.default.join(dir, 'node_modules', '.bin');
29023
29037
  }
29024
29038
  exports.getNodeBinPath = getNodeBinPath;
29039
+ function getNodeBinPaths({ start, base, }) {
29040
+ return Array.from(traverseUpDirectories({ start, base })).map(dir => path_1.default.join(dir, 'node_modules/.bin'));
29041
+ }
29042
+ exports.getNodeBinPaths = getNodeBinPaths;
29025
29043
  async function chmodPlusX(fsPath) {
29026
29044
  const s = await fs_extra_1.default.stat(fsPath);
29027
29045
  const newMode = s.mode | 64 | 8 | 1; // eslint-disable-line no-bitwise
@@ -29147,36 +29165,24 @@ exports.scanParentDirs = scanParentDirs;
29147
29165
  async function walkParentDirs({ base, start, filename, }) {
29148
29166
  (0, assert_1.default)(path_1.default.isAbsolute(base), 'Expected "base" to be absolute path');
29149
29167
  (0, assert_1.default)(path_1.default.isAbsolute(start), 'Expected "start" to be absolute path');
29150
- let parent = '';
29151
- for (let current = start; base.length <= current.length; current = parent) {
29152
- const fullPath = path_1.default.join(current, filename);
29168
+ for (const dir of traverseUpDirectories({ start, base })) {
29169
+ const fullPath = path_1.default.join(dir, filename);
29153
29170
  // eslint-disable-next-line no-await-in-loop
29154
29171
  if (await fs_extra_1.default.pathExists(fullPath)) {
29155
29172
  return fullPath;
29156
29173
  }
29157
- parent = path_1.default.dirname(current);
29158
- if (parent === current) {
29159
- // Reached root directory of the filesystem
29160
- break;
29161
- }
29162
29174
  }
29163
29175
  return null;
29164
29176
  }
29165
29177
  exports.walkParentDirs = walkParentDirs;
29166
29178
  async function walkParentDirsMulti({ base, start, filenames, }) {
29167
- let parent = '';
29168
- for (let current = start; base.length <= current.length; current = parent) {
29169
- const fullPaths = filenames.map(f => path_1.default.join(current, f));
29179
+ for (const dir of traverseUpDirectories({ start, base })) {
29180
+ const fullPaths = filenames.map(f => path_1.default.join(dir, f));
29170
29181
  const existResults = await Promise.all(fullPaths.map(f => fs_extra_1.default.pathExists(f)));
29171
29182
  const foundOneOrMore = existResults.some(b => b);
29172
29183
  if (foundOneOrMore) {
29173
29184
  return fullPaths.map((f, i) => (existResults[i] ? f : undefined));
29174
29185
  }
29175
- parent = path_1.default.dirname(current);
29176
- if (parent === current) {
29177
- // Reached root directory of the filesystem
29178
- break;
29179
- }
29180
29186
  }
29181
29187
  return [];
29182
29188
  }
@@ -29717,7 +29723,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
29717
29723
  return (mod && mod.__esModule) ? mod : { "default": mod };
29718
29724
  };
29719
29725
  Object.defineProperty(exports, "__esModule", ({ value: true }));
29720
- exports.normalizePath = exports.readConfigFile = exports.EdgeFunction = exports.validateNpmrc = exports.hardLinkDir = exports.cloneEnv = exports.getIgnoreFilter = exports.scanParentDirs = exports.getLambdaOptionsFromFunction = exports.isDirectory = exports.isSymbolicLink = exports.debug = exports.streamToBuffer = exports.getPrefixedEnvVars = exports.getPlatformEnv = exports.getSpawnOptions = exports.getDiscontinuedNodeVersions = exports.getLatestNodeVersion = exports.getNodeVersion = exports.getEnvForPackageManager = exports.runCustomInstallCommand = exports.runShellScript = exports.runPipInstall = exports.runBundleInstall = exports.runNpmInstall = exports.getNodeBinPath = exports.walkParentDirs = exports.spawnCommand = exports.execCommand = exports.runPackageJsonScript = exports.installDependencies = exports.getScriptName = exports.spawnAsync = exports.rename = exports.glob = exports.getWriteableDirectory = exports.downloadFile = exports.download = exports.Prerender = exports.createLambda = exports.NodejsLambda = exports.Lambda = exports.FileRef = exports.FileFsRef = exports.FileBlob = void 0;
29726
+ exports.normalizePath = exports.readConfigFile = exports.EdgeFunction = exports.validateNpmrc = exports.traverseUpDirectories = exports.hardLinkDir = exports.cloneEnv = exports.getIgnoreFilter = exports.scanParentDirs = exports.getLambdaOptionsFromFunction = exports.isDirectory = exports.isSymbolicLink = exports.debug = exports.streamToBuffer = exports.getPrefixedEnvVars = exports.getPlatformEnv = exports.getSpawnOptions = exports.getDiscontinuedNodeVersions = exports.getLatestNodeVersion = exports.getNodeVersion = exports.getEnvForPackageManager = exports.runCustomInstallCommand = exports.runShellScript = exports.runPipInstall = exports.runBundleInstall = exports.runNpmInstall = exports.getNodeBinPaths = exports.getNodeBinPath = exports.walkParentDirs = exports.spawnCommand = exports.execCommand = exports.runPackageJsonScript = exports.installDependencies = exports.getScriptName = exports.spawnAsync = exports.rename = exports.glob = exports.getWriteableDirectory = exports.downloadFile = exports.download = exports.Prerender = exports.createLambda = exports.NodejsLambda = exports.Lambda = exports.FileRef = exports.FileFsRef = exports.FileBlob = void 0;
29721
29727
  const file_blob_1 = __importDefault(__webpack_require__(8361));
29722
29728
  exports.FileBlob = file_blob_1.default;
29723
29729
  const file_fs_ref_1 = __importDefault(__webpack_require__(6274));
@@ -29760,7 +29766,9 @@ Object.defineProperty(exports, "getEnvForPackageManager", ({ enumerable: true, g
29760
29766
  Object.defineProperty(exports, "getNodeVersion", ({ enumerable: true, get: function () { return run_user_scripts_1.getNodeVersion; } }));
29761
29767
  Object.defineProperty(exports, "getSpawnOptions", ({ enumerable: true, get: function () { return run_user_scripts_1.getSpawnOptions; } }));
29762
29768
  Object.defineProperty(exports, "getNodeBinPath", ({ enumerable: true, get: function () { return run_user_scripts_1.getNodeBinPath; } }));
29769
+ Object.defineProperty(exports, "getNodeBinPaths", ({ enumerable: true, get: function () { return run_user_scripts_1.getNodeBinPaths; } }));
29763
29770
  Object.defineProperty(exports, "scanParentDirs", ({ enumerable: true, get: function () { return run_user_scripts_1.scanParentDirs; } }));
29771
+ Object.defineProperty(exports, "traverseUpDirectories", ({ enumerable: true, get: function () { return run_user_scripts_1.traverseUpDirectories; } }));
29764
29772
  const node_version_1 = __webpack_require__(8262);
29765
29773
  Object.defineProperty(exports, "getLatestNodeVersion", ({ enumerable: true, get: function () { return node_version_1.getLatestNodeVersion; } }));
29766
29774
  Object.defineProperty(exports, "getDiscontinuedNodeVersions", ({ enumerable: true, get: function () { return node_version_1.getDiscontinuedNodeVersions; } }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/build-utils",
3
- "version": "6.7.5",
3
+ "version": "6.8.1",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",