vercel 28.2.4 → 28.3.0

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 +353 -641
  2. package/package.json +15 -15
package/dist/index.js CHANGED
@@ -189360,15 +189360,51 @@ exports.fromPromise = function (fn) {
189360
189360
  }
189361
189361
 
189362
189362
 
189363
+ /***/ }),
189364
+
189365
+ /***/ 6548:
189366
+ /***/ ((__unused_webpack_module, exports) => {
189367
+
189368
+ "use strict";
189369
+
189370
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
189371
+ exports.cloneEnv = void 0;
189372
+ const { hasOwnProperty } = Object.prototype;
189373
+ /**
189374
+ * Clones zero or more objects into a single new object while ensuring that the
189375
+ * `PATH` environment variable is defined when the `PATH` or `Path` environment
189376
+ * variables are defined.
189377
+ *
189378
+ * @param {Object} [...envs] Objects and/or `process.env` to clone and merge
189379
+ * @returns {Object} The new object
189380
+ */
189381
+ function cloneEnv(...envs) {
189382
+ return envs.reduce((obj, env) => {
189383
+ if (env === undefined || env === null) {
189384
+ return obj;
189385
+ }
189386
+ // the system path is called `Path` on Windows and Node.js will
189387
+ // automatically return the system path when accessing `PATH`,
189388
+ // however we lose this proxied value when we destructure and
189389
+ // thus we must explicitly copy it
189390
+ if (hasOwnProperty.call(env, 'PATH') || hasOwnProperty.call(env, 'Path')) {
189391
+ obj.PATH = env.PATH;
189392
+ }
189393
+ return Object.assign(obj, env);
189394
+ }, {});
189395
+ }
189396
+ exports.cloneEnv = cloneEnv;
189397
+
189398
+
189363
189399
  /***/ }),
189364
189400
 
189365
189401
  /***/ 1868:
189366
- /***/ ((__unused_webpack_module, exports, __nested_webpack_require_833301__) => {
189402
+ /***/ ((__unused_webpack_module, exports, __nested_webpack_require_834453__) => {
189367
189403
 
189368
189404
  "use strict";
189369
189405
 
189370
189406
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189371
- const get_platform_env_1 = __nested_webpack_require_833301__(4678);
189407
+ const get_platform_env_1 = __nested_webpack_require_834453__(4678);
189372
189408
  function debug(message, ...additional) {
189373
189409
  if (get_platform_env_1.getPlatformEnv('BUILDER_DEBUG')) {
189374
189410
  console.log(message, ...additional);
@@ -189503,7 +189539,7 @@ function getSuggestion(topLevelProp, additionalProperty) {
189503
189539
  /***/ }),
189504
189540
 
189505
189541
  /***/ 2397:
189506
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_837651__) {
189542
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_838803__) {
189507
189543
 
189508
189544
  "use strict";
189509
189545
 
@@ -189511,8 +189547,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
189511
189547
  return (mod && mod.__esModule) ? mod : { "default": mod };
189512
189548
  };
189513
189549
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189514
- const assert_1 = __importDefault(__nested_webpack_require_837651__(2357));
189515
- const into_stream_1 = __importDefault(__nested_webpack_require_837651__(6130));
189550
+ const assert_1 = __importDefault(__nested_webpack_require_838803__(2357));
189551
+ const into_stream_1 = __importDefault(__nested_webpack_require_838803__(6130));
189516
189552
  class FileBlob {
189517
189553
  constructor({ mode = 0o100644, contentType, data }) {
189518
189554
  assert_1.default(typeof mode === 'number');
@@ -189547,7 +189583,7 @@ exports.default = FileBlob;
189547
189583
  /***/ }),
189548
189584
 
189549
189585
  /***/ 9331:
189550
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_839169__) {
189586
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_840321__) {
189551
189587
 
189552
189588
  "use strict";
189553
189589
 
@@ -189555,11 +189591,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
189555
189591
  return (mod && mod.__esModule) ? mod : { "default": mod };
189556
189592
  };
189557
189593
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189558
- const assert_1 = __importDefault(__nested_webpack_require_839169__(2357));
189559
- const fs_extra_1 = __importDefault(__nested_webpack_require_839169__(5392));
189560
- const multistream_1 = __importDefault(__nested_webpack_require_839169__(8179));
189561
- const path_1 = __importDefault(__nested_webpack_require_839169__(5622));
189562
- const async_sema_1 = __importDefault(__nested_webpack_require_839169__(5758));
189594
+ const assert_1 = __importDefault(__nested_webpack_require_840321__(2357));
189595
+ const fs_extra_1 = __importDefault(__nested_webpack_require_840321__(5392));
189596
+ const multistream_1 = __importDefault(__nested_webpack_require_840321__(8179));
189597
+ const path_1 = __importDefault(__nested_webpack_require_840321__(5622));
189598
+ const async_sema_1 = __importDefault(__nested_webpack_require_840321__(5758));
189563
189599
  const semaToPreventEMFILE = new async_sema_1.default(20);
189564
189600
  class FileFsRef {
189565
189601
  constructor({ mode = 0o100644, contentType, fsPath }) {
@@ -189625,7 +189661,7 @@ exports.default = FileFsRef;
189625
189661
  /***/ }),
189626
189662
 
189627
189663
  /***/ 5187:
189628
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_841973__) {
189664
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_843125__) {
189629
189665
 
189630
189666
  "use strict";
189631
189667
 
@@ -189633,11 +189669,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
189633
189669
  return (mod && mod.__esModule) ? mod : { "default": mod };
189634
189670
  };
189635
189671
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189636
- const assert_1 = __importDefault(__nested_webpack_require_841973__(2357));
189637
- const node_fetch_1 = __importDefault(__nested_webpack_require_841973__(2197));
189638
- const multistream_1 = __importDefault(__nested_webpack_require_841973__(8179));
189639
- const async_retry_1 = __importDefault(__nested_webpack_require_841973__(3691));
189640
- const async_sema_1 = __importDefault(__nested_webpack_require_841973__(5758));
189672
+ const assert_1 = __importDefault(__nested_webpack_require_843125__(2357));
189673
+ const node_fetch_1 = __importDefault(__nested_webpack_require_843125__(2197));
189674
+ const multistream_1 = __importDefault(__nested_webpack_require_843125__(8179));
189675
+ const async_retry_1 = __importDefault(__nested_webpack_require_843125__(3691));
189676
+ const async_sema_1 = __importDefault(__nested_webpack_require_843125__(5758));
189641
189677
  const semaToDownloadFromS3 = new async_sema_1.default(5);
189642
189678
  class BailableError extends Error {
189643
189679
  constructor(...args) {
@@ -189718,7 +189754,7 @@ exports.default = FileRef;
189718
189754
  /***/ }),
189719
189755
 
189720
189756
  /***/ 1611:
189721
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_845374__) {
189757
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_846526__) {
189722
189758
 
189723
189759
  "use strict";
189724
189760
 
@@ -189727,11 +189763,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
189727
189763
  };
189728
189764
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189729
189765
  exports.downloadFile = exports.isSymbolicLink = void 0;
189730
- const path_1 = __importDefault(__nested_webpack_require_845374__(5622));
189731
- const debug_1 = __importDefault(__nested_webpack_require_845374__(1868));
189732
- const file_fs_ref_1 = __importDefault(__nested_webpack_require_845374__(9331));
189733
- const fs_extra_1 = __nested_webpack_require_845374__(5392);
189734
- const stream_to_buffer_1 = __importDefault(__nested_webpack_require_845374__(2560));
189766
+ const path_1 = __importDefault(__nested_webpack_require_846526__(5622));
189767
+ const debug_1 = __importDefault(__nested_webpack_require_846526__(1868));
189768
+ const file_fs_ref_1 = __importDefault(__nested_webpack_require_846526__(9331));
189769
+ const fs_extra_1 = __nested_webpack_require_846526__(5392);
189770
+ const stream_to_buffer_1 = __importDefault(__nested_webpack_require_846526__(2560));
189735
189771
  const S_IFMT = 61440; /* 0170000 type of file */
189736
189772
  const S_IFLNK = 40960; /* 0120000 symbolic link */
189737
189773
  function isSymbolicLink(mode) {
@@ -189822,14 +189858,14 @@ exports.default = download;
189822
189858
  /***/ }),
189823
189859
 
189824
189860
  /***/ 3838:
189825
- /***/ ((__unused_webpack_module, exports, __nested_webpack_require_849809__) => {
189861
+ /***/ ((__unused_webpack_module, exports, __nested_webpack_require_850961__) => {
189826
189862
 
189827
189863
  "use strict";
189828
189864
 
189829
189865
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189830
- const path_1 = __nested_webpack_require_849809__(5622);
189831
- const os_1 = __nested_webpack_require_849809__(2087);
189832
- const fs_extra_1 = __nested_webpack_require_849809__(5392);
189866
+ const path_1 = __nested_webpack_require_850961__(5622);
189867
+ const os_1 = __nested_webpack_require_850961__(2087);
189868
+ const fs_extra_1 = __nested_webpack_require_850961__(5392);
189833
189869
  async function getWritableDirectory() {
189834
189870
  const name = Math.floor(Math.random() * 0x7fffffff).toString(16);
189835
189871
  const directory = path_1.join(os_1.tmpdir(), name);
@@ -189842,7 +189878,7 @@ exports.default = getWritableDirectory;
189842
189878
  /***/ }),
189843
189879
 
189844
189880
  /***/ 4240:
189845
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_850389__) {
189881
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_851541__) {
189846
189882
 
189847
189883
  "use strict";
189848
189884
 
@@ -189850,13 +189886,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
189850
189886
  return (mod && mod.__esModule) ? mod : { "default": mod };
189851
189887
  };
189852
189888
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189853
- const path_1 = __importDefault(__nested_webpack_require_850389__(5622));
189854
- const assert_1 = __importDefault(__nested_webpack_require_850389__(2357));
189855
- const glob_1 = __importDefault(__nested_webpack_require_850389__(1104));
189856
- const util_1 = __nested_webpack_require_850389__(1669);
189857
- const fs_extra_1 = __nested_webpack_require_850389__(5392);
189858
- const normalize_path_1 = __nested_webpack_require_850389__(6261);
189859
- const file_fs_ref_1 = __importDefault(__nested_webpack_require_850389__(9331));
189889
+ const path_1 = __importDefault(__nested_webpack_require_851541__(5622));
189890
+ const assert_1 = __importDefault(__nested_webpack_require_851541__(2357));
189891
+ const glob_1 = __importDefault(__nested_webpack_require_851541__(1104));
189892
+ const util_1 = __nested_webpack_require_851541__(1669);
189893
+ const fs_extra_1 = __nested_webpack_require_851541__(5392);
189894
+ const normalize_path_1 = __nested_webpack_require_851541__(6261);
189895
+ const file_fs_ref_1 = __importDefault(__nested_webpack_require_851541__(9331));
189860
189896
  const vanillaGlob = util_1.promisify(glob_1.default);
189861
189897
  async function glob(pattern, opts, mountpoint) {
189862
189898
  let options;
@@ -189903,7 +189939,7 @@ exports.default = glob;
189903
189939
  /***/ }),
189904
189940
 
189905
189941
  /***/ 7903:
189906
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_852610__) {
189942
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_853762__) {
189907
189943
 
189908
189944
  "use strict";
189909
189945
 
@@ -189912,9 +189948,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
189912
189948
  };
189913
189949
  Object.defineProperty(exports, "__esModule", ({ value: true }));
189914
189950
  exports.getSupportedNodeVersion = exports.getDiscontinuedNodeVersions = exports.getLatestNodeVersion = void 0;
189915
- const semver_1 = __nested_webpack_require_852610__(2879);
189916
- const errors_1 = __nested_webpack_require_852610__(3983);
189917
- const debug_1 = __importDefault(__nested_webpack_require_852610__(1868));
189951
+ const semver_1 = __nested_webpack_require_853762__(2879);
189952
+ const errors_1 = __nested_webpack_require_853762__(3983);
189953
+ const debug_1 = __importDefault(__nested_webpack_require_853762__(1868));
189918
189954
  const allOptions = [
189919
189955
  { major: 16, range: '16.x', runtime: 'nodejs16.x' },
189920
189956
  { major: 14, range: '14.x', runtime: 'nodejs14.x' },
@@ -190013,7 +190049,7 @@ exports.normalizePath = normalizePath;
190013
190049
  /***/ }),
190014
190050
 
190015
190051
  /***/ 7792:
190016
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_856464__) {
190052
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_857616__) {
190017
190053
 
190018
190054
  "use strict";
190019
190055
 
@@ -190022,9 +190058,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
190022
190058
  };
190023
190059
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190024
190060
  exports.readConfigFile = void 0;
190025
- const js_yaml_1 = __importDefault(__nested_webpack_require_856464__(6540));
190026
- const toml_1 = __importDefault(__nested_webpack_require_856464__(9434));
190027
- const fs_extra_1 = __nested_webpack_require_856464__(5392);
190061
+ const js_yaml_1 = __importDefault(__nested_webpack_require_857616__(6540));
190062
+ const toml_1 = __importDefault(__nested_webpack_require_857616__(9434));
190063
+ const fs_extra_1 = __nested_webpack_require_857616__(5392);
190028
190064
  async function readFileOrNull(file) {
190029
190065
  try {
190030
190066
  const data = await fs_extra_1.readFile(file);
@@ -190079,7 +190115,7 @@ exports.default = rename;
190079
190115
  /***/ }),
190080
190116
 
190081
190117
  /***/ 1442:
