@vercel/static-build 2.9.37 → 2.9.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +113 -48
  2. package/package.json +7 -7
package/dist/index.js CHANGED
@@ -9345,6 +9345,40 @@ var require_frameworks = __commonJS({
9345
9345
  getOutputDirName: async () => ".output",
9346
9346
  experimental: true
9347
9347
  },
9348
+ {
9349
+ name: "Eve",
9350
+ slug: "eve",
9351
+ logo: "https://api-frameworks.vercel.sh/framework-logos/eve.svg",
9352
+ darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/eve-dark.svg",
9353
+ tagline: "A filesystem-first framework for durable backend agents on Vercel.",
9354
+ description: "An Eve app: agents authored as a directory of files, compiled and served on Vercel.",
9355
+ detectors: {
9356
+ every: [
9357
+ {
9358
+ path: "package.json",
9359
+ matchContent: '"(dev)?(d|D)ependencies":\\s*{[^}]*"eve":\\s*".+?"[^}]*}'
9360
+ }
9361
+ ]
9362
+ },
9363
+ settings: {
9364
+ installCommand: {
9365
+ placeholder: "`pnpm install`, `yarn install`, or `npm install`"
9366
+ },
9367
+ buildCommand: {
9368
+ value: "eve build",
9369
+ placeholder: "`npm run build` or `eve build`"
9370
+ },
9371
+ devCommand: {
9372
+ value: "eve dev",
9373
+ placeholder: "eve dev"
9374
+ },
9375
+ outputDirectory: {
9376
+ value: ".output"
9377
+ }
9378
+ },
9379
+ getOutputDirName: async () => ".output",
9380
+ experimental: true
9381
+ },
9348
9382
  {
9349
9383
  name: "Sanity",
9350
9384
  slug: "sanity",
@@ -9404,7 +9438,7 @@ var require_frameworks = __commonJS({
9404
9438
  ]
9405
9439
  },
9406
9440
  {
9407
- name: "Sanity (v2)",
9441
+ name: "Sanity (v2 - legacy)",
9408
9442
  slug: "sanity-v2",
9409
9443
  demo: "https://sanity-studio-template.vercel.app",
9410
9444
  logo: "https://api-frameworks.vercel.sh/framework-logos/sanity-v2.svg",
@@ -13621,12 +13655,15 @@ var require_ensure = __commonJS({
13621
13655
  }
13622
13656
  });
13623
13657
 
13624
- // ../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/utils.js
13658
+ // ../../node_modules/.pnpm/jsonfile@6.2.1/node_modules/jsonfile/utils.js
13625
13659
  var require_utils3 = __commonJS({
13626
- "../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/utils.js"(exports, module2) {
13660
+ "../../node_modules/.pnpm/jsonfile@6.2.1/node_modules/jsonfile/utils.js"(exports, module2) {
13627
13661
  function stringify2(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) {
13628
13662
  const EOF = finalEOL ? EOL : "";
13629
13663
  const str = JSON.stringify(obj, replacer, spaces);
13664
+ if (str === void 0) {
13665
+ throw new TypeError(`Converting ${typeof obj} value to JSON is not supported`);
13666
+ }
13630
13667
  return str.replace(/\n/g, EOL) + EOF;
13631
13668
  }
13632
13669
  function stripBom(content) {
@@ -13638,9 +13675,9 @@ var require_utils3 = __commonJS({
13638
13675
  }
13639
13676
  });
13640
13677
 
13641
- // ../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/index.js
13678
+ // ../../node_modules/.pnpm/jsonfile@6.2.1/node_modules/jsonfile/index.js
13642
13679
  var require_jsonfile = __commonJS({
13643
- "../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/index.js"(exports, module2) {
13680
+ "../../node_modules/.pnpm/jsonfile@6.2.1/node_modules/jsonfile/index.js"(exports, module2) {
13644
13681
  var _fs;
13645
13682
  try {
13646
13683
  _fs = require_graceful_fs();
@@ -13701,13 +13738,12 @@ var require_jsonfile = __commonJS({
13701
13738
  const str = stringify2(obj, options);
13702
13739
  return fs5.writeFileSync(file, str, options);
13703
13740
  }
13704
- var jsonfile = {
13741
+ module2.exports = {
13705
13742
  readFile,
13706
13743
  readFileSync: readFileSync2,
13707
13744
  writeFile,
13708
13745
  writeFileSync
13709
13746
  };
13710
- module2.exports = jsonfile;
13711
13747
  }
13712
13748
  });
13713
13749
 
@@ -16927,9 +16963,9 @@ var require_balanced_match = __commonJS({
16927
16963
  }
16928
16964
  });
16929
16965
 
16930
- // ../../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js
16966
+ // ../../node_modules/.pnpm/brace-expansion@1.1.15/node_modules/brace-expansion/index.js
16931
16967
  var require_brace_expansion = __commonJS({
16932
- "../../node_modules/.pnpm/brace-expansion@1.1.11/node_modules/brace-expansion/index.js"(exports, module2) {
16968
+ "../../node_modules/.pnpm/brace-expansion@1.1.15/node_modules/brace-expansion/index.js"(exports, module2) {
16933
16969
  var concatMap = require_concat_map();
16934
16970
  var balanced = require_balanced_match();
16935
16971
  module2.exports = expandTop;
@@ -16967,13 +17003,15 @@ var require_brace_expansion = __commonJS({
16967
17003
  parts.push.apply(parts, p);
16968
17004
  return parts;
16969
17005
  }
16970
- function expandTop(str) {
17006
+ function expandTop(str, options) {
16971
17007
  if (!str)
16972
17008
  return [];
17009
+ options = options || {};
17010
+ var max = options.max == null ? Infinity : options.max;
16973
17011
  if (str.substr(0, 2) === "{}") {
16974
17012
  str = "\\{\\}" + str.substr(2);
16975
17013
  }
16976
- return expand(escapeBraces(str), true).map(unescapeBraces);
17014
+ return expand(escapeBraces(str), max, true).map(unescapeBraces);
16977
17015
  }
16978
17016
  function embrace(str) {
16979
17017
  return "{" + str + "}";
@@ -16987,7 +17025,7 @@ var require_brace_expansion = __commonJS({
16987
17025
  function gte(i, y) {
16988
17026
  return i >= y;
16989
17027
  }
16990
- function expand(str, isTop) {
17028
+ function expand(str, max, isTop) {
16991
17029
  var expansions = [];
16992
17030
  var m = balanced("{", "}", str);
16993
17031
  if (!m || /\$$/.test(m.pre))
@@ -16997,9 +17035,9 @@ var require_brace_expansion = __commonJS({
16997
17035
  var isSequence = isNumericSequence || isAlphaSequence;
16998
17036
  var isOptions = m.body.indexOf(",") >= 0;
16999
17037
  if (!isSequence && !isOptions) {
17000
- if (m.post.match(/,.*\}/)) {
17038
+ if (m.post.match(/,(?!,).*\}/)) {
17001
17039
  str = m.pre + "{" + m.body + escClose + m.post;
17002
- return expand(str);
17040
+ return expand(str, max, true);
17003
17041
  }
17004
17042
  return [str];
17005
17043
  }
@@ -17009,9 +17047,9 @@ var require_brace_expansion = __commonJS({
17009
17047
  } else {
17010
17048
  n = parseCommaParts(m.body);
17011
17049
  if (n.length === 1) {
17012
- n = expand(n[0], false).map(embrace);
17050
+ n = expand(n[0], max, false).map(embrace);
17013
17051
  if (n.length === 1) {
17014
- var post = m.post.length ? expand(m.post, false) : [""];
17052
+ var post = m.post.length ? expand(m.post, max, false) : [""];
17015
17053
  return post.map(function(p) {
17016
17054
  return m.pre + n[0] + p;
17017
17055
  });
@@ -17019,13 +17057,13 @@ var require_brace_expansion = __commonJS({
17019
17057
  }
17020
17058
  }
17021
17059
  var pre = m.pre;
17022
- var post = m.post.length ? expand(m.post, false) : [""];
17060
+ var post = m.post.length ? expand(m.post, max, false) : [""];
17023
17061
  var N;
17024
17062
  if (isSequence) {
17025
17063
  var x = numeric(n[0]);
17026
17064
  var y = numeric(n[1]);
17027
17065
  var width = Math.max(n[0].length, n[1].length);
17028
- var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1;
17066
+ var incr = n.length == 3 ? Math.max(Math.abs(numeric(n[2])), 1) : 1;
17029
17067
  var test = lte;
17030
17068
  var reverse = y < x;
17031
17069
  if (reverse) {
@@ -17034,7 +17072,7 @@ var require_brace_expansion = __commonJS({
17034
17072
  }
17035
17073
  var pad = n.some(isPadded);
17036
17074
  N = [];
17037
- for (var i = x; test(i, y); i += incr) {
17075
+ for (var i = x; test(i, y) && N.length < max; i += incr) {
17038
17076
  var c;
17039
17077
  if (isAlphaSequence) {
17040
17078
  c = String.fromCharCode(i);
@@ -17057,11 +17095,11 @@ var require_brace_expansion = __commonJS({
17057
17095
  }
17058
17096
  } else {
17059
17097
  N = concatMap(n, function(el) {
17060
- return expand(el, false);
17098
+ return expand(el, max, false);
17061
17099
  });
17062
17100
  }
17063
17101
  for (var j = 0; j < N.length; j++) {
17064
- for (var k = 0; k < post.length; k++) {
17102
+ for (var k = 0; k < post.length && expansions.length < max; k++) {
17065
17103
  var expansion = pre + N[j] + post[k];
17066
17104
  if (!isTop || isSequence || expansion)
17067
17105
  expansions.push(expansion);
@@ -27935,7 +27973,7 @@ var require_detect_services = __commonJS({
27935
27973
  workPath,
27936
27974
  detectEntrypoint,
27937
27975
  configuredServices: providedConfiguredServices,
27938
- configuredServicesType
27976
+ configuredServicesType: providedConfiguredServicesType
27939
27977
  } = options;
27940
27978
  const scopedFs = workPath ? fs5.chdir(workPath) : fs5;
27941
27979
  const { config: vercelConfig, error: configError } = await (0, import_utils.readVercelConfig)(scopedFs);
@@ -27950,7 +27988,7 @@ var require_detect_services = __commonJS({
27950
27988
  });
27951
27989
  }
27952
27990
  const hasProvidedConfiguredServices = providedConfiguredServices && Object.keys(providedConfiguredServices).length > 0;
27953
- const experimentalServicesV2 = hasProvidedConfiguredServices && configuredServicesType === "experimentalServicesV2" ? providedConfiguredServices : hasProvidedConfiguredServices ? void 0 : vercelConfig?.experimentalServicesV2;
27991
+ const experimentalServicesV2 = hasProvidedConfiguredServices && providedConfiguredServicesType === "experimentalServicesV2" ? providedConfiguredServices : hasProvidedConfiguredServices ? void 0 : vercelConfig?.experimentalServicesV2;
27954
27992
  if (experimentalServicesV2 && Object.keys(experimentalServicesV2).length > 0) {
27955
27993
  const result2 = await (0, import_resolve_v2.resolveAllConfiguredServicesV2)(
27956
27994
  experimentalServicesV2,
@@ -27967,9 +28005,9 @@ var require_detect_services = __commonJS({
27967
28005
  warnings: []
27968
28006
  });
27969
28007
  }
27970
- const configuredServices = hasProvidedConfiguredServices ? providedConfiguredServices : vercelConfig?.experimentalServices;
27971
- const hasConfiguredServices = configuredServices && Object.keys(configuredServices).length > 0;
27972
- if (!hasConfiguredServices) {
28008
+ const experimentalServicesV1 = hasProvidedConfiguredServices ? providedConfiguredServices : vercelConfig?.experimentalServices;
28009
+ const hasExperimentalServicesV1 = experimentalServicesV1 && Object.keys(experimentalServicesV1).length > 0;
28010
+ if (!hasExperimentalServicesV1) {
27973
28011
  const detectors = [
27974
28012
  { detect: import_detect_railway.detectRailwayServices, source: "railway" },
27975
28013
  { detect: import_detect_render.detectRenderServices, source: "render" },
@@ -27997,7 +28035,7 @@ var require_detect_services = __commonJS({
27997
28035
  });
27998
28036
  }
27999
28037
  const result = await (0, import_resolve.resolveAllConfiguredServices)(
28000
- configuredServices,
28038
+ experimentalServicesV1,
28001
28039
  scopedFs,
28002
28040
  "configured"
28003
28041
  );
@@ -28414,7 +28452,8 @@ var require_get_services_builders = __commonJS({
28414
28452
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
28415
28453
  var get_services_builders_exports = {};
28416
28454
  __export2(get_services_builders_exports, {
28417
- getServicesBuilders: () => getServicesBuilders2
28455
+ getServicesBuilders: () => getServicesBuilders2,
28456
+ warnIgnoredDirectories: () => warnIgnoredDirectories
28418
28457
  });
28419
28458
  module2.exports = __toCommonJS2(get_services_builders_exports);
28420
28459
  var import_detect_services = require_detect_services();
@@ -28530,6 +28569,23 @@ var require_get_services_builders = __commonJS({
28530
28569
  useImplicitEnvInjection: result.useImplicitEnvInjection
28531
28570
  };
28532
28571
  }
28572
+ function warnIgnoredDirectories(files, configuredServices) {
28573
+ const warnings = [];
28574
+ if (files.some((f) => f.startsWith("api/"))) {
28575
+ const serviceCoversApi = Object.values(configuredServices).some((service) => {
28576
+ const root = service.root ?? ".";
28577
+ const entrypoint = service.entrypoint ?? "";
28578
+ return root === "api" || root.startsWith("api/") || root === "." && entrypoint.startsWith("api/");
28579
+ });
28580
+ if (!serviceCoversApi) {
28581
+ warnings.push({
28582
+ code: "api_dir_ignored",
28583
+ message: "The `api/` directory will not be built because `experimentalServices` is configured. To serve these files, declare them as a service in your `vercel.json`."
28584
+ });
28585
+ }
28586
+ }
28587
+ return warnings;
28588
+ }
28533
28589
  }
28534
28590
  });
28535
28591
 
@@ -28631,21 +28687,27 @@ var require_detect_builders = __commonJS({
28631
28687
  }
28632
28688
  async function detectBuilders2(files, pkg, options = {}) {
28633
28689
  const {
28634
- experimentalServices,
28690
+ experimentalServices: experimentalServicesV1,
28635
28691
  experimentalServicesV2,
28636
28692
  projectSettings = {}
28637
28693
  } = options;
28638
28694
  const { framework } = projectSettings;
28639
- const configuredServices = experimentalServices ?? experimentalServicesV2;
28640
- const configuredServicesType = experimentalServices ? "experimentalServices" : "experimentalServicesV2";
28695
+ const configuredServices = experimentalServicesV2 ?? experimentalServicesV1;
28696
+ const configuredServicesType = experimentalServicesV2 ? "experimentalServicesV2" : "experimentalServices";
28641
28697
  const hasServicesConfig = configuredServices != null && typeof configuredServices === "object";
28642
28698
  if (hasServicesConfig || framework === "services") {
28643
- return (0, import_get_services_builders.getServicesBuilders)({
28699
+ const result = await (0, import_get_services_builders.getServicesBuilders)({
28644
28700
  workPath: options.workPath,
28645
28701
  configuredServices,
28646
28702
  configuredServicesType,
28647
28703
  projectFramework: framework
28648
28704
  });
28705
+ if (configuredServices != null) {
28706
+ result.warnings.push(
28707
+ ...(0, import_get_services_builders.warnIgnoredDirectories)(files, configuredServices)
28708
+ );
28709
+ }
28710
+ return result;
28649
28711
  }
28650
28712
  const errors = [];
28651
28713
  const warnings = [];
@@ -29028,10 +29090,11 @@ var require_detect_builders = __commonJS({
29028
29090
  message: "Function must contain at least one property."
29029
29091
  };
29030
29092
  }
29031
- if (func.maxDuration !== void 0 && func.maxDuration !== "max" && (func.maxDuration < 1 || func.maxDuration > 900 || !Number.isInteger(func.maxDuration))) {
29093
+ const maxDurationLimit = (0, import_build_utils5.getMaxDurationLimit)();
29094
+ if (func.maxDuration !== void 0 && func.maxDuration !== "max" && (func.maxDuration < 1 || maxDurationLimit !== void 0 && func.maxDuration > maxDurationLimit || !Number.isInteger(func.maxDuration))) {
29032
29095
  return {
29033
29096
  code: "invalid_function_duration",
29034
- message: 'Functions must have a maxDuration between 1 and 900, or "max".'
29097
+ message: maxDurationLimit !== void 0 ? `Functions must have a maxDuration between 1 and ${maxDurationLimit}, or "max".` : 'Functions must have a positive integer maxDuration, or "max".'
29035
29098
  };
29036
29099
  }
29037
29100
  if (func.memory !== void 0 && (func.memory < 128 || func.memory > 10240)) {
@@ -30106,9 +30169,9 @@ var require_path = __commonJS({
30106
30169
  }
30107
30170
  });
30108
30171
 
30109
- // ../../node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js
30172
+ // ../../node_modules/.pnpm/brace-expansion@2.1.1/node_modules/brace-expansion/index.js
30110
30173
  var require_brace_expansion2 = __commonJS({
30111
- "../../node_modules/.pnpm/brace-expansion@2.0.1/node_modules/brace-expansion/index.js"(exports, module2) {
30174
+ "../../node_modules/.pnpm/brace-expansion@2.1.1/node_modules/brace-expansion/index.js"(exports, module2) {
30112
30175
  var balanced = require_balanced_match();
30113
30176
  module2.exports = expandTop;
30114
30177
  var escSlash = "\0SLASH" + Math.random() + "\0";
@@ -30145,13 +30208,15 @@ var require_brace_expansion2 = __commonJS({
30145
30208
  parts.push.apply(parts, p);
30146
30209
  return parts;
30147
30210
  }
30148
- function expandTop(str) {
30211
+ function expandTop(str, options) {
30149
30212
  if (!str)
30150
30213
  return [];
30214
+ options = options || {};
30215
+ var max = options.max == null ? Infinity : options.max;
30151
30216
  if (str.substr(0, 2) === "{}") {
30152
30217
  str = "\\{\\}" + str.substr(2);
30153
30218
  }
30154
- return expand(escapeBraces(str), true).map(unescapeBraces);
30219
+ return expand(escapeBraces(str), max, true).map(unescapeBraces);
30155
30220
  }
30156
30221
  function embrace(str) {
30157
30222
  return "{" + str + "}";
@@ -30165,15 +30230,15 @@ var require_brace_expansion2 = __commonJS({
30165
30230
  function gte(i, y) {
30166
30231
  return i >= y;
30167
30232
  }
30168
- function expand(str, isTop) {
30233
+ function expand(str, max, isTop) {
30169
30234
  var expansions = [];
30170
30235
  var m = balanced("{", "}", str);
30171
30236
  if (!m)
30172
30237
  return [str];
30173
30238
  var pre = m.pre;
30174
- var post = m.post.length ? expand(m.post, false) : [""];
30239
+ var post = m.post.length ? expand(m.post, max, false) : [""];
30175
30240
  if (/\$$/.test(m.pre)) {
30176
- for (var k = 0; k < post.length; k++) {
30241
+ for (var k = 0; k < post.length && k < max; k++) {
30177
30242
  var expansion = pre + "{" + m.body + "}" + post[k];
30178
30243
  expansions.push(expansion);
30179
30244
  }
@@ -30183,9 +30248,9 @@ var require_brace_expansion2 = __commonJS({
30183
30248
  var isSequence = isNumericSequence || isAlphaSequence;
30184
30249
  var isOptions = m.body.indexOf(",") >= 0;
30185
30250
  if (!isSequence && !isOptions) {
30186
- if (m.post.match(/,.*\}/)) {
30251
+ if (m.post.match(/,(?!,).*\}/)) {
30187
30252
  str = m.pre + "{" + m.body + escClose + m.post;
30188
- return expand(str);
30253
+ return expand(str, max, true);
30189
30254
  }
30190
30255
  return [str];
30191
30256
  }
@@ -30195,7 +30260,7 @@ var require_brace_expansion2 = __commonJS({
30195
30260
  } else {
30196
30261
  n = parseCommaParts(m.body);
30197
30262
  if (n.length === 1) {
30198
- n = expand(n[0], false).map(embrace);
30263
+ n = expand(n[0], max, false).map(embrace);
30199
30264
  if (n.length === 1) {
30200
30265
  return post.map(function(p) {
30201
30266
  return m.pre + n[0] + p;
@@ -30208,7 +30273,7 @@ var require_brace_expansion2 = __commonJS({
30208
30273
  var x = numeric(n[0]);
30209
30274
  var y = numeric(n[1]);
30210
30275
  var width = Math.max(n[0].length, n[1].length);
30211
- var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1;
30276
+ var incr = n.length == 3 ? Math.max(Math.abs(numeric(n[2])), 1) : 1;
30212
30277
  var test = lte;
30213
30278
  var reverse = y < x;
30214
30279
  if (reverse) {
@@ -30217,7 +30282,7 @@ var require_brace_expansion2 = __commonJS({
30217
30282
  }
30218
30283
  var pad = n.some(isPadded);
30219
30284
  N = [];
30220
- for (var i = x; test(i, y); i += incr) {
30285
+ for (var i = x; test(i, y) && N.length < max; i += incr) {
30221
30286
  var c;
30222
30287
  if (isAlphaSequence) {
30223
30288
  c = String.fromCharCode(i);
@@ -30241,11 +30306,11 @@ var require_brace_expansion2 = __commonJS({
30241
30306
  } else {
30242
30307
  N = [];
30243
30308
  for (var j = 0; j < n.length; j++) {
30244
- N.push.apply(N, expand(n[j], false));
30309
+ N.push.apply(N, expand(n[j], max, false));
30245
30310
  }
30246
30311
  }
30247
30312
  for (var j = 0; j < N.length; j++) {
30248
- for (var k = 0; k < post.length; k++) {
30313
+ for (var k = 0; k < post.length && expansions.length < max; k++) {
30249
30314
  var expansion = pre + N[j] + post[k];
30250
30315
  if (!isTop || isSequence || expansion)
30251
30316
  expansions.push(expansion);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/static-build",
3
- "version": "2.9.37",
3
+ "version": "2.9.38",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index",
6
6
  "homepage": "https://vercel.com/docs/build-step",
@@ -14,9 +14,9 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "ts-morph": "12.0.0",
17
- "@vercel/gatsby-plugin-vercel-builder": "2.2.14",
18
- "@vercel/gatsby-plugin-vercel-analytics": "1.0.11",
19
- "@vercel/static-config": "3.4.0"
17
+ "@vercel/gatsby-plugin-vercel-builder": "2.2.15",
18
+ "@vercel/static-config": "3.4.0",
19
+ "@vercel/gatsby-plugin-vercel-analytics": "1.0.11"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/aws-lambda": "8.10.64",
@@ -37,10 +37,10 @@
37
37
  "semver": "7.5.2",
38
38
  "tree-kill": "1.2.2",
39
39
  "vitest": "2.0.3",
40
- "@vercel/build-utils": "13.27.1",
40
+ "@vercel/build-utils": "13.27.2",
41
41
  "@vercel/error-utils": "2.2.0",
42
- "@vercel/fs-detectors": "6.7.8",
43
- "@vercel/frameworks": "3.27.0",
42
+ "@vercel/frameworks": "3.28.0",
43
+ "@vercel/fs-detectors": "6.8.0",
44
44
  "@vercel/routing-utils": "6.2.0"
45
45
  },
46
46
  "scripts": {