vercel 54.14.0 → 54.14.2

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 (74) hide show
  1. package/dist/chunks/{add-PVEKZBHH.js → add-PKT6ULVJ.js} +9 -9
  2. package/dist/chunks/{chunk-Y76J3TGD.js → chunk-2HN6DLIY.js} +1 -1
  3. package/dist/chunks/{chunk-FPRA7U2P.js → chunk-2XEEOHHH.js} +1 -1
  4. package/dist/chunks/{chunk-TH555JND.js → chunk-2ZSXQQXI.js} +15 -42
  5. package/dist/chunks/{chunk-6D6CSOSK.js → chunk-372SHB43.js} +86 -62
  6. package/dist/chunks/{chunk-4KAFHBYE.js → chunk-3BR246Y6.js} +1 -1
  7. package/dist/chunks/{chunk-V2WFM23D.js → chunk-4BFK3C7V.js} +2 -2
  8. package/dist/chunks/{chunk-FMN3NXRC.js → chunk-56AJHIQC.js} +1 -1
  9. package/dist/chunks/chunk-64IF634X.js +18 -0
  10. package/dist/chunks/{chunk-VNUNCNPE.js → chunk-AWD3IGXU.js} +3 -3
  11. package/dist/chunks/{chunk-5SYDEK2N.js → chunk-D7MGZH35.js} +1 -1
  12. package/dist/chunks/{chunk-IQQJHYW4.js → chunk-DPS62LHL.js} +2 -2
  13. package/dist/chunks/{chunk-RWJORLQP.js → chunk-FEYVO2US.js} +59 -17
  14. package/dist/chunks/{chunk-ABOX5TXU.js → chunk-FLW73SZ3.js} +3 -3
  15. package/dist/chunks/{chunk-Z7KOKD2G.js → chunk-G3NXHUFT.js} +1 -1
  16. package/dist/chunks/{chunk-CO5D46AG.js → chunk-GGP5R3FU.js} +18 -38
  17. package/dist/chunks/{chunk-J5273CSE.js → chunk-HIYWSGI7.js} +19 -10
  18. package/dist/chunks/{chunk-WFRHKZFI.js → chunk-IB56QKCM.js} +1 -1
  19. package/dist/chunks/{chunk-ZTPOJE63.js → chunk-IJJOI63T.js} +1 -1
  20. package/dist/chunks/{chunk-DAASB6YQ.js → chunk-ILJH44MK.js} +23 -3
  21. package/dist/chunks/{chunk-V4GROAUJ.js → chunk-IPWWE7PB.js} +4 -7
  22. package/dist/chunks/{chunk-G7QWUIGS.js → chunk-J7BMPRCU.js} +3 -3
  23. package/dist/chunks/{chunk-7OZWGXPA.js → chunk-JISJDGJF.js} +2 -2
  24. package/dist/chunks/{chunk-5UCWXYNH.js → chunk-LQR3CHMH.js} +88 -46
  25. package/dist/chunks/{chunk-4NDOMD3E.js → chunk-LYCSVJIX.js} +1 -1
  26. package/dist/chunks/{chunk-6IQZVQV6.js → chunk-MYWLF3BZ.js} +18 -0
  27. package/dist/chunks/{chunk-6K3WJDFA.js → chunk-O4V7CMVO.js} +10 -10
  28. package/dist/chunks/{chunk-KJ5O7JQQ.js → chunk-O7RJHL34.js} +81 -86
  29. package/dist/chunks/{chunk-C3VH3X5Y.js → chunk-OHIZ4SVU.js} +4 -4
  30. package/dist/chunks/{chunk-JFWE5ORG.js → chunk-P4KQ3FJ4.js} +1 -0
  31. package/dist/chunks/{chunk-PV533MBH.js → chunk-PMUUPCDL.js} +1 -1
  32. package/dist/chunks/{chunk-OEM7RB3X.js → chunk-SDZ5ICZL.js} +2 -2
  33. package/dist/chunks/{chunk-NGRSQRSN.js → chunk-SGPBULVT.js} +1 -1
  34. package/dist/chunks/{chunk-RM4XGGZO.js → chunk-TSENBD7C.js} +2 -2
  35. package/dist/chunks/{chunk-O4C4A7HM.js → chunk-VKRW77HH.js} +1 -1
  36. package/dist/chunks/chunk-VXYGCOKL.js +28 -0
  37. package/dist/chunks/{chunk-7CJZCFLW.js → chunk-YLGMXYFG.js} +2 -2
  38. package/dist/chunks/{chunk-B6C7NMT3.js → chunk-Z2MBXYZZ.js} +1 -1
  39. package/dist/chunks/{chunk-S4VHXL2Y.js → chunk-Z3X747P6.js} +1 -1
  40. package/dist/chunks/{compile-vercel-config-MD37D2F7.js → compile-vercel-config-3LV7J3IZ.js} +4 -4
  41. package/dist/chunks/{delete-6EMDCXSA.js → delete-GFW6Y6TZ.js} +10 -8
  42. package/dist/chunks/{disable-FLJ27NHG.js → disable-PGRAS2ZL.js} +10 -8
  43. package/dist/chunks/{discard-KEIII6RM.js → discard-S6N5Q4G5.js} +10 -8
  44. package/dist/chunks/{edit-DOL2ZJPG.js → edit-TICKX4ZV.js} +12 -10
  45. package/dist/chunks/{enable-PZWZIETT.js → enable-L3BYWN6S.js} +10 -8
  46. package/dist/chunks/{export-2PFHAELC.js → export-NXS33U5T.js} +6 -6
  47. package/dist/chunks/{inspect-WPWOZJ2K.js → inspect-OOI5JN3Y.js} +9 -9
  48. package/dist/chunks/{list-4R5DCLTB.js → list-6EHRL2D4.js} +7 -7
  49. package/dist/chunks/{list-ZT7QK2H7.js → list-77WL6463.js} +11 -11
  50. package/dist/chunks/{ls-4JTXQXMQ.js → ls-PBSOEXFG.js} +9 -9
  51. package/dist/chunks/{publish-JV4J3SOA.js → publish-CU2THVYW.js} +10 -8
  52. package/dist/chunks/{query-N22EYSZZ.js → query-HEATRYAK.js} +99 -43
  53. package/dist/chunks/{reorder-TG53BKW4.js → reorder-IQVKSM3H.js} +10 -8
  54. package/dist/chunks/{restore-U7O4VESA.js → restore-RDEOBGAS.js} +10 -8
  55. package/dist/chunks/{rm-XA4LYZXI.js → rm-MCSGTU4J.js} +9 -9
  56. package/dist/chunks/{routes-EAMQVFU2.js → routes-YEU33SON.js} +2 -2
  57. package/dist/chunks/{rule-inspect-HC745CYT.js → rule-inspect-3YK2XSL3.js} +9 -9
  58. package/dist/chunks/{rules-RMN72YHN.js → rules-F4MRDDHM.js} +6 -6
  59. package/dist/chunks/{schema-CZVKUXM6.js → schema-65C5EBJ7.js} +9 -9
  60. package/dist/chunks/{stamp-ENIXDCRO.js → stamp-AA7R3MZS.js} +3 -1
  61. package/dist/chunks/{types-P6JKZFEY.js → types-3R7HKP57.js} +3 -3
  62. package/dist/chunks/{update-PU3WLIA7.js → update-XB4WSRGY.js} +9 -9
  63. package/dist/commands/build/index.js +18 -16
  64. package/dist/commands/deploy/index.js +30 -171
  65. package/dist/commands/dev/index.js +187 -133
  66. package/dist/commands/dev/next-dev-websocket-shim-preload.cjs +190 -0
  67. package/dist/commands/env/index.js +162 -101
  68. package/dist/commands/link/index.js +19 -19
  69. package/dist/commands/list/index.js +13 -11
  70. package/dist/commands-bulk.js +258 -104
  71. package/dist/help.js +1 -1
  72. package/dist/index.js +27 -27
  73. package/dist/version.mjs +1 -1
  74. package/package.json +11 -11
