vercel 56.2.1 → 56.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/chunks/{add-YIAPBLSF.js → add-CF5SQESQ.js} +10 -13
  2. package/dist/chunks/{add-ZAQLTF5W.js → add-DMRGZN3Z.js} +9 -12
  3. package/dist/chunks/{chunk-75PKWYOS.js → chunk-22G26AIX.js} +99 -74
  4. package/dist/chunks/{chunk-7OJJKCSW.js → chunk-2C2JJTAM.js} +6 -10
  5. package/dist/chunks/{chunk-DDEPCAGE.js → chunk-2MXGTALG.js} +529 -164
  6. package/dist/chunks/{chunk-5AJNUXWP.js → chunk-3PKFXNJZ.js} +2 -4
  7. package/dist/chunks/{chunk-5OT26JZN.js → chunk-3VS4DTAU.js} +4 -6
  8. package/dist/chunks/{chunk-JJWESW5Y.js → chunk-4G6QZSBL.js} +2 -4
  9. package/dist/chunks/{chunk-NULWLKT7.js → chunk-4YOCOUDN.js} +4 -4
  10. package/dist/chunks/{chunk-GXBDQRHJ.js → chunk-4Z5LC2CI.js} +1 -1
  11. package/dist/chunks/{chunk-CMJMYVQM.js → chunk-6OMC3HOW.js} +1 -1
  12. package/dist/chunks/{chunk-JF7LPEBD.js → chunk-A6LE5VAN.js} +1 -1
  13. package/dist/chunks/{chunk-QY63UKTP.js → chunk-DMSLNAVH.js} +2 -2
  14. package/dist/chunks/{chunk-52V5NDUN.js → chunk-DZHRFBKE.js} +2 -2
  15. package/dist/chunks/{chunk-MYD7N6MH.js → chunk-ERPZJ4SX.js} +13 -3
  16. package/dist/chunks/{chunk-YKJA5TVC.js → chunk-EYNXG3FO.js} +3 -5
  17. package/dist/chunks/{chunk-RLJA2KI7.js → chunk-FYQPTH5C.js} +2 -4
  18. package/dist/chunks/{chunk-7TJLLZPN.js → chunk-G4PG5HVE.js} +6 -10
  19. package/dist/chunks/{chunk-7C7MMT4J.js → chunk-GIL3VAUR.js} +2 -4
  20. package/dist/chunks/{chunk-GPVU6JRS.js → chunk-HUKYQKVQ.js} +9 -7
  21. package/dist/chunks/{chunk-EPBUWIAO.js → chunk-I2IICWBW.js} +48 -24
  22. package/dist/chunks/{chunk-KXVQEPTA.js → chunk-ICSIFPXG.js} +3 -5
  23. package/dist/chunks/{chunk-P6AK7SVK.js → chunk-KSSNLCL4.js} +360 -25
  24. package/dist/chunks/{chunk-HIO4M75R.js → chunk-KXKQQIUS.js} +6 -10
  25. package/dist/chunks/{chunk-HA7C7SDO.js → chunk-LHFNIZ2P.js} +2 -4
  26. package/dist/chunks/{chunk-2I34TRQZ.js → chunk-NP32PAKT.js} +2 -2
  27. package/dist/chunks/{chunk-QEEGXNFK.js → chunk-NZRWTCRM.js} +1 -1
  28. package/dist/chunks/{chunk-IDMKFYEA.js → chunk-OGG6UBXK.js} +2 -4
  29. package/dist/chunks/{chunk-PASZMRTZ.js → chunk-PRO4S2KV.js} +5 -5
  30. package/dist/chunks/{chunk-DD6D5J7E.js → chunk-Q5ADSH7D.js} +8 -12
  31. package/dist/chunks/{chunk-6ZVIC6FL.js → chunk-QP3C5YS5.js} +8 -8
  32. package/dist/chunks/{chunk-5HNYJHOB.js → chunk-SDK7R4WO.js} +1 -1
  33. package/dist/chunks/{chunk-22GUZ5KG.js → chunk-STJJ3DFO.js} +2 -4
  34. package/dist/chunks/{chunk-EHTPDXTS.js → chunk-SZXT3PDQ.js} +3 -294
  35. package/dist/chunks/{chunk-CB3I3QIT.js → chunk-UDWRZXIT.js} +193 -85
  36. package/dist/chunks/{chunk-DREO3DFB.js → chunk-VZSZBD4V.js} +16 -6
  37. package/dist/chunks/{chunk-VOBBH2SB.js → chunk-W346YNDN.js} +0 -49
  38. package/dist/chunks/{chunk-7S3QUMIG.js → chunk-YS6EDZHB.js} +3 -5
  39. package/dist/chunks/{chunk-UESEGACQ.js → chunk-ZDCS54ZZ.js} +3 -3
  40. package/dist/chunks/{chunk-4RGSUV5C.js → chunk-ZVLPUREX.js} +2 -2
  41. package/dist/chunks/{compile-vercel-config-4NKPN3EG.js → compile-vercel-config-RPPL7W56.js} +4 -4
  42. package/dist/chunks/{delete-NCMDC3IU.js → delete-QBVZ5X6B.js} +14 -14
  43. package/dist/chunks/{disable-Z7DXY4AY.js → disable-YYGXPXBI.js} +14 -13
  44. package/dist/chunks/{discard-4ILK3ULP.js → discard-X2MSUFGI.js} +13 -12
  45. package/dist/chunks/{edit-ROJQCTWR.js → edit-3ABZQYUU.js} +17 -18
  46. package/dist/chunks/{enable-TAVCLAEC.js → enable-HUMYCGKA.js} +14 -13
  47. package/dist/chunks/{export-YTSIGJFX.js → export-KGHH4WAT.js} +15 -14
  48. package/dist/chunks/{image-LORSHERP.js → image-OO3WWKZV.js} +6 -8
  49. package/dist/chunks/{inspect-5C4UHSCT.js → inspect-5TNHHD2M.js} +10 -12
  50. package/dist/chunks/{inspect-OHDU2SVS.js → inspect-FNUCB7Y3.js} +8 -10
  51. package/dist/chunks/{inspect-L4UIWOXO.js → inspect-KSSQEAW7.js} +11 -15
  52. package/dist/chunks/{inspect-A2X7RTP4.js → inspect-Z6SSD2SR.js} +8 -10
  53. package/dist/chunks/{list-FGVDMSFN.js → list-TXNYRVJG.js} +8 -10
  54. package/dist/chunks/{list-P2B5MHON.js → list-X2AD3HCX.js} +10 -13
  55. package/dist/chunks/{login-4BK3VGII.js → login-SLPCZ2OF.js} +11 -14
  56. package/dist/chunks/{ls-YXKRRYTL.js → ls-2YSINRJ3.js} +10 -13
  57. package/dist/chunks/{ls-NU4D6TLG.js → ls-4QMJLQQL.js} +10 -13
  58. package/dist/chunks/{ls-WDRFGE2J.js → ls-C7MNQ4IK.js} +12 -15
  59. package/dist/chunks/{ls-RAC5LMTR.js → ls-QLTOY23G.js} +9 -12
  60. package/dist/chunks/{publish-DGF2TQCQ.js → publish-GV4LLLXP.js} +13 -12
  61. package/dist/chunks/{query-NWW6RDHK.js → query-3AHRMAPA.js} +10 -12
  62. package/dist/chunks/{reorder-TTZBKCEB.js → reorder-VSVOPNM4.js} +17 -16
  63. package/dist/chunks/{restore-DG3LZMHQ.js → restore-FKYCF73P.js} +19 -18
  64. package/dist/chunks/{rm-7WXXLTXF.js → rm-4QCXZRC2.js} +10 -13
  65. package/dist/chunks/{rm-U2DFRDKE.js → rm-UTFG42FN.js} +8 -11
  66. package/dist/chunks/{rm-2VBE4C2V.js → rm-YV5WQKQM.js} +9 -12
  67. package/dist/chunks/{rule-inspect-4NL3GGDB.js → rule-inspect-IONN4MTP.js} +9 -12
  68. package/dist/chunks/{rules-DABNOUNG.js → rules-S2KPV7HY.js} +9 -11
  69. package/dist/chunks/{schema-4RRRUUOO.js → schema-3LX3V2HE.js} +11 -12
  70. package/dist/chunks/{tags-MLX3AHHK.js → tags-CQ4FRIJ4.js} +5 -7
  71. package/dist/chunks/{types-2TPA6J4G.js → types-QKLIFDDP.js} +5 -5
  72. package/dist/chunks/{update-YXH7WWTN.js → update-U7OGHCP5.js} +9 -12
  73. package/dist/commands/build/index.js +26 -31
  74. package/dist/commands/deploy/index.js +57 -75
  75. package/dist/commands/dev/index.js +193 -159
  76. package/dist/commands/env/index.js +70 -47
  77. package/dist/commands/link/index.js +25 -29
  78. package/dist/commands/list/index.js +13 -17
  79. package/dist/commands-bulk.js +637 -620
  80. package/dist/index.js +23 -25
  81. package/dist/version.mjs +1 -1
  82. package/package.json +20 -20
  83. package/dist/chunks/chunk-DWU7JOO6.js +0 -158
  84. package/dist/chunks/chunk-IC4YEIGW.js +0 -101
  85. package/dist/chunks/chunk-IMUF5MGV.js +0 -81
  86. package/dist/chunks/chunk-SGL3NMOP.js +0 -86
