vercel 28.15.3 → 28.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -23052,75 +23052,6 @@ function validateKeyword(definition, throwError) {
23052
23052
  }
23053
23053
 
23054
23054
 
23055
- /***/ }),
23056
-
23057
- /***/ 82070:
23058
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23059
-
23060
- "use strict";
23061
-
23062
-
23063
- const stringWidth = __webpack_require__(80718)
23064
-
23065
- function ansiAlign (text, opts) {
23066
- if (!text) return text
23067
-
23068
- opts = opts || {}
23069
- const align = opts.align || 'center'
23070
-
23071
- // short-circuit `align: 'left'` as no-op
23072
- if (align === 'left') return text
23073
-
23074
- const split = opts.split || '\n'
23075
- const pad = opts.pad || ' '
23076
- const widthDiffFn = align !== 'right' ? halfDiff : fullDiff
23077
-
23078
- let returnString = false
23079
- if (!Array.isArray(text)) {
23080
- returnString = true
23081
- text = String(text).split(split)
23082
- }
23083
-
23084
- let width
23085
- let maxWidth = 0
23086
- text = text.map(function (str) {
23087
- str = String(str)
23088
- width = stringWidth(str)
23089
- maxWidth = Math.max(width, maxWidth)
23090
- return {
23091
- str,
23092
- width
23093
- }
23094
- }).map(function (obj) {
23095
- return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str
23096
- })
23097
-
23098
- return returnString ? text.join(split) : text
23099
- }
23100
-
23101
- ansiAlign.left = function left (text) {
23102
- return ansiAlign(text, { align: 'left' })
23103
- }
23104
-
23105
- ansiAlign.center = function center (text) {
23106
- return ansiAlign(text, { align: 'center' })
23107
- }
23108
-
23109
- ansiAlign.right = function right (text) {
23110
- return ansiAlign(text, { align: 'right' })
23111
- }
23112
-
23113
- module.exports = ansiAlign
23114
-
23115
- function halfDiff (maxWidth, curWidth) {
23116
- return Math.floor((maxWidth - curWidth) / 2)
23117
- }
23118
-
23119
- function fullDiff (maxWidth, curWidth) {
23120
- return maxWidth - curWidth
23121
- }
23122
-
23123
-
23124
23055
  /***/ }),
23125
23056
 
23126
23057
  /***/ 68700:
@@ -27561,153 +27492,6 @@ BufferList.prototype.destroy = function destroy () {
27561
27492
  module.exports = BufferList
27562
27493
 
27563
27494
 
27564
- /***/ }),
27565
-
27566
- /***/ 26462:
27567
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27568
-
27569
- "use strict";
27570
-
27571
- const stringWidth = __webpack_require__(80718);
27572
- const chalk = __webpack_require__(47461);
27573
- const widestLine = __webpack_require__(99057);
27574
- const cliBoxes = __webpack_require__(72259);
27575
- const camelCase = __webpack_require__(62158);
27576
- const ansiAlign = __webpack_require__(82070);
27577
- const termSize = __webpack_require__(99216);
27578
-
27579
- const getObject = detail => {
27580
- let object;
27581
-
27582
- if (typeof detail === 'number') {
27583
- object = {
27584
- top: detail,
27585
- right: detail * 3,
27586
- bottom: detail,
27587
- left: detail * 3
27588
- };
27589
- } else {
27590
- object = {
27591
- top: 0,
27592
- right: 0,
27593
- bottom: 0,
27594
- left: 0,
27595
- ...detail
27596
- };
27597
- }
27598
-
27599
- return object;
27600
- };
27601
-
27602
- const getBorderChars = borderStyle => {
27603
- const sides = [
27604
- 'topLeft',
27605
- 'topRight',
27606
- 'bottomRight',
27607
- 'bottomLeft',
27608
- 'vertical',
27609
- 'horizontal'
27610
- ];
27611
-
27612
- let chararacters;
27613
-
27614
- if (typeof borderStyle === 'string') {
27615
- chararacters = cliBoxes[borderStyle];
27616
-
27617
- if (!chararacters) {
27618
- throw new TypeError(`Invalid border style: ${borderStyle}`);
27619
- }
27620
- } else {
27621
- for (const side of sides) {
27622
- if (!borderStyle[side] || typeof borderStyle[side] !== 'string') {
27623
- throw new TypeError(`Invalid border style: ${side}`);
27624
- }
27625
- }
27626
-
27627
- chararacters = borderStyle;
27628
- }
27629
-
27630
- return chararacters;
27631
- };
27632
-
27633
- const isHex = color => color.match(/^#[0-f]{3}(?:[0-f]{3})?$/i);
27634
- const isColorValid = color => typeof color === 'string' && ((chalk[color]) || isHex(color));
27635
- const getColorFn = color => isHex(color) ? chalk.hex(color) : chalk[color];
27636
- const getBGColorFn = color => isHex(color) ? chalk.bgHex(color) : chalk[camelCase(['bg', color])];
27637
-
27638
- module.exports = (text, options) => {
27639
- options = {
27640
- padding: 0,
27641
- borderStyle: 'single',
27642
- dimBorder: false,
27643
- align: 'left',
27644
- float: 'left',
27645
- ...options
27646
- };
27647
-
27648
- if (options.borderColor && !isColorValid(options.borderColor)) {
27649
- throw new Error(`${options.borderColor} is not a valid borderColor`);
27650
- }
27651
-
27652
- if (options.backgroundColor && !isColorValid(options.backgroundColor)) {
27653
- throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);
27654
- }
27655
-
27656
- const chars = getBorderChars(options.borderStyle);
27657
- const padding = getObject(options.padding);
27658
- const margin = getObject(options.margin);
27659
-
27660
- const colorizeBorder = border => {
27661
- const newBorder = options.borderColor ? getColorFn(options.borderColor)(border) : border;
27662
- return options.dimBorder ? chalk.dim(newBorder) : newBorder;
27663
- };
27664
-
27665
- const colorizeContent = content => options.backgroundColor ? getBGColorFn(options.backgroundColor)(content) : content;
27666
-
27667
- text = ansiAlign(text, {align: options.align});
27668
-
27669
- const NL = '\n';
27670
- const PAD = ' ';
27671
-
27672
- let lines = text.split(NL);
27673
-
27674
- if (padding.top > 0) {
27675
- lines = new Array(padding.top).fill('').concat(lines);
27676
- }
27677
-
27678
- if (padding.bottom > 0) {
27679
- lines = lines.concat(new Array(padding.bottom).fill(''));
27680
- }
27681
-
27682
- const contentWidth = widestLine(text) + padding.left + padding.right;
27683
- const paddingLeft = PAD.repeat(padding.left);
27684
- const {columns} = termSize();
27685
- let marginLeft = PAD.repeat(margin.left);
27686
-
27687
- if (options.float === 'center') {
27688
- const padWidth = Math.max((columns - contentWidth) / 2, 0);
27689
- marginLeft = PAD.repeat(padWidth);
27690
- } else if (options.float === 'right') {
27691
- const padWidth = Math.max(columns - contentWidth - margin.right - 2, 0);
27692
- marginLeft = PAD.repeat(padWidth);
27693
- }
27694
-
27695
- const horizontal = chars.horizontal.repeat(contentWidth);
27696
- const top = colorizeBorder(NL.repeat(margin.top) + marginLeft + chars.topLeft + horizontal + chars.topRight);
27697
- const bottom = colorizeBorder(marginLeft + chars.bottomLeft + horizontal + chars.bottomRight + NL.repeat(margin.bottom));
27698
- const side = colorizeBorder(chars.vertical);
27699
-
27700
- const middle = lines.map(line => {
27701
- const paddingRight = PAD.repeat(contentWidth - stringWidth(line) - padding.left);
27702
- return marginLeft + side + colorizeContent(paddingLeft + line + paddingRight) + side;
27703
- }).join(NL);
27704
-
27705
- return top + NL + middle + NL + bottom;
27706
- };
27707
-
27708
- module.exports._borderStyles = cliBoxes;
27709
-
27710
-
27711
27495
  /***/ }),