@@ -9,7 +9,7 @@ import {
9
9
  } from "../../chunks/chunk-2HSQ7YUK.js";
10
10
  import {
11
11
  getUpdateCommand
12
- } from "../../chunks/chunk-V4GROAUJ.js";
12
+ } from "../../chunks/chunk-IPWWE7PB.js";
13
13
  import {
14
14
  highlight
15
15
  } from "../../chunks/chunk-V5P25P7F.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "../../chunks/chunk-YPQSDAEW.js";
19
19
  import {
20
20
  devCommand
21
- } from "../../chunks/chunk-O4C4A7HM.js";
21
+ } from "../../chunks/chunk-VKRW77HH.js";
22
22
  import {
23
23
  OUTPUT_DIR,
24
24
  getStaticServiceSchedules,
@@ -26,26 +26,26 @@ import {
26
26
  require_mime_types,
27
27
  require_npa,
28
28
  staticFiles
29
- } from "../../chunks/chunk-4KAFHBYE.js";
29
+ } from "../../chunks/chunk-3BR246Y6.js";
30
30
  import "../../chunks/chunk-IB5L4LKZ.js";
31
31
  import {
32
32
  pickOverrides
33
- } from "../../chunks/chunk-FPRA7U2P.js";
33
+ } from "../../chunks/chunk-2XEEOHHH.js";
34
34
  import "../../chunks/chunk-YI3JV6GM.js";
35
35
  import {
36
36
  displayDetectedServices,
37
37
  printProjectNotFoundError,
38
38
  readConfig,
39
39
  setupAndLink
40
- } from "../../chunks/chunk-6D6CSOSK.js";
40
+ } from "../../chunks/chunk-372SHB43.js";
41
41
  import "../../chunks/chunk-LJ5WXXG6.js";
42
42
  import {
43
43
  getLocalPathConfig
44
- } from "../../chunks/chunk-V2WFM23D.js";
45
- import "../../chunks/chunk-Z7KOKD2G.js";
44
+ } from "../../chunks/chunk-4BFK3C7V.js";
45
+ import "../../chunks/chunk-G3NXHUFT.js";
46
46
  import {
47
47
  help
48
- } from "../../chunks/chunk-VNUNCNPE.js";
48
+ } from "../../chunks/chunk-AWD3IGXU.js";
49
49
  import {
50
50
  VERCEL_DIR,
51
51
  findRepoRoot,
@@ -69,26 +69,26 @@ import {
69
69
  resolveProjectCwd,
70
70
  tryDetectServices,
71
71
  validateConfig
72
- } from "../../chunks/chunk-5UCWXYNH.js";
72
+ } from "../../chunks/chunk-LQR3CHMH.js";
73
73
  import {
74
74
  TelemetryClient
75
- } from "../../chunks/chunk-J5273CSE.js";
75
+ } from "../../chunks/chunk-HIYWSGI7.js";
76
76
  import {
77
77
  buildCommandWithYes,
78
78
  outputActionRequired
79
79
  } from "../../chunks/chunk-NHGCQRK5.js";
80
- import {
81
- require_ms
82
- } from "../../chunks/chunk-CO5D46AG.js";
83
80
  import {
84
81
  require_lib as require_lib2
85
82
  } from "../../chunks/chunk-N2T234LO.js";