@@ -9,7 +9,7 @@ import {
9
9
  } from "../../chunks/chunk-2HSQ7YUK.js";
10
10
  import {
11
11
  getUpdateCommand
12
- } from "../../chunks/chunk-52V5NDUN.js";
12
+ } from "../../chunks/chunk-DZHRFBKE.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-IDMKFYEA.js";
21
+ } from "../../chunks/chunk-OGG6UBXK.js";
22
22
  import {
23
23
  OUTPUT_DIR,
24
24
  getStaticServiceSchedules,
@@ -26,38 +26,33 @@ import {
26
26
  require_mime_types,
27
27
  require_npa,
28
28
  staticFiles
29
- } from "../../chunks/chunk-MYD7N6MH.js";
29
+ } from "../../chunks/chunk-ERPZJ4SX.js";
30
30
  import "../../chunks/chunk-IB5L4LKZ.js";
31
31
  import {
32
32
  pickOverrides
33
- } from "../../chunks/chunk-JF7LPEBD.js";
33
+ } from "../../chunks/chunk-A6LE5VAN.js";
34
34
  import "../../chunks/chunk-R6IGDGX3.js";
35
35
  import {
36
36
  displayDetectedServices,
37
37
  readConfig,
38
38
  setupAndLink
39
- } from "../../chunks/chunk-PASZMRTZ.js";
39
+ } from "../../chunks/chunk-PRO4S2KV.js";
40
40
  import {
41
41
  getLocalPathConfig
42
- } from "../../chunks/chunk-UESEGACQ.js";
43
- import {
44
- printProjectNotFoundError
45
- } from "../../chunks/chunk-IMUF5MGV.js";
46
- import "../../chunks/chunk-IC4YEIGW.js";
42
+ } from "../../chunks/chunk-ZDCS54ZZ.js";
47
43
  import {
48
44
  help
49
- } from "../../chunks/chunk-QY63UKTP.js";
50
- import "../../chunks/chunk-QEEGXNFK.js";
51
- import {
52
- detectExplicitScope
53
- } from "../../chunks/chunk-DWU7JOO6.js";
45
+ } from "../../chunks/chunk-DMSLNAVH.js";
46
+ import "../../chunks/chunk-NZRWTCRM.js";
54
47
  import {
55
48
  VERCEL_DIR,
56
49
  VERCEL_OIDC_TOKEN,
50
+ detectExplicitScope,
57
51
  findRepoRoot,
58
52
  getLinkedProject,
59
53
  getVercelDirectory,
60
54
  param,
55
+ printProjectNotFoundError,
61
56
  pullEnvRecords,
62
57
  readJSONFile,
63
58
  require_brace_expansion,
@@ -75,19 +70,18 @@ import {
75
70
  resolveProjectCwd,
76
71
  tryDetectServices,
77
72
  validateConfig
78
- } from "../../chunks/chunk-DDEPCAGE.js";
73
+ } from "../../chunks/chunk-2MXGTALG.js";
79
74
  import {
80
75
  buildCommandWithYes,
81
76
  outputActionRequired
82
- } from "../../chunks/chunk-CB3I3QIT.js";
77
+ } from "../../chunks/chunk-UDWRZXIT.js";
83
78
  import {
84
79
  TelemetryClient
85
80
  } from "../../chunks/chunk-ECCWJHC6.js";
86
81
  import {
87
- getFlagsSpecification,
88
82
  parseArguments,
89
83
  printError
90
- } from "../../chunks/chunk-EHTPDXTS.js";
84
+ } from "../../chunks/chunk-SZXT3PDQ.js";
91
85
  import {
92
86
  CantParseJSONFile,
93
87
  LambdaSizeExceededError,
@@ -96,10 +90,11 @@ import {
96
90
  cmd,
97
91
  getCommandName,
98
92
  getCommandNamePlain,
93
+ getFlagsSpecification,
99
94
  getTitleName,
100
95
  packageName,
101
96
  require_bytes
102
- } from "../../chunks/chunk-P6AK7SVK.js";
97
+ } from "../../chunks/chunk-KSSNLCL4.js";
103
98
  import "../../chunks/chunk-P4QNYOFB.js";
