vercel 28.2.5 → 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 +315 -631
  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: {
@@ -216794,6 +216841,9 @@ async function getWorkspacePackagePaths({ fs, workspace, }) {
216794
216841
  case 'pnpm':
216795
216842
  results = await getPnpmWorkspacePackagePaths({ fs: workspaceFs });
216796
216843
  break;
216844
+ case 'nx':
216845
+ results = await getNxWorkspacePackagePaths({ fs: workspaceFs });
216846
+ break;
216797
216847
  default:
216798
216848
  throw new Error(`Unknown workspace implementation: ${type}`);
216799
216849
  }
@@ -216829,6 +216879,12 @@ async function getPackageJsonWorkspacePackagePaths({ fs, }) {
216829
216879
  }
216830
216880
  return getPackagePaths(packages, fs);
216831
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
+ }
216832
216888
  async function getPnpmWorkspacePackagePaths({ fs, }) {
216833
216889
  const pnpmWorkspaceAsBuffer = await fs.readFile('pnpm-workspace.yaml');
216834
216890
  const { packages = [] } = js_yaml_1.default.load(pnpmWorkspaceAsBuffer.toString());
@@ -216943,6 +216999,18 @@ exports.workspaceManagers = [
216943
216999
  ],
216944
217000
  },
216945
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
+ },
216946
217014
  {
216947
217015
  name: 'default',
216948
217016
  slug: 'yarn',
@@ -228738,7 +228806,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
228738
228806
  const path_1 = __webpack_require__(85622);
228739
228807
  const fs_extra_1 = __importDefault(__webpack_require__(45392));
228740
228808
  const server_1 = __importDefault(__webpack_require__(18433));
228741
- const parse_listen_1 = __importDefault(__webpack_require__(1919));
228809
+ const parse_listen_1 = __webpack_require__(1919);
228742
228810
  const link_1 = __webpack_require__(67630);
228743
228811
  const get_decrypted_env_records_1 = __importDefault(__webpack_require__(30861));
228744
228812
  const setup_and_link_1 = __importDefault(__webpack_require__(69532));
@@ -228750,7 +228818,7 @@ async function dev(client, opts, args) {
228750
228818
  const { output } = client;
228751
228819
  const [dir = '.'] = args;
228752
228820
  let cwd = (0, path_1.resolve)(dir);
228753
- const listen = (0, parse_listen_1.default)(opts['--listen'] || '3000');
228821
+ const listen = (0, parse_listen_1.parseListen)(opts['--listen'] || '3000');
228754
228822
  // retrieve dev command
228755
228823
  let link = await (0, link_1.getLinkedProject)(client, cwd);
228756
228824
  if (link.status === 'not_linked' && !process.env.__VERCEL_SKIP_DEV_CMD) {
@@ -235094,15 +235162,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
235094
235162
  };
235095
235163
  Object.defineProperty(exports, "__esModule", ({ value: true }));
235096
235164
  exports.resolveBuilders = exports.importBuilders = void 0;
235165
+ const url_1 = __webpack_require__(78835);
235166
+ const pluralize_1 = __importDefault(__webpack_require__(31974));
235097
235167
  const npm_package_arg_1 = __importDefault(__webpack_require__(79726));
235098
235168
  const semver_1 = __webpack_require__(92879);
235099
235169
  const path_1 = __webpack_require__(85622);
235100
235170
  const fs_extra_1 = __webpack_require__(45392);
235171
+ const fs_detectors_1 = __webpack_require__(20302);
235101
235172
  const build_utils_1 = __webpack_require__(3131);
235102
235173
  const staticBuilder = __importStar(__webpack_require__(33274));
235103
235174
  const link_1 = __webpack_require__(67630);
235104
235175
  const read_json_file_1 = __importDefault(__webpack_require__(16898));
235105
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));
235106
235180
  /**
235107
235181
  * Imports the specified Vercel Builders, installing any missing ones
235108
235182
  * into `.vercel/builders` if necessary.
@@ -235133,7 +235207,7 @@ async function resolveBuilders(buildersDir, builderSpecs, output, resolvedSpecs)
235133
235207
  buildersToAdd.add(spec);
235134
235208
  continue;
235135
235209
  }
235136
- if (name === '@vercel/static' || name === '@now/static') {
235210
+ if ((0, fs_detectors_1.isStaticRuntime)(name)) {
235137
235211
  // `@vercel/static` is a special-case built-in builder
235138
235212
  builders.set(name, {
235139
235213
  builder: staticBuilder,
@@ -235234,14 +235308,45 @@ async function installBuilders(buildersDir, buildersToAdd, output) {
235234
235308
  if (err.code !== 'EEXIST')
235235
235309
  throw err;
235236
235310
  }
235237
- output.debug(`Installing Builders: ${Array.from(buildersToAdd).join(', ')}`);
235238
- await (0, build_utils_1.spawnAsync)('yarn', ['add', '@vercel/build-utils', ...buildersToAdd], {
235239
- cwd: buildersDir,
235240
- });
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
+ }
235241
235338
  // Symlink `@now/build-utils` -> `@vercel/build-utils` to support legacy Builders
235242
235339
  const nowScopePath = (0, path_1.join)(buildersDir, 'node_modules/@now');
235243
235340
  await (0, fs_extra_1.mkdirp)(nowScopePath);
235244
- 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
+ }
235245
235350
  // Cross-reference any builderSpecs from the saved `package.json` file,
235246
235351
  // in case they were installed from a URL
235247
235352
  const buildersPkg = await (0, read_json_file_1.default)(buildersPkgPath);
@@ -235296,8 +235401,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
235296
235401
  return (mod && mod.__esModule) ? mod : { "default": mod };
235297
235402
  };
235298
235403
  Object.defineProperty(exports, "__esModule", ({ value: true }));
235299
- exports.build = exports.version = void 0;
235404
+ exports.shouldServe = exports.build = exports.version = void 0;
235300
235405
  const minimatch_1 = __importDefault(__webpack_require__(99566));
235406
+ const build_utils_1 = __webpack_require__(3131);
235301
235407
  exports.version = 2;
235302
235408
  const build = async ({ entrypoint, files, config }) => {
235303
235409
  const output = {};
@@ -235325,6 +235431,17 @@ const build = async ({ entrypoint, files, config }) => {
235325
235431
  return { output };
235326
235432
  };
235327
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;
235328
235445
 
235329
235446
 
235330
235447
  /***/ }),