190082
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_858257__) {
190118
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_859409__) {
190083
190119
 
190084
190120
  "use strict";
190085
190121
 
@@ -190088,17 +190124,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
190088
190124
  };
190089
190125
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190090
190126
  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.execAsync = exports.spawnAsync = void 0;
190091
- const assert_1 = __importDefault(__nested_webpack_require_858257__(2357));
190092
- const fs_extra_1 = __importDefault(__nested_webpack_require_858257__(5392));
190093
- const path_1 = __importDefault(__nested_webpack_require_858257__(5622));
190094
- const async_sema_1 = __importDefault(__nested_webpack_require_858257__(5758));
190095
- const cross_spawn_1 = __importDefault(__nested_webpack_require_858257__(7618));
190096
- const semver_1 = __nested_webpack_require_858257__(2879);
190097
- const util_1 = __nested_webpack_require_858257__(1669);
190098
- const debug_1 = __importDefault(__nested_webpack_require_858257__(1868));
190099
- const errors_1 = __nested_webpack_require_858257__(3983);
190100
- const node_version_1 = __nested_webpack_require_858257__(7903);
190101
- const read_config_file_1 = __nested_webpack_require_858257__(7792);
190127
+ const assert_1 = __importDefault(__nested_webpack_require_859409__(2357));
190128
+ const fs_extra_1 = __importDefault(__nested_webpack_require_859409__(5392));
190129
+ const path_1 = __importDefault(__nested_webpack_require_859409__(5622));
190130
+ const async_sema_1 = __importDefault(__nested_webpack_require_859409__(5758));
190131
+ const cross_spawn_1 = __importDefault(__nested_webpack_require_859409__(7618));
190132
+ const semver_1 = __nested_webpack_require_859409__(2879);
190133
+ const util_1 = __nested_webpack_require_859409__(1669);
190134
+ const debug_1 = __importDefault(__nested_webpack_require_859409__(1868));
190135
+ const errors_1 = __nested_webpack_require_859409__(3983);
190136
+ const node_version_1 = __nested_webpack_require_859409__(7903);
190137
+ const read_config_file_1 = __nested_webpack_require_859409__(7792);
190138
+ const clone_env_1 = __nested_webpack_require_859409__(6548);
190102
190139
  // Only allow one `runNpmInstall()` invocation to run concurrently
190103
190140
  const runNpmInstallSema = new async_sema_1.default(1);