27712
27496
 
27713
27497
  /***/ 90490:
@@ -29694,90 +29478,6 @@ function parse(val) {
29694
29478
  }
29695
29479
 
29696
29480
 
29697
- /***/ }),
29698
-
29699
- /***/ 62158:
29700
- /***/ ((module) => {
29701
-
29702
- "use strict";
29703
-
29704
-
29705
- const preserveCamelCase = string => {
29706
- let isLastCharLower = false;
29707
- let isLastCharUpper = false;
29708
- let isLastLastCharUpper = false;
29709
-
29710
- for (let i = 0; i < string.length; i++) {
29711
- const character = string[i];
29712
-
29713
- if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {
29714
- string = string.slice(0, i) + '-' + string.slice(i);
29715
- isLastCharLower = false;
29716
- isLastLastCharUpper = isLastCharUpper;
29717
- isLastCharUpper = true;
29718
- i++;
29719
- } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {
29720
- string = string.slice(0, i - 1) + '-' + string.slice(i - 1);
29721
- isLastLastCharUpper = isLastCharUpper;
29722
- isLastCharUpper = false;
29723
- isLastCharLower = true;
29724
- } else {
29725
- isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;
29726
- isLastLastCharUpper = isLastCharUpper;
29727
- isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;
29728
- }
29729
- }
29730
-
29731
- return string;
29732
- };
29733
-
29734
- const camelCase = (input, options) => {
29735
- if (!(typeof input === 'string' || Array.isArray(input))) {
29736
- throw new TypeError('Expected the input to be `string | string[]`');
29737
- }
29738
-
29739
- options = Object.assign({
29740
- pascalCase: false
29741
- }, options);
29742
-
29743
- const postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;
29744
-
29745
- if (Array.isArray(input)) {
29746
- input = input.map(x => x.trim())
29747
- .filter(x => x.length)
29748
- .join('-');
29749
- } else {
29750
- input = input.trim();
29751
- }
29752
-
29753
- if (input.length === 0) {
29754
- return '';
29755
- }
29756
-
29757
- if (input.length === 1) {
29758
- return options.pascalCase ? input.toUpperCase() : input.toLowerCase();
29759
- }
29760
-
29761
- const hasUpperCase = input !== input.toLowerCase();
29762
-
29763
- if (hasUpperCase) {
29764
- input = preserveCamelCase(input);
29765
- }
29766
-
29767
- input = input
29768
- .replace(/^[_.\- ]+/, '')
29769
- .toLowerCase()
29770
- .replace(/[_.\- ]+(\w|$)/g, (_, p1) => p1.toUpperCase())
29771
- .replace(/\d+(\w|$)/g, m => m.toUpperCase());
29772
-
29773
- return postProcess(input);
29774
- };
29775
-
29776
- module.exports = camelCase;
29777
- // TODO: Remove this for the next major release
29778
- module.exports.default = camelCase;
29779
-
29780
-
29781
29481
  /***/ }),
29782
29482
 
29783
29483
  /***/ 64773:
@@ -30224,436 +29924,6 @@ module.exports = (chalk, tmp) => {
30224
29924
  };
30225
29925
 
30226
29926
 