@@ -237587,364 +237704,6 @@ function isValidArchive(archive) {
237587
237704
  exports.isValidArchive = isValidArchive;
237588
237705
 
237589
237706
 
237590
- /***/ }),
237591
-
237592
- /***/ 30770:
237593
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
237594
-
237595
- "use strict";
237596
-
237597
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
237598
- if (k2 === undefined) k2 = k;
237599
- var desc = Object.getOwnPropertyDescriptor(m, k);
237600
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
237601
- desc = { enumerable: true, get: function() { return m[k]; } };
237602
- }
237603
- Object.defineProperty(o, k2, desc);
237604
- }) : (function(o, m, k, k2) {
237605
- if (k2 === undefined) k2 = k;
237606
- o[k2] = m[k];
237607
- }));
237608
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
237609
- Object.defineProperty(o, "default", { enumerable: true, value: v });
237610
- }) : function(o, v) {
237611
- o["default"] = v;
237612
- });
237613
- var __importStar = (this && this.__importStar) || function (mod) {
237614
- if (mod && mod.__esModule) return mod;
237615
- var result = {};
237616
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
237617
- __setModuleDefault(result, mod);
237618
- return result;
237619
- };
237620
- var __importDefault = (this && this.__importDefault) || function (mod) {
237621
- return (mod && mod.__esModule) ? mod : { "default": mod };
237622
- };
237623
- Object.defineProperty(exports, "__esModule", ({ value: true }));
237624
- exports.isBundledBuilder = exports.getBuilder = exports.updateBuilders = exports.installBuilders = exports.filterPackage = exports.getBuildUtils = exports.prepareBuilderDir = exports.prepareCacheDir = exports.builderDirPromise = exports.cacheDirPromise = void 0;
237625
- const chalk_1 = __importDefault(__webpack_require__(961));
237626
- const execa_1 = __importDefault(__webpack_require__(94237));
237627
- const semver_1 = __importDefault(__webpack_require__(92879));
237628
- const npm_package_arg_1 = __importDefault(__webpack_require__(79726));
237629
- const pluralize_1 = __importDefault(__webpack_require__(31974));
237630
- const path_1 = __webpack_require__(85622);
237631
- const xdg_app_paths_1 = __importDefault(__webpack_require__(30461));
237632
- const fs_extra_1 = __webpack_require__(45392);
237633
- const build_utils_1 = __webpack_require__(3131);
237634
- const pkg_1 = __importDefault(__webpack_require__(80984));
237635
- const cmd_1 = __importDefault(__webpack_require__(87350));
237636
- const errors_ts_1 = __webpack_require__(60156);
237637
- const staticBuilder = __importStar(__webpack_require__(46241));
237638
- const is_error_1 = __webpack_require__(11026);
237639
- const require_ = eval('require');
237640
- const registryTypes = new Set(['version', 'tag', 'range']);
237641
- const createStaticBuilder = (scope) => {
237642
- return {
237643
- runInProcess: true,
237644
- requirePath: `${scope}/static`,
237645
- builder: Object.freeze(staticBuilder),
237646
- package: Object.freeze({ name: `@${scope}/static`, version: '' }),
237647
- };
237648
- };
237649
- const localBuilders = {
237650
- '@now/static': createStaticBuilder('now'),
237651
- '@vercel/static': createStaticBuilder('vercel'),
237652
- };
237653
- exports.cacheDirPromise = prepareCacheDir();
237654
- exports.builderDirPromise = prepareBuilderDir();
237655
- /**
237656
- * Prepare cache directory for installing Vercel runtimes.
237657
- */
237658
- async function prepareCacheDir() {
237659
- const designated = (0, xdg_app_paths_1.default)('com.vercel.cli').cache();
237660
- if (!designated) {
237661
- throw new errors_ts_1.NoBuilderCacheError();
237662
- }
237663
- const cacheDir = (0, path_1.join)(designated, 'dev');
237664
- await (0, fs_extra_1.mkdirp)(cacheDir);
237665
- return cacheDir;
237666
- }
237667
- exports.prepareCacheDir = prepareCacheDir;
237668
- async function prepareBuilderDir() {
237669
- const builderDir = (0, path_1.join)(await exports.cacheDirPromise, 'builders');
237670
- await (0, fs_extra_1.mkdirp)(builderDir);
237671
- // Create an empty `package.json` file, only if one does not already exist
237672
- try {
237673
- const buildersPkg = (0, path_1.join)(builderDir, 'package.json');
237674
- await (0, fs_extra_1.writeJSON)(buildersPkg, { private: true }, { flag: 'wx' });
237675
- }
237676
- catch (err) {
237677
- if (!(0, is_error_1.isErrnoException)(err) || err.code !== 'EEXIST') {
237678
- throw err;
237679
- }
237680
- }
237681
- return builderDir;
237682
- }
237683
- exports.prepareBuilderDir = prepareBuilderDir;
237684
- function getNpmVersion(use = '') {
237685
- const parsed = (0, npm_package_arg_1.default)(use);
237686
- if (registryTypes.has(parsed.type)) {
237687
- return parsed.fetchSpec || '';
237688
- }
237689
- return '';
237690
- }
237691
- function getBuildUtils(packages) {
237692
- const version = packages
237693
- .map(getNpmVersion)
237694
- .some(ver => ver.includes('canary'))
237695
- ? 'canary'
237696
- : 'latest';
237697
- return `@vercel/build-utils@${version}`;
237698
- }
237699
- exports.getBuildUtils = getBuildUtils;
237700
- function parseVersionSafe(rawSpec) {
237701
- try {
237702
- return semver_1.default.parse(rawSpec);
237703
- }
237704
- catch (e) {
237705
- return null;
237706
- }
237707
- }
237708
- function filterPackage(builderSpec, buildersPkg, cliPkg) {
237709
- if (builderSpec in localBuilders)
237710
- return false;
237711
- const parsed = (0, npm_package_arg_1.default)(builderSpec);
237712
- const parsedVersion = parseVersionSafe(parsed.rawSpec);
237713
- // Skip install of Runtimes that are part of Vercel CLI's `dependencies`
237714
- if (isBundledBuilder(parsed, cliPkg)) {
237715
- return false;
237716
- }
237717
- // Skip install of already installed Runtime with exact version match
237718
- if (parsed.name &&
237719
- parsed.type === 'version' &&
237720
- parsedVersion &&
237721
- buildersPkg.dependencies &&
237722
- parsedVersion.version == buildersPkg.dependencies[parsed.name]) {
237723
- return false;
237724
- }
237725
- return true;
237726
- }
237727
- exports.filterPackage = filterPackage;
237728
- /**
237729
- * Install a list of builders to the cache directory.
237730
- */
237731
- async function installBuilders(packagesSet, output, builderDir) {
237732
- const packages = Array.from(packagesSet);
237733
- if (packages.length === 0 ||
237734
- (packages.length === 1 &&
237735
- Object.hasOwnProperty.call(localBuilders, packages[0]))) {
237736
- // Static deployment, no builders to install
237737
- return;
237738
- }
237739
- if (!builderDir) {
237740
- builderDir = await exports.builderDirPromise;
237741
- }
237742
- const buildersPkgPath = (0, path_1.join)(builderDir, 'package.json');
237743
- const buildersPkgBefore = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237744
- const depsBefore = {
237745
- ...buildersPkgBefore.devDependencies,
237746
- ...buildersPkgBefore.dependencies,
237747
- };
237748
- // Filter out any packages that come packaged with Vercel CLI
237749
- const packagesToInstall = packages.filter(p => filterPackage(p, buildersPkgBefore, pkg_1.default));
237750
- if (packagesToInstall.length === 0) {
237751
- output.debug('No Runtimes need to be installed');
237752
- return;
237753
- }
237754
- packagesToInstall.push(getBuildUtils(packages));
237755
- await npmInstall(builderDir, output, packagesToInstall, false);
237756
- const updatedPackages = [];
237757
- const buildersPkgAfter = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237758
- const depsAfter = {
237759
- ...buildersPkgAfter.devDependencies,
237760
- ...buildersPkgAfter.dependencies,
237761
- };
237762
- for (const [name, version] of Object.entries(depsAfter)) {
237763
- if (version !== depsBefore[name]) {
237764
- output.debug(`Runtime "${name}" updated to version \`${version}\``);
237765
- updatedPackages.push(name);
237766
- }
237767
- }
237768
- purgeRequireCache(updatedPackages, builderDir, output);
237769
- }
237770
- exports.installBuilders = installBuilders;
237771
- async function npmInstall(cwd, output, packagesToInstall, silent) {
237772
- const sortedPackages = packagesToInstall.sort();
237773
- if (!silent) {
237774
- output.spinner(`Installing ${(0, pluralize_1.default)('Runtime', sortedPackages.length)}: ${sortedPackages.join(', ')}`);
237775
- }
237776
- output.debug(`Running npm install in ${cwd}`);
237777
- try {
237778
- const args = [
237779
- 'install',
237780
- '--save-exact',
237781
- '--no-package-lock',
237782
- '--no-audit',
237783
- '--no-progress',
237784
- ];
237785
- if (process.stderr.isTTY) {
237786
- // Force colors in the npm child process
237787
- // https://docs.npmjs.com/misc/config#color
237788
- args.push('--color=always');
237789
- }
237790
- args.push(...sortedPackages);
237791
- const result = await (0, execa_1.default)('npm', args, {
237792
- cwd,
237793
- reject: false,
237794
- stdio: output.isDebugEnabled() ? 'inherit' : 'pipe',
237795
- });
237796
- if (result.failed) {
237797
- output.stopSpinner();
237798
- if (result.stdout) {
237799
- console.log(result.stdout);
237800
- }
237801
- if (result.stderr) {
237802
- console.error(result.stderr);
237803
- }
237804
- throw new build_utils_1.NowBuildError({
237805
- message: result.code === 'ENOENT'
237806
- ? `Command not found: ${chalk_1.default.cyan('npm')}\nPlease ensure that ${(0, cmd_1.default)('npm')} is properly installed`
237807
- : 'Failed to install `vercel dev` dependencies',
237808
- code: 'NPM_INSTALL_ERROR',
237809
- link: 'https://vercel.link/npm-install-failed-dev',
237810
- });
237811
- }
237812
- }
237813
- finally {
237814
- output.stopSpinner();
237815
- }
237816
- }
237817
- async function updateBuilders(packagesSet, output, builderDir) {
237818
- if (!builderDir) {
237819
- builderDir = await exports.builderDirPromise;
237820
- }
237821
- const updatedPackages = [];
237822
- const packages = Array.from(packagesSet);
237823
- const buildersPkgPath = (0, path_1.join)(builderDir, 'package.json');
237824
- const buildersPkgBefore = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237825
- const depsBefore = {
237826
- ...buildersPkgBefore.devDependencies,
237827
- ...buildersPkgBefore.dependencies,
237828
- };
237829
- const packagesToUpdate = packages.filter(p => {
237830
- if (p in localBuilders)
237831
- return false;
237832
- // If it's a builder that is part of Vercel CLI's
237833
- // `dependencies` then don't update it
237834
- if (isBundledBuilder((0, npm_package_arg_1.default)(p), pkg_1.default)) {
237835
- return false;
237836
- }
237837
- return true;
237838
- });
237839
- if (packagesToUpdate.length > 0) {
237840
- packagesToUpdate.push(getBuildUtils(packages));
237841
- await npmInstall(builderDir, output, packagesToUpdate, true);
237842
- const buildersPkgAfter = await (0, fs_extra_1.readJSON)(buildersPkgPath);
237843
- const depsAfter = {
237844
- ...buildersPkgAfter.devDependencies,
237845
- ...buildersPkgAfter.dependencies,
237846
- };
237847
- for (const [name, version] of Object.entries(depsAfter)) {
237848
- if (version !== depsBefore[name]) {
237849
- output.debug(`Runtime "${name}" updated to version \`${version}\``);
237850
- updatedPackages.push(name);
237851
- }
237852
- }
237853
- purgeRequireCache(updatedPackages, builderDir, output);
237854
- }
237855
- return updatedPackages;
237856
- }
237857
- exports.updateBuilders = updateBuilders;
237858
- /**
237859
- * Get a builder from the cache directory.
237860
- */
237861
- async function getBuilder(builderPkg, output, builderDir, isRetry = false) {
237862
- let builderWithPkg = localBuilders[builderPkg];
237863
- if (!builderWithPkg) {
237864
- if (!builderDir) {
237865
- builderDir = await exports.builderDirPromise;
237866
- }
237867
- let requirePath;
237868
- const parsed = (0, npm_package_arg_1.default)(builderPkg);
237869
- // First check if it's a bundled Runtime in Vercel CLI's `node_modules`
237870
- const bundledBuilder = isBundledBuilder(parsed, pkg_1.default);
237871
- if (bundledBuilder && parsed.name) {
237872
- requirePath = parsed.name;
237873
- }
237874
- else {
237875
- const buildersPkg = await (0, fs_extra_1.readJSON)((0, path_1.join)(builderDir, 'package.json'));
237876
- const pkgName = getPackageName(parsed, buildersPkg) || builderPkg;
237877
- requirePath = (0, path_1.join)(builderDir, 'node_modules', pkgName);
237878
- }
237879
- try {
237880
- output.debug(`Requiring runtime: "${requirePath}"`);
237881
- const mod = require_(requirePath);
237882
- const pkg = require_((0, path_1.join)(requirePath, 'package.json'));
237883
- builderWithPkg = {
237884
- requirePath,
237885
- builder: Object.freeze(mod),
237886
- package: Object.freeze(pkg),
237887
- };
237888
- }
237889
- catch (err) {
237890
- if ((0, is_error_1.isErrnoException)(err) &&
237891
- err.code === 'MODULE_NOT_FOUND' &&
237892
- !isRetry) {
237893
- output.debug(`Attempted to require ${requirePath}, but it is not installed`);
237894
- const pkgSet = new Set([builderPkg]);
237895
- await installBuilders(pkgSet, output, builderDir);
237896
- // Run `getBuilder()` again now that the builder has been installed
237897
- return getBuilder(builderPkg, output, builderDir, true);
237898
- }
237899
- throw err;
237900
- }
237901
- // If it's a bundled builder, then cache the require call
237902
- if (bundledBuilder) {
237903
- localBuilders[builderPkg] = builderWithPkg;
237904
- }
237905
- }
237906
- return builderWithPkg;
237907
- }
237908
- exports.getBuilder = getBuilder;
237909
- function isBundledBuilder(parsed, { dependencies = {} }) {
237910
- if (!parsed.name) {
237911
- return false;
237912
- }
237913
- const inCliDependencyList = !!dependencies[parsed.name];
237914
- const inScope = parsed.scope === '@vercel';
237915
- const isVersionedReference = ['tag', 'version', 'range'].includes(parsed.type);
237916
- return inCliDependencyList && inScope && isVersionedReference;
237917
- }
237918
- exports.isBundledBuilder = isBundledBuilder;
237919
- function getPackageName(parsed, buildersPkg) {
237920
- if (registryTypes.has(parsed.type)) {
237921
- return parsed.name;
237922
- }
237923
- const deps = {
237924
- ...buildersPkg.devDependencies,
237925
- ...buildersPkg.dependencies,
237926
- };
237927
- for (const [name, dep] of Object.entries(deps)) {
237928
- if (dep === parsed.raw || (0, path_1.basename)(dep) === (0, path_1.basename)(parsed.raw)) {
237929
- return name;
237930
- }
237931
- }
237932
- return null;
237933
- }
237934
- function purgeRequireCache(packages, builderDir, output) {
237935
- // The `require()` cache for the builder's assets must be purged
237936
- const packagesPaths = packages.map(b => (0, path_1.join)(builderDir, 'node_modules', b));
237937
- for (const id of Object.keys(require_.cache)) {
237938
- for (const path of packagesPaths) {
237939
- if (id.startsWith(path)) {
237940
- output.debug(`Purging require cache for "${id}"`);
237941
- delete require_.cache[id];
237942
- }
237943
- }
237944
- }
237945
- }
237946
-
237947
-
237948
237707
  /***/ }),