190104
190141
  function spawnAsync(command, args, opts = {}) {
@@ -190207,7 +190244,7 @@ async function runShellScript(fsPath, args = [], spawnOpts) {
190207
190244
  exports.runShellScript = runShellScript;
190208
190245
  function getSpawnOptions(meta, nodeVersion) {
190209
190246
  const opts = {
190210
- env: { ...process.env },
190247
+ env: clone_env_1.cloneEnv(process.env),
190211
190248
  };
190212
190249
  if (!meta.isDev) {
190213
190250
  let found = false;
@@ -190378,7 +190415,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
190378
190415
  console.log('Installing dependencies...');
190379
190416
  debug_1.default(`Installing to ${destPath}`);
190380
190417
  const opts = { cwd: destPath, ...spawnOpts };
190381
- const env = opts.env ? { ...opts.env } : { ...process.env };
190418
+ const env = clone_env_1.cloneEnv(opts.env || process.env);
190382
190419
  delete env.NODE_ENV;
190383
190420
  opts.env = getEnvForPackageManager({
190384
190421
  cliType,
@@ -190392,6 +190429,17 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
190392
190429
  commandArgs = args
190393
190430
  .filter(a => a !== '--prefer-offline')
190394
190431
  .concat(['install', '--no-audit', '--unsafe-perm']);
190432
+ if (nodeVersion?.major === 16 &&
190433
+ spawnOpts?.env?.VERCEL_NPM_LEGACY_PEER_DEPS === '1' &&
190434
+ spawnOpts?.env?.ENABLE_EXPERIMENTAL_COREPACK !== '1') {
190435
+ // Starting in npm@8.6.0, if you ran `npm install --legacy-peer-deps`,
190436
+ // and then later ran `npm install`, it would fail. So the only way
190437
+ // to safely upgrade npm from npm@8.5.0 is to set this flag. The docs
190438
+ // say this flag is not recommended so its is behind a feature flag
190439
+ // so we can remove it in node@18, which can introduce breaking changes.
190440
+ // See https://docs.npmjs.com/cli/v8/using-npm/config#legacy-peer-deps
190441
+ commandArgs.push('--legacy-peer-deps');
190442
+ }
190395
190443
  }
190396
190444
  else if (cliType === 'pnpm') {
190397
190445
  // PNPM's install command is similar to NPM's but without the audit nonsense
@@ -190485,10 +190533,7 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
190485
190533
  cliType,
190486
190534
  lockfileVersion,
190487
190535
  nodeVersion: undefined,
190488
- env: {
190489
- ...process.env,
190490
- ...spawnOpts?.env,
190491
- },
190536
+ env: clone_env_1.cloneEnv(process.env, spawnOpts?.env),
190492
190537
  }),
190493
190538
  };
190494
190539
  if (cliType === 'npm') {
@@ -190547,7 +190592,7 @@ exports.installDependencies = util_1.deprecate(runNpmInstall, 'installDependenci
190547
190592
  /***/ }),
190548
190593
 
190549
190594
  /***/ 2560:
190550
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_877020__) {
190595
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_878974__) {
190551
190596
 
190552
190597
  "use strict";
190553
190598
 
@@ -190555,7 +190600,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
190555
190600
  return (mod && mod.__esModule) ? mod : { "default": mod };
190556
190601
  };
190557
190602
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190558
- const end_of_stream_1 = __importDefault(__nested_webpack_require_877020__(687));
190603
+ const end_of_stream_1 = __importDefault(__nested_webpack_require_878974__(687));
190559
190604
  function streamToBuffer(stream) {
190560
190605
  return new Promise((resolve, reject) => {
190561
190606
  const buffers = [];
@@ -190584,7 +190629,7 @@ exports.default = streamToBuffer;
190584
190629
  /***/ }),
190585
190630
 
190586
190631
  /***/ 1148:
190587
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_878088__) {
190632
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_880042__) {
190588
190633
 
190589
190634
  "use strict";
190590
190635
 
@@ -190592,9 +190637,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
190592
190637
  return (mod && mod.__esModule) ? mod : { "default": mod };
190593
190638
  };
190594
190639
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190595
- const path_1 = __importDefault(__nested_webpack_require_878088__(5622));
190596
- const fs_extra_1 = __importDefault(__nested_webpack_require_878088__(5392));
190597
- const ignore_1 = __importDefault(__nested_webpack_require_878088__(3556));
190640
+ const path_1 = __importDefault(__nested_webpack_require_880042__(5622));
190641
+ const fs_extra_1 = __importDefault(__nested_webpack_require_880042__(5392));
190642
+ const ignore_1 = __importDefault(__nested_webpack_require_880042__(3556));
190598
190643
  function isCodedError(error) {
190599
190644
  return (error !== null &&
190600
190645
  error !== undefined &&
@@ -190651,13 +190696,13 @@ exports.default = default_1;
190651
190696
  /***/ }),
190652
190697
 
190653
190698
  /***/ 4678:
190654
- /***/ ((__unused_webpack_module, exports, __nested_webpack_require_880462__) => {
190699
+ /***/ ((__unused_webpack_module, exports, __nested_webpack_require_882416__) => {
190655
190700
 
190656
190701
  "use strict";
190657
190702
 
190658
190703
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190659
190704
  exports.getPlatformEnv = void 0;
190660
- const errors_1 = __nested_webpack_require_880462__(3983);
190705
+ const errors_1 = __nested_webpack_require_882416__(3983);
190661
190706
  /**
190662
190707
  * Helper function to support both `VERCEL_` and legacy `NOW_` env vars.
190663
190708
  * Throws an error if *both* env vars are defined.
@@ -190721,7 +190766,7 @@ exports.getPrefixedEnvVars = getPrefixedEnvVars;
190721
190766
  /***/ }),
190722
190767
 
190723
190768
  /***/ 2855:
190724
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_882721__) {
190769
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_884675__) {
190725
190770
 
190726
190771
  "use strict";
190727
190772
 
@@ -190751,32 +190796,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
190751
190796
  return (mod && mod.__esModule) ? mod : { "default": mod };
190752
190797
  };
190753
190798
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190754
- exports.normalizePath = exports.readConfigFile = exports.EdgeFunction = exports.getIgnoreFilter = exports.scanParentDirs = exports.getLambdaOptionsFromFunction = 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.execAsync = 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;
190755
- const file_blob_1 = __importDefault(__nested_webpack_require_882721__(2397));
190799
+ exports.normalizePath = exports.readConfigFile = exports.EdgeFunction = exports.cloneEnv = exports.getIgnoreFilter = exports.scanParentDirs = exports.getLambdaOptionsFromFunction = 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.execAsync = 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;
190800
+ const file_blob_1 = __importDefault(__nested_webpack_require_884675__(2397));
190756
190801
  exports.FileBlob = file_blob_1.default;
190757
- const file_fs_ref_1 = __importDefault(__nested_webpack_require_882721__(9331));
190802
+ const file_fs_ref_1 = __importDefault(__nested_webpack_require_884675__(9331));
190758
190803
  exports.FileFsRef = file_fs_ref_1.default;
190759
- const file_ref_1 = __importDefault(__nested_webpack_require_882721__(5187));
190804
+ const file_ref_1 = __importDefault(__nested_webpack_require_884675__(5187));
190760
190805
  exports.FileRef = file_ref_1.default;
190761
- const lambda_1 = __nested_webpack_require_882721__(6721);
190806
+ const lambda_1 = __nested_webpack_require_884675__(6721);
190762
190807
  Object.defineProperty(exports, "Lambda", ({ enumerable: true, get: function () { return lambda_1.Lambda; } }));
190763
190808
  Object.defineProperty(exports, "createLambda", ({ enumerable: true, get: function () { return lambda_1.createLambda; } }));
190764
190809
  Object.defineProperty(exports, "getLambdaOptionsFromFunction", ({ enumerable: true, get: function () { return lambda_1.getLambdaOptionsFromFunction; } }));
190765
- const nodejs_lambda_1 = __nested_webpack_require_882721__(7049);
190810
+ const nodejs_lambda_1 = __nested_webpack_require_884675__(7049);
190766
190811
  Object.defineProperty(exports, "NodejsLambda", ({ enumerable: true, get: function () { return nodejs_lambda_1.NodejsLambda; } }));
190767
- const prerender_1 = __nested_webpack_require_882721__(2850);
190812
+ const prerender_1 = __nested_webpack_require_884675__(2850);
190768
190813
  Object.defineProperty(exports, "Prerender", ({ enumerable: true, get: function () { return prerender_1.Prerender; } }));
190769
- const download_1 = __importStar(__nested_webpack_require_882721__(1611));
190814
+ const download_1 = __importStar(__nested_webpack_require_884675__(1611));
190770
190815
  exports.download = download_1.default;
190771
190816
  Object.defineProperty(exports, "downloadFile", ({ enumerable: true, get: function () { return download_1.downloadFile; } }));
190772
190817
  Object.defineProperty(exports, "isSymbolicLink", ({ enumerable: true, get: function () { return download_1.isSymbolicLink; } }));
190773
- const get_writable_directory_1 = __importDefault(__nested_webpack_require_882721__(3838));
190818
+ const get_writable_directory_1 = __importDefault(__nested_webpack_require_884675__(3838));
190774
190819
  exports.getWriteableDirectory = get_writable_directory_1.default;
190775
- const glob_1 = __importDefault(__nested_webpack_require_882721__(4240));
190820
+ const glob_1 = __importDefault(__nested_webpack_require_884675__(4240));
190776
190821
  exports.glob = glob_1.default;
190777
- const rename_1 = __importDefault(__nested_webpack_require_882721__(6718));
190822
+ const rename_1 = __importDefault(__nested_webpack_require_884675__(6718));
190778
190823
  exports.rename = rename_1.default;
190779
- const run_user_scripts_1 = __nested_webpack_require_882721__(1442);
190824
+ const run_user_scripts_1 = __nested_webpack_require_884675__(1442);
190780
190825
  Object.defineProperty(exports, "execAsync", ({ enumerable: true, get: function () { return run_user_scripts_1.execAsync; } }));
190781
190826
  Object.defineProperty(exports, "spawnAsync", ({ enumerable: true, get: function () { return run_user_scripts_1.spawnAsync; } }));
190782
190827
  Object.defineProperty(exports, "execCommand", ({ enumerable: true, get: function () { return run_user_scripts_1.execCommand; } }));
@@ -190795,35 +190840,37 @@ Object.defineProperty(exports, "getNodeVersion", ({ enumerable: true, get: funct
190795
190840
  Object.defineProperty(exports, "getSpawnOptions", ({ enumerable: true, get: function () { return run_user_scripts_1.getSpawnOptions; } }));
190796
190841
  Object.defineProperty(exports, "getNodeBinPath", ({ enumerable: true, get: function () { return run_user_scripts_1.getNodeBinPath; } }));
190797
190842
  Object.defineProperty(exports, "scanParentDirs", ({ enumerable: true, get: function () { return run_user_scripts_1.scanParentDirs; } }));
190798
- const node_version_1 = __nested_webpack_require_882721__(7903);
190843
+ const node_version_1 = __nested_webpack_require_884675__(7903);
190799
190844
  Object.defineProperty(exports, "getLatestNodeVersion", ({ enumerable: true, get: function () { return node_version_1.getLatestNodeVersion; } }));
190800
190845
  Object.defineProperty(exports, "getDiscontinuedNodeVersions", ({ enumerable: true, get: function () { return node_version_1.getDiscontinuedNodeVersions; } }));
190801
- const stream_to_buffer_1 = __importDefault(__nested_webpack_require_882721__(2560));
190846
+ const stream_to_buffer_1 = __importDefault(__nested_webpack_require_884675__(2560));
190802
190847
  exports.streamToBuffer = stream_to_buffer_1.default;
190803
- const debug_1 = __importDefault(__nested_webpack_require_882721__(1868));
190848
+ const debug_1 = __importDefault(__nested_webpack_require_884675__(1868));
190804
190849
  exports.debug = debug_1.default;
190805
- const get_ignore_filter_1 = __importDefault(__nested_webpack_require_882721__(1148));
190850
+ const get_ignore_filter_1 = __importDefault(__nested_webpack_require_884675__(1148));
190806
190851
  exports.getIgnoreFilter = get_ignore_filter_1.default;
190807
- const get_platform_env_1 = __nested_webpack_require_882721__(4678);
190852
+ const get_platform_env_1 = __nested_webpack_require_884675__(4678);
190808
190853
  Object.defineProperty(exports, "getPlatformEnv", ({ enumerable: true, get: function () { return get_platform_env_1.getPlatformEnv; } }));
190809
- const get_prefixed_env_vars_1 = __nested_webpack_require_882721__(6838);
190854
+ const get_prefixed_env_vars_1 = __nested_webpack_require_884675__(6838);
190810
190855
  Object.defineProperty(exports, "getPrefixedEnvVars", ({ enumerable: true, get: function () { return get_prefixed_env_vars_1.getPrefixedEnvVars; } }));
190811
- var edge_function_1 = __nested_webpack_require_882721__(8038);
190856
+ const clone_env_1 = __nested_webpack_require_884675__(6548);
190857
+ Object.defineProperty(exports, "cloneEnv", ({ enumerable: true, get: function () { return clone_env_1.cloneEnv; } }));
190858
+ var edge_function_1 = __nested_webpack_require_884675__(8038);
190812
190859
  Object.defineProperty(exports, "EdgeFunction", ({ enumerable: true, get: function () { return edge_function_1.EdgeFunction; } }));
190813
- var read_config_file_1 = __nested_webpack_require_882721__(7792);
190860
+ var read_config_file_1 = __nested_webpack_require_884675__(7792);
190814
190861
  Object.defineProperty(exports, "readConfigFile", ({ enumerable: true, get: function () { return read_config_file_1.readConfigFile; } }));
190815
- var normalize_path_1 = __nested_webpack_require_882721__(6261);
190862
+ var normalize_path_1 = __nested_webpack_require_884675__(6261);
190816
190863
  Object.defineProperty(exports, "normalizePath", ({ enumerable: true, get: function () { return normalize_path_1.normalizePath; } }));
190817
- __exportStar(__nested_webpack_require_882721__(2564), exports);
190818
- __exportStar(__nested_webpack_require_882721__(2416), exports);
190819
- __exportStar(__nested_webpack_require_882721__(5748), exports);
190820
- __exportStar(__nested_webpack_require_882721__(3983), exports);
190864
+ __exportStar(__nested_webpack_require_884675__(2564), exports);
190865
+ __exportStar(__nested_webpack_require_884675__(2416), exports);
190866
+ __exportStar(__nested_webpack_require_884675__(5748), exports);
190867
+ __exportStar(__nested_webpack_require_884675__(3983), exports);
190821
190868
 
190822
190869
 
190823
190870
  /***/ }),
190824
190871
 
190825
190872
  /***/ 6721:
190826
- /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_891354__) {
190873
+ /***/ (function(__unused_webpack_module, exports, __nested_webpack_require_893493__) {
190827
190874
 
190828
190875
  "use strict";
190829
190876
 
@@ -190832,13 +190879,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
190832
190879
  };
190833
190880
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190834
190881
  exports.getLambdaOptionsFromFunction = exports.createZip = exports.createLambda = exports.Lambda = void 0;
190835
- const assert_1 = __importDefault(__nested_webpack_require_891354__(2357));
190836
- const async_sema_1 = __importDefault(__nested_webpack_require_891354__(5758));
190837
- const yazl_1 = __nested_webpack_require_891354__(1223);
190838
- const minimatch_1 = __importDefault(__nested_webpack_require_891354__(9566));
190839
- const fs_extra_1 = __nested_webpack_require_891354__(5392);
190840
- const download_1 = __nested_webpack_require_891354__(1611);
190841
- const stream_to_buffer_1 = __importDefault(__nested_webpack_require_891354__(2560));
190882
+ const assert_1 = __importDefault(__nested_webpack_require_893493__(2357));
190883
+ const async_sema_1 = __importDefault(__nested_webpack_require_893493__(5758));
190884
+ const yazl_1 = __nested_webpack_require_893493__(1223);
190885
+ const minimatch_1 = __importDefault(__nested_webpack_require_893493__(9566));
190886
+ const fs_extra_1 = __nested_webpack_require_893493__(5392);
190887
+ const download_1 = __nested_webpack_require_893493__(1611);
190888
+ const stream_to_buffer_1 = __importDefault(__nested_webpack_require_893493__(2560));
190842
190889
  class Lambda {
190843
190890
  constructor(opts) {
190844
190891
  const { handler, runtime, maxDuration, memory, environment = {}, allowQuery, regions, supportsMultiPayloads, supportsWrapper, } = opts;
@@ -190964,13 +191011,13 @@ exports.getLambdaOptionsFromFunction = getLambdaOptionsFromFunction;
190964
191011
  /***/ }),
190965
191012
 
190966
191013
  /***/ 7049:
190967
- /***/ ((__unused_webpack_module, exports, __nested_webpack_require_897037__) => {
191014
+ /***/ ((__unused_webpack_module, exports, __nested_webpack_require_899176__) => {
190968
191015
 
190969
191016
  "use strict";
190970
191017
 
190971
191018
  Object.defineProperty(exports, "__esModule", ({ value: true }));
190972
191019
  exports.NodejsLambda = void 0;
190973
- const lambda_1 = __nested_webpack_require_897037__(6721);
191020
+ const lambda_1 = __nested_webpack_require_899176__(6721);
190974
191021
  class NodejsLambda extends lambda_1.Lambda {
190975
191022
  constructor({ shouldAddHelpers, shouldAddSourcemapSupport, awsLambdaHandler, ...opts }) {
190976
191023
  super(opts);
@@ -191107,13 +191154,13 @@ exports.buildsSchema = {
191107
191154
  /***/ }),
191108
191155
 
191109
191156
  /***/ 2564:
191110
- /***/ ((__unused_webpack_module, exports, __nested_webpack_require_901382__) => {
191157
+ /***/ ((__unused_webpack_module, exports, __nested_webpack_require_903521__) => {
191111
191158
 
191112
191159
  "use strict";
191113
191160
 
191114
191161
  Object.defineProperty(exports, "__esModule", ({ value: true }));
191115
191162
  exports.shouldServe = void 0;
191116
- const path_1 = __nested_webpack_require_901382__(5622);
191163
+ const path_1 = __nested_webpack_require_903521__(5622);
191117
191164
  const shouldServe = ({ entrypoint, files, requestPath, }) => {
191118
191165
  requestPath = requestPath.replace(/\/$/, ''); // sanitize trailing '/'
191119
191166
  entrypoint = entrypoint.replace(/\\/, '/'); // windows compatibility
@@ -191358,7 +191405,7 @@ module.exports = __webpack_require__(78761);
191358
191405
  /******/ var __webpack_module_cache__ = {};
191359
191406
  /******/
191360
191407
  /******/ // The require function
191361
- /******/ function __nested_webpack_require_1278747__(moduleId) {
191408
+ /******/ function __nested_webpack_require_1280886__(moduleId) {
191362
191409
  /******/ // Check if module is in cache
191363
191410
  /******/ if(__webpack_module_cache__[moduleId]) {
191364
191411
  /******/ return __webpack_module_cache__[moduleId].exports;
@@ -191373,7 +191420,7 @@ module.exports = __webpack_require__(78761);
191373
191420
  /******/ // Execute the module function
191374
191421
  /******/ var threw = true;
191375
191422
  /******/ try {
191376
- /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_1278747__);
191423
+ /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_1280886__);
191377
191424
  /******/ threw = false;
191378
191425
  /******/ } finally {
191379
191426
  /******/ if(threw) delete __webpack_module_cache__[moduleId];
@@ -191386,11 +191433,11 @@ module.exports = __webpack_require__(78761);
191386
191433
  /************************************************************************/
191387
191434
  /******/ /* webpack/runtime/compat */
191388
191435
  /******/
191389
- /******/ __nested_webpack_require_1278747__.ab = __dirname + "/";/************************************************************************/
191436
+ /******/ __nested_webpack_require_1280886__.ab = __dirname + "/";/************************************************************************/
191390
191437
  /******/ // module exports must be returned from runtime so entry inlining is disabled
191391
191438
  /******/ // startup
191392
191439
  /******/ // Load entry module and return exports
191393
- /******/ return __nested_webpack_require_1278747__(2855);
191440
+ /******/ return __nested_webpack_require_1280886__(2855);
191394
191441
  /******/ })()
191395
191442
  ;
191396
191443
 
@@ -209311,7 +209358,7 @@ exports.frameworks = [
209311
209358
  name: 'Blitz.js',
209312
209359
  slug: 'blitzjs',
209313
209360
  demo: 'https://blitz-template.vercel.app',
209314
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/blitz.svg',
209361
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/blitz.svg',
209315
209362
  tagline: 'Blitz.js: The Fullstack React Framework',
209316
209363
  description: 'A brand new Blitz.js app - the result of running `npx blitz new`.',
209317
209364
  website: 'https://blitzjs.com',
@@ -209346,8 +209393,8 @@ exports.frameworks = [
209346
209393
  name: 'Next.js',
209347
209394
  slug: 'nextjs',
209348
209395
  demo: 'https://nextjs-template.vercel.app',
209349
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/next.svg',
209350
- darkModeLogo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/next-dark.svg',
209396
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/next.svg',
209397
+ darkModeLogo: 'https://api-frameworks.vercel.sh/framework-logos/next-dark.svg',
209351
209398
  screenshot: 'https://assets.vercel.com/image/upload/v1647366075/front/import/nextjs.png',
209352
209399
  tagline: 'Next.js makes you productive with React instantly — whether you want to build static or dynamic sites.',
209353
209400
  description: 'A Next.js app and a Serverless Function API.',
@@ -209392,7 +209439,7 @@ exports.frameworks = [
209392
209439
  name: 'Gatsby.js',
209393
209440
  slug: 'gatsby',
209394
209441
  demo: 'https://gatsby.vercel.app',
209395
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/gatsby.svg',
209442
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/gatsby.svg',
209396
209443
  tagline: 'Gatsby helps developers build blazing fast websites and apps with React.',
209397
209444
  description: 'A Gatsby starter app with an API Route.',
209398
209445
  website: 'https://gatsbyjs.org',
@@ -209474,7 +209521,7 @@ exports.frameworks = [
209474
209521
  name: 'Remix',
209475
209522
  slug: 'remix',
209476
209523
  demo: 'https://remix-run-template.vercel.app',
209477
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/remix-no-shadow.svg',
209524
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/remix-no-shadow.svg',
209478
209525
  tagline: 'Build Better Websites',
209479
209526
  description: 'A new Remix app — the result of running `npx create-remix`.',
209480
209527
  website: 'https://remix.run',
@@ -209511,8 +209558,8 @@ exports.frameworks = [
209511
209558
  name: 'Astro',
209512
209559
  slug: 'astro',
209513
209560
  demo: 'https://astro-template.vercel.app',
209514
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/astro.svg',
209515
- darkModeLogo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/astro-dark.svg',
209561
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/astro.svg',
209562
+ darkModeLogo: 'https://api-frameworks.vercel.sh/framework-logos/astro-dark.svg',
209516
209563
  tagline: 'Astro is a new kind of static site builder for the modern web. Powerful developer experience meets lightweight output.',
209517
209564
  description: 'An Astro site, using the basics starter kit.',
209518
209565
  website: 'https://astro.build',
@@ -209562,7 +209609,7 @@ exports.frameworks = [
209562
209609
  name: 'Hexo',
209563
209610
  slug: 'hexo',
209564
209611
  demo: 'https://hexo-template.vercel.app',
209565
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/hexo.svg',
209612
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/hexo.svg',
209566
209613
  tagline: 'Hexo is a fast, simple & powerful blog framework powered by Node.js.',
209567
209614
  description: 'A Hexo site, created with the Hexo CLI.',
209568
209615
  website: 'https://hexo.io',
@@ -209597,7 +209644,7 @@ exports.frameworks = [
209597
209644
  name: 'Eleventy',
209598
209645
  slug: 'eleventy',
209599
209646
  demo: 'https://eleventy-template.vercel.app',
209600
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/eleventy.svg',
209647
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/eleventy.svg',
209601
209648
  tagline: '11ty is a simpler static site generator written in JavaScript, created to be an alternative to Jekyll.',
209602
209649
  description: 'An Eleventy site, created with npm init.',
209603
209650
  website: 'https://www.11ty.dev',
@@ -209633,7 +209680,7 @@ exports.frameworks = [
209633
209680
  name: 'Docusaurus 2',
209634
209681
  slug: 'docusaurus-2',
209635
209682
  demo: 'https://docusaurus-2-template.vercel.app',
209636
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/docusaurus.svg',
209683
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg',
209637
209684
  tagline: 'Docusaurus makes it easy to maintain Open Source documentation websites.',
209638
209685
  description: 'A static Docusaurus site that makes it easy to maintain OSS documentation.',
209639
209686
  website: 'https://v2.docusaurus.io',
@@ -209717,7 +209764,7 @@ exports.frameworks = [
209717
209764
  name: 'Docusaurus 1',
209718
209765
  slug: 'docusaurus',
209719
209766
  demo: 'https://docusaurus-template.vercel.app',
209720
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/docusaurus.svg',
209767
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/docusaurus.svg',
209721
209768
  tagline: 'Docusaurus makes it easy to maintain Open Source documentation websites.',
209722
209769
  description: 'A static Docusaurus site that makes it easy to maintain OSS documentation.',
209723
209770
  website: 'https://docusaurus.io/',
@@ -209766,7 +209813,7 @@ exports.frameworks = [
209766
209813
  name: 'Preact',
209767
209814
  slug: 'preact',
209768
209815
  demo: 'https://preact-template.vercel.app',
209769
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/preact.svg',
209816
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/preact.svg',
209770
209817
  tagline: 'Preact is a fast 3kB alternative to React with the same modern API.',
209771
209818
  description: 'A Preact app, created with the Preact CLI.',
209772
209819
  website: 'https://preactjs.com',
@@ -209810,7 +209857,7 @@ exports.frameworks = [
209810
209857
  name: 'SolidStart',
209811
209858
  slug: 'solidstart',
209812
209859
  demo: 'https://solid-start-template.vercel.app',
209813
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/solid.svg',
209860
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/solid.svg',
209814
209861
  tagline: 'Simple and performant reactivity for building user interfaces.',
209815
209862
  description: 'A Solid app, created with SolidStart.',
209816
209863
  website: 'https://solidjs.com',
@@ -209848,7 +209895,7 @@ exports.frameworks = [
209848
209895
  name: 'Dojo',
209849
209896
  slug: 'dojo',
209850
209897
  demo: 'https://dojo-template.vercel.app',
209851
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/dojo.png',
209898
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/dojo.png',
209852
209899
  tagline: 'Dojo is a modern progressive, TypeScript first framework.',
209853
209900
  description: "A Dojo app, created with the Dojo CLI's cli-create-app command.",
209854
209901
  website: 'https://dojo.io',
@@ -209908,7 +209955,7 @@ exports.frameworks = [
209908
209955
  name: 'Ember.js',
209909
209956
  slug: 'ember',
209910
209957
  demo: 'https://ember-template.vercel.app',
209911
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/ember.svg',
209958
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/ember.svg',
209912
209959
  tagline: 'Ember.js helps webapp developers be more productive out of the box.',
209913
209960
  description: 'An Ember app, created with the Ember CLI.',
209914
209961
  website: 'https://emberjs.com/',
@@ -209952,7 +209999,7 @@ exports.frameworks = [
209952
209999
  name: 'Vue.js',
209953
210000
  slug: 'vue',
209954
210001
  demo: 'https://vue-template.vercel.app',
209955
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/vue.svg',
210002
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/vue.svg',
209956
210003
  tagline: 'Vue.js is a versatile JavaScript framework that is as approachable as it is performant.',
209957
210004
  description: 'A Vue.js app, created with the Vue CLI.',
209958
210005
  website: 'https://vuejs.org',
@@ -210007,7 +210054,7 @@ exports.frameworks = [
210007
210054
  name: 'Scully',
210008
210055
  slug: 'scully',
210009
210056
  demo: 'https://scully-template.vercel.app',
210010
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/scullyio-logo.png',
210057
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/scullyio-logo.png',
210011
210058
  tagline: 'Scully is a static site generator for Angular.',
210012
210059
  description: 'The Static Site Generator for Angular apps.',
210013
210060
  website: 'https://github.com/scullyio/scully',
@@ -210042,7 +210089,7 @@ exports.frameworks = [
210042
210089
  name: 'Ionic Angular',
210043
210090
  slug: 'ionic-angular',
210044
210091
  demo: 'https://ionic-angular-template.vercel.app',
210045
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/ionic.svg',
210092
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/ionic.svg',
210046
210093
  tagline: 'Ionic Angular allows you to build mobile PWAs with Angular and the Ionic Framework.',
210047
210094
  description: 'An Ionic Angular site, created with the Ionic CLI.',
210048
210095
  website: 'https://ionicframework.com',
@@ -210085,7 +210132,7 @@ exports.frameworks = [
210085
210132
  name: 'Angular',
210086
210133
  slug: 'angular',
210087
210134
  demo: 'https://angular-template.vercel.app',
210088
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/angular.svg',
210135
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/angular.svg',
210089
210136
  tagline: 'Angular is a TypeScript-based cross-platform framework from Google.',
210090
210137
  description: 'An Angular app, created with the Angular CLI.',
210091
210138
  website: 'https://angular.io',
@@ -210143,7 +210190,7 @@ exports.frameworks = [
210143
210190
  name: 'Polymer',
210144
210191
  slug: 'polymer',
210145
210192
  demo: 'https://polymer-template.vercel.app',
210146
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/polymer.svg',
210193
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/polymer.svg',
210147
210194
  tagline: 'Polymer is an open-source webapps library from Google, for building using Web Components.',
210148
210195
  description: 'A Polymer app, created with the Polymer CLI.',
210149
210196
  website: 'https://www.polymer-project.org/',
@@ -210199,7 +210246,7 @@ exports.frameworks = [
210199
210246
  name: 'Svelte',
210200
210247
  slug: 'svelte',
210201
210248
  demo: 'https://svelte.vercel.app',
210202
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/svelte.svg',
210249
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/svelte.svg',
210203
210250
  tagline: 'Svelte lets you write high performance reactive apps with significantly less boilerplate.',
210204
210251
  description: 'A basic Svelte app using the default template.',
210205
210252
  website: 'https://svelte.dev',
@@ -210247,7 +210294,7 @@ exports.frameworks = [
210247
210294
  name: 'SvelteKit',
210248
210295
  slug: 'sveltekit',
210249
210296
  demo: 'https://sveltekit-template.vercel.app',
210250
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/svelte.svg',
210297
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/svelte.svg',
210251
210298
  screenshot: 'https://assets.vercel.com/image/upload/v1647366075/front/import/sveltekit.png',
210252
210299
  tagline: 'SvelteKit is a framework for building web applications of all sizes.',
210253
210300
  description: 'A SvelteKit app optimized Edge-first.',
@@ -210283,7 +210330,7 @@ exports.frameworks = [
210283
210330
  name: 'Ionic React',
210284
210331
  slug: 'ionic-react',
210285
210332
  demo: 'https://ionic-react-template.vercel.app',
210286
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/ionic.svg',
210333
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/ionic.svg',
210287
210334
  tagline: 'Ionic React allows you to build mobile PWAs with React and the Ionic Framework.',
210288
210335
  description: 'An Ionic React site, created with the Ionic CLI.',
210289
210336
  website: 'https://ionicframework.com',
@@ -210342,7 +210389,7 @@ exports.frameworks = [
210342
210389
  name: 'Create React App',
210343
210390
  slug: 'create-react-app',
210344
210391
  demo: 'https://create-react-template.vercel.app',
210345
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/react.svg',
210392
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/react.svg',
210346
210393
  tagline: 'Create React App allows you to get going with React in no time.',
210347
210394
  description: 'A client-side React app created with create-react-app.',
210348
210395
  website: 'https://create-react-app.dev',
@@ -210407,7 +210454,7 @@ exports.frameworks = [
210407
210454
  name: 'Gridsome',
210408
210455
  slug: 'gridsome',
210409
210456
  demo: 'https://gridsome-template.vercel.app',
210410
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/gridsome.svg',
210457
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/gridsome.svg',
210411
210458
  tagline: 'Gridsome is a Vue.js-powered framework for building websites & apps that are fast by default.',
210412
210459
  description: 'A Gridsome app, created with the Gridsome CLI.',
210413
210460
  website: 'https://gridsome.org/',
@@ -210442,7 +210489,7 @@ exports.frameworks = [
210442
210489
  name: 'UmiJS',
210443
210490
  slug: 'umijs',
210444
210491
  demo: 'https://umijs-template.vercel.app',
210445
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/umi.svg',
210492
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/umi.svg',
210446
210493
  tagline: 'UmiJS is an extensible enterprise-level React application framework.',
210447
210494
  description: 'An UmiJS app, created using the Umi CLI.',
210448
210495
  website: 'https://umijs.org',
@@ -210486,7 +210533,7 @@ exports.frameworks = [
210486
210533
  name: 'Sapper',
210487
210534
  slug: 'sapper',
210488
210535
  demo: 'https://sapper-template.vercel.app',
210489
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/svelte.svg',
210536
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/svelte.svg',
210490
210537
  tagline: 'Sapper is a framework for building high-performance universal web apps with Svelte.',
210491
210538
  description: 'A Sapper app, using the Sapper template.',
210492
210539
  website: 'https://sapper.svelte.dev',
@@ -210521,7 +210568,7 @@ exports.frameworks = [
210521
210568
  name: 'Saber',
210522
210569
  slug: 'saber',
210523
210570
  demo: 'https://saber-template.vercel.app',
210524
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/saber.svg',
210571
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/saber.svg',
210525
210572
  tagline: 'Saber is a framework for building static sites in Vue.js that supports data from any source.',
210526
210573
  description: 'A Saber site, created with npm init.',
210527
210574
  website: 'https://saber.land/',
@@ -210570,7 +210617,7 @@ exports.frameworks = [
210570
210617
  name: 'Stencil',
210571
210618
  slug: 'stencil',
210572
210619
  demo: 'https://stencil.vercel.app',
210573
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/stencil.svg',
210620
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/stencil.svg',
210574
210621
  tagline: 'Stencil is a powerful toolchain for building Progressive Web Apps and Design Systems.',
210575
210622
  description: 'A Stencil site, created with the Stencil CLI.',
210576
210623
  website: 'https://stenciljs.com/',
@@ -210629,7 +210676,7 @@ exports.frameworks = [
210629
210676
  name: 'Nuxt.js',
210630
210677
  slug: 'nuxtjs',
210631
210678
  demo: 'https://nuxtjs-template.vercel.app',
210632
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/nuxt.svg',
210679
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/nuxt.svg',
210633
210680
  screenshot: 'https://assets.vercel.com/image/upload/v1647366075/front/import/nuxtjs.png',
210634
210681
  tagline: 'Nuxt.js is the web comprehensive framework that lets you dream big with Vue.js.',
210635
210682
  description: 'A Nuxt.js app, bootstrapped with create-nuxt-app.',
@@ -210686,7 +210733,7 @@ exports.frameworks = [
210686
210733
  name: 'RedwoodJS',
210687
210734
  slug: 'redwoodjs',
210688
210735
  demo: 'https://redwood-template.vercel.app',
210689
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/redwoodjs.svg',
210736
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/redwoodjs.svg',
210690
210737
  tagline: 'RedwoodJS is a full-stack framework for the Jamstack.',
210691
210738
  description: 'A RedwoodJS app, bootstraped with create-redwood-app.',
210692
210739
  website: 'https://redwoodjs.com',
@@ -210722,7 +210769,7 @@ exports.frameworks = [
210722
210769
  name: 'Hugo',
210723
210770
  slug: 'hugo',
210724
210771
  demo: 'https://hugo-template.vercel.app',
210725
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/hugo.svg',
210772
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/hugo.svg',
210726
210773
  tagline: 'Hugo is the world’s fastest framework for building websites, written in Go.',
210727
210774
  description: 'A Hugo site, created with the Hugo CLI.',
210728
210775
  website: 'https://gohugo.io',
@@ -210770,7 +210817,7 @@ exports.frameworks = [
210770
210817
  name: 'Jekyll',
210771
210818
  slug: 'jekyll',
210772
210819
  demo: 'https://jekyll-template.vercel.app',
210773
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/jekyll.svg',
210820
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/jekyll.svg',
210774
210821
  tagline: 'Jekyll makes it super easy to transform your plain text into static websites and blogs.',
210775
210822
  description: 'A Jekyll site, created with the Jekyll CLI.',
210776
210823
  website: 'https://jekyllrb.com/',
@@ -210807,7 +210854,7 @@ exports.frameworks = [
210807
210854
  name: 'Brunch',
210808
210855
  slug: 'brunch',
210809
210856
  demo: 'https://brunch-template.vercel.app',
210810
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/brunch.svg',
210857
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/brunch.svg',
210811
210858
  tagline: 'Brunch is a fast and simple webapp build tool with seamless incremental compilation for rapid development.',
210812
210859
  description: 'A Brunch app, created with the Brunch CLI.',
210813
210860
  website: 'https://brunch.io/',
@@ -210840,7 +210887,7 @@ exports.frameworks = [
210840
210887
  name: 'Middleman',
210841
210888
  slug: 'middleman',
210842
210889
  demo: 'https://middleman-template.vercel.app',
210843
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/middleman.svg',
210890
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/middleman.svg',
210844
210891
  tagline: 'Middleman is a static site generator that uses all the shortcuts and tools in modern web development.',
210845
210892
  description: 'A Middleman app, created with the Middleman CLI.',
210846
210893
  website: 'https://middlemanapp.com/',
@@ -210874,7 +210921,7 @@ exports.frameworks = [
210874
210921
  name: 'Zola',
210875
210922
  slug: 'zola',
210876
210923
  demo: 'https://zola-template.vercel.app',
210877
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/zola.png',
210924
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/zola.png',
210878
210925
  tagline: 'Everything you need to make a static site engine in one binary.',
210879
210926
  description: 'A Zola app, created with the "Getting Started" tutorial.',
210880
210927
  website: 'https://www.getzola.org',
@@ -210908,7 +210955,7 @@ exports.frameworks = [
210908
210955
  name: 'Vite',
210909
210956
  slug: 'vite',
210910
210957
  demo: 'https://vite-vue-template.vercel.app',
210911
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/vite.svg',
210958
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/vite.svg',
210912
210959
  tagline: 'Vite is a new breed of frontend build tool that significantly improves the frontend development experience.',
210913
210960
  description: 'A Vue.js app, created with Vite.',
210914
210961
  website: 'https://vitejs.dev',
@@ -210944,7 +210991,7 @@ exports.frameworks = [
210944
210991
  name: 'Parcel',
210945
210992
  slug: 'parcel',
210946
210993
  demo: 'https://parcel-template.vercel.app',
210947
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/parcel.png',
210994
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/parcel.png',
210948
210995
  tagline: 'Parcel is a zero configuration build tool for the web that scales to projects of any size and complexity.',
210949
210996
  description: 'A vanilla web app built with Parcel.',
210950
210997
  website: 'https://parceljs.org',
@@ -210989,7 +211036,7 @@ exports.frameworks = [
210989
211036
  name: 'Sanity',
210990
211037
  slug: 'sanity',
210991
211038
  demo: 'https://sanity-studio-template.vercel.app',
210992
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/sanity.svg',
211039
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/sanity.svg',
210993
211040
  tagline: 'The structured content platform.',
210994
211041
  description: 'A Sanity Studio',
210995
211042
  website: 'https://www.sanity.io',
@@ -211038,7 +211085,7 @@ exports.frameworks = [
211038
211085
  name: 'Hydrogen',
211039
211086
  slug: 'hydrogen',
211040
211087
  demo: 'https://hydrogen-template.vercel.app',
211041
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/hydrogen.svg',
211088
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/hydrogen.svg',
211042
211089
  tagline: 'React framework for headless commerce',
211043
211090
  description: 'React framework for headless commerce',
211044
211091
  website: 'https://hydrogen.shopify.dev',
@@ -211072,7 +211119,7 @@ exports.frameworks = [
211072
211119
  {
211073
211120
  name: 'Other',
211074
211121
  slug: null,
211075
- logo: 'https://raw.githubusercontent.com/vercel/vercel/main/packages/frameworks/logos/other.svg',
211122
+ logo: 'https://api-frameworks.vercel.sh/framework-logos/other.svg',
211076
211123
  description: 'No framework or an unoptimized framework.',
211077
211124
  settings: {
211078
211125
  installCommand: {
@@ -216660,6 +216707,28 @@ exports.monorepoManagers = [
216660
216707
  ],
216661
216708
  },
216662
216709
  },
216710
+ {
216711
+ name: 'Nx',
216712
+ slug: 'nx',
216713
+ detectors: {
216714
+ every: [
216715
+ {
216716
+ path: 'nx.json',
216717
+ },
216718
+ ],
216719
+ },
216720
+ },
216721
+ {
216722
+ name: 'Rush',
216723
+ slug: 'rush',
216724
+ detectors: {
216725
+ every: [
216726
+ {
216727
+ path: 'rush.json',
216728
+ },
216729
+ ],
216730
+ },
216731
+ },
216663
216732
  ];
216664
216733
  exports.default = exports.monorepoManagers;
216665
216734
  //# sourceMappingURL=monorepo-managers.js.map
@@ -216772,6 +216841,9 @@ async function getWorkspacePackagePaths({ fs, workspace, }) {
216772
216841
  case 'pnpm':
216773
216842
  results = await getPnpmWorkspacePackagePaths({ fs: workspaceFs });
216774
216843
  break;
216844
+ case 'nx':
216845
+ results = await getNxWorkspacePackagePaths({ fs: workspaceFs });
216846
+ break;
216775
216847
  default:
216776
216848
  throw new Error(`Unknown workspace implementation: ${type}`);
216777
216849
  }
@@ -216807,6 +216879,12 @@ async function getPackageJsonWorkspacePackagePaths({ fs, }) {
216807
216879
  }
216808
216880
  return getPackagePaths(packages, fs);
216809
216881
  }
216882
+ async function getNxWorkspacePackagePaths({ fs, }) {
216883
+ const nxWorkspaceJsonAsBuffer = await fs.readFile('workspace.json');
216884
+ const { projects } = JSON.parse(nxWorkspaceJsonAsBuffer.toString());
216885
+ const packages = Object.values(projects);
216886
+ return getPackagePaths(packages, fs);
216887
+ }
216810
216888
  async function getPnpmWorkspacePackagePaths({ fs, }) {
216811
216889
  const pnpmWorkspaceAsBuffer = await fs.readFile('pnpm-workspace.yaml');
216812
216890
  const { packages = [] } = js_yaml_1.default.load(pnpmWorkspaceAsBuffer.toString());
@@ -216921,6 +216999,18 @@ exports.workspaceManagers = [
216921
216999
  ],
216922
217000
  },
216923
217001
  },
217002
+ {
217003
+ name: 'nx',
217004
+ slug: 'nx',
217005
+ detectors: {
217006
+ every: [
217007
+ {
217008
+ path: 'workspace.json',
217009
+ matchContent: '"projects":\\s*{[^}]',
217010
+ },
217011
+ ],
217012
+ },
217013
+ },
216924
217014
  {
216925
217015
  name: 'default',
216926
217016
  slug: 'yarn',
@@ -228716,7 +228806,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
228716
228806
  const path_1 = __webpack_require__(85622);
228717
228807
  const fs_extra_1 = __importDefault(__webpack_require__(45392));
228718
228808
  const server_1 = __importDefault(__webpack_require__(18433));
228719
- const parse_listen_1 = __importDefault(__webpack_require__(1919));
228809
+ const parse_listen_1 = __webpack_require__(1919);
228720
228810
  const link_1 = __webpack_require__(67630);
228721
228811
  const get_decrypted_env_records_1 = __importDefault(__webpack_require__(30861));
228722
228812
  const setup_and_link_1 = __importDefault(__webpack_require__(69532));
@@ -228728,7 +228818,7 @@ async function dev(client, opts, args) {
228728
228818
  const { output } = client;
228729
228819
  const [dir = '.'] = args;
228730
228820
  let cwd = (0, path_1.resolve)(dir);
228731
- const listen = (0, parse_listen_1.default)(opts['--listen'] || '3000');
228821
+ const listen = (0, parse_listen_1.parseListen)(opts['--listen'] || '3000');
228732
228822
  // retrieve dev command
228733
228823
  let link = await (0, link_1.getLinkedProject)(client, cwd);
228734
228824
  if (link.status === 'not_linked' && !process.env.__VERCEL_SKIP_DEV_CMD) {
@@ -235072,15 +235162,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
235072
235162
  };
235073
235163
  Object.defineProperty(exports, "__esModule", ({ value: true }));
235074
235164
  exports.resolveBuilders = exports.importBuilders = void 0;
235165
+ const url_1 = __webpack_require__(78835);
235166
+ const pluralize_1 = __importDefault(__webpack_require__(31974));
235075
235167
  const npm_package_arg_1 = __importDefault(__webpack_require__(79726));
235076
235168
  const semver_1 = __webpack_require__(92879);
235077
235169
  const path_1 = __webpack_require__(85622);
235078
235170
  const fs_extra_1 = __webpack_require__(45392);
235171
+ const fs_detectors_1 = __webpack_require__(20302);
235079
235172
  const build_utils_1 = __webpack_require__(3131);
235080
235173
  const staticBuilder = __importStar(__webpack_require__(33274));
235081
235174
  const link_1 = __webpack_require__(67630);
235082
235175
  const read_json_file_1 = __importDefault(__webpack_require__(16898));
235083
235176
  const errors_ts_1 = __webpack_require__(60156);
235177
+ const is_error_1 = __webpack_require__(11026);
235178
+ const cmd_1 = __importDefault(__webpack_require__(87350));
235179
+ const code_1 = __importDefault(__webpack_require__(62230));
235084
235180
  /**
235085
235181
  * Imports the specified Vercel Builders, installing any missing ones
235086
235182
  * into `.vercel/builders` if necessary.
@@ -235111,7 +235207,7 @@ async function resolveBuilders(buildersDir, builderSpecs, output, resolvedSpecs)
235111
235207
  buildersToAdd.add(spec);
235112
235208
  continue;
235113
235209
  }
235114
- if (name === '@vercel/static' || name === '@now/static') {
235210
+ if ((0, fs_detectors_1.isStaticRuntime)(name)) {
235115
235211
  // `@vercel/static` is a special-case built-in builder
235116
235212
  builders.set(name, {
235117
235213
  builder: staticBuilder,
@@ -235212,14 +235308,45 @@ async function installBuilders(buildersDir, buildersToAdd, output) {
235212
235308
  if (err.code !== 'EEXIST')
235213
235309
  throw err;
235214
235310
  }
235215
- output.debug(`Installing Builders: ${Array.from(buildersToAdd).join(', ')}`);
235216
- await (0, build_utils_1.spawnAsync)('yarn', ['add', '@vercel/build-utils', ...buildersToAdd], {
235217
- cwd: buildersDir,
235218
- });
235311
+ output.log(`Installing ${(0, pluralize_1.default)('Builder', buildersToAdd.size)}: ${Array.from(buildersToAdd).join(', ')}`);
235312
+ try {
235313
+ await (0, build_utils_1.spawnAsync)('npm', ['install', '@vercel/build-utils', ...buildersToAdd], {
235314
+ cwd: buildersDir,
235315
+ stdio: 'pipe',
235316
+ });
235317
+ }
235318
+ catch (err) {
235319
+ if ((0, is_error_1.isError)(err)) {
235320
+ err.link =
235321
+ 'https://vercel.link/builder-dependencies-install-failed';
235322
+ if ((0, is_error_1.isErrnoException)(err) && err.code === 'ENOENT') {
235323
+ // `npm` is not installed
235324
+ err.message = `Please install ${(0, cmd_1.default)('npm')} before continuing`;
235325
+ }
235326
+ else {
235327
+ const message = (0, is_error_1.errorToString)(err);
235328
+ const notFound = /GET (.*) - Not found/.exec(message);
235329
+ if (notFound) {
235330
+ const url = new url_1.URL(notFound[1]);
235331
+ const packageName = decodeURIComponent(url.pathname.slice(1));
235332
+ err.message = `The package ${(0, code_1.default)(packageName)} is not published on the npm registry`;
235333
+ }
235334
+ }
235335
+ }
235336
+ throw err;
235337
+ }
235219
235338
  // Symlink `@now/build-utils` -> `@vercel/build-utils` to support legacy Builders
235220
235339
  const nowScopePath = (0, path_1.join)(buildersDir, 'node_modules/@now');
235221
235340
  await (0, fs_extra_1.mkdirp)(nowScopePath);
235222
- await (0, fs_extra_1.symlink)('../@vercel/build-utils', (0, path_1.join)(nowScopePath, 'build-utils'));
235341
+ try {
235342
+ await (0, fs_extra_1.symlink)('../@vercel/build-utils', (0, path_1.join)(nowScopePath, 'build-utils'));
235343
+ }
235344
+ catch (err) {
235345
+ if (!(0, is_error_1.isErrnoException)(err) || err.code !== 'EEXIST') {
235346
+ // Throw unless the error is due to the symlink already existing
235347
+ throw err;
235348
+ }
235349
+ }
235223
235350
  // Cross-reference any builderSpecs from the saved `package.json` file,
235224
235351
  // in case they were installed from a URL
235225
235352
  const buildersPkg = await (0, read_json_file_1.default)(buildersPkgPath);
@@ -235274,8 +235401,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
235274
235401
  return (mod && mod.__esModule) ? mod : { "default": mod };
235275
235402
  };
235276
235403
  Object.defineProperty(exports, "__esModule", ({ value: true }));
235277
- exports.build = exports.version = void 0;
235404
+ exports.shouldServe = exports.build = exports.version = void 0;
235278
235405
  const minimatch_1 = __importDefault(__webpack_require__(99566));
235406
+ const build_utils_1 = __webpack_require__(3131);
235279
235407
  exports.version = 2;
235280
235408
  const build = async ({ entrypoint, files, config }) => {
235281
235409
  const output = {};
@@ -235303,6 +235431,17 @@ const build = async ({ entrypoint, files, config }) => {
235303
235431
  return { output };
235304
235432
  };
235305
235433
  exports.build = build;
235434
+ const shouldServe = _opts => {
235435
+ const opts = { ..._opts };
235436
+ const { config: { zeroConfig, outputDirectory }, } = opts;
235437
+ // Add the output directory prefix
235438
+ if (zeroConfig && outputDirectory) {
235439
+ opts.entrypoint = `${outputDirectory}/${opts.entrypoint}`;
235440
+ opts.requestPath = `${outputDirectory}/${opts.requestPath}`;
235441
+ }
235442
+ return (0, build_utils_1.shouldServe)(opts);
235443
+ };
235444
+ exports.shouldServe = shouldServe;
235306
235445
 
235307
235446
 
235308
235447
  /***/ }),
@@ -237565,364 +237704,6 @@ function isValidArchive(archive) {
237565
237704
  exports.isValidArchive = isValidArchive;
237566
237705
 
237567
237706
 
237568
- /***/ }),
237569
-
237570
- /***/ 30770:
237571
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
237572
-
237573
- "use strict";
237574
-
237575
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
237576
- if (k2 === undefined) k2 = k;
237577
- var desc = Object.getOwnPropertyDescriptor(m, k);
237578
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
237579
- desc = { enumerable: true, get: function() { return m[k]; } };
237580
- }
237581
- Object.defineProperty(o, k2, desc);
237582
- }) : (function(o, m, k, k2) {
237583
- if (k2 === undefined) k2 = k;
237584
- o[k2] = m[k];
237585
- }));
237586
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
237587
- Object.defineProperty(o, "default", { enumerable: true, value: v });
237588
- }) : function(o, v) {
237589
- o["default"] = v;
237590
- });
237591
- var __importStar = (this && this.__importStar) || function (mod) {
237592
- if (mod && mod.__esModule) return mod;
237593
- var result = {};
237594
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
237595
- __setModuleDefault(result, mod);
237596
- return result;
237597
- };
237598
- var __importDefault = (this && this.__importDefault) || function (mod) {
237599
- return (mod && mod.__esModule) ? mod : { "default": mod };
237600
- };
237601
- Object.defineProperty(exports, "__esModule", ({ value: true }));
237602
- exports.isBundledBuilder = exports.getBuilder = exports.updateBuilders = exports.installBuilders = exports.filterPackage = exports.getBuildUtils = exports.prepareBuilderDir = exports.prepareCacheDir = exports.builderDirPromise = exports.cacheDirPromise = void 0;
237603
- const chalk_1 = __importDefault(__webpack_require__(961));
237604
- const execa_1 = __importDefault(__webpack_require__(94237));
237605
- const semver_1 = __importDefault(__webpack_require__(92879));
237606
- const npm_package_arg_1 = __importDefault(__webpack_require__(79726));
237607
- const pluralize_1 = __importDefault(__webpack_require__(31974));
237608
- const path_1 = __webpack_require__(85622);
237609
- const xdg_app_paths_1 = __importDefault(__webpack_require__(30461));
237610
- const fs_extra_1 = __webpack_require__(45392);
237611
- const build_utils_1 = __webpack_require__(3131);
237612
- const pkg_1 = __importDefault(__webpack_require__(80984));
237613
- const cmd_1 = __importDefault(__webpack_require__(87350));
237614
- const errors_ts_1 = __webpack_require__(60156);
237615
- const staticBuilder = __importStar(__webpack_require__(46241));
237616
- const is_error_1 = __webpack_require__(11026);
237617
- const require_ = eval('require');
237618
- const registryTypes = new Set(['version', 'tag', 'range']);
237619
- const createStaticBuilder = (scope) => {
237620
- return {
237621
- runInProcess: true,
237622
- requirePath: `${scope}/static`,
237623
- builder: Object.freeze(staticBuilder),
237624
- package: Object.freeze({ name: `@${scope}/static`, version: '' }),
237625
- };
237626
- };
237627
- const localBuilders = {
237628
- '@now/static': createStaticBuilder('now'),
237629
- '@vercel/static': createStaticBuilder('vercel'),
237630
- };
237631
- exports.cacheDirPromise = prepareCacheDir();
237632
- exports.builderDirPromise = prepareBuilderDir();
237633
- /**
237634
- * Prepare cache directory for installing Vercel runtimes.
237635
- */
237636
- async function prepareCacheDir() {
237637
- const designated = (0, xdg_app_paths_1.default)('com.vercel.cli').cache();
237638
- if (!designated) {
237639
- throw new errors_ts_1.NoBuilderCacheError();
237640
- }
237641
- const cacheDir = (0, path_1.join)(designated, 'dev');
237642
- await (0, fs_extra_1.mkdirp)(cacheDir);
237643
- return cacheDir;
237644
- }
237645
- exports.prepareCacheDir = prepareCacheDir;
237646
- async function prepareBuilderDir() {
237647
- const builderDir = (0, path_1.join)(await exports.cacheDirPromise, 'builders');
237648
- await (0, fs_extra_1.mkdirp)(builderDir);
237649
- // Create an empty `package.json` file, only if one does not already exist
237650
- try {
237651
- const buildersPkg = (0, path_1.join)(builderDir, 'package.json');
237652
- await (0, fs_extra_1.writeJSON)(buildersPkg, { private: true }, { flag: 'wx' });
237653
- }
237654
- catch (err) {
237655
- if (!(0, is_error_1.isErrnoException)(err) || err.code !== 'EEXIST') {
237656
- throw err;
237657
- }
237658
- }
237659
- return builderDir;
237660
- }
237661
- exports.prepareBuilderDir = prepareBuilderDir;
237662
- function getNpmVersion(use = '') {
237663
- const parsed = (0, npm_package_arg_1.default)(use);
237664
- if (registryTypes.has(parsed.type)) {
237665
- return parsed.fetchSpec || '';
237666
- }
237667
- return '';
237668
- }
237669
- function getBuildUtils(packages) {
237670
- const version = packages
237671
- .map(getNpmVersion)
237672
- .some(ver => ver.includes('canary'))
237673
- ? 'canary'
237674
- : 'latest';
237675
- return `@vercel/build-utils@${version}`;
237676
- }
237677
- exports.getBuildUtils = getBuildUtils;
237678
- function parseVersionSafe(rawSpec) {
237679
- try {
237680
- return semver_1.default.parse(rawSpec);
237681
- }
237682
- catch (e) {
237683
- return null;
237684
- }
237685
- }
237686
- function filterPackage(builderSpec, buildersPkg, cliPkg) {
237687
- if (builderSpec in localBuilders)
237688
- return false;
237689
- const parsed = (0, npm_package_arg_1.default)(builderSpec);
237690
- const parsedVersion = parseVersionSafe(parsed.rawSpec);
237691
- // Skip install of Runtimes that are part of Vercel CLI's `dependencies`
237692
- if (isBundledBuilder(parsed, cliPkg)) {
237693
- return false;
237694
- }
237695
- // Skip install of already installed Runtime with exact version match
237696
- if (parsed.name &&
237697
- parsed.type === 'version' &&
237698
- parsedVersion &&
237699
- buildersPkg.dependencies &&
237700
- parsedVersion.version == buildersPkg.dependencies[parsed.name]) {
237701
- return false;
237702
- }
237703
- return true;
237704
- }
237705
- exports.filterPackage = filterPackage;
237706
- /**
237707
- * Install a list of builders to the cache directory.
237708
- */
237709
- async function installBuilders(packagesSet, output, builderDir) {
237710
- const packages = Array.from(packagesSet);
237711
- if (packages.length === 0 ||
237712
- (packages.length === 1 &&
237713
- Object.hasOwnProperty.call(localBuilders, packages[0]))) {
237714
- // Static deployment, no builders to install
237715
- return;
237716
- }
237717
- if (!builderDir) {
237718
- builderDir = await exports.builderDirPromise;
237719
- }
237720
- const buildersPkgPath = (0, path_1.join)(builderDir, 'package.json');
237721
- const buildersPkgBefore = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237722
- const depsBefore = {
237723
- ...buildersPkgBefore.devDependencies,
237724
- ...buildersPkgBefore.dependencies,
237725
- };
237726
- // Filter out any packages that come packaged with Vercel CLI
237727
- const packagesToInstall = packages.filter(p => filterPackage(p, buildersPkgBefore, pkg_1.default));
237728
- if (packagesToInstall.length === 0) {
237729
- output.debug('No Runtimes need to be installed');
237730
- return;
237731
- }
237732
- packagesToInstall.push(getBuildUtils(packages));
237733
- await npmInstall(builderDir, output, packagesToInstall, false);
237734
- const updatedPackages = [];
237735
- const buildersPkgAfter = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237736
- const depsAfter = {
237737
- ...buildersPkgAfter.devDependencies,
237738
- ...buildersPkgAfter.dependencies,
237739
- };
237740
- for (const [name, version] of Object.entries(depsAfter)) {
237741
- if (version !== depsBefore[name]) {
237742
- output.debug(`Runtime "${name}" updated to version \`${version}\``);
237743
- updatedPackages.push(name);
237744
- }
237745
- }
237746
- purgeRequireCache(updatedPackages, builderDir, output);
237747
- }
237748
- exports.installBuilders = installBuilders;
237749
- async function npmInstall(cwd, output, packagesToInstall, silent) {
237750
- const sortedPackages = packagesToInstall.sort();
237751
- if (!silent) {
237752
- output.spinner(`Installing ${(0, pluralize_1.default)('Runtime', sortedPackages.length)}: ${sortedPackages.join(', ')}`);
237753
- }
237754
- output.debug(`Running npm install in ${cwd}`);
237755
- try {
237756
- const args = [
237757
- 'install',
237758
- '--save-exact',
237759
- '--no-package-lock',
237760
- '--no-audit',
237761
- '--no-progress',
237762
- ];
237763
- if (process.stderr.isTTY) {
237764
- // Force colors in the npm child process
237765
- // https://docs.npmjs.com/misc/config#color
237766
- args.push('--color=always');
237767
- }
237768
- args.push(...sortedPackages);
237769
- const result = await (0, execa_1.default)('npm', args, {
237770
- cwd,
237771
- reject: false,
237772
- stdio: output.isDebugEnabled() ? 'inherit' : 'pipe',
237773
- });
237774
- if (result.failed) {
237775
- output.stopSpinner();
237776
- if (result.stdout) {
237777
- console.log(result.stdout);
237778
- }
237779
- if (result.stderr) {
237780
- console.error(result.stderr);
237781
- }
237782
- throw new build_utils_1.NowBuildError({
237783
- message: result.code === 'ENOENT'
237784
- ? `Command not found: ${chalk_1.default.cyan('npm')}\nPlease ensure that ${(0, cmd_1.default)('npm')} is properly installed`
237785
- : 'Failed to install `vercel dev` dependencies',
237786
- code: 'NPM_INSTALL_ERROR',
237787
- link: 'https://vercel.link/npm-install-failed-dev',
237788
- });
237789
- }
237790
- }
237791
- finally {
237792
- output.stopSpinner();
237793
- }
237794
- }
237795
- async function updateBuilders(packagesSet, output, builderDir) {
237796
- if (!builderDir) {
237797
- builderDir = await exports.builderDirPromise;
237798
- }
237799
- const updatedPackages = [];
237800
- const packages = Array.from(packagesSet);
237801
- const buildersPkgPath = (0, path_1.join)(builderDir, 'package.json');
237802
- const buildersPkgBefore = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237803
- const depsBefore = {
237804
- ...buildersPkgBefore.devDependencies,
237805
- ...buildersPkgBefore.dependencies,
237806
- };
237807
- const packagesToUpdate = packages.filter(p => {
237808
- if (p in localBuilders)
237809
- return false;
237810
- // If it's a builder that is part of Vercel CLI's
237811
- // `dependencies` then don't update it
237812
- if (isBundledBuilder((0, npm_package_arg_1.default)(p), pkg_1.default)) {
237813
- return false;
237814
- }
237815
- return true;
237816
- });
237817
- if (packagesToUpdate.length > 0) {
237818
- packagesToUpdate.push(getBuildUtils(packages));
237819
- await npmInstall(builderDir, output, packagesToUpdate, true);
237820
- const buildersPkgAfter = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237821
- const depsAfter = {
237822
- ...buildersPkgAfter.devDependencies,
237823
- ...buildersPkgAfter.dependencies,
237824
- };
237825
- for (const [name, version] of Object.entries(depsAfter)) {
237826
- if (version !== depsBefore[name]) {
237827
- output.debug(`Runtime "${name}" updated to version \`${version}\``);
237828
- updatedPackages.push(name);
237829
- }
237830
- }
237831
- purgeRequireCache(updatedPackages, builderDir, output);
237832
- }
237833
- return updatedPackages;
237834
- }
237835
- exports.updateBuilders = updateBuilders;
237836
- /**
237837
- * Get a builder from the cache directory.
237838
- */
237839
- async function getBuilder(builderPkg, output, builderDir, isRetry = false) {
237840
- let builderWithPkg = localBuilders[builderPkg];
237841
- if (!builderWithPkg) {
237842
- if (!builderDir) {
237843
- builderDir = await exports.builderDirPromise;
237844
- }
237845
- let requirePath;
237846
- const parsed = (0, npm_package_arg_1.default)(builderPkg);
237847
- // First check if it's a bundled Runtime in Vercel CLI's `node_modules`
237848
- const bundledBuilder = isBundledBuilder(parsed, pkg_1.default);
237849
- if (bundledBuilder && parsed.name) {
237850
- requirePath = parsed.name;
237851
- }
237852
- else {
237853
- const buildersPkg = await (0, fs_extra_1.readJSON)((0, path_1.join)(builderDir, 'package.json'));
237854
- const pkgName = getPackageName(parsed, buildersPkg) || builderPkg;
237855
- requirePath = (0, path_1.join)(builderDir, 'node_modules', pkgName);
237856
- }
237857
- try {
237858
- output.debug(`Requiring runtime: "${requirePath}"`);
237859
- const mod = require_(requirePath);
237860
- const pkg = require_((0, path_1.join)(requirePath, 'package.json'));
237861
- builderWithPkg = {
237862
- requirePath,
237863
- builder: Object.freeze(mod),
237864
- package: Object.freeze(pkg),
237865
- };
237866
- }
237867
- catch (err) {
237868
- if ((0, is_error_1.isErrnoException)(err) &&
237869
- err.code === 'MODULE_NOT_FOUND' &&
237870
- !isRetry) {
237871
- output.debug(`Attempted to require ${requirePath}, but it is not installed`);
237872
- const pkgSet = new Set([builderPkg]);
237873
- await installBuilders(pkgSet, output, builderDir);
237874
- // Run `getBuilder()` again now that the builder has been installed
237875
- return getBuilder(builderPkg, output, builderDir, true);
237876
- }
237877
- throw err;
237878
- }
237879
- // If it's a bundled builder, then cache the require call
237880
- if (bundledBuilder) {
237881
- localBuilders[builderPkg] = builderWithPkg;
237882
- }
237883
- }
237884
- return builderWithPkg;
237885
- }
237886
- exports.getBuilder = getBuilder;
237887
- function isBundledBuilder(parsed, { dependencies = {} }) {
237888
- if (!parsed.name) {
237889
- return false;
237890
- }
237891
- const inCliDependencyList = !!dependencies[parsed.name];
237892
- const inScope = parsed.scope === '@vercel';
237893
- const isVersionedReference = ['tag', 'version', 'range'].includes(parsed.type);
237894
- return inCliDependencyList && inScope && isVersionedReference;
237895
- }
237896
- exports.isBundledBuilder = isBundledBuilder;
237897
- function getPackageName(parsed, buildersPkg) {
237898
- if (registryTypes.has(parsed.type)) {
237899
- return parsed.name;
237900
- }
237901
- const deps = {
237902
- ...buildersPkg.devDependencies,
237903
- ...buildersPkg.dependencies,
237904
- };
237905
- for (const [name, dep] of Object.entries(deps)) {
237906
- if (dep === parsed.raw || (0, path_1.basename)(dep) === (0, path_1.basename)(parsed.raw)) {
237907
- return name;
237908
- }
237909
- }
237910
- return null;
237911
- }
237912
- function purgeRequireCache(packages, builderDir, output) {
237913
- // The `require()` cache for the builder's assets must be purged
237914
- const packagesPaths = packages.map(b => (0, path_1.join)(builderDir, 'node_modules', b));
237915
- for (const id of Object.keys(require_.cache)) {
237916
- for (const path of packagesPaths) {
237917
- if (id.startsWith(path)) {
237918
- output.debug(`Purging require cache for "${id}"`);
237919
- delete require_.cache[id];
237920
- }
237921
- }
237922
- }
237923
- }
237924
-
237925
-
237926
237707
  /***/ }),
237927
237708
 
237928
237709
  /***/ 37655:
@@ -237950,10 +237731,10 @@ const highlight_1 = __importDefault(__webpack_require__(8199));
237950
237731
  const tree_kill_1 = __webpack_require__(21780);
237951
237732
  const path_helpers_1 = __webpack_require__(73250);
237952
237733
  const errors_ts_1 = __webpack_require__(60156);
237953
- const builder_cache_1 = __webpack_require__(30770);
237954
237734
  const routing_utils_1 = __webpack_require__(72948);
237955
237735
  const get_update_command_1 = __importDefault(__webpack_require__(64222));
237956
237736
  const pkg_name_1 = __webpack_require__(98106);
237737
+ const import_builders_1 = __webpack_require__(57049);
237957
237738
  async function createBuildProcess(match, envConfigs, workPath, output) {
237958
237739
  output.debug(`Creating build process for "${match.entrypoint}"`);
237959
237740
  const builderWorkerPath = (0, path_1.join)(__dirname, 'builder-worker.js');
@@ -237987,20 +237768,21 @@ async function createBuildProcess(match, envConfigs, workPath, output) {
237987
237768
  });
237988
237769
  }
237989
237770
  async function executeBuild(vercelConfig, devServer, files, match, requestPath, isInitialBuild, filesChanged, filesRemoved) {
237990
- const { builderWithPkg: { runInProcess, requirePath, builder, package: pkg }, } = match;
237991
- const { entrypoint } = match;
237771
+ const { builderWithPkg: { path: requirePath, builder, pkg }, } = match;
237772
+ const { entrypoint, use } = match;
237773
+ const isStatic = (0, fs_detectors_1.isStaticRuntime)(use);
237992
237774
  const { envConfigs, cwd: workPath, devCacheDir } = devServer;
237993
237775
  const debug = devServer.output.isDebugEnabled();
237994
237776
  const startTime = Date.now();
237995
- const showBuildTimestamp = !(0, fs_detectors_1.isOfficialRuntime)('static', match.use) && (!isInitialBuild || debug);
237777
+ const showBuildTimestamp = !isStatic && (!isInitialBuild || debug);
237996
237778
  if (showBuildTimestamp) {
237997
- devServer.output.log(`Building ${match.use}:${entrypoint}`);
237779
+ devServer.output.log(`Building ${use}:${entrypoint}`);
237998
237780
  devServer.output.debug(`Using \`${pkg.name}${pkg.version ? `@${pkg.version}` : ''}\``);
237999
237781
  }
238000
237782
  const config = match.config || {};
238001
237783
  let result;
238002
237784
  let { buildProcess } = match;
238003
- if (!runInProcess && !buildProcess) {
237785
+ if (!isStatic && !buildProcess) {
238004
237786
  buildProcess = await createBuildProcess(match, envConfigs, workPath, devServer.output);
238005
237787
  }
238006
237788
  const buildOptions = {
@@ -238066,9 +237848,6 @@ async function executeBuild(vercelConfig, devServer, files, match, requestPath,
238066
237848
  output: buildResultOrOutputs,
238067
237849
  routes: [],
238068
237850
  watch: [],
238069
- distPath: typeof buildResultOrOutputs.distPath === 'string'
238070
- ? buildResultOrOutputs.distPath
238071
- : undefined,
238072
237851
  };
238073
237852
  }
238074
237853
  else if (builder.version === 2) {
@@ -238213,7 +237992,7 @@ async function executeBuild(vercelConfig, devServer, files, match, requestPath,
238213
237992
  Object.assign(match.buildOutput, result.output);
238214
237993
  if (showBuildTimestamp) {
238215
237994
  const endTime = Date.now();
238216
- devServer.output.log(`Built ${match.use}:${entrypoint} [${(0, ms_1.default)(endTime - startTime)}]`);
237995
+ devServer.output.log(`Built ${use}:${entrypoint} [${(0, ms_1.default)(endTime - startTime)}]`);
238217
237996
  }
238218
237997
  }
238219
237998
  exports.executeBuild = executeBuild;
@@ -238226,6 +238005,8 @@ async function getBuildMatches(vercelConfig, cwd, output, devServer, fileList) {
238226
238005
  }
238227
238006
  const noMatches = [];
238228
238007
  const builds = vercelConfig.builds || [{ src: '**', use: '@vercel/static' }];
238008
+ const builderSpecs = new Set(builds.map(b => b.use).filter(Boolean));
238009
+ const buildersWithPkgs = await (0, import_builders_1.importBuilders)(builderSpecs, cwd, output);
238229
238010
  for (const buildConfig of builds) {
238230
238011
  let { src = '**', use, config = {} } = buildConfig;
238231
238012
  if (!use) {
@@ -238252,6 +238033,7 @@ async function getBuildMatches(vercelConfig, cwd, output, devServer, fileList) {
238252
238033
  }
238253
238034
  for (const file of files) {
238254
238035
  src = (0, path_helpers_1.relative)(cwd, file);
238036
+ const entrypoint = mapToEntrypoint.get(src) || src;
238255
238037
  // Remove the output directory prefix
238256
238038
  if (config.zeroConfig && config.outputDirectory) {
238257
238039
  const outputMatch = config.outputDirectory + '/';
@@ -238259,11 +238041,14 @@ async function getBuildMatches(vercelConfig, cwd, output, devServer, fileList) {
238259
238041
  src = src.slice(outputMatch.length);
238260
238042
  }
238261
238043
  }
238262
- const builderWithPkg = await (0, builder_cache_1.getBuilder)(use, output);
238044
+ const builderWithPkg = buildersWithPkgs.get(use);
238045
+ if (!builderWithPkg) {
238046
+ throw new Error(`Failed to load Builder "${use}"`);
238047
+ }
238263
238048
  matches.push({
238264
238049
  ...buildConfig,
238265
238050
  src,
238266
- entrypoint: mapToEntrypoint.get(src) || src,
238051
+ entrypoint,
238267
238052
  builderWithPkg,
238268
238053
  buildOutput: {},
238269
238054
  buildResults: new Map(),
@@ -238488,6 +238273,7 @@ exports.default = getMimeType;
238488
238273
  "use strict";
238489
238274
 
238490
238275
  Object.defineProperty(exports, "__esModule", ({ value: true }));
238276
+ exports.replaceLocalhost = exports.parseListen = void 0;
238491
238277
  const url_1 = __webpack_require__(78835);
238492
238278
  function parseListen(str, defaultPort = 3000) {
238493
238279
  let port = Number(str);
@@ -238527,7 +238313,11 @@ function parseListen(str, defaultPort = 3000) {
238527
238313
  throw new Error(`Unknown \`--listen\` scheme (protocol): ${url.protocol}`);
238528
238314
  }
238529
238315
  }
238530
- exports.default = parseListen;
238316
+ exports.parseListen = parseListen;
238317
+ function replaceLocalhost(address) {
238318
+ return address.replace('[::]', 'localhost').replace('0.0.0.0', 'localhost');
238319
+ }
238320
+ exports.replaceLocalhost = replaceLocalhost;
238531
238321
 
238532
238322
 
238533
238323
  /***/ }),
@@ -238826,7 +238616,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
238826
238616
  return (mod && mod.__esModule) ? mod : { "default": mod };
238827
238617
  };
238828
238618
  Object.defineProperty(exports, "__esModule", ({ value: true }));
238829
- const ms_1 = __importDefault(__webpack_require__(80040));
238830
238619
  const url_1 = __importStar(__webpack_require__(78835));
238831
238620
  const http_1 = __importDefault(__webpack_require__(98605));
238832
238621
  const fs_extra_1 = __importDefault(__webpack_require__(45392));
@@ -238869,7 +238658,6 @@ const router_1 = __webpack_require__(84369);
238869
238658
  const mime_type_1 = __importDefault(__webpack_require__(12165));
238870
238659
  const builder_1 = __webpack_require__(37655);
238871
238660
  const errors_1 = __webpack_require__(92586);
238872
- const builder_cache_1 = __webpack_require__(30770);
238873
238661
  // HTML templates
238874
238662
  const error_1 = __importDefault(__webpack_require__(97736));
238875
238663
  const error_base_1 = __importDefault(__webpack_require__(85143));
@@ -238883,6 +238671,7 @@ const parse_query_string_1 = __webpack_require__(40165);
238883
238671
  const is_error_1 = __webpack_require__(11026);
238884
238672
  const is_url_1 = __importDefault(__webpack_require__(4567));
238885
238673
  const project_settings_1 = __webpack_require__(42697);
238674
+ const parse_listen_1 = __webpack_require__(1919);
238886
238675
  const frontendRuntimeSet = new Set(frameworks_1.default.map(f => f.useRuntime?.use || '@vercel/static-build'));
238887
238676
  function sortBuilders(buildA, buildB) {
238888
238677
  if (buildA && buildA.use && (0, fs_detectors_1.isOfficialRuntime)('static-build', buildA.use)) {
@@ -239018,8 +238807,9 @@ class DevServer {
239018
238807
  // the middleware server for every HTTP request?
239019
238808
  const { envConfigs, files, devCacheDir, cwd: workPath } = this;
239020
238809
  try {
239021
- startMiddlewareResult =
239022
- await middleware.builderWithPkg.builder.startDevServer?.({
238810
+ const { builder } = middleware.builderWithPkg;
238811
+ if (builder.version === 3) {
238812
+ startMiddlewareResult = await builder.startDevServer?.({
239023
238813
  files,
239024
238814
  entrypoint: middleware.entrypoint,
239025
238815
  workPath,
@@ -239033,6 +238823,7 @@ class DevServer {
239033
238823
  buildEnv: { ...envConfigs.buildEnv },
239034
238824
  },
239035
238825
  });
238826
+ }
239036
238827
  if (startMiddlewareResult) {
239037
238828
  const { port, pid } = startMiddlewareResult;
239038
238829
  middlewarePid = pid;
@@ -239105,8 +238896,7 @@ class DevServer {
239105
238896
  if ((0, is_url_1.default)(rewritePath)) {
239106
238897
  const rewriteUrlParsed = new url_1.URL(rewritePath);
239107
238898
  // `this.address` already has localhost normalized from ip4 and ip6 values
239108
- const devServerParsed = new url_1.URL(this.address);
239109
- if (devServerParsed.origin === rewriteUrlParsed.origin) {
238899
+ if (this.address.origin === rewriteUrlParsed.origin) {
239110
238900
  // remove origin, leaving the path
239111
238901
  req.url =
239112
238902
  rewritePath.slice(rewriteUrlParsed.origin.length) || '/';
@@ -239291,8 +239081,8 @@ class DevServer {
239291
239081
  // up a single-serve dev HTTP server that vercel dev will proxy this HTTP request
239292
239082
  // to. Once the proxied request is finished, vercel dev shuts down the dev
239293
239083
  // server child process.
239294
- const { builder, package: builderPkg } = match.builderWithPkg;
239295
- if (typeof builder.startDevServer === 'function') {
239084
+ const { builder, pkg: builderPkg } = match.builderWithPkg;
239085
+ if (builder.version === 3 && typeof builder.startDevServer === 'function') {
239296
239086
  let devServerResult = null;
239297
239087
  try {
239298
239088
  const { envConfigs, files, devCacheDir, cwd: workPath } = this;
@@ -239479,7 +239269,6 @@ class DevServer {
239479
239269
  this.systemEnvValues = options.systemEnvValues || [];
239480
239270
  this.projectEnvs = options.projectEnvs || [];
239481
239271
  this.files = {};
239482
- this.address = '';
239483
239272
  this.originalProjectSettings = options.projectSettings;
239484
239273
  this.projectSettings = options.projectSettings;
239485
239274
  this.caseSensitive = false;
@@ -239503,7 +239292,6 @@ class DevServer {
239503
239292
  this.vercelConfigWarning = false;
239504
239293
  this.getVercelConfigPromise = null;
239505
239294
  this.blockingBuildsPromise = null;
239506
- this.updateBuildersPromise = null;
239507
239295
  this.startPromise = null;
239508
239296
  this.watchAggregationId = null;
239509
239297
  this.watchAggregationEvents = [];
@@ -239512,6 +239300,12 @@ class DevServer {
239512
239300
  this.podId = Math.random().toString(32).slice(-5);
239513
239301
  this.devServerPids = new Set();
239514
239302
  }
239303
+ get address() {
239304
+ if (!this._address) {
239305
+ throw new Error('Invalid access to `address` because `start` has not yet populated `this.address`.');
239306
+ }
239307
+ return this._address;
239308
+ }
239515
239309
  async exit(code = 1) {
239516
239310
  await this.stop(code);
239517
239311
  process.exit(code);
@@ -239701,25 +239495,6 @@ class DevServer {
239701
239495
  return sortBuilders(matchA[1], matchB[1]);
239702
239496
  }));
239703
239497
  }
239704
- async invalidateBuildMatches(vercelConfig, updatedBuilders) {
239705
- if (updatedBuilders.length === 0) {
239706
- this.output.debug('No builders were updated');
239707
- return;
239708
- }
239709
- // Delete any build matches that have the old builder required already
239710
- for (const buildMatch of this.buildMatches.values()) {
239711
- const { src, builderWithPkg: { package: pkg }, } = buildMatch;
239712
- if ((0, fs_detectors_1.isOfficialRuntime)('static', pkg.name))
239713
- continue;
239714
- if (pkg.name && updatedBuilders.includes(pkg.name)) {
239715
- (0, builder_1.shutdownBuilder)(buildMatch, this.output);
239716
- this.buildMatches.delete(src);
239717
- this.output.debug(`Invalidated build match for "${src}"`);
239718
- }
239719
- }
239720
- // Re-add the build matches that were just removed, but with the new builder
239721
- await this.updateBuildMatches(vercelConfig);
239722
- }
239723
239498
  async getLocalEnv(fileName, base) {
239724
239499
  // TODO: use the file watcher to only invalidate the env `dotfile`
239725
239500
  // once a change to the `fileName` occurs
@@ -239873,7 +239648,7 @@ class DevServer {
239873
239648
  let allEnv = { ...buildEnv, ...runEnv };
239874
239649
  // If no .env/.build.env is present, use cloud environment variables
239875
239650
  if (Object.keys(allEnv).length === 0) {
239876
- const cloudEnv = (0, expose_system_envs_1.default)(this.projectEnvs || [], this.systemEnvValues || [], this.projectSettings?.autoExposeSystemEnvs, new url_1.URL(this.address).host);
239651
+ const cloudEnv = (0, expose_system_envs_1.default)(this.projectEnvs || [], this.systemEnvValues || [], this.projectSettings?.autoExposeSystemEnvs, this.address.host);
239877
239652
  allEnv = { ...cloudEnv };
239878
239653
  runEnv = { ...cloudEnv };
239879
239654
  buildEnv = { ...cloudEnv };
@@ -239978,7 +239753,7 @@ class DevServer {
239978
239753
  injectSystemValuesInDotenv(env) {
239979
239754
  for (const name of Object.keys(env)) {
239980
239755
  if (name === 'VERCEL_URL') {
239981
- env['VERCEL_URL'] = new url_1.URL(this.address).host;
239756
+ env['VERCEL_URL'] = this.address.host;
239982
239757
  }
239983
239758
  else if (name === 'VERCEL_REGION') {
239984
239759
  env['VERCEL_REGION'] = 'dev1';
@@ -240039,9 +239814,7 @@ class DevServer {
240039
239814
  }
240040
239815
  }
240041
239816
  }
240042
- this.address = address
240043
- .replace('[::]', 'localhost')
240044
- .replace('127.0.0.1', 'localhost');
239817
+ this._address = new url_1.URL((0, parse_listen_1.replaceLocalhost)(address));
240045
239818
  const vercelConfig = await this.getVercelConfig();
240046
239819
  const devCommandPromise = this.runDevCommand();
240047
239820
  const files = await (0, get_files_1.staticFiles)(this.cwd, { output: this.output });
@@ -240055,25 +239828,7 @@ class DevServer {
240055
239828
  this.files[extensionless] = new build_utils_1.FileFsRef({ mode, fsPath });
240056
239829
  }
240057
239830
  }
240058
- const builders = new Set((vercelConfig.builds || [])
240059
- .filter((b) => b.use)
240060
- .map((b) => b.use));
240061
- await (0, builder_cache_1.installBuilders)(builders, this.output);
240062
239831
  await this.updateBuildMatches(vercelConfig, true);
240063
- // Updating builders happens lazily, and any builders that were updated
240064
- // get their "build matches" invalidated so that the new version is used.
240065
- this.updateBuildersTimeout = setTimeout(() => {
240066
- this.updateBuildersPromise = (0, builder_cache_1.updateBuilders)(builders, this.output)
240067
- .then(updatedBuilders => {
240068
- this.updateBuildersPromise = null;
240069
- this.invalidateBuildMatches(vercelConfig, updatedBuilders);
240070
- })
240071
- .catch(err => {
240072
- this.updateBuildersPromise = null;
240073
- this.output.prettyError(err);
240074
- this.output.debug(err.stack);
240075
- });
240076
- }, (0, ms_1.default)('30s'));
240077
239832
  // Builders that do not define a `shouldServe()` function need to be
240078
239833
  // executed at boot-up time in order to get the initial assets and/or routes
240079
239834
  // that can be served by the builder.
@@ -240123,20 +239878,22 @@ class DevServer {
240123
239878
  this.proxy.ws(req, socket, head, { target });
240124
239879
  });
240125
239880
  await devCommandPromise;
240126
- this.output.ready(`Available at ${(0, link_1.default)(this.address)}`);
239881
+ let addressFormatted = this.address.toString();
239882
+ if (this.address.pathname === '/' && this.address.protocol === 'http:') {
239883
+ // log address without trailing slash to maintain backwards compatibility
239884
+ addressFormatted = addressFormatted.replace(/\/$/, '');
239885
+ }
239886
+ this.output.ready(`Available at ${(0, link_1.default)(addressFormatted)}`);
240127
239887
  }
240128
239888
  /**
240129
239889
  * Shuts down the `vercel dev` server, and cleans up any temporary resources.
240130
239890
  */
240131
239891
  async stop(exitCode) {
240132
- const { devProcess } = this;
240133
- const { debug } = this.output;
240134
239892
  if (this.stopping)
240135
239893
  return;
240136
239894
  this.stopping = true;
240137
- if (typeof this.updateBuildersTimeout !== 'undefined') {
240138
- clearTimeout(this.updateBuildersTimeout);
240139
- }
239895
+ const { devProcess } = this;
239896
+ const { debug } = this.output;
240140
239897
  const ops = [];
240141
239898
  for (const match of this.buildMatches.values()) {
240142
239899
  ops.push((0, builder_1.shutdownBuilder)(match, this.output));
@@ -240149,15 +239906,9 @@ class DevServer {
240149
239906
  debug(`Closing file watcher`);
240150
239907
  ops.push(this.watcher.close());
240151
239908
  }
240152
- if (this.updateBuildersPromise) {
240153
- debug(`Waiting for builders update to complete`);
240154
- ops.push(this.updateBuildersPromise);
240155
- }
240156
239909
  for (const pid of this.devServerPids) {
240157
239910
  ops.push(this.killBuilderDevServer(pid));
240158
239911
  }
240159
- // Ensure that the builders module cache is created
240160
- ops.push(builder_cache_1.builderDirPromise);
240161
239912
  try {
240162
239913
  await Promise.all(ops);
240163
239914
  }
@@ -240450,7 +240201,7 @@ class DevServer {
240450
240201
  }
240451
240202
  this.output.log(`Running Dev Command ${chalk_1.default.cyan.bold(`“${devCommand}”`)}`);
240452
240203
  const port = await (0, get_port_1.default)();
240453
- const env = {
240204
+ const env = (0, build_utils_1.cloneEnv)({
240454
240205
  // Because of child process 'pipe' below, isTTY will be false.
240455
240206
  // Most frameworks use `chalk`/`supports-color` so we enable it anyway.
240456
240207
  FORCE_COLOR: process.stdout.isTTY ? '1' : '0',
@@ -240458,10 +240209,9 @@ class DevServer {
240458
240209
  // browser window, since it will not be the port that `vc dev`
240459
240210
  // is listening on and thus will be missing Vercel features.
240460
240211
  BROWSER: 'none',
240461
- ...process.env,
240462
- ...this.envConfigs.allEnv,
240212
+ }, process.env, this.envConfigs.allEnv, {
240463
240213
  PORT: `${port}`,
240464
- };
240214
+ });
240465
240215
  // This is necesary so that the dev command in the Project
240466
240216
  // will work cross-platform (especially Windows).
240467
240217
  let command = devCommand
@@ -240487,7 +240237,6 @@ class DevServer {
240487
240237
  }
240488
240238
  }
240489
240239
  this.output.debug(`Spawning dev command: ${command}`);
240490
- const devPort = new url_1.URL(this.address).port;
240491
240240
  const proxyPort = new RegExp(port.toString(), 'g');
240492
240241
  const p = (0, build_utils_1.spawnCommand)(command, {
240493
240242
  stdio: ['inherit', 'pipe', 'pipe'],
@@ -240501,7 +240250,7 @@ class DevServer {
240501
240250
  p.stderr.pipe(process.stderr);
240502
240251
  p.stdout.setEncoding('utf8');
240503
240252
  p.stdout.on('data', (data) => {
240504
- process.stdout.write(data.replace(proxyPort, devPort));
240253
+ process.stdout.write(data.replace(proxyPort, this.address.port));
240505
240254
  });
240506
240255
  p.on('exit', (code, signal) => {
240507
240256
  this.output.debug(`Dev command exited with "${signal || code}"`);
@@ -240748,43 +240497,6 @@ function buildMatchEquals(a, b) {
240748
240497
  }
240749
240498
 
240750
240499
 
240751
- /***/ }),
240752
-
240753
- /***/ 46241:
240754
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
240755
-
240756
- "use strict";
240757
-
240758
- Object.defineProperty(exports, "__esModule", ({ value: true }));
240759
- exports.shouldServe = exports.build = exports.version = void 0;
240760
- const build_utils_1 = __webpack_require__(3131);
240761
- exports.version = 2;
240762
- function build({ files, entrypoint, config: { zeroConfig, outputDirectory }, }) {
240763
- const path = zeroConfig && outputDirectory
240764
- ? `${outputDirectory}/${entrypoint}`
240765
- : entrypoint;
240766
- return {
240767
- output: {
240768
- [entrypoint]: files[path],
240769
- },
240770
- routes: [],
240771
- watch: [path],
240772
- };
240773
- }
240774
- exports.build = build;
240775
- function shouldServe(_opts) {
240776
- const opts = { ..._opts };
240777
- let { config: { zeroConfig, outputDirectory }, } = opts;
240778
- // Add the output directory prefix
240779
- if (zeroConfig && outputDirectory) {
240780
- opts.entrypoint = `${outputDirectory}/${opts.entrypoint}`;
240781
- opts.requestPath = `${outputDirectory}/${opts.requestPath}`;
240782
- }
240783
- return (0, build_utils_1.shouldServe)(opts);
240784
- }
240785
- exports.shouldServe = shouldServe;
240786
-
240787
-
240788
240500
  /***/ }),
240789
240501
 
240790
240502
  /***/ 97736:
@@ -249500,7 +249212,7 @@ module.exports = JSON.parse("{\"application/1d-interleaved-parityfec\":{\"source
249500
249212
  /***/ ((module) => {
249501
249213
 
249502
249214
  "use strict";
249503
- module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.2.4\",\"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.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\"]}}");
249215
+ module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.3.0\",\"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.3\",\"@vercel/go\":\"2.2.6\",\"@vercel/hydrogen\":\"0.0.19\",\"@vercel/next\":\"3.1.26\",\"@vercel/node\":\"2.5.15\",\"@vercel/python\":\"3.1.15\",\"@vercel/redwood\":\"1.0.24\",\"@vercel/remix\":\"1.0.25\",\"@vercel/ruby\":\"1.3.32\",\"@vercel/static-build\":\"1.0.24\",\"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.5\",\"@vercel/frameworks\":\"1.1.6\",\"@vercel/fs-detectors\":\"3.3.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\"]}}");
249504
249216
 
249505
249217
  /***/ }),
249506
249218
 
@@ -249508,7 +249220,7 @@ module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.2.4\",\"prefe
249508
249220
  /***/ ((module) => {
249509
249221
 
249510
249222
  "use strict";
249511
- 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\"}}");
249223
+ module.exports = JSON.parse("{\"name\":\"@vercel/client\",\"version\":\"12.2.5\",\"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.3\",\"@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\"}}");
249512
249224
 
249513
249225
  /***/ }),
249514
249226