30227
- /***/ }),
30228
-
30229
- /***/ 47461:
30230
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30231
-
30232
- "use strict";
30233
-
30234
- const ansiStyles = __webpack_require__(20093);
30235
- const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(96328);
30236
- const {
30237
- stringReplaceAll,
30238
- stringEncaseCRLFWithFirstIndex
30239
- } = __webpack_require__(73824);
30240
-
30241
- // `supportsColor.level` → `ansiStyles.color[name]` mapping
30242
- const levelMapping = [
30243
- 'ansi',
30244
- 'ansi',
30245
- 'ansi256',
30246
- 'ansi16m'
30247
- ];
30248
-
30249
- const styles = Object.create(null);
30250
-
30251
- const applyOptions = (object, options = {}) => {
30252
- if (options.level > 3 || options.level < 0) {
30253
- throw new Error('The `level` option should be an integer from 0 to 3');
30254
- }
30255
-
30256
- // Detect level if not set manually
30257
- const colorLevel = stdoutColor ? stdoutColor.level : 0;
30258
- object.level = options.level === undefined ? colorLevel : options.level;
30259
- };
30260
-
30261
- class ChalkClass {
30262
- constructor(options) {
30263
- return chalkFactory(options);
30264
- }
30265
- }
30266
-
30267
- const chalkFactory = options => {
30268
- const chalk = {};
30269
- applyOptions(chalk, options);
30270
-
30271
- chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);
30272
-
30273
- Object.setPrototypeOf(chalk, Chalk.prototype);
30274
- Object.setPrototypeOf(chalk.template, chalk);
30275
-
30276
- chalk.template.constructor = () => {
30277
- throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');
30278
- };
30279
-
30280
- chalk.template.Instance = ChalkClass;
30281
-
30282
- return chalk.template;
30283
- };
30284
-
30285
- function Chalk(options) {
30286
- return chalkFactory(options);
30287
- }
30288
-
30289
- for (const [styleName, style] of Object.entries(ansiStyles)) {
30290
- styles[styleName] = {
30291
- get() {
30292
- const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);
30293
- Object.defineProperty(this, styleName, {value: builder});
30294
- return builder;
30295
- }
30296
- };
30297
- }
30298
-
30299
- styles.visible = {
30300
- get() {
30301
- const builder = createBuilder(this, this._styler, true);
30302
- Object.defineProperty(this, 'visible', {value: builder});
30303
- return builder;
30304
- }
30305
- };
30306
-
30307
- const usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];
30308
-
30309
- for (const model of usedModels) {
30310
- styles[model] = {
30311
- get() {
30312
- const {level} = this;
30313
- return function (...arguments_) {
30314
- const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);
30315
- return createBuilder(this, styler, this._isEmpty);
30316
- };
30317
- }
30318
- };
30319
- }
30320
-
30321
- for (const model of usedModels) {
30322
- const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
30323
- styles[bgModel] = {
30324
- get() {
30325
- const {level} = this;
30326
- return function (...arguments_) {
30327
- const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);
30328
- return createBuilder(this, styler, this._isEmpty);
30329
- };
30330
- }
30331
- };
30332
- }
30333
-
30334
- const proto = Object.defineProperties(() => {}, {
30335
- ...styles,
30336
- level: {
30337
- enumerable: true,
30338
- get() {
30339
- return this._generator.level;
30340
- },
30341
- set(level) {
30342
- this._generator.level = level;
30343
- }
30344
- }
30345
- });
30346
-
30347
- const createStyler = (open, close, parent) => {
30348
- let openAll;
30349
- let closeAll;
30350
- if (parent === undefined) {
30351
- openAll = open;
30352
- closeAll = close;
30353
- } else {
30354
- openAll = parent.openAll + open;
30355
- closeAll = close + parent.closeAll;
30356
- }
30357
-
30358
- return {
30359
- open,
30360
- close,
30361
- openAll,
30362
- closeAll,
30363
- parent
30364
- };
30365
- };
30366
-
30367
- const createBuilder = (self, _styler, _isEmpty) => {
30368
- const builder = (...arguments_) => {
30369
- // Single argument is hot path, implicit coercion is faster than anything
30370
- // eslint-disable-next-line no-implicit-coercion
30371
- return applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));
30372
- };
30373
-
30374
- // `__proto__` is used because we must return a function, but there is
30375
- // no way to create a function with a different prototype
30376
- builder.__proto__ = proto; // eslint-disable-line no-proto
30377
-
30378
- builder._generator = self;
30379
- builder._styler = _styler;
30380
- builder._isEmpty = _isEmpty;
30381
-
30382
- return builder;
30383
- };
30384
-
30385
- const applyStyle = (self, string) => {
30386
- if (self.level <= 0 || !string) {
30387
- return self._isEmpty ? '' : string;
30388
- }
30389
-
30390
- let styler = self._styler;
30391
-
30392
- if (styler === undefined) {
30393
- return string;
30394
- }
30395
-
30396
- const {openAll, closeAll} = styler;
30397
- if (string.indexOf('\u001B') !== -1) {
30398
- while (styler !== undefined) {
30399
- // Replace any instances already present with a re-opening code
30400
- // otherwise only the part of the string until said closing code
30401
- // will be colored, and the rest will simply be 'plain'.
30402
- string = stringReplaceAll(string, styler.close, styler.open);
30403
-
30404
- styler = styler.parent;
30405
- }
30406
- }
30407
-
30408
- // We can move both next actions out of loop, because remaining actions in loop won't have
30409
- // any/visible effect on parts we add here. Close the styling before a linebreak and reopen
30410
- // after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92
30411
- const lfIndex = string.indexOf('\n');
30412
- if (lfIndex !== -1) {
30413
- string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
30414
- }
30415
-
30416
- return openAll + string + closeAll;
30417
- };
30418
-
30419
- let template;
30420
- const chalkTag = (chalk, ...strings) => {
30421
- const [firstString] = strings;
30422
-
30423
- if (!Array.isArray(firstString)) {
30424
- // If chalk() was called by itself or with a string,
30425
- // return the string itself as a string.
30426
- return strings.join(' ');
30427
- }
30428
-
30429
- const arguments_ = strings.slice(1);
30430
- const parts = [firstString.raw[0]];
30431
-
30432
- for (let i = 1; i < firstString.length; i++) {
30433
- parts.push(
30434
- String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'),
30435
- String(firstString.raw[i])
30436
- );
30437
- }
30438
-
30439
- if (template === undefined) {
30440
- template = __webpack_require__(14021);
30441
- }
30442
-
30443
- return template(chalk, parts.join(''));
30444
- };
30445
-
30446
- Object.defineProperties(Chalk.prototype, styles);
30447
-
30448
- const chalk = Chalk(); // eslint-disable-line new-cap
30449
- chalk.supportsColor = stdoutColor;
30450
- chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap
30451
- chalk.stderr.supportsColor = stderrColor;
30452
-
30453
- // For TypeScript
30454
- chalk.Level = {
30455
- None: 0,
30456
- Basic: 1,
30457
- Ansi256: 2,
30458
- TrueColor: 3,
30459
- 0: 'None',
30460
- 1: 'Basic',
30461
- 2: 'Ansi256',
30462
- 3: 'TrueColor'
30463
- };
30464
-
30465
- module.exports = chalk;
30466
-
30467
-
30468
- /***/ }),
30469
-
30470
- /***/ 14021:
30471
- /***/ ((module) => {
30472
-
30473
- "use strict";
30474
-
30475
- const TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
30476
- const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
30477
- const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
30478
- const ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi;
30479
-
30480
- const ESCAPES = new Map([
30481
- ['n', '\n'],
30482
- ['r', '\r'],
30483
- ['t', '\t'],
30484
- ['b', '\b'],
30485
- ['f', '\f'],
30486
- ['v', '\v'],
30487
- ['0', '\0'],
30488
- ['\\', '\\'],
30489
- ['e', '\u001B'],
30490
- ['a', '\u0007']
30491
- ]);
30492
-
30493
- function unescape(c) {
30494
- const u = c[0] === 'u';
30495
- const bracket = c[1] === '{';
30496
-
30497
- if ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
30498
- return String.fromCharCode(parseInt(c.slice(1), 16));
30499
- }
30500
-
30501
- if (u && bracket) {
30502
- return String.fromCodePoint(parseInt(c.slice(2, -1), 16));
30503
- }
30504
-
30505
- return ESCAPES.get(c) || c;
30506
- }
30507
-
30508
- function parseArguments(name, arguments_) {
30509
- const results = [];
30510
- const chunks = arguments_.trim().split(/\s*,\s*/g);
30511
- let matches;
30512
-
30513
- for (const chunk of chunks) {
30514
- const number = Number(chunk);
30515
- if (!Number.isNaN(number)) {
30516
- results.push(number);
30517
- } else if ((matches = chunk.match(STRING_REGEX))) {
30518
- results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));
30519
- } else {
30520
- throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
30521
- }
30522
- }
30523
-
30524
- return results;
30525
- }
30526
-
30527
- function parseStyle(style) {
30528
- STYLE_REGEX.lastIndex = 0;
30529
-
30530
- const results = [];
30531
- let matches;
30532
-
30533
- while ((matches = STYLE_REGEX.exec(style)) !== null) {
30534
- const name = matches[1];
30535
-
30536
- if (matches[2]) {
30537
- const args = parseArguments(name, matches[2]);
30538
- results.push([name].concat(args));
30539
- } else {
30540
- results.push([name]);
30541
- }
30542
- }
30543
-
30544
- return results;
30545
- }
30546
-
30547
- function buildStyle(chalk, styles) {
30548
- const enabled = {};
30549
-
30550
- for (const layer of styles) {
30551
- for (const style of layer.styles) {
30552
- enabled[style[0]] = layer.inverse ? null : style.slice(1);
30553
- }
30554
- }
30555
-
30556
- let current = chalk;
30557
- for (const [styleName, styles] of Object.entries(enabled)) {
30558
- if (!Array.isArray(styles)) {
30559
- continue;
30560
- }
30561
-
30562
- if (!(styleName in current)) {
30563
- throw new Error(`Unknown Chalk style: ${styleName}`);
30564
- }
30565
-
30566
- current = styles.length > 0 ? current[styleName](...styles) : current[styleName];
30567
- }
30568
-
30569
- return current;
30570
- }
30571
-
30572
- module.exports = (chalk, temporary) => {
30573
- const styles = [];
30574
- const chunks = [];
30575
- let chunk = [];
30576
-
30577
- // eslint-disable-next-line max-params
30578
- temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {
30579
- if (escapeCharacter) {
30580
- chunk.push(unescape(escapeCharacter));
30581
- } else if (style) {
30582
- const string = chunk.join('');
30583
- chunk = [];
30584
- chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));
30585
- styles.push({inverse, styles: parseStyle(style)});
30586
- } else if (close) {
30587
- if (styles.length === 0) {
30588
- throw new Error('Found extraneous } in Chalk template literal');
30589
- }
30590
-
30591
- chunks.push(buildStyle(chalk, styles)(chunk.join('')));
30592
- chunk = [];
30593
- styles.pop();
30594
- } else {
30595
- chunk.push(character);
30596
- }
30597
- });
30598
-
30599
- chunks.push(chunk.join(''));
30600
-
30601
- if (styles.length > 0) {
30602
- const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
30603
- throw new Error(errMsg);
30604
- }
30605
-
30606
- return chunks.join('');
30607
- };
30608
-
30609
-
30610
- /***/ }),
30611
-
30612
- /***/ 73824:
30613
- /***/ ((module) => {
30614
-
30615
- "use strict";
30616
-
30617
-
30618
- const stringReplaceAll = (string, substring, replacer) => {
30619
- let index = string.indexOf(substring);
30620
- if (index === -1) {
30621
- return string;
30622
- }
30623
-
30624
- const substringLength = substring.length;
30625
- let endIndex = 0;
30626
- let returnValue = '';
30627
- do {
30628
- returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;
30629
- endIndex = index + substringLength;
30630
- index = string.indexOf(substring, endIndex);
30631
- } while (index !== -1);
30632
-
30633
- returnValue += string.substr(endIndex);
30634
- return returnValue;
30635
- };
30636
-
30637
- const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {
30638
- let endIndex = 0;
30639
- let returnValue = '';
30640
- do {
30641
- const gotCR = string[index - 1] === '\r';
30642
- returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix;
30643
- endIndex = index + 1;
30644
- index = string.indexOf('\n', endIndex);
30645
- } while (index !== -1);
30646
-
30647
- returnValue += string.substr(endIndex);
30648
- return returnValue;
30649
- };
30650
-
30651
- module.exports = {
30652
- stringReplaceAll,
30653
- stringEncaseCRLFWithFirstIndex
30654
- };
30655
-
30656
-
30657
29927
  /***/ }),