237949
237708
 
237950
237709
  /***/ 37655:
@@ -237972,10 +237731,10 @@ const highlight_1 = __importDefault(__webpack_require__(8199));
237972
237731
  const tree_kill_1 = __webpack_require__(21780);
237973
237732
  const path_helpers_1 = __webpack_require__(73250);
237974
237733
  const errors_ts_1 = __webpack_require__(60156);
237975
- const builder_cache_1 = __webpack_require__(30770);
237976
237734
  const routing_utils_1 = __webpack_require__(72948);
237977
237735
  const get_update_command_1 = __importDefault(__webpack_require__(64222));
237978
237736
  const pkg_name_1 = __webpack_require__(98106);
237737
+ const import_builders_1 = __webpack_require__(57049);
237979
237738
  async function createBuildProcess(match, envConfigs, workPath, output) {
237980
237739
  output.debug(`Creating build process for "${match.entrypoint}"`);
237981
237740
  const builderWorkerPath = (0, path_1.join)(__dirname, 'builder-worker.js');
@@ -238009,20 +237768,21 @@ async function createBuildProcess(match, envConfigs, workPath, output) {
238009
237768
  });
238010
237769
  }
238011
237770
  async function executeBuild(vercelConfig, devServer, files, match, requestPath, isInitialBuild, filesChanged, filesRemoved) {
238012
- const { builderWithPkg: { runInProcess, requirePath, builder, package: pkg }, } = match;
238013
- 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);
238014
237774
  const { envConfigs, cwd: workPath, devCacheDir } = devServer;
