vercel 28.2.2 → 28.2.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.
Files changed (2) hide show
  1. package/dist/index.js +146 -51
  2. package/package.json +15 -15
package/dist/index.js CHANGED
@@ -210995,10 +210995,16 @@ exports.frameworks = [
210995
210995
  website: 'https://www.sanity.io',
210996
210996
  envPrefix: 'SANITY_STUDIO_',
210997
210997
  detectors: {
210998
- every: [
210998
+ some: [
210999
210999
  {
211000
211000
  path: 'sanity.json',
211001
211001
  },
211002
+ {
211003
+ path: 'sanity.config.js',
211004
+ },
211005
+ {
211006
+ path: 'sanity.config.ts',
211007
+ },
211002
211008
  ],
211003
211009
  },
211004
211010
  settings: {
@@ -216387,12 +216393,13 @@ exports.detectFramework = detectFramework;
216387
216393
  /***/ }),
216388
216394
 
216389
216395
  /***/ 56114:
216390
- /***/ ((__unused_webpack_module, exports) => {
216396
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
216391
216397
 
216392
216398
  "use strict";
216393
216399
 
216394
216400
  Object.defineProperty(exports, "__esModule", ({ value: true }));
216395
216401
  exports.DetectorFilesystem = void 0;
216402
+ const path_1 = __webpack_require__(85622);
216396
216403
  /**
216397
216404
  * `DetectorFilesystem` is an abstract class that represents a virtual filesystem
216398
216405
  * to perform read-only operations on in order to detect which framework is being
@@ -216446,12 +216453,34 @@ class DetectorFilesystem {
216446
216453
  };
216447
216454
  /**
216448
216455
  * Returns a list of Stat objects from the current working directory.
216456
+ * @param dirPath The path of the directory to read.
216457
+ * @param options.potentialFiles optional. Array of potential file names (relative to the path). If provided, these will be used to mark the filesystem caches as existing or not existing.
216449
216458
  */
216450
- this.readdir = async (name) => {
216451
- let p = this.readdirCache.get(name);
216459
+ this.readdir = async (dirPath, options) => {
216460
+ let p = this.readdirCache.get(dirPath);
216452
216461
  if (!p) {
216453
- p = this._readdir(name);
216454
- this.readdirCache.set(name, p);
216462
+ p = this._readdir(dirPath);
216463
+ this.readdirCache.set(dirPath, p);
216464
+ const directoryContent = await p;
216465
+ const directoryFiles = new Set();
216466
+ for (const file of directoryContent) {
216467
+ if (file.type === 'file') {
216468
+ // we know this file exists, mark it as so on the filesystem
216469
+ this.fileCache.set(file.path, Promise.resolve(true));
216470
+ this.pathCache.set(file.path, Promise.resolve(true));
216471
+ directoryFiles.add(file.name);
216472
+ }
216473
+ }
216474
+ if (options?.potentialFiles) {
216475
+ // calculate the set of paths that truly do not exist
216476
+ const filesThatDoNotExist = options.potentialFiles.filter(path => !directoryFiles.has(path));
216477
+ for (const filePath of filesThatDoNotExist) {
216478
+ const fullFilePath = dirPath === '/' ? filePath : path_1.posix.join(dirPath, filePath);
216479
+ // we know this file does not exist, mark it as so on the filesystem
216480
+ this.fileCache.set(fullFilePath, Promise.resolve(false));
216481
+ this.pathCache.set(fullFilePath, Promise.resolve(false));
216482
+ }
216483
+ }
216455
216484
  }
216456
216485
  return p;
216457
216486
  };
@@ -216461,22 +216490,21 @@ class DetectorFilesystem {
216461
216490
  this.chdir = (name) => {
216462
216491
  return this._chdir(name);
216463
216492
  };
216493
+ /**
216494
+ * Writes a file to the filesystem cache.
216495
+ * @param name the name of the file to write
216496
+ * @param content The content of the file
216497
+ */
216498
+ this.writeFile = async (name, content) => {
216499
+ this.readFileCache.set(name, Promise.resolve(Buffer.from(content)));
216500
+ this.fileCache.set(name, Promise.resolve(true));
216501
+ this.pathCache.set(name, Promise.resolve(true));
216502
+ };
216464
216503
  this.pathCache = new Map();
216465
216504
  this.fileCache = new Map();
216466
216505
  this.readFileCache = new Map();
216467
216506
  this.readdirCache = new Map();
216468
216507
  }
216469
- /**
216470
- * Writes a file to the filesystem cache.
216471
- * @param name the name of the file to write
216472
- * @param content The content of the file
216473
- */
216474
- writeFile(name, content) {
216475
- if (content)
216476
- this.readFileCache.set(name, Promise.resolve(Buffer.from(content)));
216477
- this.fileCache.set(name, Promise.resolve(true));
216478
- this.pathCache.set(name, Promise.resolve(true));
216479
- }
216480
216508
  }
216481
216509
  exports.DetectorFilesystem = DetectorFilesystem;
216482
216510
  //# sourceMappingURL=filesystem.js.map
@@ -216632,6 +216660,28 @@ exports.monorepoManagers = [
216632
216660
  ],
216633
216661
  },
216634
216662
  },
216663
+ {
216664
+ name: 'Nx',
216665
+ slug: 'nx',
216666
+ detectors: {
216667
+ every: [
216668
+ {
216669
+ path: 'nx.json',
216670
+ },
216671
+ ],
216672
+ },
216673
+ },
216674
+ {
216675
+ name: 'Rush',
216676
+ slug: 'rush',
216677
+ detectors: {
216678
+ every: [
216679
+ {
216680
+ path: 'rush.json',
216681
+ },
216682
+ ],
216683
+ },
216684
+ },
216635
216685
  ];