104
99
  import {
105
100
  Headers,
@@ -7115,13 +7110,13 @@ var require_urlparser = __commonJS({
7115
7110
  this.pathname = prePath === "" ? "/" : prePath;
7116
7111
  return;
7117
7112
  }
7118
- var path6;
7113
+ var path7;
7119
7114
  if (escape2) {
7120
- path6 = this._getComponentEscaped(str, pathStart, pathEnd, false);
7115
+ path7 = this._getComponentEscaped(str, pathStart, pathEnd, false);
7121
7116
  } else {
7122
- path6 = str.slice(pathStart, pathEnd + 1);
7117
+ path7 = str.slice(pathStart, pathEnd + 1);
7123
7118
  }
7124
- this.pathname = prePath === "" ? this._prependSlash ? "/" + path6 : path6 : prePath + path6;
7119
+ this.pathname = prePath === "" ? this._prependSlash ? "/" + path7 : path7 : prePath + path7;
7125
7120
  };
7126
7121
  Url.prototype._parseQuery = function Url$_parseQuery(str, start, end, disableAutoEscapeChars) {
7127
7122
  var queryStart = start;
@@ -7424,8 +7419,8 @@ var require_urlparser = __commonJS({
7424
7419
  // ../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/glob-slash.js
7425
7420
  var require_glob_slash = __commonJS({
7426
7421
  "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/glob-slash.js"(exports2, module2) {
7427
- var path6 = __require("path");
7428
- var normalize = (value) => path6.posix.normalize(path6.posix.join("/", value));
7422
+ var path7 = __require("path");
7423
+ var normalize = (value) => path7.posix.normalize(path7.posix.join("/", value));
7429
7424
  module2.exports = (value) => value.charAt(0) === "!" ? `!${normalize(value.substr(1))}` : normalize(value);
7430
7425
  module2.exports.normalize = normalize;
7431
7426
  }
@@ -7436,9 +7431,9 @@ var require_minimatch2 = __commonJS({
7436
7431
  "../../node_modules/.pnpm/minimatch@3.0.4/node_modules/minimatch/minimatch.js"(exports2, module2) {
7437
7432
  module2.exports = minimatch3;
7438
7433
  minimatch3.Minimatch = Minimatch;
7439
- var path6 = { sep: "/" };
7434
+ var path7 = { sep: "/" };
7440
7435
  try {
7441
- path6 = __require("path");
7436
+ path7 = __require("path");
7442
7437
  } catch (er) {
7443
7438
  }
7444
7439
  var GLOBSTAR = minimatch3.GLOBSTAR = Minimatch.GLOBSTAR = {};
@@ -7521,8 +7516,8 @@ var require_minimatch2 = __commonJS({
7521
7516
  if (!options)
7522
7517
  options = {};
7523
7518
  pattern = pattern.trim();
7524
- if (path6.sep !== "/") {
7525
- pattern = pattern.split(path6.sep).join("/");
7519
+ if (path7.sep !== "/") {
7520
+ pattern = pattern.split(path7.sep).join("/");
7526
7521
  }
7527
7522
  this.options = options;
7528
7523
  this.set = [];
@@ -7889,8 +7884,8 @@ var require_minimatch2 = __commonJS({
7889
7884
  if (f === "/" && partial)
7890
7885
  return true;
7891
7886
  var options = this.options;
7892
- if (path6.sep !== "/") {
7893
- f = f.split(path6.sep).join("/");
7887
+ if (path7.sep !== "/") {
7888
+ f = f.split(path7.sep).join("/");
7894
7889
  }
7895
7890
  f = f.split(slashSplit);
7896
7891
  this.debug(this.pattern, "split", f);
@@ -8027,7 +8022,7 @@ var require_path_to_regexp = __commonJS({
8027
8022
  var tokens = [];
8028
8023
  var key = 0;
8029
8024
  var index = 0;
8030
- var path6 = "";
8025
+ var path7 = "";
8031
8026
  var defaultDelimiter = options && options.delimiter || DEFAULT_DELIMITER;
8032
8027
  var delimiters = options && options.delimiters || DEFAULT_DELIMITERS;
8033
8028
  var pathEscaped = false;
@@ -8036,10 +8031,10 @@ var require_path_to_regexp = __commonJS({
8036
8031
  var m = res[0];
8037
8032
  var escaped = res[1];
8038
8033
  var offset = res.index;
8039
- path6 += str.slice(index, offset);
8034
+ path7 += str.slice(index, offset);
8040
8035
  index = offset + m.length;
8041
8036
  if (escaped) {
8042
- path6 += escaped[1];
8037
+ path7 += escaped[1];
8043
8038
  pathEscaped = true;
8044
8039
  continue;
8045
8040
  }
@@ -8049,16 +8044,16 @@ var require_path_to_regexp = __commonJS({
8049
8044
  var capture = res[3];
8050
8045
  var group = res[4];
8051
8046
  var modifier = res[5];
8052
- if (!pathEscaped && path6.length) {
8053
- var k = path6.length - 1;
8054
- if (delimiters.indexOf(path6[k]) > -1) {
8055
- prev = path6[k];
8056
- path6 = path6.slice(0, k);
8047
+ if (!pathEscaped && path7.length) {
8048
+ var k = path7.length - 1;
8049
+ if (delimiters.indexOf(path7[k]) > -1) {
8050
+ prev = path7[k];
8051
+ path7 = path7.slice(0, k);
8057
8052
  }
8058
8053
  }
8059
- if (path6) {
8060
- tokens.push(path6);
8061
- path6 = "";
8054
+ if (path7) {
8055
+ tokens.push(path7);
8056
+ path7 = "";
8062
8057
  pathEscaped = false;
8063
8058
  }
8064
8059
  var partial = prev !== "" && next !== void 0 && next !== prev;
@@ -8076,8 +8071,8 @@ var require_path_to_regexp = __commonJS({
8076
8071
  pattern: pattern ? escapeGroup(pattern) : "[^" + escapeString(delimiter2) + "]+?"
8077
8072
  });
8078
8073
  }
8079
- if (path6 || index < str.length) {
8080
- tokens.push(path6 + str.substr(index));
8074
+ if (path7 || index < str.length) {
8075
+ tokens.push(path7 + str.substr(index));
8081
8076
  }
8082
8077
  return tokens;
8083
8078
  }
@@ -8092,12 +8087,12 @@ var require_path_to_regexp = __commonJS({
8092
8087
  }
8093
8088
  }
8094
8089
  return function(data, options) {
8095
- var path6 = "";
8090
+ var path7 = "";
8096
8091
  var encode = options && options.encode || encodeURIComponent;
8097
8092
  for (var i2 = 0; i2 < tokens.length; i2++) {
8098
8093
  var token = tokens[i2];
8099
8094
  if (typeof token === "string") {
8100
- path6 += token;
8095
+ path7 += token;
8101
8096
  continue;
8102
8097
  }
8103
8098
  var value = data ? data[token.name] : void 0;
@@ -8116,7 +8111,7 @@ var require_path_to_regexp = __commonJS({
8116
8111
  if (!matches[i2].test(segment)) {
8117
8112
  throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '"');
8118
8113
  }
8119
- path6 += (j === 0 ? token.prefix : token.delimiter) + segment;
8114
+ path7 += (j === 0 ? token.prefix : token.delimiter) + segment;
8120
8115
  }
8121
8116
  continue;
8122
8117
  }
@@ -8125,17 +8120,17 @@ var require_path_to_regexp = __commonJS({
8125
8120
  if (!matches[i2].test(segment)) {
8126
8121
  throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but got "' + segment + '"');
8127
8122
  }
8128
- path6 += token.prefix + segment;
8123
+ path7 += token.prefix + segment;
8129
8124
  continue;
8130
8125
  }
8131
8126
  if (token.optional) {
8132
8127
  if (token.partial)
8133
- path6 += token.prefix;
8128
+ path7 += token.prefix;
8134
8129
  continue;
8135
8130
  }
8136
8131
  throw new TypeError('Expected "' + token.name + '" to be ' + (token.repeat ? "an array" : "a string"));
8137
8132
  }
8138
- return path6;
8133
+ return path7;
8139
8134
  };
8140
8135
  }
8141
8136
  function escapeString(str) {
@@ -8147,10 +8142,10 @@ var require_path_to_regexp = __commonJS({
8147
8142
  function flags(options) {
8148
8143
  return options && options.sensitive ? "" : "i";
8149
8144
  }
8150
- function regexpToRegexp(path6, keys) {
8145
+ function regexpToRegexp(path7, keys) {
8151
8146
  if (!keys)
8152
- return path6;
8153
- var groups = path6.source.match(/\((?!\?)/g);
8147
+ return path7;
8148
+ var groups = path7.source.match(/\((?!\?)/g);
8154
8149
  if (groups) {
8155
8150
  for (var i = 0; i < groups.length; i++) {
8156
8151
  keys.push({
@@ -8164,17 +8159,17 @@ var require_path_to_regexp = __commonJS({
8164
8159
  });
8165
8160
  }
8166
8161
  }
8167
- return path6;
8162
+ return path7;
8168
8163
  }
8169
- function arrayToRegexp(path6, keys, options) {
8164
+ function arrayToRegexp(path7, keys, options) {
8170
8165
  var parts = [];
8171
- for (var i = 0; i < path6.length; i++) {
8172
- parts.push(pathToRegexp(path6[i], keys, options).source);
8166
+ for (var i = 0; i < path7.length; i++) {
8167
+ parts.push(pathToRegexp(path7[i], keys, options).source);
8173
8168
  }
8174
8169
  return new RegExp("(?:" + parts.join("|") + ")", flags(options));
8175
8170
  }
8176
- function stringToRegexp(path6, keys, options) {
8177
- return tokensToRegExp(parse2(path6, options), keys, options);
8171
+ function stringToRegexp(path7, keys, options) {
8172
+ return tokensToRegExp(parse2(path7, options), keys, options);
8178
8173
  }
8179
8174
  function tokensToRegExp(tokens, keys, options) {
8180
8175
  options = options || {};
@@ -8218,21 +8213,21 @@ var require_path_to_regexp = __commonJS({
8218
8213
  }
8219
8214
  return new RegExp("^" + route, flags(options));
8220
8215
  }
8221
- function pathToRegexp(path6, keys, options) {
8222
- if (path6 instanceof RegExp) {
8223
- return regexpToRegexp(path6, keys);
8216
+ function pathToRegexp(path7, keys, options) {
8217
+ if (path7 instanceof RegExp) {
8218
+ return regexpToRegexp(path7, keys);
8224
8219
  }
8225
- if (Array.isArray(path6)) {
8220
+ if (Array.isArray(path7)) {
8226
8221
  return arrayToRegexp(
8227
8222
  /** @type {!Array} */
8228
- path6,
8223
+ path7,
8229
8224
  keys,
8230
8225
  options
8231
8226
  );
8232
8227
  }
8233
8228
  return stringToRegexp(
8234
8229
  /** @type {string} */
8235
- path6,
8230
+ path7,
8236
8231
  keys,
8237
8232
  options
8238
8233
  );
@@ -15397,11 +15392,11 @@ var require_mime_types2 = __commonJS({
15397
15392
  }
15398
15393
  return exts[0];
15399
15394
  }
15400
- function lookup(path6) {
15401
- if (!path6 || typeof path6 !== "string") {
15395
+ function lookup(path7) {
15396
+ if (!path7 || typeof path7 !== "string") {
15402
15397
  return false;
15403
15398
  }
15404
- var extension2 = extname2("x." + path6).toLowerCase().substr(1);
15399
+ var extension2 = extname2("x." + path7).toLowerCase().substr(1);
15405
15400
  if (!extension2) {
15406
15401
  return false;
15407
15402
  }
@@ -15599,7 +15594,7 @@ var require_content_disposition = __commonJS({
15599
15594
  var require_path_is_inside = __commonJS({
15600
15595
  "../../node_modules/.pnpm/path-is-inside@1.0.2/node_modules/path-is-inside/lib/path-is-inside.js"(exports2, module2) {
15601
15596
  "use strict";
15602
- var path6 = __require("path");
15597
+ var path7 = __require("path");
15603
15598
  module2.exports = function(thePath, potentialParent) {
15604
15599
  thePath = stripTrailingSep(thePath);
15605
15600
  potentialParent = stripTrailingSep(potentialParent);
@@ -15607,10 +15602,10 @@ var require_path_is_inside = __commonJS({
15607
15602
  thePath = thePath.toLowerCase();
15608
15603
  potentialParent = potentialParent.toLowerCase();
15609
15604
  }
15610
- return thePath.lastIndexOf(potentialParent, 0) === 0 && (thePath[potentialParent.length] === path6.sep || thePath[potentialParent.length] === void 0);
15605
+ return thePath.lastIndexOf(potentialParent, 0) === 0 && (thePath[potentialParent.length] === path7.sep || thePath[potentialParent.length] === void 0);
15611
15606
  };
15612
15607
  function stripTrailingSep(thePath) {
15613
- if (thePath[thePath.length - 1] === path6.sep) {
15608
+ if (thePath[thePath.length - 1] === path7.sep) {
15614
15609
  return thePath.slice(0, -1);
15615
15610
  }
15616
15611
  return thePath;
@@ -15786,7 +15781,7 @@ var require_error = __commonJS({
15786
15781
  var require_src2 = __commonJS({
15787
15782
  "../../node_modules/.pnpm/serve-handler@6.1.1/node_modules/serve-handler/src/index.js"(exports2, module2) {
15788
15783
  var { promisify } = __require("util");
15789
- var path6 = __require("path");
15784
+ var path7 = __require("path");
15790
15785
  var { createHash } = __require("crypto");
15791
15786
  var { realpath, lstat, createReadStream, readdir } = __require("fs");
15792
15787
  var url4 = require_urlparser();
@@ -15803,7 +15798,7 @@ var require_src2 = __commonJS({
15803
15798
  var etags = /* @__PURE__ */ new Map();
15804
15799
  var calculateSha = (handlers, absolutePath) => new Promise((resolve2, reject) => {
15805
15800
  const hash = createHash("sha1");
15806
- hash.update(path6.extname(absolutePath));
15801
+ hash.update(path7.extname(absolutePath));
15807
15802
  hash.update("-");
15808
15803
  const rs = handlers.createReadStream(absolutePath);
15809
15804
  rs.on("error", reject);
@@ -15816,7 +15811,7 @@ var require_src2 = __commonJS({
15816
15811
  var sourceMatches = (source, requestPath, allowSegments) => {
15817
15812
  const keys = [];
15818
15813
  const slashed = slasher(source);
15819
- const resolvedPath = path6.posix.resolve(requestPath);
15814
+ const resolvedPath = path7.posix.resolve(requestPath);
15820
15815
  let results = null;
15821
15816
  if (allowSegments) {
15822
15817
  const normalized = slashed.replace("*", "(.*)");
@@ -15880,7 +15875,7 @@ var require_src2 = __commonJS({
15880
15875
  cleanedUrl = true;
15881
15876
  }
15882
15877
  if (slashing) {
15883
- const { ext, name } = path6.parse(decodedPath);
15878
+ const { ext, name } = path7.parse(decodedPath);
15884
15879
  const isTrailed = decodedPath.endsWith("/");
15885
15880
  const isDotfile = name.startsWith(".");
15886
15881
  let target = null;
@@ -15926,8 +15921,8 @@ var require_src2 = __commonJS({
15926
15921
  var getHeaders = async (handlers, config, current, absolutePath, stats) => {
15927
15922
  const { headers: customHeaders = [], etag = false } = config;
15928
15923
  const related = {};
15929
- const { base } = path6.parse(absolutePath);
15930
- const relativePath = path6.relative(current, absolutePath);
15924
+ const { base } = path7.parse(absolutePath);
15925
+ const relativePath = path7.relative(current, absolutePath);
15931
15926
  if (customHeaders.length > 0) {
15932
15927
  for (let index = 0; index < customHeaders.length; index++) {
15933
15928
  const { source, headers: headers2 } = customHeaders[index];
@@ -15987,15 +15982,15 @@ var require_src2 = __commonJS({
15987
15982
  return true;
15988
15983
  };
15989
15984
  var getPossiblePaths = (relativePath, extension) => [
15990
- path6.join(relativePath, `index${extension}`),
15985
+ path7.join(relativePath, `index${extension}`),
15991
15986
  relativePath.endsWith("/") ? relativePath.replace(/\/$/g, extension) : relativePath + extension
15992
- ].filter((item) => path6.basename(item) !== extension);
15987
+ ].filter((item) => path7.basename(item) !== extension);
15993
15988
  var findRelated = async (current, relativePath, rewrittenPath, originalStat) => {
15994
15989
  const possible = rewrittenPath ? [rewrittenPath] : getPossiblePaths(relativePath, ".html");
15995
15990
  let stats = null;
15996
15991
  for (let index = 0; index < possible.length; index++) {
15997
15992
  const related = possible[index];
15998
- const absolutePath = path6.join(current, related);
15993
+ const absolutePath = path7.join(current, related);
15999
15994
  try {
16000
15995
  stats = await originalStat(absolutePath);
16001
15996
  } catch (err) {
@@ -16040,15 +16035,15 @@ var require_src2 = __commonJS({
16040
16035
  const canRenderSingle = renderSingle && files.length === 1;
16041
16036
  for (let index = 0; index < files.length; index++) {
16042
16037
  const file = files[index];
16043
- const filePath = path6.resolve(absolutePath, file);
16044
- const details = path6.parse(filePath);
16038
+ const filePath = path7.resolve(absolutePath, file);
16039
+ const details = path7.parse(filePath);
16045
16040
  let stats = null;
16046
16041
  if (methods.lstat) {
16047
16042
  stats = await handlers.lstat(filePath, true);
16048
16043
  } else {
16049
16044
  stats = await handlers.lstat(filePath);
16050
16045
  }
16051
- details.relative = path6.join(relativePath, details.base);
16046
+ details.relative = path7.join(relativePath, details.base);
16052
16047
  if (stats.isDirectory()) {
16053
16048
  details.base += slashSuffix;
16054
16049
  details.relative += slashSuffix;
@@ -16075,9 +16070,9 @@ var require_src2 = __commonJS({
16075
16070
  delete files[index];
16076
16071
  }
16077
16072
  }
16078
- const toRoot = path6.relative(current, absolutePath);
16079
- const directory = path6.join(path6.basename(current), toRoot, slashSuffix);
16080
- const pathParts = directory.split(path6.sep).filter(Boolean);
16073
+ const toRoot = path7.relative(current, absolutePath);
16074
+ const directory = path7.join(path7.basename(current), toRoot, slashSuffix);
16075
+ const pathParts = directory.split(path7.sep).filter(Boolean);
16081
16076
  files = files.sort((a, b) => {
16082
16077
  const aIsDir = a.type === "directory";
16083
16078
  const bIsDir = b.type === "directory";
@@ -16094,7 +16089,7 @@ var require_src2 = __commonJS({
16094
16089
  }).filter(Boolean);
16095
16090
  if (toRoot.length > 0) {
16096
16091
  const directoryPath = [...pathParts].slice(1);
16097
- const relative3 = path6.join("/", ...directoryPath, "..", slashSuffix);
16092
+ const relative3 = path7.join("/", ...directoryPath, "..", slashSuffix);
16098
16093
  files.unshift({
16099
16094
  type: "directory",
16100
16095
  base: "..",
@@ -16143,7 +16138,7 @@ var require_src2 = __commonJS({
16143
16138
  return;
16144
16139
  }
16145
16140
  let stats = null;
16146
- const errorPage = path6.join(current, `${statusCode}.html`);
16141
+ const errorPage = path7.join(current, `${statusCode}.html`);
16147
16142
  try {
16148
16143
  stats = await handlers.lstat(errorPage);
16149
16144
  } catch (err) {
@@ -16188,7 +16183,7 @@ var require_src2 = __commonJS({
16188
16183
  }, methods);
16189
16184
  module2.exports = async (request, response, config = {}, methods = {}) => {
16190
16185
  const cwd = process.cwd();
16191
- const current = config.public ? path6.resolve(cwd, config.public) : cwd;
16186
+ const current = config.public ? path7.resolve(cwd, config.public) : cwd;
16192
16187
  const handlers = getHandlers(methods);
16193
16188
  let relativePath = null;
16194
16189
  let acceptsJSON = null;
@@ -16204,7 +16199,7 @@ var require_src2 = __commonJS({
16204
16199
  message: "Bad Request"
16205
16200
  });
16206
16201
  }
16207
- let absolutePath = path6.join(current, relativePath);
16202
+ let absolutePath = path7.join(current, relativePath);
16208
16203
  if (!isPathInside(absolutePath, current)) {
16209
16204
  return sendError(absolutePath, response, acceptsJSON, current, handlers, config, {
16210
16205
  statusCode: 400,
@@ -16222,7 +16217,7 @@ var require_src2 = __commonJS({
16222
16217
  return;
16223
16218
  }
16224
16219
  let stats = null;
16225
- if (path6.extname(relativePath) !== "") {
16220
+ if (path7.extname(relativePath) !== "") {
16226
16221
  try {
16227
16222
  stats = await handlers.lstat(absolutePath);
16228
16223
  } catch (err) {
@@ -16752,7 +16747,7 @@ var require_escape_html = __commonJS({
16752
16747
 
16753
16748
  // src/commands/dev/index.ts
16754
16749
  var import_chalk4 = __toESM(require_source(), 1);
16755
- import path5 from "path";
16750
+ import path6 from "path";
16756
16751
 
16757
16752
  // src/commands/dev/dev.ts
16758
16753
  var import_chalk3 = __toESM(require_source(), 1);
@@ -16780,7 +16775,7 @@ var import_get_port2 = __toESM(require_get_port(), 1);
16780
16775
  var import_fast_deep_equal = __toESM(require_fast_deep_equal(), 1);
16781
16776
  import { randomBytes as randomBytes2 } from "crypto";
16782
16777
  import { watch } from "chokidar";
16783
- import path4, { isAbsolute, basename, dirname as dirname2, extname, join as join2 } from "path";
16778
+ import path5, { isAbsolute, basename, dirname as dirname2, extname, join as join2 } from "path";
16784
16779
 
16785
16780
  // src/util/dev/port-utils.ts
16786
16781
  var import_is_port_reachable = __toESM(require_is_port_reachable(), 1);
@@ -17054,18 +17049,18 @@ function applyTransform(data, transform, isHeader) {
17054
17049
  break;
17055
17050
  }
17056
17051
  }
17057
- function isValidRequestPath(path6) {
17058
- if (path6 === "" || path6.length > 2048) {
17052
+ function isValidRequestPath(path7) {
17053
+ if (path7 === "" || path7.length > 2048) {
17059
17054
  return false;
17060
17055
  }
17061
- if (path6[0] !== "/" || path6.startsWith("//")) {
17056
+ if (path7[0] !== "/" || path7.startsWith("//")) {
17062
17057
  return false;
17063
17058
  }
17064
- if (/[?#]/.test(path6)) {
17059
+ if (/[?#]/.test(path7)) {
17065
17060
  return false;
17066
17061
  }
17067
- for (let i = 0; i < path6.length; i++) {
17068
- const code = path6.charCodeAt(i);
17062
+ for (let i = 0; i < path7.length; i++) {
17063
+ const code = path7.charCodeAt(i);
17069
17064
  if (code <= 32 || code === 127) {
17070
17065
  return false;
17071
17066
  }
@@ -17073,13 +17068,13 @@ function isValidRequestPath(path6) {
17073
17068
  return true;
17074
17069
  }
17075
17070
  function getRequestPath(transforms) {
17076
- let path6;
17071
+ let path7;
17077
17072
  for (const transform of transforms) {
17078
17073
  if (transform.type === "request.path" && transform.op === "set" && typeof transform.args === "string" && isValidRequestPath(transform.args)) {
17079
- path6 = transform.args;
17074
+ path7 = transform.args;
17080
17075
  }
17081
17076
  }
17082
- return path6;
17077
+ return path7;
17083
17078
  }
17084
17079
  function findMatchingKeys(data, keyPattern) {
17085
17080
  const matched = [];
@@ -17697,18 +17692,18 @@ Please run \`${await getUpdateCommand()}\` to update to the latest CLI.`
17697
17692
  const { output: buildOutput } = result;
17698
17693
  const { cleanUrls } = vercelConfig;
17699
17694
  for (const [originalPath, value] of Object.entries(buildOutput)) {
17700
- let path6 = normalizePath2(originalPath);
17701
- if (cleanUrls && path6.endsWith(".html")) {
17702
- path6 = path6.slice(0, -5);
17695
+ let path7 = normalizePath2(originalPath);
17696
+ if (cleanUrls && path7.endsWith(".html")) {
17697
+ path7 = path7.slice(0, -5);
17703
17698
  if (value.type === "FileBlob" || value.type === "FileFsRef") {
17704
17699
  value.contentType = value.contentType || "text/html; charset=utf-8";
17705
17700
  }
17706
17701
  }
17707
- const extensionless = devServer.getExtensionlessFile(path6);
17702
+ const extensionless = devServer.getExtensionlessFile(path7);
17708
17703
  if (extensionless) {
17709
- path6 = extensionless;
17704
+ path7 = extensionless;
17710
17705
  }
17711
- buildOutput[path6] = value;
17706
+ buildOutput[path7] = value;
17712
17707
  }
17713
17708
  const deserializedOutput = await deserializeBuildOutputs(
17714
17709
  buildOutput
@@ -17739,10 +17734,10 @@ Please run \`${await getUpdateCommand()}\` to update to the latest CLI.`
17739
17734
  }
17740
17735
  await Promise.all(
17741
17736
  Object.entries(result.output).map(async (entry) => {
17742
- const path6 = entry[0];
17737
+ const path7 = entry[0];
17743
17738
  const asset = entry[1];
17744
17739
  if (asset.type === "Lambda" && asset.runtime !== "container") {
17745
- const oldAsset = match.buildOutput && match.buildOutput[path6];
17740
+ const oldAsset = match.buildOutput && match.buildOutput[path7];
17746
17741
  if (oldAsset && oldAsset.type === "Lambda" && oldAsset.fn) {
17747
17742
  await oldAsset.fn.destroy();
17748
17743
  }
@@ -17808,7 +17803,7 @@ async function getBuildMatches(vercelConfig, cwd, devServer, fileList) {
17808
17803
  if (buildConfig.config?.framework === "node" && !fileList.includes(src)) {
17809
17804
  const originalSrc = src;
17810
17805
  const existing = fileList.find(
17811
- (path6) => /^(?:src\/)?server\.[cm]?[jt]s$/.test(path6)
17806
+ (path7) => /^(?:src\/)?server\.[cm]?[jt]s$/.test(path7)
17812
17807
  );
17813
17808
  if (existing) {
17814
17809
  src = existing;
@@ -18685,6 +18680,13 @@ var ServicesOrchestrator = class {
18685
18680
  effectiveProcessEnv,
18686
18681
  perServiceEnv
18687
18682
  );
18683
+ if (this.hasQueueServices && service.runtime === "python" && env.VERCEL_HAS_WORKER_SERVICES === void 0) {
18684
+ env.VERCEL_HAS_WORKER_SERVICES = "1";
18685
+ }
18686
+ if (this.hasQueueServices) {
18687
+ env.VERCEL_QUEUE_BASE_URL = `${this.proxyOrigin}/_svc/_queues`;
18688
+ env.VERCEL_QUEUE_TOKEN = "vc-dev-token";
18689
+ }
18688
18690
  const root = service.root || ".";
18689
18691
  return {
18690
18692
  rootPath: path3.join(this.cwd, root),
@@ -19391,6 +19393,7 @@ var QueueBroker = class {
19391
19393
  };
19392
19394
 
19393
19395
  // src/util/dev/dev-sidecars.ts
19396
+ import path4 from "path";
19394
19397
  function toOrchestratorService(sidecar) {
19395
19398
  const { type: _type, ...subscriber } = sidecar;
19396
19399
  return {
@@ -19402,17 +19405,34 @@ function toOrchestratorService(sidecar) {
19402
19405
  }
19403
19406
  async function collectBuilderDevSidecars({
19404
19407
  builds,
19405
- workPath
19408
+ workPath,
19409
+ services = []
19406
19410
  }) {
19407
19411
  const builderSpecs = new Set(builds.map((build) => build.use));
19408
19412
  const buildersWithPkgs = await importBuilders(builderSpecs, workPath);
19413
+ const servicesByBuilder = new Map(
19414
+ services.map((service) => [service.builder, service])
19415
+ );
19409
19416
  const nestedSidecars = await Promise.all(
19410
- builds.map((build) => {
19417
+ builds.map(async (build) => {
19411
19418
  const builder = buildersWithPkgs.get(build.use)?.builder;
19412
19419
  if (!builder) {
19413
19420
  throw new Error(`Failed to load Builder "${build.use}"`);
19414
19421
  }
19415
- return builder.getDevSidecars?.({ workPath, build }) ?? [];
19422
+ const service = servicesByBuilder.get(build);
19423
+ const serviceRoot = service?.root ?? ".";
19424
+ const sidecars2 = await builder.getDevSidecars?.({
19425
+ workPath: path4.join(workPath, serviceRoot),
19426
+ build,
19427
+ ...service ? { service } : {}
19428
+ }) ?? [];
19429
+ return service ? sidecars2.map((sidecar) => ({
19430
+ ...sidecar,
19431
+ // Process names must be project-wide unique. Keep the consumer
19432
+ // name unchanged so local delivery matches the deployment build.
19433
+ name: `${service.name}-${sidecar.name}`,
19434
+ workspace: serviceRoot
19435
+ })) : sidecars2;
19416
19436
  })
19417
19437
  );
19418
19438
  const sidecars = nestedSidecars.flat();
@@ -19541,11 +19561,15 @@ function replaceLocalhost(address) {
19541
19561
  }
19542
19562
 
19543
19563
  // src/util/dev/server.ts
19544
- var frontendRuntimeSet = new Set(
19545
- import_frameworks2.frameworkList.map((f) => f.useRuntime?.use || "@vercel/static-build")
19546
- );
19547
19564
  var DEV_SERVER_PORT_BIND_TIMEOUT = (0, import_ms4.default)("5m");
19548
19565
  var DEV_QUEUES_DEFAULT_VISIBILITY_TIMEOUT_SECONDS = 60;
19566
+ var frameworkRuntimeSet = new Set(
19567
+ import_frameworks2.frameworkList.map((f) => f.useRuntime?.use || "@vercel/static-build")
19568
+ );
19569
+ function isApiDirBuild(build) {
19570
+ const src = build.src?.replace(/^\.\//, "");
19571
+ return typeof src === "string" && src.startsWith("api/");
19572
+ }
19549
19573
  function sortBuilders(buildA, buildB) {
19550
19574
  if (buildA && buildA.use && (0, import_fs_detectors3.isOfficialRuntime)("static-build", buildA.use)) {
19551
19575
  return 1;
@@ -19566,13 +19590,20 @@ var DevServer = class {
19566
19590
  constructor(cwd, options) {
19567
19591
  this.initialDevCommandStarted = false;
19568
19592
  this.responseTransformsByReq = /* @__PURE__ */ new WeakMap();
19593
+ this.shouldBuildInDev = (build) => {
19594
+ if (!this.shouldUseServicesOrchestrator() && isApiDirBuild(build)) {
19595
+ return true;
19596
+ }
19597
+ const { name } = (0, import_npm_package_arg.default)(build.use);
19598
+ return !frameworkRuntimeSet.has(name || "");
19599
+ };
19569
19600
  this.clearVercelConfigPromise = () => {
19570
19601
  this.getVercelConfigPromise = null;
19571
19602
  };
19572
- this.getExtensionlessFile = (path6) => {
19573
- const ext = extname(path6);
19574
- if (this.apiDir && path6.startsWith(this.apiDir + "/") && this.apiExtensions.has(ext)) {
19575
- return path6.slice(0, -ext.length);
19603
+ this.getExtensionlessFile = (path7) => {
19604
+ const ext = extname(path7);
19605
+ if (this.apiDir && path7.startsWith(this.apiDir + "/") && this.apiExtensions.has(ext)) {
19606
+ return path7.slice(0, -ext.length);
19576
19607
  }
19577
19608
  return null;
19578
19609
  };
@@ -20434,12 +20465,12 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20434
20465
  search: origUrl.search
20435
20466
  });
20436
20467
  applyRequestTransforms(req, requestTransforms);
20437
- const path6 = req.url || "/";
20468
+ const path7 = req.url || "/";
20438
20469
  const body = await (0, import_raw_body.default)(req);
20439
20470
  const payload = {
20440
20471
  method: req.method || "GET",
20441
20472
  host: req.headers.host,
20442
- path: path6,
20473
+ path: path7,
20443
20474
  headers: {
20444
20475
  ...req.headers,
20445
20476
  ...this.getProxyHeaders(req, requestId, true)
@@ -20447,7 +20478,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20447
20478
  encoding: "base64",
20448
20479
  body: body.toString("base64")
20449
20480
  };
20450
- debug(`Invoking lambda: "${assetKey}" with ${path6}`);
20481
+ debug(`Invoking lambda: "${assetKey}" with ${path7}`);
20451
20482
  let result;
20452
20483
  try {
20453
20484
  result = await asset.fn({
@@ -20540,7 +20571,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20540
20571
  this.watchAggregationId = null;
20541
20572
  this.watchAggregationEvents = [];
20542
20573
  this.watchAggregationTimeout = 500;
20543
- this.filter = (path6) => Boolean(path6);
20574
+ this.filter = (path7) => Boolean(path7);
20544
20575
  this.podId = Math.random().toString(32).slice(-5);
20545
20576
  this.shutdownCallbacks = /* @__PURE__ */ new Map();
20546
20577
  }
@@ -20620,8 +20651,8 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20620
20651
  await this.stop(code);
20621
20652
  process.exit(code);
20622
20653
  }
20623
- enqueueFsEvent(type, path6) {
20624
- this.watchAggregationEvents.push({ type, path: path6 });
20654
+ enqueueFsEvent(type, path7) {
20655
+ this.watchAggregationEvents.push({ type, path: path7 });
20625
20656
  if (this.watchAggregationId === null) {
20626
20657
  this.watchAggregationId = setTimeout(() => {
20627
20658
  const events = this.watchAggregationEvents.slice();
@@ -20878,7 +20909,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20878
20909
  return void 0;
20879
20910
  }
20880
20911
  async _getVercelConfig() {
20881
- const { compileVercelConfig } = await import("../../chunks/compile-vercel-config-4NKPN3EG.js");
20912
+ const { compileVercelConfig } = await import("../../chunks/compile-vercel-config-RPPL7W56.js");
20882
20913
  await compileVercelConfig(this.cwd);
20883
20914
  const configPath = getLocalPathConfig(this.cwd);
20884
20915
  const [
@@ -20901,6 +20932,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20901
20932
  await this.exit();
20902
20933
  }
20903
20934
  vercelConfig.routes = maybeRoutes || [];
20935
+ const hasServices = (this.services?.length ?? 0) > 0;
20904
20936
  const hasResolvedServices = !!this.services && this.services.length > 0;
20905
20937
  if (!vercelConfig.experimentalServices && !hasResolvedServices && (!vercelConfig.builds || vercelConfig.builds.length === 0)) {
20906
20938
  const featHandleMiss = true;
@@ -20969,14 +21001,16 @@ Please ensure that ${cmd(err.path)} is properly installed`;
20969
21001
  vercelConfig.routes = routes;
20970
21002
  }
20971
21003
  if (this.sidecars === void 0) {
20972
- this.sidecars = this.shouldUseServicesOrchestrator() ? [] : await collectBuilderDevSidecars({
20973
- builds: vercelConfig.builds ?? [],
20974
- workPath: this.cwd
21004
+ const services = (this.services ?? []).filter(import_fs_detectors3.isExperimentalServiceV2);
21005
+ this.sidecars = await collectBuilderDevSidecars({
21006
+ builds: this.shouldUseServicesOrchestrator() ? services.map((service) => service.builder) : vercelConfig.builds ?? [],
21007
+ workPath: this.cwd,
21008
+ services
20975
21009
  });
20976
21010
  }
20977
21011
  if (Array.isArray(vercelConfig.builds)) {
20978
- if (this.devCommand || this.services && this.services.length > 0) {
20979
- vercelConfig.builds = vercelConfig.builds.filter(filterFrontendBuilds);
21012
+ if (this.devCommand || hasServices) {
21013
+ vercelConfig.builds = vercelConfig.builds.filter(this.shouldBuildInDev);
20980
21014
  }
20981
21015
  vercelConfig.builds.sort(sortBuilders);
20982
21016
  }
@@ -21046,7 +21080,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21046
21080
  async readJsonFile(filePath) {
21047
21081
  let rel, abs;
21048
21082
  if (isAbsolute(filePath)) {
21049
- rel = path4.relative(this.cwd, filePath);
21083
+ rel = path5.relative(this.cwd, filePath);
21050
21084
  abs = filePath;
21051
21085
  } else {
21052
21086
  rel = filePath;
@@ -21193,8 +21227,12 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21193
21227
  });
21194
21228
  };
21195
21229
  if (this.shouldUseServicesOrchestrator()) {
21230
+ const orchestratorServices = [
21231
+ ...this.services || [],
21232
+ ...(this.sidecars || []).map(toOrchestratorService)
21233
+ ];
21196
21234
  this.orchestrator = new ServicesOrchestrator({
21197
- services: this.services || [],
21235
+ services: orchestratorServices,
21198
21236
  cwd: this.cwd,
21199
21237
  repoRoot: this.repoRoot,
21200
21238
  env: this.envConfigs.allEnv,
@@ -21203,7 +21241,7 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21203
21241
  });
21204
21242
  devCommandPromise = this.orchestrator.startAll();
21205
21243
  this.devProcessOrigin = void 0;
21206
- const queueServices = (this.services || []).filter(import_fs_detectors3.isExperimentalService).filter(isQueueBackedService3);
21244
+ const queueServices = orchestratorServices.filter(import_fs_detectors3.isExperimentalService).filter(isQueueBackedService3);
21207
21245
  if (queueServices.length > 0) {
21208
21246
  this.queueBroker = new QueueBroker(
21209
21247
  queueServices,
@@ -21234,10 +21272,10 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21234
21272
  const files = await staticFiles(this.cwd, {});
21235
21273
  this.files = {};
21236
21274
  for (const fsPath of files) {
21237
- const path6 = relative2(this.cwd, fsPath);
21275
+ const path7 = relative2(this.cwd, fsPath);
21238
21276
  const { mode } = await import_fs_extra.default.stat(fsPath);
21239
- this.files[path6] = new FileFsRef2({ mode, fsPath });
21240
- const extensionless = this.getExtensionlessFile(path6);
21277
+ this.files[path7] = new FileFsRef2({ mode, fsPath });
21278
+ const extensionless = this.getExtensionlessFile(path7);
21241
21279
  if (extensionless) {
21242
21280
  this.files[extensionless] = new FileFsRef2({ mode, fsPath });
21243
21281
  }
@@ -21259,19 +21297,19 @@ Please ensure that ${cmd(err.path)} is properly installed`;
21259
21297
  }
21260
21298
  await import_fs_extra.default.mkdirp(this.devCacheDir);
21261
21299
  this.watcher = watch(this.cwd, {
21262
- ignored: (path6) => !this.filter(path6),
21300
+ ignored: (path7) => !this.filter(path7),
21263
21301
  ignoreInitial: true,
21264
21302
  usePolling: false,
21265
21303
  persistent: true
21266
21304
  });
21267
- this.watcher.on("add", (path6) => {
21268
- this.enqueueFsEvent("add", path6);
21305
+ this.watcher.on("add", (path7) => {
21306
+ this.enqueueFsEvent("add", path7);
21269
21307
  });
21270
- this.watcher.on("change", (path6) => {
21271
- this.enqueueFsEvent("change", path6);
21308
+ this.watcher.on("change", (path7) => {
21309
+ this.enqueueFsEvent("change", path7);
21272
21310
  });
21273
- this.watcher.on("unlink", (path6) => {
21274
- this.enqueueFsEvent("unlink", path6);
21311
+ this.watcher.on("unlink", (path7) => {
21312
+ this.enqueueFsEvent("unlink", path7);
21275
21313
  });
21276
21314
  this.watcher.on("error", (err) => {
21277
21315
  output_manager_default.error(`Watcher error: ${err}`);
@@ -21845,8 +21883,8 @@ ${error_code}
21845
21883
  }
21846
21884
  );
21847
21885
  const nodeBinPaths = getNodeBinPaths2({ base: this.repoRoot, start: cwd });
21848
- const nodeBinPath = nodeBinPaths.join(path4.delimiter);
21849
- env.PATH = `${nodeBinPath}${path4.delimiter}${env.PATH}`;
21886
+ const nodeBinPath = nodeBinPaths.join(path5.delimiter);
21887
+ env.PATH = `${nodeBinPath}${path5.delimiter}${env.PATH}`;
21850
21888
  const command = devCommand2.replace(/\$PORT/g, `${port}`).replace(/%PORT%/g, `${port}`);
21851
21889
  injectNextDevWebSocketShimIfNeeded(env, command, this.projectSettings);
21852
21890
  output_manager_default.debug(
@@ -22045,16 +22083,16 @@ function findAsset(match, requestPath, vercelConfig) {
22045
22083
  return { asset, assetKey };
22046
22084
  }
22047
22085
  }
22048
- function dirnameWithoutDot(path6) {
22049
- let dir = dirname2(path6);
22086
+ function dirnameWithoutDot(path7) {
22087
+ let dir = dirname2(path7);
22050
22088
  if (dir === ".") {
22051
22089
  dir = "";
22052
22090
  }
22053
22091
  return dir;
22054
22092
  }
22055
- function isIndex(path6) {
22056
- const ext = extname(path6);
22057
- const name = basename(path6, ext);
22093
+ function isIndex(path7) {
22094
+ const ext = extname(path7);
22095
+ const name = basename(path7, ext);
22058
22096
  return name === "index";
22059
22097
  }
22060
22098
  function minimatches(files, pattern) {
@@ -22075,10 +22113,6 @@ function needsBlockingBuild(buildMatch) {
22075
22113
  const { builder } = buildMatch.builderWithPkg;
22076
22114
  return typeof builder.shouldServe !== "function";
22077
22115
  }
22078
- function filterFrontendBuilds(build) {
22079
- const { name } = (0, import_npm_package_arg.default)(build.use);
22080
- return !frontendRuntimeSet.has(name || "");
22081
- }
22082
22116
  function hasNewRoutingProperties(vercelConfig) {
22083
22117
  return typeof vercelConfig.cleanUrls !== void 0 || typeof vercelConfig.headers !== void 0 || typeof vercelConfig.redirects !== void 0 || typeof vercelConfig.rewrites !== void 0 || typeof vercelConfig.trailingSlash !== void 0;
22084
22118
  }
@@ -22628,7 +22662,7 @@ async function main(client) {
22628
22662
  }
22629
22663
  const hasBuilds = vercelConfig && "builds" in vercelConfig && vercelConfig.builds && vercelConfig.builds.length > 0;
22630
22664
  if (!vercelConfig || !hasBuilds) {
22631
- const pkg = await readJSONFile(path5.join(dir, "package.json"));
22665
+ const pkg = await readJSONFile(path6.join(dir, "package.json"));
22632
22666
  if (pkg instanceof CantParseJSONFile) {
22633
22667
  output_manager_default.error(pkg.message);
22634
22668
  return 1;