238015
237775
  const debug = devServer.output.isDebugEnabled();
238016
237776
  const startTime = Date.now();
238017
- const showBuildTimestamp = !(0, fs_detectors_1.isOfficialRuntime)('static', match.use) && (!isInitialBuild || debug);
237777
+ const showBuildTimestamp = !isStatic && (!isInitialBuild || debug);
238018
237778
  if (showBuildTimestamp) {
238019
- devServer.output.log(`Building ${match.use}:${entrypoint}`);
237779
+ devServer.output.log(`Building ${use}:${entrypoint}`);
238020
237780
  devServer.output.debug(`Using \`${pkg.name}${pkg.version ? `@${pkg.version}` : ''}\``);
238021
237781
  }
238022
237782
  const config = match.config || {};
238023
237783
  let result;
238024
237784
  let { buildProcess } = match;
238025
- if (!runInProcess && !buildProcess) {
237785
+ if (!isStatic && !buildProcess) {
238026
237786
  buildProcess = await createBuildProcess(match, envConfigs, workPath, devServer.output);
238027
237787
  }
238028
237788
  const buildOptions = {
@@ -238088,9 +237848,6 @@ async function executeBuild(vercelConfig, devServer, files, match, requestPath,
238088
237848
  output: buildResultOrOutputs,
238089
237849
  routes: [],
238090
237850
  watch: [],
238091
- distPath: typeof buildResultOrOutputs.distPath === 'string'
238092
- ? buildResultOrOutputs.distPath
238093
- : undefined,
238094
237851
  };
238095
237852
  }
238096
237853
  else if (builder.version === 2) {
@@ -238235,7 +237992,7 @@ async function executeBuild(vercelConfig, devServer, files, match, requestPath,
238235
237992
  Object.assign(match.buildOutput, result.output);
238236
237993
  if (showBuildTimestamp) {
238237
237994
  const endTime = Date.now();
238238
- 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)}]`);
238239
237996
  }
238240
237997
  }
238241
237998
  exports.executeBuild = executeBuild;
@@ -238248,6 +238005,8 @@ async function getBuildMatches(vercelConfig, cwd, output, devServer, fileList) {
238248
238005
  }
238249
238006
  const noMatches = [];
238250
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);
238251
238010
  for (const buildConfig of builds) {
238252
238011
  let { src = '**', use, config = {} } = buildConfig;
238253
238012
  if (!use) {
@@ -238274,6 +238033,7 @@ async function getBuildMatches(vercelConfig, cwd, output, devServer, fileList) {
238274
238033
  }
238275
238034
  for (const file of files) {
238276
238035
  src = (0, path_helpers_1.relative)(cwd, file);
238036
+ const entrypoint = mapToEntrypoint.get(src) || src;
238277
238037
  // Remove the output directory prefix
238278
238038
  if (config.zeroConfig && config.outputDirectory) {
238279
238039
  const outputMatch = config.outputDirectory + '/';
@@ -238281,11 +238041,14 @@ async function getBuildMatches(vercelConfig, cwd, output, devServer, fileList) {
238281
238041
  src = src.slice(outputMatch.length);
238282
238042
  }
238283
238043
  }
238284
- 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
+ }
238285
238048
  matches.push({
238286
238049
  ...buildConfig,
238287
238050
  src,
238288
- entrypoint: mapToEntrypoint.get(src) || src,
238051
+ entrypoint,
238289
238052
  builderWithPkg,
238290
238053
  buildOutput: {},
238291
238054
  buildResults: new Map(),
@@ -238510,6 +238273,7 @@ exports.default = getMimeType;
238510
238273
  "use strict";
238511
238274
 
238512
238275
  Object.defineProperty(exports, "__esModule", ({ value: true }));
238276
+ exports.replaceLocalhost = exports.parseListen = void 0;
238513
238277
  const url_1 = __webpack_require__(78835);
238514
238278
  function parseListen(str, defaultPort = 3000) {
238515
238279
  let port = Number(str);
@@ -238549,7 +238313,11 @@ function parseListen(str, defaultPort = 3000) {
238549
238313
  throw new Error(`Unknown \`--listen\` scheme (protocol): ${url.protocol}`);