30658
29928
 
30659
29929
  /***/ 90877:
@@ -35389,20 +34659,6 @@ module.exports = chownr
35389
34659
  chownr.sync = chownrSync
35390
34660
 
35391
34661
 
35392
- /***/ }),
35393
-
35394
- /***/ 72259:
35395
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
35396
-
35397
- "use strict";
35398
-
35399
- const cliBoxes = __webpack_require__(19399);
35400
-
35401
- module.exports = cliBoxes;
35402
- // TODO: Remove this for the next major release
35403
- module.exports.default = cliBoxes;
35404
-
35405
-
35406
34662
  /***/ }),
35407
34663
 
35408
34664
  /***/ 92522:
@@ -168542,86 +167798,6 @@ const getType = stat =>
168542
167798
  module.exports = WriteEntry
168543
167799
 
168544
167800
 
168545
- /***/ }),
168546
-
168547
- /***/ 99216:
168548
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
168549
-
168550
- "use strict";
168551
-
168552
- const {execFileSync} = __webpack_require__(63129);
168553
- const path = __webpack_require__(85622);
168554
-
168555
- const exec = (command, arguments_, shell) => execFileSync(command, arguments_, {encoding: 'utf8', shell}).trim();
168556
-
168557
- const create = (columns, rows) => ({
168558
- columns: parseInt(columns, 10),
168559
- rows: parseInt(rows, 10)
168560
- });
168561
-
168562
- module.exports = () => {
168563
- const {env, stdout, stderr} = process;
168564
-
168565
- if (stdout && stdout.columns && stdout.rows) {
168566
- return create(stdout.columns, stdout.rows);
168567
- }
168568
-
168569
- if (stderr && stderr.columns && stderr.rows) {
168570
- return create(stderr.columns, stderr.rows);
168571
- }
168572
-
168573
- // These values are static, so not the first choice
168574
- if (env.COLUMNS && env.LINES) {
168575
- return create(env.COLUMNS, env.LINES);
168576
- }
168577
-
168578
- if (process.platform === 'win32') {
168579
- try {
168580
- // Binary: https://github.com/sindresorhus/win-term-size
168581
- const size = exec(__webpack_require__.ab + "term-size.exe").split(/\r?\n/);
168582
-
168583
- if (size.length === 2) {
168584
- return create(size[0], size[1]);
168585
- }
168586
- } catch (_) {}
168587
- } else {
168588
- if (process.platform === 'darwin') {
168589
- try {
168590
- // Binary: https://github.com/sindresorhus/macos-term-size
168591
- const size = exec(__webpack_require__.ab + "term-size", [], true).split(/\r?\n/);
168592
-
168593
- if (size.length === 2) {
168594
- return create(size[0], size[1]);
168595
- }
168596
- } catch (_) {}
168597
- }
168598
-
168599
- // `resize` is preferred as it works even when all file descriptors are redirected
168600
- // https://linux.die.net/man/1/resize
168601
- try {
168602
- const size = exec('resize', ['-u']).match(/\d+/g);
168603
-
168604
- if (size.length === 2) {
168605
- return create(size[0], size[1]);
168606
- }
168607
- } catch (_) {}
168608
-
168609
- if (process.env.TERM) {
168610
- try {
168611
- const columns = exec('tput', ['cols']);
168612
- const rows = exec('tput', ['lines']);
168613
-
168614
- if (columns && rows) {
168615
- return create(columns, rows);
168616
- }
168617
- } catch (_) {}
168618
- }
168619
- }
168620
-
168621
- return create(80, 24);
168622
- };
168623
-
168624
-
168625
167801
  /***/ }),