86
- import "../../chunks/chunk-4NDOMD3E.js";
83
+ import {
84
+ require_ms
85
+ } from "../../chunks/chunk-GGP5R3FU.js";
86
+ import "../../chunks/chunk-LYCSVJIX.js";
87
87
  import {
88
88
  getFlagsSpecification,
89
89
  parseArguments,
90
90
  printError
91
- } from "../../chunks/chunk-6IQZVQV6.js";
91
+ } from "../../chunks/chunk-MYWLF3BZ.js";
92
92
  import {
93
93
  CantParseJSONFile,
94
94
  LambdaSizeExceededError,
@@ -7109,13 +7109,13 @@ var require_urlparser = __commonJS({
7109
7109
  this.pathname = prePath === "" ? "/" : prePath;
7110
7110
  return;
7111
7111
  }
7112
- var path5;
7112
+ var path6;
7113
7113
  if (escape2) {
7114
- path5 = this._getComponentEscaped(str, pathStart, pathEnd, false);
7114
+ path6 = this._getComponentEscaped(str, pathStart, pathEnd, false);
7115
7115
  } else {
7116
- path5 = str.slice(pathStart, pathEnd + 1);
7116
+ path6 = str.slice(pathStart, pathEnd + 1);
7117
7117
  }
7118
- this.pathname = prePath === "" ? this._prependSlash ? "/" + path5 : path5 : prePath + path5;
7118
+ this.pathname = prePath === "" ? this._prependSlash ? "/" + path6 : path6 : prePath + path6;
7119
7119
  };
7120
7120
  Url.prototype._parseQuery = function Url$_parseQuery(str, start, end, disableAutoEscapeChars) {
7121
7121
  var queryStart = start;
@@ -7418,8 +7418,8 @@ var require_urlparser = __commonJS({
7418
7418
  // ../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/glob-slash.js
7419
7419
  var require_glob_slash = __commonJS({
7420
7420
  "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/glob-slash.js"(exports2, module2) {
7421
- var path5 = __require("path");
7422
- var normalize = (value) => path5.posix.normalize(path5.posix.join("/", value));
7421
+ var path6 = __require("path");
7422
+ var normalize = (value) => path6.posix.normalize(path6.posix.join("/", value));
7423
7423
  module2.exports = (value) => value.charAt(0) === "!" ? `!${normalize(value.substr(1))}` : normalize(value);
7424
7424
  module2.exports.normalize = normalize;
7425
7425
  }
@@ -7430,9 +7430,9 @@ var require_minimatch2 = __commonJS({
7430
7430
  "../../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js"(exports2, module2) {
7431
7431
  module2.exports = minimatch3;
7432
7432
  minimatch3.Minimatch = Minimatch;
7433
- var path5 = { sep: "/" };
7433
+ var path6 = { sep: "/" };
7434
7434
  try {
7435
- path5 = __require("path");
7435
+ path6 = __require("path");
7436
7436
  } catch (er) {
7437
7437
  }
7438
7438
  var GLOBSTAR = minimatch3.GLOBSTAR = Minimatch.GLOBSTAR = {};
@@ -7515,8 +7515,8 @@ var require_minimatch2 = __commonJS({
7515
7515
  if (!options)
7516
7516
  options = {};
7517
7517
  pattern = pattern.trim();
7518
- if (path5.sep !== "/") {
7519
- pattern = pattern.split(path5.sep).join("/");
7518
+ if (path6.sep !== "/") {
7519
+ pattern = pattern.split(path6.sep).join("/");
7520
7520
  }
7521
7521
  this.options = options;
7522
7522
  this.set = [];
@@ -7883,8 +7883,8 @@ var require_minimatch2 = __commonJS({
7883
7883
  if (f === "/" && partial)
7884
7884
  return true;
7885
7885
  var options = this.options;
7886
- if (path5.sep !== "/") {
7887
- f = f.split(path5.sep).join("/");
7886
+ if (path6.sep !== "/") {
7887
+ f = f.split(path6.sep).join("/");
7888
7888
  }
7889
7889
  f = f.split(slashSplit);
7890
7890
  this.debug(this.pattern, "split", f);
@@ -8021,7 +8021,7 @@ var require_path_to_regexp = __commonJS({
8021
8021
  var tokens = [];
8022
8022
  var key = 0;
8023
8023
  var index = 0;
8024
- var path5 = "";
8024
+ var path6 = "";
8025
8025
  var defaultDelimiter = options && options.delimiter || DEFAULT_DELIMITER;
8026
8026
  var delimiters = options && options.delimiters || DEFAULT_DELIMITERS;
8027
8027
  var pathEscaped = false;
@@ -8030,10 +8030,10 @@ var require_path_to_regexp = __commonJS({
8030
8030
  var m = res[0];
8031
8031
  var escaped = res[1];
8032
8032
  var offset = res.index;
8033
- path5 += str.slice(index, offset);
8033
+ path6 += str.slice(index, offset);
8034
8034
  index = offset + m.length;
8035
8035
  if (escaped) {
8036
- path5 += escaped[1];
8036
+ path6 += escaped[1];
8037
8037
  pathEscaped = true;
8038
8038
  continue;
8039
8039
  }
@@ -8043,16 +8043,16 @@ var require_path_to_regexp = __commonJS({
8043
8043
  var capture = res[3];
8044
8044
  var group = res[4];
8045
8045
  var modifier = res[5];
8046
- if (!pathEscaped && path5.length) {
8047
- var k = path5.length - 1;
8048
- if (delimiters.indexOf(path5[k]) > -1) {
8049
- prev = path5[k];
8050
- path5 = path5.slice(0, k);
8046
+ if (!pathEscaped && path6.length) {
8047
+ var k = path6.length - 1;
8048
+ if (delimiters.indexOf(path6[k]) > -1) {
8049
+ prev = path6[k];
8050
+ path6 = path6.slice(0, k);
8051
8051
  }
8052
8052
  }
8053
- if (path5) {
8054
- tokens.push(path5);
8055
- path5 = "";
8053
+ if (path6) {
8054
+ tokens.push(path6);
8055
+ path6 = "";
8056
8056
  pathEscaped = false;
8057
8057
  }
8058
8058
  var partial = prev !== "" && next !== void 0 && next !== prev;
@@ -8070,8 +8070,8 @@ var require_path_to_regexp = __commonJS({
8070
8070
  pattern: pattern ? escapeGroup(pattern) : "[^" + escapeString(delimiter2) + "]+?"
8071
8071
  });
8072
8072
  }
8073
- if (path5 || index < str.length) {
8074
- tokens.push(path5 + str.substr(index));
8073
+ if (path6 || index < str.length) {
8074
+ tokens.push(path6 + str.substr(index));
8075
8075
  }
8076
8076
  return tokens;
8077
8077
  }
@@ -8086,12 +8086,12 @@ var require_path_to_regexp = __commonJS({
8086
8086
  }
8087
8087
  }
8088
8088
  return function(data, options) {
8089
- var path5 = "";
8089
+ var path6 = "";
8090
8090
  var encode = options && options.encode || encodeURIComponent;
8091
8091
  for (var i2 = 0; i2 < tokens.length; i2++) {
8092
8092
  var token = tokens[i2];
8093
8093
  if (typeof token === "string") {
8094
- path5 += token;
8094
+ path6 += token;
8095
8095
  continue;
8096
8096
  }
8097
8097
  var value = data ? data[token.name] : void 0;
@@ -8110,7 +8110,7 @@ var require_path_to_regexp = __commonJS({
8110
8110
  if (!matches[i2].test(segment)) {
8111
8111
  throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '"');
8112
8112
  }
8113
- path5 += (j === 0 ? token.prefix : token.delimiter) + segment;
8113
+ path6 += (j === 0 ? token.prefix : token.delimiter) + segment;
8114
8114
  }
8115
8115
  continue;
8116
8116
  }
@@ -8119,17 +8119,17 @@ var require_path_to_regexp = __commonJS({
8119
8119
  if (!matches[i2].test(segment)) {
8120
8120
  throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but got "' + segment + '"');
8121
8121
  }
8122
- path5 += token.prefix + segment;
8122
+ path6 += token.prefix + segment;
8123
8123
  continue;
8124
8124
  }
8125
8125
  if (token.optional) {
8126
8126
  if (token.partial)
8127
- path5 += token.prefix;
8127
+ path6 += token.prefix;
8128
8128
  continue;
8129
8129
  }
8130
8130
  throw new TypeError('Expected "' + token.name + '" to be ' + (token.repeat ? "an array" : "a string"));
8131
8131
  }
8132
- return path5;
8132
+ return path6;
8133
8133
  };
8134
8134
  }
8135
8135
  function escapeString(str) {
@@ -8141,10 +8141,10 @@ var require_path_to_regexp = __commonJS({
8141
8141
  function flags(options) {
8142
8142
  return options && options.sensitive ? "" : "i";
8143
8143
  }
8144
- function regexpToRegexp(path5, keys) {
8144
+ function regexpToRegexp(path6, keys) {
8145
8145
  if (!keys)
8146
- return path5;
8147
- var groups = path5.source.match(/\((?!\?)/g);
8146
+ return path6;
8147
+ var groups = path6.source.match(/\((?!\?)/g);
8148
8148
  if (groups) {
8149
8149
  for (var i = 0; i < groups.length; i++) {
8150
8150
  keys.push({
@@ -8158,17 +8158,17 @@ var require_path_to_regexp = __commonJS({
8158
8158
  });
8159
8159
  }
8160
8160
  }
8161
- return path5;
8161
+ return path6;
8162
8162
  }
8163
- function arrayToRegexp(path5, keys, options) {
8163
+ function arrayToRegexp(path6, keys, options) {
8164
8164
  var parts = [];
8165
- for (var i = 0; i < path5.length; i++) {
8166
- parts.push(pathToRegexp(path5[i], keys, options).source);
8165
+ for (var i = 0; i < path6.length; i++) {
8166
+ parts.push(pathToRegexp(path6[i], keys, options).source);
8167
8167
  }
8168
8168
  return new RegExp("(?:" + parts.join("|") + ")", flags(options));
8169
8169
  }
8170
- function stringToRegexp(path5, keys, options) {
8171
- return tokensToRegExp(parse2(path5, options), keys, options);
8170
+ function stringToRegexp(path6, keys, options) {
8171
+ return tokensToRegExp(parse2(path6, options), keys, options);
8172
8172
  }
8173
8173
  function tokensToRegExp(tokens, keys, options) {
8174
8174
  options = options || {};
@@ -8212,21 +8212,21 @@ var require_path_to_regexp = __commonJS({
8212
8212
  }
8213
8213
  return new RegExp("^" + route, flags(options));
8214
8214
  }
8215
- function pathToRegexp(path5, keys, options) {
8216
- if (path5 instanceof RegExp) {
8217
- return regexpToRegexp(path5, keys);
8215
+ function pathToRegexp(path6, keys, options) {
8216
+ if (path6 instanceof RegExp) {
8217
+ return regexpToRegexp(path6, keys);
8218
8218
  }
8219
- if (Array.isArray(path5)) {
8219
+ if (Array.isArray(path6)) {
8220
8220
  return arrayToRegexp(
8221
8221
  /** @type {!Array} */
8222
- path5,
8222
+ path6,
8223
8223
  keys,
8224
8224
  options
8225
8225
  );
8226
8226
  }
8227
8227
  return stringToRegexp(
8228
8228
  /** @type {string} */
8229
- path5,
8229
+ path6,
8230
8230
  keys,
8231
8231
  options
8232
8232
  );
@@ -15391,11 +15391,11 @@ var require_mime_types2 = __commonJS({
15391
15391
  }
15392
15392
  return exts[0];
15393
15393
  }
15394
- function lookup(path5) {
15395
- if (!path5 || typeof path5 !== "string") {
15394
+ function lookup(path6) {
15395
+ if (!path6 || typeof path6 !== "string") {
15396
15396
  return false;
15397
15397
  }
15398
- var extension2 = extname2("x." + path5).toLowerCase().substr(1);
15398
+ var extension2 = extname2("x." + path6).toLowerCase().substr(1);
15399
15399
  if (!extension2) {
15400
15400
  return false;
15401
15401
  }
@@ -15593,7 +15593,7 @@ var require_content_disposition = __commonJS({
15593
15593
  var require_path_is_inside = __commonJS({
15594
15594
  "../../node_modules/.pnpm/path-is-inside@1.0.2/node_modules/path-is-inside/lib/path-is-inside.js"(exports2, module2) {
15595
15595
  "use strict";
15596
- var path5 = __require("path");
15596
+ var path6 = __require("path");
15597
15597
  module2.exports = function(thePath, potentialParent) {
15598
15598
  thePath = stripTrailingSep(thePath);
15599
15599
  potentialParent = stripTrailingSep(potentialParent);
@@ -15601,10 +15601,10 @@ var require_path_is_inside = __commonJS({
15601
15601
  thePath = thePath.toLowerCase();
15602
15602
  potentialParent = potentialParent.toLowerCase();
15603
15603
  }
15604
- return thePath.lastIndexOf(potentialParent, 0) === 0 && (thePath[potentialParent.length] === path5.sep || thePath[potentialParent.length] === void 0);
15604
+ return thePath.lastIndexOf(potentialParent, 0) === 0 && (thePath[potentialParent.length] === path6.sep || thePath[potentialParent.length] === void 0);
15605
15605
  };
15606
15606
  function stripTrailingSep(thePath) {
15607
- if (thePath[thePath.length - 1] === path5.sep) {
15607
+ if (thePath[thePath.length - 1] === path6.sep) {
15608
15608
  return thePath.slice(0, -1);
15609
15609
  }
15610
15610
  return thePath;
@@ -15780,7 +15780,7 @@ var require_error = __commonJS({
15780
15780
  var require_src2 = __commonJS({
15781
15781
  "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/index.js"(exports2, module2) {
15782
15782
  var { promisify } = __require("util");
15783
- var path5 = __require("path");
15783
+ var path6 = __require("path");
15784
15784
  var { createHash } = __require("crypto");
15785
15785
  var { realpath, lstat, createReadStream, readdir } = __require("fs");
15786
15786
  var url3 = require_urlparser();
@@ -15797,7 +15797,7 @@ var require_src2 = __commonJS({
15797
15797
  var etags = /* @__PURE__ */ new Map();
15798
15798
  var calculateSha = (handlers, absolutePath) => new Promise((resolve2, reject) => {
15799
15799
  const hash = createHash("sha1");
15800
- hash.update(path5.extname(absolutePath));
15800
+ hash.update(path6.extname(absolutePath));
15801
15801
  hash.update("-");
15802
15802
  const rs = handlers.createReadStream(absolutePath);
15803
15803
  rs.on("error", reject);
@@ -15810,7 +15810,7 @@ var require_src2 = __commonJS({
15810
15810
  var sourceMatches = (source, requestPath, allowSegments) => {
15811
15811
  const keys = [];
15812
15812
  const slashed = slasher(source);
15813
- const resolvedPath = path5.posix.resolve(requestPath);
15813
+ const resolvedPath = path6.posix.resolve(requestPath);
15814
15814
  let results = null;
15815
15815
  if (allowSegments) {
15816
15816
  const normalized = slashed.replace("*", "(.*)");
@@ -15874,7 +15874,7 @@ var require_src2 = __commonJS({
15874
15874
  cleanedUrl = true;
15875
15875
  }
15876
15876
  if (slashing) {
15877
- const { ext, name } = path5.parse(decodedPath);
15877
+ const { ext, name } = path6.parse(decodedPath);
15878
15878
  const isTrailed = decodedPath.endsWith("/");
15879
15879
  const isDotfile = name.startsWith(".");
15880
15880
  let target = null;
@@ -15920,8 +15920,8 @@ var require_src2 = __commonJS({
15920
15920
  var getHeaders = async (handlers, config, current, absolutePath, stats) => {
15921
15921
  const { headers: customHeaders = [], etag = false } = config;
15922
15922
  const related = {};
15923
- const { base } = path5.parse(absolutePath);
15924
- const relativePath = path5.relative(current, absolutePath);
15923
+ const { base } = path6.parse(absolutePath);
15924
+ const relativePath = path6.relative(current, absolutePath);
15925
15925
  if (customHeaders.length > 0) {
15926
15926
  for (let index = 0; index < customHeaders.length; index++) {
15927
15927
  const { source, headers: headers2 } = customHeaders[index];
@@ -15981,15 +15981,15 @@ var require_src2 = __commonJS({
15981
15981
  return true;
15982
15982
  };
15983
15983
  var getPossiblePaths = (relativePath, extension) => [
15984
- path5.join(relativePath, `index${extension}`),
15984
+ path6.join(relativePath, `index${extension}`),
15985
15985
  relativePath.endsWith("/") ? relativePath.replace(/\/$/g, extension) : relativePath + extension
15986
- ].filter((item) => path5.basename(item) !== extension);
15986
+ ].filter((item) => path6.basename(item) !== extension);
15987
15987
  var findRelated = async (current, relativePath, rewrittenPath, originalStat) => {
15988
15988
  const possible = rewrittenPath ? [rewrittenPath] : getPossiblePaths(relativePath, ".html");
15989
15989
  let stats = null;
15990
15990
  for (let index = 0; index < possible.length; index++) {
15991
15991
  const related = possible[index];
15992
- const absolutePath = path5.join(current, related);
15992
+ const absolutePath = path6.join(current, related);
15993
15993
  try {
15994
15994
  stats = await originalStat(absolutePath);
15995
15995
  } catch (err) {
@@ -16034,15 +16034,15 @@ var require_src2 = __commonJS({
16034
16034
  const canRenderSingle = renderSingle && files.length === 1;
16035
16035
  for (let index = 0; index < files.length; index++) {
16036
16036
  const file = files[index];
16037
- const filePath = path5.resolve(absolutePath, file);
16038
- const details = path5.parse(filePath);
16037
+ const filePath = path6.resolve(absolutePath, file);
16038
+ const details = path6.parse(filePath);
16039
16039
  let stats = null;
16040
16040
  if (methods.lstat) {
16041
16041
  stats = await handlers.lstat(filePath, true);
16042
16042
  } else {
16043
16043
  stats = await handlers.lstat(filePath);
16044
16044
  }
16045
- details.relative = path5.join(relativePath, details.base);
16045
+ details.relative = path6.join(relativePath, details.base);
16046
16046
  if (stats.isDirectory()) {
16047
16047
  details.base += slashSuffix;
16048
16048
  details.relative += slashSuffix;
@@ -16069,9 +16069,9 @@ var require_src2 = __commonJS({
16069
16069
  delete files[index];
16070
16070
  }
16071
16071
  }
16072
- const toRoot = path5.relative(current, absolutePath);
16073
- const directory = path5.join(path5.basename(current), toRoot, slashSuffix);
16074
- const pathParts = directory.split(path5.sep).filter(Boolean);
16072
+ const toRoot = path6.relative(current, absolutePath);
16073
+ const directory = path6.join(path6.basename(current), toRoot, slashSuffix);
16074
+ const pathParts = directory.split(path6.sep).filter(Boolean);
16075
16075
  files = files.sort((a, b) => {
16076
16076
  const aIsDir = a.type === "directory";
16077
16077
  const bIsDir = b.type === "directory";
@@ -16088,7 +16088,7 @@ var require_src2 = __commonJS({
16088
16088
  }).filter(Boolean);
16089
16089
  if (toRoot.length > 0) {
16090
16090
  const directoryPath = [...pathParts].slice(1);
16091
- const relative3 = path5.join("/", ...directoryPath, "..", slashSuffix);
16091
+ const relative3 = path6.join("/", ...directoryPath, "..", slashSuffix);
16092
16092
  files.unshift({
16093
16093
  type: "directory",
16094
16094
  base: "..",
@@ -16137,7 +16137,7 @@ var require_src2 = __commonJS({
16137
16137
  return;
16138
16138
  }
16139
16139
  let stats = null;
16140
- const errorPage = path5.join(current, `${statusCode}.html`);
16140
+ const errorPage = path6.join(current, `${statusCode}.html`);
16141
16141
  try {
16142
16142
  stats = await handlers.lstat(errorPage);
16143
16143
  } catch (err) {
@@ -16182,7 +16182,7 @@ var require_src2 = __commonJS({
16182
16182
  }, methods);
16183
16183
  module2.exports = async (request, response, config = {}, methods = {}) => {
16184
16184
  const cwd = process.cwd();
16185
- const current = config.public ? path5.resolve(cwd, config.public) : cwd;
16185
+ const current = config.public ? path6.resolve(cwd, config.public) : cwd;
16186
16186
  const handlers = getHandlers(methods);
16187
16187
  let relativePath = null;
16188
16188
  let acceptsJSON = null;
@@ -16198,7 +16198,7 @@ var require_src2 = __commonJS({
16198
16198
  message: "Bad Request"
16199
16199
  });
16200
16200
  }
16201
- let absolutePath = path5.join(current, relativePath);
16201
+ let absolutePath = path6.join(current, relativePath);
16202
16202
  if (!isPathInside(absolutePath, current)) {
16203
16203
  return sendError(absolutePath, response, acceptsJSON, current, handlers, config, {
16204
16204
  statusCode: 400,
@@ -16216,7 +16216,7 @@ var require_src2 = __commonJS({
16216
16216
  return;
16217
16217
  }
16218
16218
  let stats = null;
16219
- if (path5.extname(relativePath) !== "") {
16219
+ if (path6.extname(relativePath) !== "") {
16220
16220
  try {
16221
16221
  stats = await handlers.lstat(absolutePath);
16222
16222
  } catch (err) {
@@ -16746,7 +16746,7 @@ var require_escape_html = __commonJS({
16746
16746
 
16747
16747
  // src/commands/dev/index.ts
16748
16748
  var import_chalk4 = __toESM(require_source(), 1);
16749
- import path4 from "path";
16749
+ import path5 from "path";
16750
16750
 
16751
16751
  // src/commands/dev/dev.ts
16752
16752
  var import_chalk3 = __toESM(require_source(), 1);
@@ -16775,7 +16775,7 @@ import url2, { URL } from "url";
16775
16775
  import http from "http";
16776
16776
  import { randomBytes as randomBytes2 } from "crypto";
16777
16777
  import { watch } from "chokidar";
16778
- import path3, { isAbsolute, basename, dirname as dirname2, extname, join as join2 } from "path";
16778
+ import path4, { isAbsolute, basename, dirname as dirname2, extname, join as join2 } from "path";
16779
16779
 
16780
16780
  // src/util/dev/port-utils.ts
16781
16781
  var import_is_port_reachable = __toESM(require_is_port_reachable(), 1);
@@ -17315,18 +17315,18 @@ Please run \`${await getUpdateCommand()}\` to update to the latest CLI.`
17315
17315
  const { output: buildOutput } = result;
17316
17316
  const { cleanUrls } = vercelConfig;
17317
17317
  for (const [originalPath, value] of Object.entries(buildOutput)) {
17318
- let path5 = normalizePath2(originalPath);
17319
- if (cleanUrls && path5.endsWith(".html")) {
17320
- path5 = path5.slice(0, -5);
17318
+ let path6 = normalizePath2(originalPath);
17319
+ if (cleanUrls && path6.endsWith(".html")) {
17320
+ path6 = path6.slice(0, -5);
17321
17321
  if (value.type === "FileBlob" || value.type === "FileFsRef") {
17322
17322
  value.contentType = value.contentType || "text/html; charset=utf-8";
17323
17323
  }
17324
17324
  }
17325
- const extensionless = devServer.getExtensionlessFile(path5);
17325
+ const extensionless = devServer.getExtensionlessFile(path6);
17326
17326
  if (extensionless) {
17327
- path5 = extensionless;
17327
+ path6 = extensionless;
17328
17328
  }
17329
- buildOutput[path5] = value;
17329
+ buildOutput[path6] = value;
17330
17330
  }
17331
17331
  const deserializedOutput = await deserializeBuildOutputs(
17332
17332
  buildOutput
@@ -17354,10 +17354,10 @@ Please run \`${await getUpdateCommand()}\` to update to the latest CLI.`
17354
17354
  }
17355
17355
  await Promise.all(
17356
17356
  Object.entries(result.output).map(async (entry) => {
17357
- const path5 = entry[0];
17357
+ const path6 = entry[0];
17358
17358
  const asset = entry[1];
17359
17359
  if (asset.type === "Lambda") {
17360
- const oldAsset = match.buildOutput && match.buildOutput[path5];
17360
+ const oldAsset = match.buildOutput && match.buildOutput[path6];
17361
17361
  if (oldAsset && oldAsset.type === "Lambda" && oldAsset.fn) {
17362
17362
  await oldAsset.fn.destroy();
17363
17363
  }
@@ -17615,7 +17615,7 @@ var import_get_port = __toESM(require_get_port(), 1);
17615
17615
  var import_chalk = __toESM(require_source(), 1);
17616
17616
  var import_fs_detectors2 = __toESM(require_dist4(), 1);
17617
17617
  var import_frameworks = __toESM(require_frameworks(), 1);
17618
- import path2 from "path";
17618
+ import path3 from "path";
17619
17619
  import { Transform, Writable } from "stream";
17620
17620
 
17621
17621
  // src/util/dev/cron.ts
@@ -17741,6 +17741,32 @@ import {
17741
17741
  getServiceUrlEnvVars,
17742
17742
  getExperimentalServiceUrlEnvVars
17743
17743
  } from "@vercel/build-utils";
17744
+
17745
+ // src/util/dev/next-dev-websocket-shim-injection.ts
17746
+ import path2 from "path";
17747
+ var NEXT_DEV_WEBSOCKET_SHIM = path2.join(
17748
+ __dirname,
17749
+ "next-dev-websocket-shim-preload.cjs"
17750
+ );
17751
+ function injectNextDevWebSocketShimIfNeeded(env, command, projectSettings) {
17752
+ if (!shouldInjectNextDevWebSocketShim(command, projectSettings)) {
17753
+ return void 0;
17754
+ }
17755
+ env.NODE_OPTIONS = prependNodeRequireOption(
17756
+ env.NODE_OPTIONS,
17757
+ NEXT_DEV_WEBSOCKET_SHIM
17758
+ );
17759
+ return NEXT_DEV_WEBSOCKET_SHIM;
17760
+ }
17761
+ function shouldInjectNextDevWebSocketShim(command, projectSettings) {
17762
+ return projectSettings?.framework === "nextjs" || /(?:^|\s)(?:next|next\.js)(?:\s+dev)?(?:\s+-|\s*$|$)/.test(command);
17763
+ }
17764
+ function prependNodeRequireOption(nodeOptions, requirePath) {
17765
+ const requireOption = `--require ${JSON.stringify(requirePath)}`;
17766
+ return nodeOptions ? `${requireOption} ${nodeOptions}` : requireOption;
17767
+ }
17768
+
17769
+ // src/util/dev/services-orchestrator.ts
17744
17770
  var STARTUP_TIMEOUT = (0, import_ms2.default)("5m");
17745
17771
  var ServiceStartError = class extends Error {
17746
17772
  constructor(failures) {
@@ -18103,6 +18129,7 @@ var ServicesOrchestrator = class {
18103
18129
  return this.spawnDevCommandProcess({
18104
18130
  name: service.name,
18105
18131
  devCommand: devCommand2,
18132
+ framework: spec.framework,
18106
18133
  workspacePath: spec.rootPath,
18107
18134
  env: spec.env,
18108
18135
  logger,
@@ -18157,7 +18184,7 @@ var ServicesOrchestrator = class {
18157
18184
  }
18158
18185
  const workspace = service.workspace || ".";
18159
18186
  return {
18160
- rootPath: path2.join(this.cwd, workspace),
18187
+ rootPath: path3.join(this.cwd, workspace),
18161
18188
  rootLabel: workspace,
18162
18189
  framework,
18163
18190
  // Prefer the framework's useRuntime, falling back to the resolved builder.
@@ -18193,7 +18220,7 @@ var ServicesOrchestrator = class {
18193
18220
  );
18194
18221
  const root = service.root || ".";
18195
18222
  return {
18196
- rootPath: path2.join(this.cwd, root),
18223
+ rootPath: path3.join(this.cwd, root),
18197
18224
  rootLabel: root,
18198
18225
  framework,
18199
18226
  builderSpec: framework?.useRuntime?.use || service.builder?.use,
@@ -18228,6 +18255,11 @@ var ServicesOrchestrator = class {
18228
18255
  output_manager_default.debug(
18229
18256
  `Starting ${import_chalk.default.bold(name)} using ${import_chalk.default.cyan.bold(spec.builderSpec)}`
18230
18257
  );
18258
+ injectNextDevWebSocketShimIfNeeded(
18259
+ spec.env,
18260
+ spec.framework?.settings.devCommand?.value || "",
18261
+ { framework: spec.framework?.slug }
18262
+ );
18231
18263
  const result = await builder.startDevServer({
18232
18264
  entrypoint: spec.entrypoint,
18233
18265
  workPath: spec.rootPath,
@@ -18277,6 +18309,7 @@ var ServicesOrchestrator = class {
18277
18309
  const {
18278
18310
  name,
18279
18311
  devCommand: devCommand2,
18312
+ framework,
18280
18313
  workspacePath,
18281
18314
  env,
18282
18315
  logger,
@@ -18291,14 +18324,17 @@ var ServicesOrchestrator = class {
18291
18324
  base: this.repoRoot,
18292
18325
  start: workspacePath
18293
18326
  });
18294
- const nodeBinPath = nodeBinPaths.join(path2.delimiter);
18295
- env.PATH = `${nodeBinPath}${path2.delimiter}${env.PATH}`;
18327
+ const nodeBinPath = nodeBinPaths.join(path3.delimiter);
18328
+ env.PATH = `${nodeBinPath}${path3.delimiter}${env.PATH}`;
18296
18329
  output_manager_default.debug(
18297
18330
  `Starting ${import_chalk.default.bold(name)} with ${import_chalk.default.cyan.bold(`"${devCommand2}"`)}`
18298
18331
  );
18299
18332
  if (process.stdout.columns) {
18300
18333
  env.COLUMNS = `${process.stdout.columns}`;
18301
18334
  }
18335
+ injectNextDevWebSocketShimIfNeeded(env, devCommand2, {
18336
+ framework: framework?.slug
18337
+ });
18302
18338
  const child = spawnCommand(devCommand2, {
18303
18339
  cwd: workspacePath,
18304
18340
  env,
@@ -18964,10 +19000,10 @@ var DevServer = class {
18964
19000
  this.clearVercelConfigPromise = () => {
18965
19001
  this.getVercelConfigPromise = null;
18966
19002
  };
18967
- this.getExtensionlessFile = (path5) => {
18968
- const ext = extname(path5);
18969
- if (this.apiDir && path5.startsWith(this.apiDir + "/") && this.apiExtensions.has(ext)) {
18970
- return path5.slice(0, -ext.length);
19003
+ this.getExtensionlessFile = (path6) => {
19004
+ const ext = extname(path6);
19005
+ if (this.apiDir && path6.startsWith(this.apiDir + "/") && this.apiExtensions.has(ext)) {
19006
+ return path6.slice(0, -ext.length);
18971
19007
  }
18972
19008
  return null;
18973
19009
  };
@@ -19753,7 +19789,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
19753
19789
  const origQuery = parseQueryString(origUrl.search);
19754
19790
  Object.assign(origQuery, query);
19755
19791
  origUrl.search = formatQueryString(origQuery);
19756
- const path5 = url2.format({
19792
+ const path6 = url2.format({
19757
19793
  pathname: origUrl.pathname,
19758
19794
  search: origUrl.search
19759
19795
  });
@@ -19761,7 +19797,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
19761
19797
  const payload = {
19762
19798
  method: req.method || "GET",
19763
19799
  host: req.headers.host,
19764
- path: path5,
19800
+ path: path6,
19765
19801
  headers: {
19766
19802
  ...req.headers,
19767
19803
  ...this.getProxyHeaders(req, requestId, true)
@@ -19769,7 +19805,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
19769
19805
  encoding: "base64",
19770
19806
  body: body.toString("base64")
19771
19807
  };
19772
- debug(`Invoking lambda: "${assetKey}" with ${path5}`);
19808
+ debug(`Invoking lambda: "${assetKey}" with ${path6}`);
19773
19809
  let result;
19774
19810
  try {
19775
19811
  result = await asset.fn({
@@ -19824,6 +19860,24 @@ Please ensure that ${cmd(err.path)} is properly installed`;
19824
19860
  this.proxy.on("proxyRes", (proxyRes) => {
19825
19861
  proxyRes.headers["server"] = "Vercel";
19826
19862
  });
19863
+ this.proxy.on("error", (err, req, res) => {
19864
+ output_manager_default.debug(
19865
+ `Proxy error for ${req?.url ?? "unknown request"}: ${(0, import_error_utils.errorToString)(err)}`
19866
+ );
19867
+ if (!res) {
19868
+ return;
19869
+ }
19870
+ if ("destroy" in res && typeof res.destroy === "function") {
19871
+ res.destroy();
19872
+ return;
19873
+ }
19874
+ if (res instanceof http.ServerResponse) {
19875
+ if (!res.headersSent) {
19876
+ res.writeHead(502);
19877
+ }
19878
+ res.end();
19879
+ }
19880
+ });
19827
19881
  this.server = http.createServer(this.devServerHandler);
19828
19882
  this.server.timeout = 0;
19829
19883
  this.stopping = false;
@@ -19837,7 +19891,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
19837
19891
  this.watchAggregationId = null;
19838
19892
  this.watchAggregationEvents = [];
19839
19893
  this.watchAggregationTimeout = 500;
19840
- this.filter = (path5) => Boolean(path5);
19894
+ this.filter = (path6) => Boolean(path6);
19841
19895
  this.podId = Math.random().toString(32).slice(-5);
19842
19896
  this.shutdownCallbacks = /* @__PURE__ */ new Map();
19843
19897
  }
@@ -19859,8 +19913,8 @@ Please ensure that ${cmd(err.path)} is properly installed`;
19859
19913
  await this.stop(code);
19860
19914
  process.exit(code);
19861
19915
  }
19862
- enqueueFsEvent(type, path5) {
19863
- this.watchAggregationEvents.push({ type, path: path5 });
19916
+ enqueueFsEvent(type, path6) {
19917
+ this.watchAggregationEvents.push({ type, path: path6 });
19864
19918
  if (this.watchAggregationId === null) {
19865
19919
  this.watchAggregationId = setTimeout(() => {
19866
19920
  const events = this.watchAggregationEvents.slice();
@@ -20117,7 +20171,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20117
20171
  return void 0;
20118
20172
  }
20119
20173
  async _getVercelConfig() {
20120
- const { compileVercelConfig } = await import("../../chunks/compile-vercel-config-MD37D2F7.js");
20174
+ const { compileVercelConfig } = await import("../../chunks/compile-vercel-config-3LV7J3IZ.js");
20121
20175
  await compileVercelConfig(this.cwd);
20122
20176
  const configPath = getLocalPathConfig(this.cwd);
20123
20177
  const [
@@ -20271,7 +20325,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20271
20325
  async readJsonFile(filePath) {
20272
20326
  let rel, abs;
20273
20327
  if (isAbsolute(filePath)) {
20274
- rel = path3.relative(this.cwd, filePath);
20328
+ rel = path4.relative(this.cwd, filePath);
20275
20329
  abs = filePath;
20276
20330
  } else {
20277
20331
  rel = filePath;
@@ -20453,10 +20507,10 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20453
20507
  const files = await staticFiles(this.cwd, {});
20454
20508
  this.files = {};
20455
20509
  for (const fsPath of files) {
20456
- const path5 = relative2(this.cwd, fsPath);
20510
+ const path6 = relative2(this.cwd, fsPath);
20457
20511
  const { mode } = await import_fs_extra.default.stat(fsPath);
20458
- this.files[path5] = new FileFsRef2({ mode, fsPath });
20459
- const extensionless = this.getExtensionlessFile(path5);
20512
+ this.files[path6] = new FileFsRef2({ mode, fsPath });
20513
+ const extensionless = this.getExtensionlessFile(path6);
20460
20514
  if (extensionless) {
20461
20515
  this.files[extensionless] = new FileFsRef2({ mode, fsPath });
20462
20516
  }
@@ -20474,19 +20528,19 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20474
20528
  }
20475
20529
  await import_fs_extra.default.mkdirp(this.devCacheDir);
20476
20530
  this.watcher = watch(this.cwd, {
20477
- ignored: (path5) => !this.filter(path5),
20531
+ ignored: (path6) => !this.filter(path6),
20478
20532
  ignoreInitial: true,
20479
20533
  usePolling: false,
20480
20534
  persistent: true
20481
20535
  });
20482
- this.watcher.on("add", (path5) => {
20483
- this.enqueueFsEvent("add", path5);
20536
+ this.watcher.on("add", (path6) => {
20537
+ this.enqueueFsEvent("add", path6);
20484
20538
  });
20485
- this.watcher.on("change", (path5) => {
20486
- this.enqueueFsEvent("change", path5);
20539
+ this.watcher.on("change", (path6) => {
20540
+ this.enqueueFsEvent("change", path6);
20487
20541
  });
20488
- this.watcher.on("unlink", (path5) => {
20489
- this.enqueueFsEvent("unlink", path5);
20542
+ this.watcher.on("unlink", (path6) => {
20543
+ this.enqueueFsEvent("unlink", path6);
20490
20544
  });
20491
20545
  this.watcher.on("error", (err) => {
20492
20546
  output_manager_default.error(`Watcher error: ${err}`);
@@ -20965,9 +21019,10 @@ ${error_code}
20965
21019
  }
20966
21020
  );
20967
21021
  const nodeBinPaths = getNodeBinPaths2({ base: this.repoRoot, start: cwd });
20968
- const nodeBinPath = nodeBinPaths.join(path3.delimiter);
20969
- env.PATH = `${nodeBinPath}${path3.delimiter}${env.PATH}`;
21022
+ const nodeBinPath = nodeBinPaths.join(path4.delimiter);
21023
+ env.PATH = `${nodeBinPath}${path4.delimiter}${env.PATH}`;
20970
21024
  const command = devCommand2.replace(/\$PORT/g, `${port}`).replace(/%PORT%/g, `${port}`);
21025
+ injectNextDevWebSocketShimIfNeeded(env, command, this.projectSettings);
20971
21026
  output_manager_default.debug(
20972
21027
  `Starting dev command with parameters: ${JSON.stringify({
20973
21028
  cwd,
@@ -21163,16 +21218,16 @@ function findAsset(match, requestPath, vercelConfig) {
21163
21218
  return { asset, assetKey };
21164
21219
  }
21165
21220
  }
21166
- function dirnameWithoutDot(path5) {
21167
- let dir = dirname2(path5);
21221
+ function dirnameWithoutDot(path6) {
21222
+ let dir = dirname2(path6);
21168
21223
  if (dir === ".") {
21169
21224
  dir = "";
21170
21225
  }
21171
21226
  return dir;
21172
21227
  }
21173
- function isIndex(path5) {
21174
- const ext = extname(path5);
21175
- const name = basename(path5, ext);
21228
+ function isIndex(path6) {
21229
+ const ext = extname(path6);
21230
+ const name = basename(path6, ext);
21176
21231
  return name === "index";
21177
21232
  }
21178
21233
  function minimatches(files, pattern) {
@@ -21441,7 +21496,6 @@ To link your project, run ${getCommandName("dev")} without \`-L\` or \`--local\`
21441
21496
  autoConfirm: opts["--yes"],
21442
21497
  link,
21443
21498
  successEmoji: "link",
21444
- setupMsg: "Set up",
21445
21499
  nonInteractive: client.nonInteractive
21446
21500
  });
21447
21501
  if (link.status === "not_linked") {
@@ -21747,7 +21801,7 @@ async function main(client) {
21747
21801
  }
21748
21802
  const hasBuilds = vercelConfig && "builds" in vercelConfig && vercelConfig.builds && vercelConfig.builds.length > 0;
21749
21803
  if (!vercelConfig || !hasBuilds) {
21750
- const pkg = await readJSONFile(path4.join(dir, "package.json"));
21804
+ const pkg = await readJSONFile(path5.join(dir, "package.json"));
21751
21805
  if (pkg instanceof CantParseJSONFile) {
21752
21806
  output_manager_default.error(pkg.message);
21753
21807
  return 1;