238550
238314
  }
238551
238315
  }
238552
- 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;
238553
238321
 
238554
238322
 
238555
238323
  /***/ }),
@@ -238848,7 +238616,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
238848
238616
  return (mod && mod.__esModule) ? mod : { "default": mod };
238849
238617
  };
238850
238618
  Object.defineProperty(exports, "__esModule", ({ value: true }));
238851
- const ms_1 = __importDefault(__webpack_require__(80040));
238852
238619
  const url_1 = __importStar(__webpack_require__(78835));
238853
238620
  const http_1 = __importDefault(__webpack_require__(98605));
238854
238621
  const fs_extra_1 = __importDefault(__webpack_require__(45392));
@@ -238891,7 +238658,6 @@ const router_1 = __webpack_require__(84369);
238891
238658
  const mime_type_1 = __importDefault(__webpack_require__(12165));
238892
238659
  const builder_1 = __webpack_require__(37655);
238893
238660
  const errors_1 = __webpack_require__(92586);
238894
- const builder_cache_1 = __webpack_require__(30770);
238895
238661
  // HTML templates
238896
238662
  const error_1 = __importDefault(__webpack_require__(97736));
238897
238663
  const error_base_1 = __importDefault(__webpack_require__(85143));
@@ -238905,6 +238671,7 @@ const parse_query_string_1 = __webpack_require__(40165);
238905
238671
  const is_error_1 = __webpack_require__(11026);
238906
238672
  const is_url_1 = __importDefault(__webpack_require__(4567));
238907
238673
  const project_settings_1 = __webpack_require__(42697);
238674
+ const parse_listen_1 = __webpack_require__(1919);
238908
238675
  const frontendRuntimeSet = new Set(frameworks_1.default.map(f => f.useRuntime?.use || '@vercel/static-build'));