216636
216686
  exports.default = exports.monorepoManagers;
216637
216687
  //# sourceMappingURL=monorepo-managers.js.map
@@ -238853,6 +238903,7 @@ const tree_kill_1 = __webpack_require__(21780);
238853
238903
  const headers_1 = __webpack_require__(17929);
238854
238904
  const parse_query_string_1 = __webpack_require__(40165);
238855
238905
  const is_error_1 = __webpack_require__(11026);
238906
+ const is_url_1 = __importDefault(__webpack_require__(4567));
238856
238907
  const project_settings_1 = __webpack_require__(42697);
238857
238908
  const frontendRuntimeSet = new Set(frameworks_1.default.map(f => f.useRuntime?.use || '@vercel/static-build'));
238858
238909
  function sortBuilders(buildA, buildB) {
@@ -239070,14 +239121,32 @@ class DevServer {
239070
239121
  return;
239071
239122
  }
239072
239123
  if (rewritePath) {
239073
- // TODO: add validation?
239074
239124
  debug(`Detected rewrite path from middleware: "${rewritePath}"`);
239075
239125
  prevUrl = rewritePath;
239076
- // Retain orginal pathname, but override query parameters from the rewrite
239077
239126
  const beforeRewriteUrl = req.url || '/';
239078
- const rewriteUrlParsed = url_1.default.parse(beforeRewriteUrl);
239079
- rewriteUrlParsed.search = url_1.default.parse(rewritePath).search;
239080
- req.url = url_1.default.format(rewriteUrlParsed);
239127
+ if ((0, is_url_1.default)(rewritePath)) {
239128
+ const rewriteUrlParsed = new url_1.URL(rewritePath);
239129
+ // `this.address` already has localhost normalized from ip4 and ip6 values
239130
+ if (this.address.origin === rewriteUrlParsed.origin) {
239131
+ // remove origin, leaving the path
239132
+ req.url =
239133
+ rewritePath.slice(rewriteUrlParsed.origin.length) || '/';
239134
+ prevUrl = req.url;
239135
+ }
239136
+ else {
239137
+ // Proxy to absolute URL with different origin
239138
+ debug(`ProxyPass: ${rewritePath}`);
239139
+ this.setResponseHeaders(res, requestId);
239140
+ proxyPass(req, res, rewritePath, this, requestId);
239141
+ return;
239142
+ }
239143
+ }
239144
+ else {
239145
+ // Retain orginal pathname, but override query parameters from the rewrite
239146
+ const rewriteUrlParsed = url_1.default.parse(beforeRewriteUrl);
239147
+ rewriteUrlParsed.search = url_1.default.parse(rewritePath).search;
239148
+ req.url = url_1.default.format(rewriteUrlParsed);
239149
+ }
239081
239150
  debug(`Rewrote incoming HTTP URL from "${beforeRewriteUrl}" to "${req.url}"`);
239082
239151
  }
239083
239152
  }