168626
167802
 
168627
167803
  /***/ 43362:
@@ -180822,30 +179998,6 @@ module.exports = which
180822
179998
  which.sync = whichSync
180823
179999
 
180824
180000
 
180825
- /***/ }),
180826
-
180827
- /***/ 99057:
180828
- /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
180829
-
180830
- "use strict";
180831
-
180832
- const stringWidth = __webpack_require__(80718);
180833
-
180834
- const widestLine = input => {
180835
- let max = 0;
180836
-
180837
- for (const line of input.split('\n')) {
180838
- max = Math.max(max, stringWidth(line));
180839
- }
180840
-
180841
- return max;
180842
- };
180843
-
180844
- module.exports = widestLine;
180845
- // TODO: remove this in the next major version
180846
- module.exports.default = widestLine;
180847
-
180848
-
180849
180001
  /***/ }),
180850
180002
 
180851
180003
  /***/ 71563:
@@ -191456,12 +190608,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
191456
190608
  };
191457
190609
  Object.defineProperty(exports, "__esModule", ({ value: true }));
191458
190610
  const open_1 = __importDefault(__webpack_require__(90371));
191459
- const boxen_1 = __importDefault(__webpack_require__(26462));
191460
190611
  const execa_1 = __importDefault(__webpack_require__(72553));
191461
190612
  const pluralize_1 = __importDefault(__webpack_require__(43669));
191462
190613
  const path_1 = __webpack_require__(85622);
191463
190614
  const chalk_1 = __importDefault(__webpack_require__(90877));
191464
190615
  const url_1 = __webpack_require__(78835);
190616
+ const box_1 = __importDefault(__webpack_require__(58587));
191465
190617
  const sleep_1 = __importDefault(__webpack_require__(89507));
191466
190618
  const format_date_1 = __importDefault(__webpack_require__(738));
191467
190619
  const link_1 = __importDefault(__webpack_require__(39302));
@@ -191736,7 +190888,7 @@ async function main(client) {
191736
190888
  result.push(` ${chalk_1.default.bold('Commit:')} [${shortSha}] ${firstLine}`);
191737
190889
  }
191738
190890
  result.push(`${chalk_1.default.bold('Inspect:')} ${(0, link_1.default)(lastBad.inspectorUrl)}`);
191739
- output.print((0, boxen_1.default)(result.join('\n'), { padding: 1 }));
190891
+ output.print((0, box_1.default)(result.join('\n')));
191740
190892
  output.print('\n');
191741
190893
  return 0;
191742
190894
  }
@@ -192305,7 +191457,7 @@ function expandBuild(files, build) {
192305
191457
  throw new build_utils_1.NowBuildError({
192306
191458
  code: `invalid_build_specification`,
192307
191459
  message: 'Field `use` is missing in build specification',
192308
- link: 'https://vercel.com/docs/configuration#project/builds',
191460
+ link: 'https://vercel.com/docs/concepts/projects/project-configuration#builds',
192309
191461
  action: 'View Documentation',
192310
191462
  });
192311
191463
  }
@@ -192314,7 +191466,7 @@ function expandBuild(files, build) {
192314
191466
  throw new build_utils_1.NowBuildError({
192315
191467
  code: `invalid_build_specification`,
192316
191468
  message: 'A build `src` path resolves to an empty string',
192317
- link: 'https://vercel.com/docs/configuration#project/builds',
191469
+ link: 'https://vercel.com/docs/concepts/projects/project-configuration#builds',
192318
191470
  action: 'View Documentation',
192319
191471
  });
192320
191472
  }
@@ -199044,6 +198196,7 @@ const get_update_command_1 = __importDefault(__webpack_require__(74577));
199044
198196
  const metrics_1 = __webpack_require__(31113);
199045
198197
  const pkg_name_1 = __webpack_require__(79000);
199046
198198
  const prompt_1 = __importDefault(__webpack_require__(75964));
198199
+ const box_1 = __importDefault(__webpack_require__(58587));
199047
198200
  const isCanary = pkg_1.default.version.includes('canary');
199048
198201
  const VERCEL_DIR = (0, global_path_1.default)();
199049
198202
  const VERCEL_CONFIG_PATH = configFiles.getConfigFilePath();
@@ -199058,10 +198211,11 @@ Sentry.init({
199058
198211
  environment: isCanary ? 'canary' : 'stable',
199059
198212
  });
199060
198213
  let client;
198214
+ let output;
198215
+ let { isTTY } = process.stdout;
199061
198216
  let debug = () => { };
199062
198217
  let apiUrl = 'https://api.vercel.com';