238909
238676
  function sortBuilders(buildA, buildB) {
238910
238677
  if (buildA && buildA.use && (0, fs_detectors_1.isOfficialRuntime)('static-build', buildA.use)) {
@@ -239040,8 +238807,9 @@ class DevServer {
239040
238807
  // the middleware server for every HTTP request?
239041
238808
  const { envConfigs, files, devCacheDir, cwd: workPath } = this;
239042
238809
  try {
239043
- startMiddlewareResult =
239044
- await middleware.builderWithPkg.builder.startDevServer?.({
238810
+ const { builder } = middleware.builderWithPkg;
238811
+ if (builder.version === 3) {
238812
+ startMiddlewareResult = await builder.startDevServer?.({
239045
238813
  files,
239046
238814
  entrypoint: middleware.entrypoint,
239047
238815
  workPath,
@@ -239055,6 +238823,7 @@ class DevServer {
239055
238823
  buildEnv: { ...envConfigs.buildEnv },
239056
238824
  },
239057
238825
  });
238826
+ }
239058
238827
  if (startMiddlewareResult) {
239059
238828
  const { port, pid } = startMiddlewareResult;
239060
238829
  middlewarePid = pid;
@@ -239312,8 +239081,8 @@ class DevServer {
239312
239081
  // up a single-serve dev HTTP server that vercel dev will proxy this HTTP request
239313
239082
  // to. Once the proxied request is finished, vercel dev shuts down the dev
239314
239083
  // server child process.
239315
- const { builder, package: builderPkg } = match.builderWithPkg;
239316
- if (typeof builder.startDevServer === 'function') {
239084
+ const { builder, pkg: builderPkg } = match.builderWithPkg;
239085
+ if (builder.version === 3 && typeof builder.startDevServer === 'function') {
239317
239086
  let devServerResult = null;
239318
239087
  try {
239319
239088
  const { envConfigs, files, devCacheDir, cwd: workPath } = this;
@@ -239523,7 +239292,6 @@ class DevServer {
239523
239292
  this.vercelConfigWarning = false;
239524
239293
  this.getVercelConfigPromise = null;
239525
239294
  this.blockingBuildsPromise = null;
239526
- this.updateBuildersPromise = null;
239527
239295
  this.startPromise = null;
239528
239296
  this.watchAggregationId = null;
239529
239297
  this.watchAggregationEvents = [];
@@ -239727,25 +239495,6 @@ class DevServer {
239727
239495
  return sortBuilders(matchA[1], matchB[1]);
239728
239496
  }));
239729
239497
  }
239730
- async invalidateBuildMatches(vercelConfig, updatedBuilders) {
239731
- if (updatedBuilders.length === 0) {
239732
- this.output.debug('No builders were updated');
239733
- return;
239734
- }
239735
- // Delete any build matches that have the old builder required already
239736
- for (const buildMatch of this.buildMatches.values()) {
239737
- const { src, builderWithPkg: { package: pkg }, } = buildMatch;
239738
- if ((0, fs_detectors_1.isOfficialRuntime)('static', pkg.name))
239739
- continue;
239740
- if (pkg.name && updatedBuilders.includes(pkg.name)) {
239741
- (0, builder_1.shutdownBuilder)(buildMatch, this.output);
239742
- this.buildMatches.delete(src);
239743
- this.output.debug(`Invalidated build match for "${src}"`);
239744
- }
239745
- }
239746
- // Re-add the build matches that were just removed, but with the new builder
239747
- await this.updateBuildMatches(vercelConfig);
239748
- }
239749
239498
  async getLocalEnv(fileName, base) {
239750
239499
  // TODO: use the file watcher to only invalidate the env `dotfile`
239751
239500
  // once a change to the `fileName` occurs
@@ -240065,7 +239814,7 @@ class DevServer {
240065
239814
  }
240066
239815
  }
240067
239816
  }
240068
- this._address = new url_1.URL(address.replace('[::]', 'localhost').replace('127.0.0.1', 'localhost'));
239817
+ this._address = new url_1.URL((0, parse_listen_1.replaceLocalhost)(address));
240069
239818
  const vercelConfig = await this.getVercelConfig();
240070
239819
  const devCommandPromise = this.runDevCommand();
240071
239820
  const files = await (0, get_files_1.staticFiles)(this.cwd, { output: this.output });
@@ -240079,25 +239828,7 @@ class DevServer {
240079
239828
  this.files[extensionless] = new build_utils_1.FileFsRef({ mode, fsPath });
240080
239829
  }
240081
239830
  }
240082
- const builders = new Set((vercelConfig.builds || [])
240083
- .filter((b) => b.use)
240084
- .map((b) => b.use));
240085
- await (0, builder_cache_1.installBuilders)(builders, this.output);
240086
239831
  await this.updateBuildMatches(vercelConfig, true);
240087
- // Updating builders happens lazily, and any builders that were updated
240088
- // get their "build matches" invalidated so that the new version is used.
240089
- this.updateBuildersTimeout = setTimeout(() => {
240090
- this.updateBuildersPromise = (0, builder_cache_1.updateBuilders)(builders, this.output)
240091
- .then(updatedBuilders => {
240092
- this.updateBuildersPromise = null;
240093
- this.invalidateBuildMatches(vercelConfig, updatedBuilders);
240094
- })
240095
- .catch(err => {
240096
- this.updateBuildersPromise = null;
240097
- this.output.prettyError(err);
240098
- this.output.debug(err.stack);
240099
- });
240100
- }, (0, ms_1.default)('30s'));
240101
239832
  // Builders that do not define a `shouldServe()` function need to be
240102
239833
  // executed at boot-up time in order to get the initial assets and/or routes
240103
239834
  // that can be served by the builder.
@@ -240158,14 +239889,11 @@ class DevServer {
240158
239889
  * Shuts down the `vercel dev` server, and cleans up any temporary resources.
240159
239890
  */
240160
239891
  async stop(exitCode) {
240161
- const { devProcess } = this;
240162
- const { debug } = this.output;
240163
239892
  if (this.stopping)
240164
239893
  return;
240165
239894
  this.stopping = true;
240166
- if (typeof this.updateBuildersTimeout !== 'undefined') {
240167
- clearTimeout(this.updateBuildersTimeout);
240168
- }
239895
+ const { devProcess } = this;
239896
+ const { debug } = this.output;
240169
239897
  const ops = [];
240170
239898
  for (const match of this.buildMatches.values()) {
240171
239899
  ops.push((0, builder_1.shutdownBuilder)(match, this.output));
@@ -240178,15 +239906,9 @@ class DevServer {
240178
239906
  debug(`Closing file watcher`);
240179
239907
  ops.push(this.watcher.close());
240180
239908
  }
240181
- if (this.updateBuildersPromise) {
240182
- debug(`Waiting for builders update to complete`);
240183
- ops.push(this.updateBuildersPromise);
240184
- }
240185
239909
  for (const pid of this.devServerPids) {
240186
239910
  ops.push(this.killBuilderDevServer(pid));
240187
239911
  }
240188
- // Ensure that the builders module cache is created
240189
- ops.push(builder_cache_1.builderDirPromise);
240190
239912
  try {
240191
239913
  await Promise.all(ops);
240192
239914
  }
@@ -240479,7 +240201,7 @@ class DevServer {
240479
240201
  }
240480
240202
  this.output.log(`Running Dev Command ${chalk_1.default.cyan.bold(`“${devCommand}”`)}`);
240481
240203
  const port = await (0, get_port_1.default)();
240482
- const env = {
240204
+ const env = (0, build_utils_1.cloneEnv)({
240483
240205
  // Because of child process 'pipe' below, isTTY will be false.
240484
240206
  // Most frameworks use `chalk`/`supports-color` so we enable it anyway.
240485
240207
  FORCE_COLOR: process.stdout.isTTY ? '1' : '0',
@@ -240487,10 +240209,9 @@ class DevServer {
240487
240209
  // browser window, since it will not be the port that `vc dev`
240488
240210
  // is listening on and thus will be missing Vercel features.
240489
240211
  BROWSER: 'none',
240490
- ...process.env,
240491
- ...this.envConfigs.allEnv,
240212
+ }, process.env, this.envConfigs.allEnv, {
240492
240213
  PORT: `${port}`,
240493
- };
240214
+ });
240494
240215
  // This is necesary so that the dev command in the Project
240495
240216
  // will work cross-platform (especially Windows).
240496
240217
  let command = devCommand
@@ -240776,43 +240497,6 @@ function buildMatchEquals(a, b) {
240776
240497
  }
240777
240498
 
240778
240499
 
240779
- /***/ }),
240780
-
240781
- /***/ 46241:
240782
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
240783
-
240784
- "use strict";
240785
-
240786
- Object.defineProperty(exports, "__esModule", ({ value: true }));
240787
- exports.shouldServe = exports.build = exports.version = void 0;
240788
- const build_utils_1 = __webpack_require__(3131);
240789
- exports.version = 2;
240790
- function build({ files, entrypoint, config: { zeroConfig, outputDirectory }, }) {
240791
- const path = zeroConfig && outputDirectory
240792
- ? `${outputDirectory}/${entrypoint}`
240793
- : entrypoint;
240794
- return {
240795
- output: {
240796
- [entrypoint]: files[path],
240797
- },
240798
- routes: [],
240799
- watch: [path],
240800
- };
240801
- }
240802
- exports.build = build;
240803
- function shouldServe(_opts) {
240804
- const opts = { ..._opts };
240805
- let { config: { zeroConfig, outputDirectory }, } = opts;
240806
- // Add the output directory prefix
240807
- if (zeroConfig && outputDirectory) {
240808
- opts.entrypoint = `${outputDirectory}/${opts.entrypoint}`;
240809
- opts.requestPath = `${outputDirectory}/${opts.requestPath}`;
240810
- }
240811
- return (0, build_utils_1.shouldServe)(opts);
240812
- }
240813
- exports.shouldServe = shouldServe;
240814
-
240815
-
240816
240500
  /***/ }),
240817
240501
 
240818
240502
  /***/ 97736:
@@ -249528,7 +249212,7 @@ module.exports = JSON.parse("{\"application/1d-interleaved-parityfec\":{\"source
249528
249212
  /***/ ((module) => {
249529
249213
 
249530
249214
  "use strict";
249531
- module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.2.5\",\"preferGlobal\":true,\"license\":\"Apache-2.0\",\"description\":\"The command-line interface for Vercel\",\"homepage\":\"https://vercel.com\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/vercel/vercel.git\",\"directory\":\"packages/cli\"},\"scripts\":{\"preinstall\":\"node ./scripts/preinstall.js\",\"test\":\"jest --env node --verbose --runInBand --bail --forceExit\",\"test-unit\":\"yarn test test/unit/\",\"test-integration-cli\":\"rimraf test/fixtures/integration && ava test/integration.js --serial --fail-fast --verbose\",\"test-integration-dev\":\"yarn test test/dev/\",\"coverage\":\"codecov\",\"build\":\"ts-node ./scripts/build.ts\",\"dev\":\"ts-node ./src/index.ts\"},\"bin\":{\"vc\":\"./dist/index.js\",\"vercel\":\"./dist/index.js\"},\"files\":[\"dist\",\"scripts/preinstall.js\"],\"ava\":{\"extensions\":[\"ts\"],\"require\":[\"ts-node/register/transpile-only\",\"esm\"]},\"engines\":{\"node\":\">= 14\"},\"dependencies\":{\"@vercel/build-utils\":\"5.4.2\",\"@vercel/go\":\"2.2.5\",\"@vercel/hydrogen\":\"0.0.18\",\"@vercel/next\":\"3.1.25\",\"@vercel/node\":\"2.5.14\",\"@vercel/python\":\"3.1.14\",\"@vercel/redwood\":\"1.0.23\",\"@vercel/remix\":\"1.0.24\",\"@vercel/ruby\":\"1.3.31\",\"@vercel/static-build\":\"1.0.23\",\"update-notifier\":\"5.1.0\"},\"devDependencies\":{\"@alex_neo/jest-expect-message\":\"1.0.5\",\"@next/env\":\"11.1.2\",\"@sentry/node\":\"5.5.0\",\"@sindresorhus/slugify\":\"0.11.0\",\"@swc/core\":\"1.2.218\",\"@tootallnate/once\":\"1.1.2\",\"@types/ansi-escapes\":\"3.0.0\",\"@types/ansi-regex\":\"4.0.0\",\"@types/async-retry\":\"1.2.1\",\"@types/bytes\":\"3.0.0\",\"@types/chance\":\"1.1.3\",\"@types/debug\":\"0.0.31\",\"@types/dotenv\":\"6.1.1\",\"@types/escape-html\":\"0.0.20\",\"@types/express\":\"4.17.13\",\"@types/fs-extra\":\"9.0.13\",\"@types/glob\":\"7.1.1\",\"@types/http-proxy\":\"1.16.2\",\"@types/ini\":\"1.3.31\",\"@types/inquirer\":\"7.3.1\",\"@types/jest\":\"27.4.1\",\"@types/jest-expect-message\":\"1.0.3\",\"@types/load-json-file\":\"2.0.7\",\"@types/mime-types\":\"2.1.0\",\"@types/minimatch\":\"3.0.3\",\"@types/mri\":\"1.1.0\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"11.11.0\",\"@types/node-fetch\":\"2.5.10\",\"@types/npm-package-arg\":\"6.1.0\",\"@types/pluralize\":\"0.0.29\",\"@types/psl\":\"1.1.0\",\"@types/semver\":\"6.0.1\",\"@types/tar-fs\":\"1.16.1\",\"@types/text-table\":\"0.2.0\",\"@types/title\":\"3.4.1\",\"@types/universal-analytics\":\"0.4.2\",\"@types/update-notifier\":\"5.1.0\",\"@types/which\":\"1.3.2\",\"@types/write-json-file\":\"2.2.1\",\"@types/yauzl-promise\":\"2.1.0\",\"@vercel/client\":\"12.2.4\",\"@vercel/frameworks\":\"1.1.5\",\"@vercel/fs-detectors\":\"3.2.0\",\"@vercel/fun\":\"1.0.4\",\"@vercel/ncc\":\"0.24.0\",\"@zeit/source-map-support\":\"0.6.2\",\"ajv\":\"6.12.2\",\"alpha-sort\":\"2.0.1\",\"ansi-escapes\":\"3.0.0\",\"ansi-regex\":\"3.0.0\",\"arg\":\"5.0.0\",\"async-listen\":\"1.2.0\",\"async-retry\":\"1.1.3\",\"async-sema\":\"2.1.4\",\"ava\":\"2.2.0\",\"boxen\":\"4.2.0\",\"bytes\":\"3.0.0\",\"chalk\":\"4.1.0\",\"chance\":\"1.1.7\",\"chokidar\":\"3.3.1\",\"codecov\":\"3.8.2\",\"cpy\":\"7.2.0\",\"date-fns\":\"1.29.0\",\"debug\":\"3.1.0\",\"dot\":\"1.1.3\",\"dotenv\":\"4.0.0\",\"email-prompt\":\"0.3.2\",\"email-validator\":\"1.1.1\",\"epipebomb\":\"1.0.0\",\"escape-html\":\"1.0.3\",\"esm\":\"3.1.4\",\"execa\":\"3.2.0\",\"express\":\"4.17.1\",\"fast-deep-equal\":\"3.1.3\",\"fs-extra\":\"10.0.0\",\"get-port\":\"5.1.1\",\"git-last-commit\":\"1.0.1\",\"glob\":\"7.1.2\",\"http-proxy\":\"1.18.1\",\"ini\":\"3.0.0\",\"inquirer\":\"7.0.4\",\"is-docker\":\"2.2.1\",\"is-port-reachable\":\"3.1.0\",\"is-url\":\"1.2.2\",\"jaro-winkler\":\"0.2.8\",\"jsonlines\":\"0.1.1\",\"load-json-file\":\"3.0.0\",\"mime-types\":\"2.1.24\",\"minimatch\":\"3.0.4\",\"mri\":\"1.1.5\",\"ms\":\"2.1.2\",\"node-fetch\":\"2.6.7\",\"npm-package-arg\":\"6.1.0\",\"open\":\"8.4.0\",\"ora\":\"3.4.0\",\"pcre-to-regexp\":\"1.0.0\",\"pluralize\":\"7.0.0\",\"promisepipe\":\"3.0.0\",\"psl\":\"1.1.31\",\"qr-image\":\"3.2.0\",\"raw-body\":\"2.4.1\",\"rimraf\":\"3.0.2\",\"semver\":\"5.5.0\",\"serve-handler\":\"6.1.1\",\"strip-ansi\":\"5.2.0\",\"stripe\":\"5.1.0\",\"tar-fs\":\"1.16.3\",\"test-listen\":\"1.1.0\",\"text-table\":\"0.2.0\",\"title\":\"3.4.1\",\"tmp-promise\":\"1.0.3\",\"tree-kill\":\"1.2.2\",\"ts-node\":\"10.9.1\",\"typescript\":\"4.7.4\",\"universal-analytics\":\"0.4.20\",\"utility-types\":\"2.1.0\",\"which\":\"2.0.2\",\"write-json-file\":\"2.2.0\",\"xdg-app-paths\":\"5.1.0\",\"yauzl-promise\":\"2.1.3\"},\"jest\":{\"preset\":\"ts-jest\",\"globals\":{\"ts-jest\":{\"diagnostics\":false,\"isolatedModules\":true}},\"setupFilesAfterEnv\":[\"@alex_neo/jest-expect-message\"],\"verbose\":false,\"testEnvironment\":\"node\",\"testMatch\":[\"<rootDir>/test/**/*.test.ts\"]}}");
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\"]}}");
249532
249216
 
249533
249217
  /***/ }),
249534
249218
 
@@ -249536,7 +249220,7 @@ module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.2.5\",\"prefe
249536
249220
  /***/ ((module) => {
249537
249221
 
249538
249222
  "use strict";
249539
- module.exports = JSON.parse("{\"name\":\"@vercel/client\",\"version\":\"12.2.4\",\"main\":\"dist/index.js\",\"typings\":\"dist/index.d.ts\",\"homepage\":\"https://vercel.com\",\"license\":\"MIT\",\"files\":[\"dist\"],\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/vercel/vercel.git\",\"directory\":\"packages/client\"},\"scripts\":{\"build\":\"tsc\",\"test-integration-once\":\"yarn test tests/create-deployment.test.ts tests/create-legacy-deployment.test.ts tests/paths.test.ts\",\"test\":\"jest --env node --verbose --runInBand --bail\",\"test-unit\":\"yarn test tests/unit.*test.*\"},\"engines\":{\"node\":\">= 14\"},\"devDependencies\":{\"@types/async-retry\":\"1.4.1\",\"@types/fs-extra\":\"7.0.0\",\"@types/jest\":\"27.4.1\",\"@types/minimatch\":\"3.0.5\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"12.0.4\",\"@types/node-fetch\":\"2.5.4\",\"@types/recursive-readdir\":\"2.2.0\",\"@types/tar-fs\":\"1.16.1\",\"typescript\":\"4.3.4\"},\"jest\":{\"preset\":\"ts-jest\",\"testEnvironment\":\"node\",\"verbose\":false,\"setupFilesAfterEnv\":[\"<rootDir>/tests/setup/index.ts\"]},\"dependencies\":{\"@vercel/build-utils\":\"5.4.2\",\"@vercel/routing-utils\":\"2.0.2\",\"@zeit/fetch\":\"5.2.0\",\"async-retry\":\"1.2.3\",\"async-sema\":\"3.0.0\",\"fs-extra\":\"8.0.1\",\"ignore\":\"4.0.6\",\"minimatch\":\"5.0.1\",\"ms\":\"2.1.2\",\"node-fetch\":\"2.6.7\",\"querystring\":\"^0.2.0\",\"sleep-promise\":\"8.0.1\",\"tar-fs\":\"1.16.3\"}}");
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\"}}");
249540
249224
 
249541
249225
  /***/ }),
249542
249226