@@ -239104,12 +239173,14 @@ class DevServer {
239104
239173
  statusCode = undefined;
239105
239174
  const phaseRoutes = handleMap.get(phase) || [];
239106
239175
  routeResult = await (0, router_1.devRouter)(prevUrl, req.method, phaseRoutes, this, vercelConfig, prevHeaders, missRoutes, phase);
239107
- prevUrl =
239108
- routeResult.continue && routeResult.dest
239109
- ? getReqUrl(routeResult)
239110
- : req.url;
239111
- prevHeaders =
239112
- routeResult.continue && routeResult.headers ? routeResult.headers : {};
239176
+ if (routeResult.continue) {
239177
+ if (routeResult.dest) {
239178
+ prevUrl = getReqUrl(routeResult);
239179
+ }
239180
+ if (routeResult.headers) {
239181
+ prevHeaders = routeResult.headers;
239182
+ }
239183
+ }
239113
239184
  if (routeResult.isDestUrl) {
239114
239185
  // Mix the `routes` result dest query params into the req path
239115
239186
  const destParsed = url_1.default.parse(routeResult.dest);
@@ -239192,8 +239263,8 @@ class DevServer {
239192
239263
  const requestPath = dest.replace(/^\//, '');
239193
239264
  if (!match) {
239194
239265
  // If the dev command is started, then proxy to it
239195
- if (this.devProcessPort) {
239196
- const upstream = `http://127.0.0.1:${this.devProcessPort}`;
239266
+ if (this.devProcessOrigin) {
239267
+ const upstream = this.devProcessOrigin;
239197
239268
  debug(`Proxying to frontend dev server: ${upstream}`);
239198
239269
  // Add the Vercel platform proxy request headers
239199
239270
  const headers = this.getProxyHeaders(req, requestId, false);
@@ -239318,7 +239389,7 @@ class DevServer {
239318
239389
  // Proxy to the dev server:
239319
239390
  // - when there is no asset
239320
239391
  // - when the asset is not a Lambda (the dev server must take care of all static files)
239321
- if (this.devProcessPort &&
239392
+ if (this.devProcessOrigin &&
239322
239393
  (!foundAsset || (foundAsset && foundAsset.asset.type !== 'Lambda'))) {
239323
239394
  debug('Proxying to frontend dev server');
239324
239395
  // Add the Vercel platform proxy request headers
@@ -239327,7 +239398,7 @@ class DevServer {
239327
239398
  req.headers[name] = value;
239328
239399
  }
239329
239400
  this.setResponseHeaders(res, requestId);
239330
- return proxyPass(req, res, `http://127.0.0.1:${this.devProcessPort}`, this, requestId, false);
239401
+ return proxyPass(req, res, this.devProcessOrigin, this, requestId, false);
239331
239402
  }
239332
239403
  if (!foundAsset) {
239333
239404
  await this.send404(req, res, requestId);
@@ -239429,7 +239500,6 @@ class DevServer {
239429
239500
  this.systemEnvValues = options.systemEnvValues || [];
239430
239501
  this.projectEnvs = options.projectEnvs || [];
239431
239502
  this.files = {};
239432
- this.address = '';
239433
239503
  this.originalProjectSettings = options.projectSettings;
239434
239504
  this.projectSettings = options.projectSettings;
239435
239505
  this.caseSensitive = false;
@@ -239440,6 +239510,10 @@ class DevServer {
239440
239510
  ws: true,
239441
239511
  xfwd: true,
239442
239512
  });
239513
+ this.proxy.on('proxyRes', proxyRes => {
239514
+ // override "server" header, like production
239515
+ proxyRes.headers['server'] = 'Vercel';
239516
+ });
239443
239517
  this.server = http_1.default.createServer(this.devServerHandler);
239444
239518
  this.server.timeout = 0; // Disable timeout
239445
239519
  this.stopping = false;
@@ -239458,6 +239532,12 @@ class DevServer {
239458
239532
  this.podId = Math.random().toString(32).slice(-5);
239459
239533
  this.devServerPids = new Set();
239460
239534
  }
239535
+ get address() {
239536
+ if (!this._address) {
239537
+ throw new Error('Invalid access to `address` because `start` has not yet populated `this.address`.');
239538
+ }
239539
+ return this._address;
239540
+ }
239461
239541
  async exit(code = 1) {
239462
239542
  await this.stop(code);
239463
239543
  process.exit(code);
@@ -239819,7 +239899,7 @@ class DevServer {
239819
239899
  let allEnv = { ...buildEnv, ...runEnv };
239820
239900
  // If no .env/.build.env is present, use cloud environment variables
239821
239901
  if (Object.keys(allEnv).length === 0) {
239822
- const cloudEnv = (0, expose_system_envs_1.default)(this.projectEnvs || [], this.systemEnvValues || [], this.projectSettings?.autoExposeSystemEnvs, new url_1.URL(this.address).host);
239902
+ const cloudEnv = (0, expose_system_envs_1.default)(this.projectEnvs || [], this.systemEnvValues || [], this.projectSettings?.autoExposeSystemEnvs, this.address.host);
239823
239903
  allEnv = { ...cloudEnv };
239824
239904
  runEnv = { ...cloudEnv };
239825
239905
  buildEnv = { ...cloudEnv };
@@ -239924,7 +240004,7 @@ class DevServer {
239924
240004
  injectSystemValuesInDotenv(env) {
239925
240005
  for (const name of Object.keys(env)) {
239926
240006
  if (name === 'VERCEL_URL') {
239927
- env['VERCEL_URL'] = new url_1.URL(this.address).host;
240007
+ env['VERCEL_URL'] = this.address.host;
239928
240008
  }
239929
240009
  else if (name === 'VERCEL_REGION') {
239930
240010
  env['VERCEL_REGION'] = 'dev1';
@@ -239985,9 +240065,7 @@ class DevServer {
239985
240065
  }
239986
240066
  }
239987
240067
  }
239988
- this.address = address
239989
- .replace('[::]', 'localhost')
239990
- .replace('127.0.0.1', 'localhost');
240068
+ this._address = new url_1.URL(address.replace('[::]', 'localhost').replace('127.0.0.1', 'localhost'));
239991
240069
  const vercelConfig = await this.getVercelConfig();
239992
240070
  const devCommandPromise = this.runDevCommand();
239993
240071
  const files = await (0, get_files_1.staticFiles)(this.cwd, { output: this.output });
@@ -240059,17 +240137,22 @@ class DevServer {
240059
240137
  // Configure the server to forward WebSocket "upgrade" events to the proxy.
240060
240138
  this.server.on('upgrade', async (req, socket, head) => {
240061
240139
  await this.startPromise;
240062
- if (!this.devProcessPort) {
240140
+ if (!this.devProcessOrigin) {
240063
240141
  this.output.debug(`Detected "upgrade" event, but closing socket because no frontend dev server is running`);
240064
240142
  socket.destroy();
240065
240143
  return;
240066
240144
  }
240067
- const target = `http://127.0.0.1:${this.devProcessPort}`;
240145
+ const target = this.devProcessOrigin;
240068
240146
  this.output.debug(`Detected "upgrade" event, proxying to ${target}`);
240069
240147
  this.proxy.ws(req, socket, head, { target });
240070
240148
  });
240071
240149
  await devCommandPromise;
240072
- this.output.ready(`Available at ${(0, link_1.default)(this.address)}`);
240150
+ let addressFormatted = this.address.toString();
240151
+ if (this.address.pathname === '/' && this.address.protocol === 'http:') {
240152
+ // log address without trailing slash to maintain backwards compatibility
240153
+ addressFormatted = addressFormatted.replace(/\/$/, '');
240154
+ }
240155
+ this.output.ready(`Available at ${(0, link_1.default)(addressFormatted)}`);
240073
240156
  }
240074
240157
  /**
240075
240158
  * Shuts down the `vercel dev` server, and cleans up any temporary resources.
@@ -240433,7 +240516,6 @@ class DevServer {
240433
240516
  }
240434
240517
  }
240435
240518
  this.output.debug(`Spawning dev command: ${command}`);
240436
- const devPort = new url_1.URL(this.address).port;
240437
240519
  const proxyPort = new RegExp(port.toString(), 'g');
240438
240520
  const p = (0, build_utils_1.spawnCommand)(command, {
240439
240521
  stdio: ['inherit', 'pipe', 'pipe'],
@@ -240447,14 +240529,14 @@ class DevServer {
240447
240529
  p.stderr.pipe(process.stderr);
240448
240530
  p.stdout.setEncoding('utf8');
240449
240531
  p.stdout.on('data', (data) => {
240450
- process.stdout.write(data.replace(proxyPort, devPort));
240532
+ process.stdout.write(data.replace(proxyPort, this.address.port));
240451
240533
  });
240452
240534
  p.on('exit', (code, signal) => {
240453
240535
  this.output.debug(`Dev command exited with "${signal || code}"`);
240454
- this.devProcessPort = undefined;
240536
+ this.devProcessOrigin = undefined;
240455
240537
  });
240456
- await checkForPort(port, 1000 * 60 * 5);
240457
- this.devProcessPort = port;
240538
+ const devProcessHost = await checkForPort(port, 1000 * 60 * 5);
240539
+ this.devProcessOrigin = `http://${devProcessHost}:${port}`;
240458
240540
  }
240459
240541
  }
240460
240542
  exports.default = DevServer;
@@ -240648,14 +240730,27 @@ function needsBlockingBuild(buildMatch) {
240648
240730
  return typeof builder.shouldServe !== 'function';
240649
240731
  }
240650
240732
  async function checkForPort(port, timeout) {
240651
- const opts = { host: '127.0.0.1' };
240733
+ let host;
240652
240734
  const start = Date.now();
240653
- while (!(await (0, is_port_reachable_1.default)(port, opts))) {
240735
+ while (!(host = await getReachableHostOnPort(port))) {
240654
240736
  if (Date.now() - start > timeout) {
240655
- throw new Error(`Detecting port ${port} timed out after ${timeout}ms`);
240737
+ break;
240656
240738
  }
240657
240739
  await (0, sleep_1.default)(100);
240658
240740
  }
240741
+ if (!host) {
240742
+ throw new Error(`Detecting port ${port} timed out after ${timeout}ms`);
240743
+ }
240744
+ return host;
240745
+ }
240746
+ async function getReachableHostOnPort(port) {
240747
+ const optsIpv4 = { host: '127.0.0.1' };
240748
+ const optsIpv6 = { host: '::1' };
240749
+ const results = await Promise.all([
240750
+ (0, is_port_reachable_1.default)(port, optsIpv6).then(r => r && `[${optsIpv6.host}]`),
240751
+ (0, is_port_reachable_1.default)(port, optsIpv4).then(r => r && optsIpv4.host),
240752
+ ]);
240753
+ return results.find(Boolean) || false;
240659
240754
  }
240660
240755
  function filterFrontendBuilds(build) {
240661
240756
  const { name } = (0, npm_package_arg_1.default)(build.use);
@@ -249433,7 +249528,7 @@ module.exports = JSON.parse("{\"application/1d-interleaved-parityfec\":{\"source
249433
249528
  /***/ ((module) => {
249434
249529
 
249435
249530
  "use strict";
249436
- module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.2.2\",\"preferGlobal\":true,\"license\":\"Apache-2.0\",\"description\":\"The command-line interface for Vercel\",\"homepage\":\"https://vercel.com\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/vercel/vercel.git\",\"directory\":\"packages/cli\"},\"scripts\":{\"preinstall\":\"node ./scripts/preinstall.js\",\"test\":\"jest --env node --verbose --runInBand --bail --forceExit\",\"test-unit\":\"yarn test test/unit/\",\"test-integration-cli\":\"rimraf test/fixtures/integration && ava test/integration.js --serial --fail-fast --verbose\",\"test-integration-dev\":\"yarn test test/dev/\",\"coverage\":\"codecov\",\"build\":\"ts-node ./scripts/build.ts\",\"dev\":\"ts-node ./src/index.ts\"},\"bin\":{\"vc\":\"./dist/index.js\",\"vercel\":\"./dist/index.js\"},\"files\":[\"dist\",\"scripts/preinstall.js\"],\"ava\":{\"extensions\":[\"ts\"],\"require\":[\"ts-node/register/transpile-only\",\"esm\"]},\"engines\":{\"node\":\">= 14\"},\"dependencies\":{\"@vercel/build-utils\":\"5.4.1\",\"@vercel/go\":\"2.2.4\",\"@vercel/hydrogen\":\"0.0.17\",\"@vercel/next\":\"3.1.24\",\"@vercel/node\":\"2.5.13\",\"@vercel/python\":\"3.1.13\",\"@vercel/redwood\":\"1.0.22\",\"@vercel/remix\":\"1.0.23\",\"@vercel/ruby\":\"1.3.30\",\"@vercel/static-build\":\"1.0.21\",\"update-notifier\":\"5.1.0\"},\"devDependencies\":{\"@alex_neo/jest-expect-message\":\"1.0.5\",\"@next/env\":\"11.1.2\",\"@sentry/node\":\"5.5.0\",\"@sindresorhus/slugify\":\"0.11.0\",\"@swc/core\":\"1.2.218\",\"@tootallnate/once\":\"1.1.2\",\"@types/ansi-escapes\":\"3.0.0\",\"@types/ansi-regex\":\"4.0.0\",\"@types/async-retry\":\"1.2.1\",\"@types/bytes\":\"3.0.0\",\"@types/chance\":\"1.1.3\",\"@types/debug\":\"0.0.31\",\"@types/dotenv\":\"6.1.1\",\"@types/escape-html\":\"0.0.20\",\"@types/express\":\"4.17.13\",\"@types/fs-extra\":\"9.0.13\",\"@types/glob\":\"7.1.1\",\"@types/http-proxy\":\"1.16.2\",\"@types/ini\":\"1.3.31\",\"@types/inquirer\":\"7.3.1\",\"@types/jest\":\"27.4.1\",\"@types/jest-expect-message\":\"1.0.3\",\"@types/load-json-file\":\"2.0.7\",\"@types/mime-types\":\"2.1.0\",\"@types/minimatch\":\"3.0.3\",\"@types/mri\":\"1.1.0\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"11.11.0\",\"@types/node-fetch\":\"2.5.10\",\"@types/npm-package-arg\":\"6.1.0\",\"@types/pluralize\":\"0.0.29\",\"@types/psl\":\"1.1.0\",\"@types/semver\":\"6.0.1\",\"@types/tar-fs\":\"1.16.1\",\"@types/text-table\":\"0.2.0\",\"@types/title\":\"3.4.1\",\"@types/universal-analytics\":\"0.4.2\",\"@types/update-notifier\":\"5.1.0\",\"@types/which\":\"1.3.2\",\"@types/write-json-file\":\"2.2.1\",\"@types/yauzl-promise\":\"2.1.0\",\"@vercel/client\":\"12.2.3\",\"@vercel/frameworks\":\"1.1.3\",\"@vercel/fs-detectors\":\"2.1.0\",\"@vercel/fun\":\"1.0.4\",\"@vercel/ncc\":\"0.24.0\",\"@zeit/source-map-support\":\"0.6.2\",\"ajv\":\"6.12.2\",\"alpha-sort\":\"2.0.1\",\"ansi-escapes\":\"3.0.0\",\"ansi-regex\":\"3.0.0\",\"arg\":\"5.0.0\",\"async-listen\":\"1.2.0\",\"async-retry\":\"1.1.3\",\"async-sema\":\"2.1.4\",\"ava\":\"2.2.0\",\"boxen\":\"4.2.0\",\"bytes\":\"3.0.0\",\"chalk\":\"4.1.0\",\"chance\":\"1.1.7\",\"chokidar\":\"3.3.1\",\"codecov\":\"3.8.2\",\"cpy\":\"7.2.0\",\"date-fns\":\"1.29.0\",\"debug\":\"3.1.0\",\"dot\":\"1.1.3\",\"dotenv\":\"4.0.0\",\"email-prompt\":\"0.3.2\",\"email-validator\":\"1.1.1\",\"epipebomb\":\"1.0.0\",\"escape-html\":\"1.0.3\",\"esm\":\"3.1.4\",\"execa\":\"3.2.0\",\"express\":\"4.17.1\",\"fast-deep-equal\":\"3.1.3\",\"fs-extra\":\"10.0.0\",\"get-port\":\"5.1.1\",\"git-last-commit\":\"1.0.1\",\"glob\":\"7.1.2\",\"http-proxy\":\"1.18.1\",\"ini\":\"3.0.0\",\"inquirer\":\"7.0.4\",\"is-docker\":\"2.2.1\",\"is-port-reachable\":\"3.1.0\",\"is-url\":\"1.2.2\",\"jaro-winkler\":\"0.2.8\",\"jsonlines\":\"0.1.1\",\"load-json-file\":\"3.0.0\",\"mime-types\":\"2.1.24\",\"minimatch\":\"3.0.4\",\"mri\":\"1.1.5\",\"ms\":\"2.1.2\",\"node-fetch\":\"2.6.7\",\"npm-package-arg\":\"6.1.0\",\"open\":\"8.4.0\",\"ora\":\"3.4.0\",\"pcre-to-regexp\":\"1.0.0\",\"pluralize\":\"7.0.0\",\"promisepipe\":\"3.0.0\",\"psl\":\"1.1.31\",\"qr-image\":\"3.2.0\",\"raw-body\":\"2.4.1\",\"rimraf\":\"3.0.2\",\"semver\":\"5.5.0\",\"serve-handler\":\"6.1.1\",\"strip-ansi\":\"5.2.0\",\"stripe\":\"5.1.0\",\"tar-fs\":\"1.16.3\",\"test-listen\":\"1.1.0\",\"text-table\":\"0.2.0\",\"title\":\"3.4.1\",\"tmp-promise\":\"1.0.3\",\"tree-kill\":\"1.2.2\",\"ts-node\":\"10.9.1\",\"typescript\":\"4.7.4\",\"universal-analytics\":\"0.4.20\",\"utility-types\":\"2.1.0\",\"which\":\"2.0.2\",\"write-json-file\":\"2.2.0\",\"xdg-app-paths\":\"5.1.0\",\"yauzl-promise\":\"2.1.3\"},\"jest\":{\"preset\":\"ts-jest\",\"globals\":{\"ts-jest\":{\"diagnostics\":false,\"isolatedModules\":true}},\"setupFilesAfterEnv\":[\"@alex_neo/jest-expect-message\"],\"verbose\":false,\"testEnvironment\":\"node\",\"testMatch\":[\"<rootDir>/test/**/*.test.ts\"]}}");
249531
+ module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.2.5\",\"preferGlobal\":true,\"license\":\"Apache-2.0\",\"description\":\"The command-line interface for Vercel\",\"homepage\":\"https://vercel.com\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/vercel/vercel.git\",\"directory\":\"packages/cli\"},\"scripts\":{\"preinstall\":\"node ./scripts/preinstall.js\",\"test\":\"jest --env node --verbose --runInBand --bail --forceExit\",\"test-unit\":\"yarn test test/unit/\",\"test-integration-cli\":\"rimraf test/fixtures/integration && ava test/integration.js --serial --fail-fast --verbose\",\"test-integration-dev\":\"yarn test test/dev/\",\"coverage\":\"codecov\",\"build\":\"ts-node ./scripts/build.ts\",\"dev\":\"ts-node ./src/index.ts\"},\"bin\":{\"vc\":\"./dist/index.js\",\"vercel\":\"./dist/index.js\"},\"files\":[\"dist\",\"scripts/preinstall.js\"],\"ava\":{\"extensions\":[\"ts\"],\"require\":[\"ts-node/register/transpile-only\",\"esm\"]},\"engines\":{\"node\":\">= 14\"},\"dependencies\":{\"@vercel/build-utils\":\"5.4.2\",\"@vercel/go\":\"2.2.5\",\"@vercel/hydrogen\":\"0.0.18\",\"@vercel/next\":\"3.1.25\",\"@vercel/node\":\"2.5.14\",\"@vercel/python\":\"3.1.14\",\"@vercel/redwood\":\"1.0.23\",\"@vercel/remix\":\"1.0.24\",\"@vercel/ruby\":\"1.3.31\",\"@vercel/static-build\":\"1.0.23\",\"update-notifier\":\"5.1.0\"},\"devDependencies\":{\"@alex_neo/jest-expect-message\":\"1.0.5\",\"@next/env\":\"11.1.2\",\"@sentry/node\":\"5.5.0\",\"@sindresorhus/slugify\":\"0.11.0\",\"@swc/core\":\"1.2.218\",\"@tootallnate/once\":\"1.1.2\",\"@types/ansi-escapes\":\"3.0.0\",\"@types/ansi-regex\":\"4.0.0\",\"@types/async-retry\":\"1.2.1\",\"@types/bytes\":\"3.0.0\",\"@types/chance\":\"1.1.3\",\"@types/debug\":\"0.0.31\",\"@types/dotenv\":\"6.1.1\",\"@types/escape-html\":\"0.0.20\",\"@types/express\":\"4.17.13\",\"@types/fs-extra\":\"9.0.13\",\"@types/glob\":\"7.1.1\",\"@types/http-proxy\":\"1.16.2\",\"@types/ini\":\"1.3.31\",\"@types/inquirer\":\"7.3.1\",\"@types/jest\":\"27.4.1\",\"@types/jest-expect-message\":\"1.0.3\",\"@types/load-json-file\":\"2.0.7\",\"@types/mime-types\":\"2.1.0\",\"@types/minimatch\":\"3.0.3\",\"@types/mri\":\"1.1.0\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"11.11.0\",\"@types/node-fetch\":\"2.5.10\",\"@types/npm-package-arg\":\"6.1.0\",\"@types/pluralize\":\"0.0.29\",\"@types/psl\":\"1.1.0\",\"@types/semver\":\"6.0.1\",\"@types/tar-fs\":\"1.16.1\",\"@types/text-table\":\"0.2.0\",\"@types/title\":\"3.4.1\",\"@types/universal-analytics\":\"0.4.2\",\"@types/update-notifier\":\"5.1.0\",\"@types/which\":\"1.3.2\",\"@types/write-json-file\":\"2.2.1\",\"@types/yauzl-promise\":\"2.1.0\",\"@vercel/client\":\"12.2.4\",\"@vercel/frameworks\":\"1.1.5\",\"@vercel/fs-detectors\":\"3.2.0\",\"@vercel/fun\":\"1.0.4\",\"@vercel/ncc\":\"0.24.0\",\"@zeit/source-map-support\":\"0.6.2\",\"ajv\":\"6.12.2\",\"alpha-sort\":\"2.0.1\",\"ansi-escapes\":\"3.0.0\",\"ansi-regex\":\"3.0.0\",\"arg\":\"5.0.0\",\"async-listen\":\"1.2.0\",\"async-retry\":\"1.1.3\",\"async-sema\":\"2.1.4\",\"ava\":\"2.2.0\",\"boxen\":\"4.2.0\",\"bytes\":\"3.0.0\",\"chalk\":\"4.1.0\",\"chance\":\"1.1.7\",\"chokidar\":\"3.3.1\",\"codecov\":\"3.8.2\",\"cpy\":\"7.2.0\",\"date-fns\":\"1.29.0\",\"debug\":\"3.1.0\",\"dot\":\"1.1.3\",\"dotenv\":\"4.0.0\",\"email-prompt\":\"0.3.2\",\"email-validator\":\"1.1.1\",\"epipebomb\":\"1.0.0\",\"escape-html\":\"1.0.3\",\"esm\":\"3.1.4\",\"execa\":\"3.2.0\",\"express\":\"4.17.1\",\"fast-deep-equal\":\"3.1.3\",\"fs-extra\":\"10.0.0\",\"get-port\":\"5.1.1\",\"git-last-commit\":\"1.0.1\",\"glob\":\"7.1.2\",\"http-proxy\":\"1.18.1\",\"ini\":\"3.0.0\",\"inquirer\":\"7.0.4\",\"is-docker\":\"2.2.1\",\"is-port-reachable\":\"3.1.0\",\"is-url\":\"1.2.2\",\"jaro-winkler\":\"0.2.8\",\"jsonlines\":\"0.1.1\",\"load-json-file\":\"3.0.0\",\"mime-types\":\"2.1.24\",\"minimatch\":\"3.0.4\",\"mri\":\"1.1.5\",\"ms\":\"2.1.2\",\"node-fetch\":\"2.6.7\",\"npm-package-arg\":\"6.1.0\",\"open\":\"8.4.0\",\"ora\":\"3.4.0\",\"pcre-to-regexp\":\"1.0.0\",\"pluralize\":\"7.0.0\",\"promisepipe\":\"3.0.0\",\"psl\":\"1.1.31\",\"qr-image\":\"3.2.0\",\"raw-body\":\"2.4.1\",\"rimraf\":\"3.0.2\",\"semver\":\"5.5.0\",\"serve-handler\":\"6.1.1\",\"strip-ansi\":\"5.2.0\",\"stripe\":\"5.1.0\",\"tar-fs\":\"1.16.3\",\"test-listen\":\"1.1.0\",\"text-table\":\"0.2.0\",\"title\":\"3.4.1\",\"tmp-promise\":\"1.0.3\",\"tree-kill\":\"1.2.2\",\"ts-node\":\"10.9.1\",\"typescript\":\"4.7.4\",\"universal-analytics\":\"0.4.20\",\"utility-types\":\"2.1.0\",\"which\":\"2.0.2\",\"write-json-file\":\"2.2.0\",\"xdg-app-paths\":\"5.1.0\",\"yauzl-promise\":\"2.1.3\"},\"jest\":{\"preset\":\"ts-jest\",\"globals\":{\"ts-jest\":{\"diagnostics\":false,\"isolatedModules\":true}},\"setupFilesAfterEnv\":[\"@alex_neo/jest-expect-message\"],\"verbose\":false,\"testEnvironment\":\"node\",\"testMatch\":[\"<rootDir>/test/**/*.test.ts\"]}}");
249437
249532
 
249438
249533
  /***/ }),
249439
249534
 
@@ -249441,7 +249536,7 @@ module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.2.2\",\"prefe
249441
249536
  /***/ ((module) => {
249442
249537
 
249443
249538
  "use strict";
249444
- module.exports = JSON.parse("{\"name\":\"@vercel/client\",\"version\":\"12.2.3\",\"main\":\"dist/index.js\",\"typings\":\"dist/index.d.ts\",\"homepage\":\"https://vercel.com\",\"license\":\"MIT\",\"files\":[\"dist\"],\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/vercel/vercel.git\",\"directory\":\"packages/client\"},\"scripts\":{\"build\":\"tsc\",\"test-integration-once\":\"yarn test tests/create-deployment.test.ts tests/create-legacy-deployment.test.ts tests/paths.test.ts\",\"test\":\"jest --env node --verbose --runInBand --bail\",\"test-unit\":\"yarn test tests/unit.*test.*\"},\"engines\":{\"node\":\">= 14\"},\"devDependencies\":{\"@types/async-retry\":\"1.4.1\",\"@types/fs-extra\":\"7.0.0\",\"@types/jest\":\"27.4.1\",\"@types/minimatch\":\"3.0.5\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"12.0.4\",\"@types/node-fetch\":\"2.5.4\",\"@types/recursive-readdir\":\"2.2.0\",\"@types/tar-fs\":\"1.16.1\",\"typescript\":\"4.3.4\"},\"jest\":{\"preset\":\"ts-jest\",\"testEnvironment\":\"node\",\"verbose\":false,\"setupFilesAfterEnv\":[\"<rootDir>/tests/setup/index.ts\"]},\"dependencies\":{\"@vercel/build-utils\":\"5.4.1\",\"@vercel/routing-utils\":\"2.0.2\",\"@zeit/fetch\":\"5.2.0\",\"async-retry\":\"1.2.3\",\"async-sema\":\"3.0.0\",\"fs-extra\":\"8.0.1\",\"ignore\":\"4.0.6\",\"minimatch\":\"5.0.1\",\"ms\":\"2.1.2\",\"node-fetch\":\"2.6.7\",\"querystring\":\"^0.2.0\",\"sleep-promise\":\"8.0.1\",\"tar-fs\":\"1.16.3\"}}");
249539
+ module.exports = JSON.parse("{\"name\":\"@vercel/client\",\"version\":\"12.2.4\",\"main\":\"dist/index.js\",\"typings\":\"dist/index.d.ts\",\"homepage\":\"https://vercel.com\",\"license\":\"MIT\",\"files\":[\"dist\"],\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/vercel/vercel.git\",\"directory\":\"packages/client\"},\"scripts\":{\"build\":\"tsc\",\"test-integration-once\":\"yarn test tests/create-deployment.test.ts tests/create-legacy-deployment.test.ts tests/paths.test.ts\",\"test\":\"jest --env node --verbose --runInBand --bail\",\"test-unit\":\"yarn test tests/unit.*test.*\"},\"engines\":{\"node\":\">= 14\"},\"devDependencies\":{\"@types/async-retry\":\"1.4.1\",\"@types/fs-extra\":\"7.0.0\",\"@types/jest\":\"27.4.1\",\"@types/minimatch\":\"3.0.5\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"12.0.4\",\"@types/node-fetch\":\"2.5.4\",\"@types/recursive-readdir\":\"2.2.0\",\"@types/tar-fs\":\"1.16.1\",\"typescript\":\"4.3.4\"},\"jest\":{\"preset\":\"ts-jest\",\"testEnvironment\":\"node\",\"verbose\":false,\"setupFilesAfterEnv\":[\"<rootDir>/tests/setup/index.ts\"]},\"dependencies\":{\"@vercel/build-utils\":\"5.4.2\",\"@vercel/routing-utils\":\"2.0.2\",\"@zeit/fetch\":\"5.2.0\",\"async-retry\":\"1.2.3\",\"async-sema\":\"3.0.0\",\"fs-extra\":\"8.0.1\",\"ignore\":\"4.0.6\",\"minimatch\":\"5.0.1\",\"ms\":\"2.1.2\",\"node-fetch\":\"2.6.7\",\"querystring\":\"^0.2.0\",\"sleep-promise\":\"8.0.1\",\"tar-fs\":\"1.16.3\"}}");
249445
249540
 
249446
249541
  /***/ }),
249447
249542
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vercel",
3
- "version": "28.2.2",
3
+ "version": "28.2.5",
4
4
  "preferGlobal": true,
5
5
  "license": "Apache-2.0",
6
6
  "description": "The command-line interface for Vercel",
@@ -41,16 +41,16 @@
41
41
  "node": ">= 14"
42
42
  },
43
43
  "dependencies": {
44
- "@vercel/build-utils": "5.4.1",
45
- "@vercel/go": "2.2.4",
46
- "@vercel/hydrogen": "0.0.17",
47
- "@vercel/next": "3.1.24",
48
- "@vercel/node": "2.5.13",
49
- "@vercel/python": "3.1.13",
50
- "@vercel/redwood": "1.0.22",
51
- "@vercel/remix": "1.0.23",
52
- "@vercel/ruby": "1.3.30",
53
- "@vercel/static-build": "1.0.21",
44
+ "@vercel/build-utils": "5.4.2",
45
+ "@vercel/go": "2.2.5",
46
+ "@vercel/hydrogen": "0.0.18",
47
+ "@vercel/next": "3.1.25",
48
+ "@vercel/node": "2.5.14",
49
+ "@vercel/python": "3.1.14",
50
+ "@vercel/redwood": "1.0.23",
51
+ "@vercel/remix": "1.0.24",
52
+ "@vercel/ruby": "1.3.31",
53
+ "@vercel/static-build": "1.0.23",
54
54
  "update-notifier": "5.1.0"
55
55
  },
56
56
  "devDependencies": {
@@ -95,9 +95,9 @@
95
95
  "@types/which": "1.3.2",
96
96
  "@types/write-json-file": "2.2.1",
97
97
  "@types/yauzl-promise": "2.1.0",
98
- "@vercel/client": "12.2.3",
99
- "@vercel/frameworks": "1.1.3",
100
- "@vercel/fs-detectors": "2.1.0",
98
+ "@vercel/client": "12.2.4",
99
+ "@vercel/frameworks": "1.1.5",
100
+ "@vercel/fs-detectors": "3.2.0",
101
101
  "@vercel/fun": "1.0.4",
102
102
  "@vercel/ncc": "0.24.0",
103
103
  "@zeit/source-map-support": "0.6.2",
@@ -193,5 +193,5 @@
193
193
  "<rootDir>/test/**/*.test.ts"
194
194
  ]
195
195
  },
196
- "gitHead": "3ff93279cd53bbfb620d27c93ca59d28917a5598"
196
+ "gitHead": "b5c3610113da7fedcba994151da5565584ca2023"
197
197
  }