199063
198218
  const main = async () => {
199064
- let { isTTY } = process.stdout;
199065
198219
  if (process.env.FORCE_TTY === '1') {
199066
198220
  isTTY = true;
199067
198221
  process.stdout.isTTY = true;
@@ -199082,7 +198236,7 @@ const main = async () => {
199082
198236
  }
199083
198237
  const isDebugging = argv['--debug'];
199084
198238
  const isNoColor = argv['--no-color'];
199085
- const output = new output_1.Output(process.stderr, {
198239
+ output = new output_1.Output(process.stderr, {
199086
198240
  debug: isDebugging,
199087
198241
  noColor: isNoColor,
199088
198242
  });
@@ -199110,21 +198264,6 @@ const main = async () => {
199110
198264
  if (cwd) {
199111
198265
  process.chdir(cwd);
199112
198266
  }
199113
- // Print update information, if available
199114
- if (isTTY && !process.env.NO_UPDATE_NOTIFIER) {
199115
- // Check if an update is available. If so, `latest` will contain a string
199116
- // of the latest version, otherwise `undefined`.
199117
- const latest = (0, get_latest_version_1.default)({
199118
- distTag: isCanary ? 'canary' : 'latest',
199119
- output,
199120
- pkg: pkg_1.default,
199121
- });
199122
- if (latest) {
199123
- output.log(`${chalk_1.default.black.bgCyan('UPDATE AVAILABLE')} ` +
199124
- `Run ${(0, cmd_1.default)(await (0, get_update_command_1.default)())} to install ${(0, pkg_name_1.getTitleName)()} CLI ${latest}`);
199125
- output.log(`Changelog: https://github.com/vercel/vercel/releases/tag/vercel@${latest}\n`);
199126
- }
199127
- }
199128
198267
  // The second argument to the command can be:
199129
198268
  //
199130
198269
  // * a path to deploy (as in: `vercel path/`)
@@ -199569,7 +198708,27 @@ const handleUnexpected = async (err) => {
199569
198708
  process.on('unhandledRejection', handleRejection);
199570
198709
  process.on('uncaughtException', handleUnexpected);
199571
198710
  main()
199572
- .then(exitCode => {
198711
+ .then(async (exitCode) => {
198712
+ // Print update information, if available
198713
+ if (isTTY && !process.env.NO_UPDATE_NOTIFIER) {
198714
+ // Check if an update is available. If so, `latest` will contain a string
198715
+ // of the latest version, otherwise `undefined`.
198716
+ const latest = (0, get_latest_version_1.default)({
198717
+ distTag: isCanary ? 'canary' : 'latest',
198718
+ output,
198719
+ pkg: pkg_1.default,
198720
+ });
198721
+ if (latest) {
198722
+ const changelog = 'https://github.com/vercel/vercel/releases';
198723
+ const errorMsg = exitCode && exitCode !== 2
198724
+ ? chalk_1.default.magenta(`\n\nThe latest update ${chalk_1.default.italic('may')} fix any errors that occurred.`)
198725
+ : '';
198726
+ output.print((0, box_1.default)(`Update available! ${chalk_1.default.gray(`v${pkg_1.default.version}`)} ≫ ${chalk_1.default.green(`v${latest}`)}
198727
+ Changelog: ${output.link(changelog, changelog, { fallback: false })}
198728
+ Run ${chalk_1.default.cyan((0, cmd_1.default)(await (0, get_update_command_1.default)()))} to update.${errorMsg}`));
198729
+ output.print('\n\n');
198730
+ }
198731
+ }
199573
198732
  process.exitCode = exitCode;
199574
198733
  })
199575
198734
  .catch(handleUnexpected);
@@ -205292,7 +204451,10 @@ exports.default = DevServer;
205292
204451
  */
205293
204452
  function proxyPass(req, res, dest, devServer, requestId, ignorePath = true) {
205294
204453
  return devServer.proxy.web(req, res, { target: dest, ignorePath }, (error) => {
205295
- devServer.output.error(`Failed to complete request to ${req.url}: ${error}`);
204454
+ // only debug output this error because it's always something generic like
204455
+ // "Error: socket hang up"
204456
+ // and the original error should have already been logged
204457
+ devServer.output.debug(`Failed to complete request to ${req.url}: ${error}`);
205296
204458
  if (!res.headersSent) {
205297
204459
  devServer.sendError(req, res, requestId, 'FUNCTION_INVOCATION_FAILED');
205298
204460
  }
@@ -208815,7 +207977,8 @@ const child_process_1 = __webpack_require__(63129);
208815
207977
  * @returns {String|undefined} If a newer version is found, then the lastest
208816
207978
  * version, otherwise `undefined`.
208817
207979
  */
208818
- function getLatestVersion({ cacheDir = (0, xdg_app_paths_1.default)('com.vercel.cli').cache(), distTag = 'latest', output, pkg, updateCheckInterval = 1000 * 60 * 60 * 24 * 7, // 1 week
207980
+ function getLatestVersion({ cacheDir = (0, xdg_app_paths_1.default)('com.vercel.cli').cache(), distTag = 'latest', notifyInterval = 1000 * 60 * 60 * 24 * 3, // 3 days
207981
+ output, pkg, updateCheckInterval = 1000 * 60 * 60 * 24, // 1 day
208819
207982
  }) {
208820
207983
  if (!pkg ||
208821
207984
  typeof pkg !== 'object' ||
@@ -208834,21 +207997,25 @@ function getLatestVersion({ cacheDir = (0, xdg_app_paths_1.default)('com.vercel.
208834
207997
  output?.debug(`Error reading latest package cache file: ${err}`);
208835
207998
  }
208836
207999
  }
208837
- if (!cache || cache.expireAt < Date.now()) {
208000
+ if (!cache || !cache.expireAt || cache.expireAt < Date.now()) {
208838
208001
  spawnWorker({
208839
208002
  cacheFile,
208840
208003
  distTag,
208841
- updateCheckInterval,
208842
208004
  name: pkg.name,
208005
+ updateCheckInterval,
208843
208006
  }, output);
208844
208007
  }
208845
- if (cache &&
208846
- !cache.notified &&
208847
- pkg.version &&
208848
- semver_1.default.lt(pkg.version, cache.version)) {
208849
- cache.notified = true;
208850
- (0, fs_extra_1.outputJSONSync)(cacheFile, cache);
208851
- return cache.version;
208008
+ if (cache) {
208009
+ const shouldNotify = !cache.notifyAt || cache.notifyAt < Date.now();
208010
+ let updateAvailable = false;
208011
+ if (cache.version && pkg.version) {
208012
+ updateAvailable = semver_1.default.lt(pkg.version, cache.version);
208013
+ }
208014
+ if (shouldNotify && updateAvailable) {
208015
+ cache.notifyAt = Date.now() + notifyInterval;
208016
+ (0, fs_extra_1.outputJSONSync)(cacheFile, cache);
208017
+ return cache.version;
208018
+ }
208852
208019
  }
208853
208020
  }
208854
208021
  exports.default = getLatestVersion;
@@ -211757,6 +210924,97 @@ class NowError extends Error {
211757
210924
  exports.NowError = NowError;
211758
210925
 
211759
210926
 
210927
+ /***/ }),
210928
+
210929
+ /***/ 58587:
210930
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
210931
+
210932
+ "use strict";
210933
+
210934
+ var __importDefault = (this && this.__importDefault) || function (mod) {
210935
+ return (mod && mod.__esModule) ? mod : { "default": mod };
210936
+ };
210937
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
210938
+ const chalk_1 = __importDefault(__webpack_require__(90877));
210939
+ const strip_ansi_1 = __importDefault(__webpack_require__(66884));
210940
+ const border = ['─', '╭', '╮', '│', '│', '╰', '╯'];
210941
+ const nothing = ['─', '', '', '', '', '', ''];
210942
+ /**
210943
+ * Renders text centered inside a yellow box. If terminal is too narrow to fit
210944
+ * the text without wrapping, the box will only consist of a top and bottom
210945
+ * horizontal rule with the text left justified.
210946
+ *
210947
+ * @param message The multiline message to display
210948
+ * @param options Various formatting options
210949
+ * @returns The rendered string
210950
+ *
210951
+ * @example Simple box
210952
+ *
210953
+ * # Usage
210954
+ * ```
210955
+ * console.log(box('Hello world!\nThe quick brown fox jumps over the lazy dog'));
210956
+ * ```
210957
+ *
210958
+ * # Result
210959
+ * ```
210960
+ * ╭─────────────────────────────────────────────────╮
210961
+ * │ │
210962
+ * │ Hello world! │
210963
+ * │ The quick brown fox jumps over the lazy dog │
210964
+ * │ │
210965
+ * ╰─────────────────────────────────────────────────╯
210966
+ * ```
210967
+ */
210968
+ function box(message, { borderColor, padding = 1, textAlignment = 'center', terminalColumns: cols = process.stdout.columns ||
210969
+ (process.env.COLUMNS && parseInt(process.env.COLUMNS, 10)) ||
210970
+ 80, } = {}) {
210971
+ const lines = message
210972
+ .split(/\r?\n/)
210973
+ .map(line => [line, (0, strip_ansi_1.default)(line).length]);
210974
+ const maxLine = lines.reduce((p, [, len]) => Math.max(p, len), 0);
210975
+ const borderColorFn = (borderColor && chalk_1.default[borderColor]) || chalk_1.default.yellow;
210976
+ const clampedSidePadding = Math.max(1, padding * 3);
210977
+ const narrowMode = maxLine + 2 + clampedSidePadding * 2 > cols;
210978
+ const sidePadding = narrowMode ? 0 : clampedSidePadding;
210979
+ const innerWidth = Math.min(maxLine + sidePadding * 2, cols);
210980
+ const [hr, topLeft, topRight, left, right, bottomLeft, bottomRight] = narrowMode ? nothing : border;
210981
+ const spacerRow = narrowMode
210982
+ ? '\n'.repeat(padding)
210983
+ : `${borderColorFn(`${left}${' '.repeat(innerWidth)}${right}`)}\n`.repeat(padding);
210984
+ const renderLine = ([line, len]) => {
210985
+ let leftPadding = 0;
210986
+ let rightPadding = 0;
210987
+ if (!narrowMode) {
210988
+ leftPadding = sidePadding;
210989
+ rightPadding = sidePadding;
210990
+ if (textAlignment === 'center') {
210991
+ leftPadding += Math.floor((maxLine - len) / 2);
210992
+ rightPadding += maxLine - len - leftPadding + sidePadding;
210993
+ }
210994
+ else if (textAlignment === 'right') {
210995
+ leftPadding += maxLine - len;
210996
+ }
210997
+ else if (textAlignment === 'left') {
210998
+ rightPadding += maxLine - len;
210999
+ }
211000
+ }
211001
+ return (borderColorFn(left) +
211002
+ ' '.repeat(leftPadding) +
211003
+ line +
211004
+ ' '.repeat(rightPadding) +
211005
+ borderColorFn(right));
211006
+ };
211007
+ return (borderColorFn(`${topLeft}${hr.repeat(innerWidth)}${topRight}`) +
211008
+ '\n' +
211009
+ spacerRow +
211010
+ lines.map(renderLine).join('\n') +
211011
+ '\n' +
211012
+ spacerRow +
211013
+ borderColorFn(`${bottomLeft}${hr.repeat(innerWidth)}${bottomRight}`));
211014
+ }
211015
+ exports.default = box;
211016
+
211017
+
211760
211018
  /***/ }),
211761
211019
 
211762
211020
  /***/ 41966:
@@ -214396,14 +213654,6 @@ module.exports = JSON.parse("[\"assert\",\"buffer\",\"child_process\",\"cluster\
214396
213654
 
214397
213655
  /***/ }),
214398
213656
 
214399
- /***/ 19399:
214400
- /***/ ((module) => {
214401
-
214402
- "use strict";
214403
- module.exports = JSON.parse("{\"single\":{\"topLeft\":\"┌\",\"topRight\":\"┐\",\"bottomRight\":\"┘\",\"bottomLeft\":\"└\",\"vertical\":\"│\",\"horizontal\":\"─\"},\"double\":{\"topLeft\":\"╔\",\"topRight\":\"╗\",\"bottomRight\":\"╝\",\"bottomLeft\":\"╚\",\"vertical\":\"║\",\"horizontal\":\"═\"},\"round\":{\"topLeft\":\"╭\",\"topRight\":\"╮\",\"bottomRight\":\"╯\",\"bottomLeft\":\"╰\",\"vertical\":\"│\",\"horizontal\":\"─\"},\"bold\":{\"topLeft\":\"┏\",\"topRight\":\"┓\",\"bottomRight\":\"┛\",\"bottomLeft\":\"┗\",\"vertical\":\"┃\",\"horizontal\":\"━\"},\"singleDouble\":{\"topLeft\":\"╓\",\"topRight\":\"╖\",\"bottomRight\":\"╜\",\"bottomLeft\":\"╙\",\"vertical\":\"║\",\"horizontal\":\"─\"},\"doubleSingle\":{\"topLeft\":\"╒\",\"topRight\":\"╕\",\"bottomRight\":\"╛\",\"bottomLeft\":\"╘\",\"vertical\":\"│\",\"horizontal\":\"═\"},\"classic\":{\"topLeft\":\"+\",\"topRight\":\"+\",\"bottomRight\":\"+\",\"bottomLeft\":\"+\",\"vertical\":\"|\",\"horizontal\":\"-\"}}");
214404
-
214405
- /***/ }),
214406
-
214407
213657
  /***/ 15088:
214408
213658
  /***/ ((module) => {
214409
213659
 
@@ -214736,7 +213986,7 @@ module.exports = JSON.parse("[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"vali
214736
213986
  /***/ ((module) => {
214737
213987
 
214738
213988
  "use strict";
214739
- module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.15.3\",\"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 --bail\",\"test-unit\":\"pnpm test test/unit/\",\"test-integration-cli\":\"rimraf test/fixtures/integration && ava test/integration.js --serial --fail-fast --verbose\",\"test-integration-dev\":\"pnpm 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\":\"6.2.1\",\"@vercel/go\":\"2.3.3\",\"@vercel/hydrogen\":\"0.0.49\",\"@vercel/next\":\"3.4.2\",\"@vercel/node\":\"2.9.2\",\"@vercel/python\":\"3.1.45\",\"@vercel/redwood\":\"1.1.1\",\"@vercel/remix\":\"1.2.12\",\"@vercel/ruby\":\"1.3.61\",\"@vercel/static-build\":\"1.3.5\"},\"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/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\":\"14.18.33\",\"@types/node-fetch\":\"2.5.10\",\"@types/npm-package-arg\":\"6.1.0\",\"@types/pluralize\":\"0.0.29\",\"@types/psl\":\"1.1.0\",\"@types/qs\":\"6.9.7\",\"@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.3.7\",\"@vercel/error-utils\":\"1.0.8\",\"@vercel/frameworks\":\"1.3.0\",\"@vercel/fs-detectors\":\"3.7.10\",\"@vercel/fun\":\"1.0.4\",\"@vercel/ncc\":\"0.24.0\",\"@vercel/routing-utils\":\"2.1.8\",\"@zeit/source-map-support\":\"0.6.2\",\"ajv\":\"6.12.2\",\"alpha-sort\":\"2.0.1\",\"ansi-escapes\":\"4.3.2\",\"ansi-regex\":\"5.0.1\",\"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-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\",\"jest-matcher-utils\":\"29.3.1\",\"json5\":\"2.2.1\",\"jsonlines\":\"0.1.1\",\"line-async-iterator\":\"3.0.0\",\"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\":\"6.0.1\",\"stripe\":\"5.1.0\",\"supports-hyperlinks\":\"2.2.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.9.4\",\"universal-analytics\":\"0.4.20\",\"utility-types\":\"2.1.0\",\"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\"]}}");
213989
+ module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.15.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 --bail\",\"test-unit\":\"pnpm test test/unit/\",\"test-cli\":\"rimraf test/fixtures/integration && ava test/integration.js --serial --fail-fast --verbose\",\"test-dev\":\"pnpm 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\":\"6.2.3\",\"@vercel/go\":\"2.3.5\",\"@vercel/hydrogen\":\"0.0.51\",\"@vercel/next\":\"3.4.4\",\"@vercel/node\":\"2.9.4\",\"@vercel/python\":\"3.1.47\",\"@vercel/redwood\":\"1.1.3\",\"@vercel/remix\":\"1.3.0\",\"@vercel/ruby\":\"1.3.63\",\"@vercel/static-build\":\"1.3.7\"},\"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/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\":\"14.18.33\",\"@types/node-fetch\":\"2.5.10\",\"@types/npm-package-arg\":\"6.1.0\",\"@types/pluralize\":\"0.0.29\",\"@types/psl\":\"1.1.0\",\"@types/qs\":\"6.9.7\",\"@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.3.9\",\"@vercel/error-utils\":\"1.0.8\",\"@vercel/frameworks\":\"1.3.0\",\"@vercel/fs-detectors\":\"3.7.12\",\"@vercel/fun\":\"1.0.4\",\"@vercel/ncc\":\"0.24.0\",\"@vercel/routing-utils\":\"2.1.8\",\"@zeit/source-map-support\":\"0.6.2\",\"ajv\":\"6.12.2\",\"alpha-sort\":\"2.0.1\",\"ansi-escapes\":\"4.3.2\",\"ansi-regex\":\"5.0.1\",\"arg\":\"5.0.0\",\"async-listen\":\"1.2.0\",\"async-retry\":\"1.1.3\",\"async-sema\":\"2.1.4\",\"ava\":\"2.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-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\",\"find-up\":\"4.1.0\",\"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\",\"jest-matcher-utils\":\"29.3.1\",\"json5\":\"2.2.1\",\"jsonlines\":\"0.1.1\",\"line-async-iterator\":\"3.0.0\",\"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\":\"6.0.1\",\"stripe\":\"5.1.0\",\"supports-hyperlinks\":\"2.2.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.9.4\",\"universal-analytics\":\"0.4.20\",\"utility-types\":\"2.1.0\",\"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\"]}}");
214740
213990
 
214741
213991
  /***/ }),
214742
213992
 
@@ -214744,7 +213994,7 @@ module.exports = JSON.parse("{\"name\":\"vercel\",\"version\":\"28.15.3\",\"pref
214744
213994
  /***/ ((module) => {
214745
213995
 
214746
213996
  "use strict";
214747
- module.exports = JSON.parse("{\"name\":\"@vercel/client\",\"version\":\"12.3.7\",\"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\":\"pnpm 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\":\"pnpm test tests/unit.*test.*\"},\"engines\":{\"node\":\">= 14\"},\"devDependencies\":{\"@types/async-retry\":\"1.4.5\",\"@types/fs-extra\":\"7.0.0\",\"@types/jest\":\"27.4.1\",\"@types/minimatch\":\"3.0.5\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"14.18.33\",\"@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\":\"6.2.1\",\"@vercel/routing-utils\":\"2.1.8\",\"@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\"}}");
213997
+ module.exports = JSON.parse("{\"name\":\"@vercel/client\",\"version\":\"12.3.9\",\"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-e2e\":\"pnpm 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\":\"pnpm test tests/unit.*test.*\"},\"engines\":{\"node\":\">= 14\"},\"devDependencies\":{\"@types/async-retry\":\"1.4.5\",\"@types/fs-extra\":\"7.0.0\",\"@types/jest\":\"27.4.1\",\"@types/minimatch\":\"3.0.5\",\"@types/ms\":\"0.7.30\",\"@types/node\":\"14.18.33\",\"@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\":\"6.2.3\",\"@vercel/routing-utils\":\"2.1.8\",\"@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\"}}");
214748
213998
 
214749
213999
  /***/ }),
214750
214000