@vercel/static-build 2.9.8 → 2.9.10

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 +1830 -242
  2. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -6,6 +6,9 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
8
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __esm = (fn, res) => function __init() {
10
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
11
+ };
9
12
  var __commonJS = (cb, mod) => function __require() {
10
13
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
14
  };
@@ -66,7 +69,7 @@ var require_ms = __commonJS({
66
69
  options = options || {};
67
70
  var type = typeof val;
68
71
  if (type === "string" && val.length > 0) {
69
- return parse(val);
72
+ return parse2(val);
70
73
  } else if (type === "number" && isFinite(val)) {
71
74
  return options.long ? fmtLong(val) : fmtShort(val);
72
75
  }
@@ -74,7 +77,7 @@ var require_ms = __commonJS({
74
77
  "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
75
78
  );
76
79
  };
77
- function parse(str) {
80
+ function parse2(str) {
78
81
  str = String(str);
79
82
  if (str.length > 100) {
80
83
  return;
@@ -6104,18 +6107,18 @@ var require_dist = __commonJS({
6104
6107
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
6105
6108
  var index_exports = {};
6106
6109
  __export2(index_exports, {
6107
- TomlDate: () => TomlDate,
6108
- TomlError: () => TomlError,
6110
+ TomlDate: () => TomlDate2,
6111
+ TomlError: () => TomlError2,
6109
6112
  default: () => index_default,
6110
- parse: () => parse,
6111
- stringify: () => stringify
6113
+ parse: () => parse2,
6114
+ stringify: () => stringify2
6112
6115
  });
6113
6116
  module2.exports = __toCommonJS2(index_exports);
6114
- function getLineColFromPtr(string, ptr) {
6117
+ function getLineColFromPtr2(string, ptr) {
6115
6118
  let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g);
6116
6119
  return [lines.length, lines.pop().length + 1];
6117
6120
  }
6118
- function makeCodeBlock(string, line, column) {
6121
+ function makeCodeBlock2(string, line, column) {
6119
6122
  let lines = string.split(/\r\n|\n|\r/g);
6120
6123
  let codeblock = "";
6121
6124
  let numberLen = (Math.log10(line + 1) | 0) + 1;
@@ -6134,10 +6137,10 @@ var require_dist = __commonJS({
6134
6137
  }
6135
6138
  return codeblock;
6136
6139
  }
6137
- var TomlError = class extends Error {
6140
+ var TomlError2 = class extends Error {
6138
6141
  constructor(message, options) {
6139
- const [line, column] = getLineColFromPtr(options.toml, options.ptr);
6140
- const codeblock = makeCodeBlock(options.toml, line, column);
6142
+ const [line, column] = getLineColFromPtr2(options.toml, options.ptr);
6143
+ const codeblock = makeCodeBlock2(options.toml, line, column);
6141
6144
  super(`Invalid TOML document: ${message}
6142
6145
 
6143
6146
  ${codeblock}`, options);
@@ -6149,19 +6152,19 @@ ${codeblock}`, options);
6149
6152
  this.codeblock = codeblock;
6150
6153
  }
6151
6154
  };
6152
- function isEscaped(str, ptr) {
6155
+ function isEscaped2(str, ptr) {
6153
6156
  let i = 0;
6154
6157
  while (str[ptr - ++i] === "\\")
6155
6158
  ;
6156
6159
  return --i && i % 2;
6157
6160
  }
6158
- function indexOfNewline(str, start = 0, end = str.length) {
6161
+ function indexOfNewline2(str, start = 0, end = str.length) {
6159
6162
  let idx = str.indexOf("\n", start);
6160
6163
  if (str[idx - 1] === "\r")
6161
6164
  idx--;
6162
6165
  return idx <= end ? idx : -1;
6163
6166
  }
6164
- function skipComment(str, ptr) {
6167
+ function skipComment2(str, ptr) {
6165
6168
  for (let i = ptr; i < str.length; i++) {
6166
6169
  let c = str[i];
6167
6170
  if (c === "\n")
@@ -6169,7 +6172,7 @@ ${codeblock}`, options);
6169
6172
  if (c === "\r" && str[i + 1] === "\n")
6170
6173
  return i + 1;
6171
6174
  if (c < " " && c !== " " || c === "\x7F") {
6172
- throw new TomlError("control characters are not allowed in comments", {
6175
+ throw new TomlError2("control characters are not allowed in comments", {
6173
6176
  toml: str,
6174
6177
  ptr
6175
6178
  });
@@ -6177,39 +6180,39 @@ ${codeblock}`, options);
6177
6180
  }
6178
6181
  return str.length;
6179
6182
  }
6180
- function skipVoid(str, ptr, banNewLines, banComments) {
6183
+ function skipVoid2(str, ptr, banNewLines, banComments) {
6181
6184
  let c;
6182
6185
  while ((c = str[ptr]) === " " || c === " " || !banNewLines && (c === "\n" || c === "\r" && str[ptr + 1] === "\n"))
6183
6186
  ptr++;
6184
- return banComments || c !== "#" ? ptr : skipVoid(str, skipComment(str, ptr), banNewLines);
6187
+ return banComments || c !== "#" ? ptr : skipVoid2(str, skipComment2(str, ptr), banNewLines);
6185
6188
  }
6186
- function skipUntil(str, ptr, sep, end, banNewLines = false) {
6189
+ function skipUntil2(str, ptr, sep, end, banNewLines = false) {
6187
6190
  if (!end) {
6188
- ptr = indexOfNewline(str, ptr);
6191
+ ptr = indexOfNewline2(str, ptr);
6189
6192
  return ptr < 0 ? str.length : ptr;
6190
6193
  }
6191
6194
  for (let i = ptr; i < str.length; i++) {
6192
6195
  let c = str[i];
6193
6196
  if (c === "#") {
6194
- i = indexOfNewline(str, i);
6197
+ i = indexOfNewline2(str, i);
6195
6198
  } else if (c === sep) {
6196
6199
  return i + 1;
6197
6200
  } else if (c === end || banNewLines && (c === "\n" || c === "\r" && str[i + 1] === "\n")) {
6198
6201
  return i;
6199
6202
  }
6200
6203
  }
6201
- throw new TomlError("cannot find end of structure", {
6204
+ throw new TomlError2("cannot find end of structure", {
6202
6205
  toml: str,
6203
6206
  ptr
6204
6207
  });
6205
6208
  }
6206
- function getStringEnd(str, seek) {
6209
+ function getStringEnd2(str, seek) {
6207
6210
  let first = str[seek];
6208
6211
  let target = first === str[seek + 1] && str[seek + 1] === str[seek + 2] ? str.slice(seek, seek + 3) : first;
6209
6212
  seek += target.length - 1;
6210
6213
  do
6211
6214
  seek = str.indexOf(target, ++seek);
6212
- while (seek > -1 && first !== "'" && isEscaped(str, seek));
6215
+ while (seek > -1 && first !== "'" && isEscaped2(str, seek));
6213
6216
  if (seek > -1) {
6214
6217
  seek += target.length;
6215
6218
  if (target.length > 1) {
@@ -6221,15 +6224,15 @@ ${codeblock}`, options);
6221
6224
  }
6222
6225
  return seek;
6223
6226
  }
6224
- var DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}:\d{2}(?:\.\d+)?)?(Z|[-+]\d{2}:\d{2})?$/i;
6225
- var _hasDate, _hasTime, _offset, _a;
6226
- var TomlDate = (_a = class extends Date {
6227
+ var DATE_TIME_RE2 = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}:\d{2}(?:\.\d+)?)?(Z|[-+]\d{2}:\d{2})?$/i;
6228
+ var _hasDate2, _hasTime2, _offset2, _a;
6229
+ var TomlDate2 = (_a = class extends Date {
6227
6230
  constructor(date) {
6228
6231
  let hasDate = true;
6229
6232
  let hasTime = true;
6230
6233
  let offset = "Z";
6231
6234
  if (typeof date === "string") {
6232
- let match = date.match(DATE_TIME_RE);
6235
+ let match = date.match(DATE_TIME_RE2);
6233
6236
  if (match) {
6234
6237
  if (!match[1]) {
6235
6238
  hasDate = false;
@@ -6250,29 +6253,29 @@ ${codeblock}`, options);
6250
6253
  }
6251
6254
  }
6252
6255
  super(date);
6253
- __privateAdd(this, _hasDate, false);
6254
- __privateAdd(this, _hasTime, false);
6255
- __privateAdd(this, _offset, null);
6256
+ __privateAdd(this, _hasDate2, false);
6257
+ __privateAdd(this, _hasTime2, false);
6258
+ __privateAdd(this, _offset2, null);
6256
6259
  if (!isNaN(this.getTime())) {
6257
- __privateSet(this, _hasDate, hasDate);
6258
- __privateSet(this, _hasTime, hasTime);
6259
- __privateSet(this, _offset, offset);
6260
+ __privateSet(this, _hasDate2, hasDate);
6261
+ __privateSet(this, _hasTime2, hasTime);
6262
+ __privateSet(this, _offset2, offset);
6260
6263
  }
6261
6264
  }
6262
6265
  isDateTime() {
6263
- return __privateGet(this, _hasDate) && __privateGet(this, _hasTime);
6266
+ return __privateGet(this, _hasDate2) && __privateGet(this, _hasTime2);
6264
6267
  }
6265
6268
  isLocal() {
6266
- return !__privateGet(this, _hasDate) || !__privateGet(this, _hasTime) || !__privateGet(this, _offset);
6269
+ return !__privateGet(this, _hasDate2) || !__privateGet(this, _hasTime2) || !__privateGet(this, _offset2);
6267
6270
  }
6268
6271
  isDate() {
6269
- return __privateGet(this, _hasDate) && !__privateGet(this, _hasTime);
6272
+ return __privateGet(this, _hasDate2) && !__privateGet(this, _hasTime2);
6270
6273
  }
6271
6274
  isTime() {
6272
- return __privateGet(this, _hasTime) && !__privateGet(this, _hasDate);
6275
+ return __privateGet(this, _hasTime2) && !__privateGet(this, _hasDate2);
6273
6276
  }
6274
6277
  isValid() {
6275
- return __privateGet(this, _hasDate) || __privateGet(this, _hasTime);
6278
+ return __privateGet(this, _hasDate2) || __privateGet(this, _hasTime2);
6276
6279
  }
6277
6280
  toISOString() {
6278
6281
  let iso = super.toISOString();
@@ -6280,43 +6283,43 @@ ${codeblock}`, options);
6280
6283
  return iso.slice(0, 10);
6281
6284
  if (this.isTime())
6282
6285
  return iso.slice(11, 23);
6283
- if (__privateGet(this, _offset) === null)
6286
+ if (__privateGet(this, _offset2) === null)
6284
6287
  return iso.slice(0, -1);
6285
- if (__privateGet(this, _offset) === "Z")
6288
+ if (__privateGet(this, _offset2) === "Z")
6286
6289
  return iso;
6287
- let offset = +__privateGet(this, _offset).slice(1, 3) * 60 + +__privateGet(this, _offset).slice(4, 6);
6288
- offset = __privateGet(this, _offset)[0] === "-" ? offset : -offset;
6290
+ let offset = +__privateGet(this, _offset2).slice(1, 3) * 60 + +__privateGet(this, _offset2).slice(4, 6);
6291
+ offset = __privateGet(this, _offset2)[0] === "-" ? offset : -offset;
6289
6292
  let offsetDate = new Date(this.getTime() - offset * 6e4);
6290
- return offsetDate.toISOString().slice(0, -1) + __privateGet(this, _offset);
6293
+ return offsetDate.toISOString().slice(0, -1) + __privateGet(this, _offset2);
6291
6294
  }
6292
6295
  static wrapAsOffsetDateTime(jsDate, offset = "Z") {
6293
6296
  let date = new _a(jsDate);
6294
- __privateSet(date, _offset, offset);
6297
+ __privateSet(date, _offset2, offset);
6295
6298
  return date;
6296
6299
  }
6297
6300
  static wrapAsLocalDateTime(jsDate) {
6298
6301
  let date = new _a(jsDate);
6299
- __privateSet(date, _offset, null);
6302
+ __privateSet(date, _offset2, null);
6300
6303
  return date;
6301
6304
  }
6302
6305
  static wrapAsLocalDate(jsDate) {
6303
6306
  let date = new _a(jsDate);
6304
- __privateSet(date, _hasTime, false);
6305
- __privateSet(date, _offset, null);
6307
+ __privateSet(date, _hasTime2, false);
6308
+ __privateSet(date, _offset2, null);
6306
6309
  return date;
6307
6310
  }
6308
6311
  static wrapAsLocalTime(jsDate) {
6309
6312
  let date = new _a(jsDate);
6310
- __privateSet(date, _hasDate, false);
6311
- __privateSet(date, _offset, null);
6313
+ __privateSet(date, _hasDate2, false);
6314
+ __privateSet(date, _offset2, null);
6312
6315
  return date;
6313
6316
  }
6314
- }, _hasDate = new WeakMap(), _hasTime = new WeakMap(), _offset = new WeakMap(), _a);
6315
- var INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/;
6316
- var FLOAT_REGEX = /^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/;
6317
- var LEADING_ZERO = /^[+-]?0[0-9_]/;
6318
- var ESCAPE_REGEX = /^[0-9a-f]{4,8}$/i;
6319
- var ESC_MAP = {
6317
+ }, _hasDate2 = new WeakMap(), _hasTime2 = new WeakMap(), _offset2 = new WeakMap(), _a);
6318
+ var INT_REGEX2 = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/;
6319
+ var FLOAT_REGEX2 = /^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/;
6320
+ var LEADING_ZERO2 = /^[+-]?0[0-9_]/;
6321
+ var ESCAPE_REGEX2 = /^[0-9a-f]{4,8}$/i;
6322
+ var ESC_MAP2 = {
6320
6323
  b: "\b",
6321
6324
  t: " ",
6322
6325
  n: "\n",
@@ -6325,7 +6328,7 @@ ${codeblock}`, options);
6325
6328
  '"': '"',
6326
6329
  "\\": "\\"
6327
6330
  };
6328
- function parseString(str, ptr = 0, endPtr = str.length) {
6331
+ function parseString2(str, ptr = 0, endPtr = str.length) {
6329
6332
  let isLiteral = str[ptr] === "'";
6330
6333
  let isMultiline = str[ptr++] === str[ptr] && str[ptr] === str[ptr + 1];
6331
6334
  if (isMultiline) {
@@ -6343,13 +6346,13 @@ ${codeblock}`, options);
6343
6346
  let c = str[ptr++];
6344
6347
  if (c === "\n" || c === "\r" && str[ptr] === "\n") {
6345
6348
  if (!isMultiline) {
6346
- throw new TomlError("newlines are not allowed in strings", {
6349
+ throw new TomlError2("newlines are not allowed in strings", {
6347
6350
  toml: str,
6348
6351
  ptr: ptr - 1
6349
6352
  });
6350
6353
  }
6351
6354
  } else if (c < " " && c !== " " || c === "\x7F") {
6352
- throw new TomlError("control characters are not allowed in strings", {
6355
+ throw new TomlError2("control characters are not allowed in strings", {
6353
6356
  toml: str,
6354
6357
  ptr: ptr - 1
6355
6358
  });
@@ -6358,8 +6361,8 @@ ${codeblock}`, options);
6358
6361
  isEscape = false;
6359
6362
  if (c === "u" || c === "U") {
6360
6363
  let code = str.slice(ptr, ptr += c === "u" ? 4 : 8);
6361
- if (!ESCAPE_REGEX.test(code)) {
6362
- throw new TomlError("invalid unicode escape", {
6364
+ if (!ESCAPE_REGEX2.test(code)) {
6365
+ throw new TomlError2("invalid unicode escape", {
6363
6366
  toml: str,
6364
6367
  ptr: tmp
6365
6368
  });
@@ -6367,24 +6370,24 @@ ${codeblock}`, options);
6367
6370
  try {
6368
6371
  parsed += String.fromCodePoint(parseInt(code, 16));
6369
6372
  } catch {
6370
- throw new TomlError("invalid unicode escape", {
6373
+ throw new TomlError2("invalid unicode escape", {
6371
6374
  toml: str,
6372
6375
  ptr: tmp
6373
6376
  });
6374
6377
  }
6375
6378
  } else if (isMultiline && (c === "\n" || c === " " || c === " " || c === "\r")) {
6376
- ptr = skipVoid(str, ptr - 1, true);
6379
+ ptr = skipVoid2(str, ptr - 1, true);
6377
6380
  if (str[ptr] !== "\n" && str[ptr] !== "\r") {
6378
- throw new TomlError("invalid escape: only line-ending whitespace may be escaped", {
6381
+ throw new TomlError2("invalid escape: only line-ending whitespace may be escaped", {
6379
6382
  toml: str,
6380
6383
  ptr: tmp
6381
6384
  });
6382
6385
  }
6383
- ptr = skipVoid(str, ptr);
6384
- } else if (c in ESC_MAP) {
6385
- parsed += ESC_MAP[c];
6386
+ ptr = skipVoid2(str, ptr);
6387
+ } else if (c in ESC_MAP2) {
6388
+ parsed += ESC_MAP2[c];
6386
6389
  } else {
6387
- throw new TomlError("unrecognized escape sequence", {
6390
+ throw new TomlError2("unrecognized escape sequence", {
6388
6391
  toml: str,
6389
6392
  ptr: tmp
6390
6393
  });
@@ -6398,7 +6401,7 @@ ${codeblock}`, options);
6398
6401
  }
6399
6402
  return parsed + str.slice(sliceStart, endPtr - 1);
6400
6403
  }
6401
- function parseValue(value, toml, ptr, integersAsBigInt) {
6404
+ function parseValue2(value, toml, ptr, integersAsBigInt) {
6402
6405
  if (value === "true")
6403
6406
  return true;
6404
6407
  if (value === "false")
@@ -6411,10 +6414,10 @@ ${codeblock}`, options);
6411
6414
  return NaN;
6412
6415
  if (value === "-0")
6413
6416
  return integersAsBigInt ? 0n : 0;
6414
- let isInt = INT_REGEX.test(value);
6415
- if (isInt || FLOAT_REGEX.test(value)) {
6416
- if (LEADING_ZERO.test(value)) {
6417
- throw new TomlError("leading zeroes are not allowed", {
6417
+ let isInt = INT_REGEX2.test(value);
6418
+ if (isInt || FLOAT_REGEX2.test(value)) {
6419
+ if (LEADING_ZERO2.test(value)) {
6420
+ throw new TomlError2("leading zeroes are not allowed", {
6418
6421
  toml,
6419
6422
  ptr
6420
6423
  });
@@ -6422,14 +6425,14 @@ ${codeblock}`, options);
6422
6425
  value = value.replace(/_/g, "");
6423
6426
  let numeric = +value;
6424
6427
  if (isNaN(numeric)) {
6425
- throw new TomlError("invalid number", {
6428
+ throw new TomlError2("invalid number", {
6426
6429
  toml,
6427
6430
  ptr
6428
6431
  });
6429
6432
  }
6430
6433
  if (isInt) {
6431
6434
  if ((isInt = !Number.isSafeInteger(numeric)) && !integersAsBigInt) {
6432
- throw new TomlError("integer value cannot be represented losslessly", {
6435
+ throw new TomlError2("integer value cannot be represented losslessly", {
6433
6436
  toml,
6434
6437
  ptr
6435
6438
  });
@@ -6439,27 +6442,27 @@ ${codeblock}`, options);
6439
6442
  }
6440
6443
  return numeric;
6441
6444
  }
6442
- const date = new TomlDate(value);
6445
+ const date = new TomlDate2(value);
6443
6446
  if (!date.isValid()) {
6444
- throw new TomlError("invalid value", {
6447
+ throw new TomlError2("invalid value", {
6445
6448
  toml,
6446
6449
  ptr
6447
6450
  });
6448
6451
  }
6449
6452
  return date;
6450
6453
  }
6451
- function sliceAndTrimEndOf(str, startPtr, endPtr, allowNewLines) {
6454
+ function sliceAndTrimEndOf2(str, startPtr, endPtr, allowNewLines) {
6452
6455
  let value = str.slice(startPtr, endPtr);
6453
6456
  let commentIdx = value.indexOf("#");
6454
6457
  if (commentIdx > -1) {
6455
- skipComment(str, commentIdx);
6458
+ skipComment2(str, commentIdx);
6456
6459
  value = value.slice(0, commentIdx);
6457
6460
  }
6458
6461
  let trimmed = value.trimEnd();
6459
6462
  if (!allowNewLines) {
6460
6463
  let newlineIdx = value.indexOf("\n", trimmed.length);
6461
6464
  if (newlineIdx > -1) {
6462
- throw new TomlError("newlines are not allowed in inline tables", {
6465
+ throw new TomlError2("newlines are not allowed in inline tables", {
6463
6466
  toml: str,
6464
6467
  ptr: startPtr + newlineIdx
6465
6468
  });
@@ -6467,21 +6470,21 @@ ${codeblock}`, options);
6467
6470
  }
6468
6471
  return [trimmed, commentIdx];
6469
6472
  }
6470
- function extractValue(str, ptr, end, depth, integersAsBigInt) {
6473
+ function extractValue2(str, ptr, end, depth, integersAsBigInt) {
6471
6474
  if (depth === 0) {
6472
- throw new TomlError("document contains excessively nested structures. aborting.", {
6475
+ throw new TomlError2("document contains excessively nested structures. aborting.", {
6473
6476
  toml: str,
6474
6477
  ptr
6475
6478
  });
6476
6479
  }
6477
6480
  let c = str[ptr];
6478
6481
  if (c === "[" || c === "{") {
6479
- let [value, endPtr2] = c === "[" ? parseArray(str, ptr, depth, integersAsBigInt) : parseInlineTable(str, ptr, depth, integersAsBigInt);
6480
- let newPtr = end ? skipUntil(str, endPtr2, ",", end) : endPtr2;
6482
+ let [value, endPtr2] = c === "[" ? parseArray2(str, ptr, depth, integersAsBigInt) : parseInlineTable2(str, ptr, depth, integersAsBigInt);
6483
+ let newPtr = end ? skipUntil2(str, endPtr2, ",", end) : endPtr2;
6481
6484
  if (endPtr2 - newPtr && end === "}") {
6482
- let nextNewLine = indexOfNewline(str, endPtr2, newPtr);
6485
+ let nextNewLine = indexOfNewline2(str, endPtr2, newPtr);
6483
6486
  if (nextNewLine > -1) {
6484
- throw new TomlError("newlines are not allowed in inline tables", {
6487
+ throw new TomlError2("newlines are not allowed in inline tables", {
6485
6488
  toml: str,
6486
6489
  ptr: nextNewLine
6487
6490
  });
@@ -6491,12 +6494,12 @@ ${codeblock}`, options);
6491
6494
  }
6492
6495
  let endPtr;
6493
6496
  if (c === '"' || c === "'") {
6494
- endPtr = getStringEnd(str, ptr);
6495
- let parsed = parseString(str, ptr, endPtr);
6497
+ endPtr = getStringEnd2(str, ptr);
6498
+ let parsed = parseString2(str, ptr, endPtr);
6496
6499
  if (end) {
6497
- endPtr = skipVoid(str, endPtr, end !== "]");
6500
+ endPtr = skipVoid2(str, endPtr, end !== "]");
6498
6501
  if (str[endPtr] && str[endPtr] !== "," && str[endPtr] !== end && str[endPtr] !== "\n" && str[endPtr] !== "\r") {
6499
- throw new TomlError("unexpected character encountered", {
6502
+ throw new TomlError2("unexpected character encountered", {
6500
6503
  toml: str,
6501
6504
  ptr: endPtr
6502
6505
  });
@@ -6505,30 +6508,30 @@ ${codeblock}`, options);
6505
6508
  }
6506
6509
  return [parsed, endPtr];
6507
6510
  }
6508
- endPtr = skipUntil(str, ptr, ",", end);
6509
- let slice = sliceAndTrimEndOf(str, ptr, endPtr - +(str[endPtr - 1] === ","), end === "]");
6511
+ endPtr = skipUntil2(str, ptr, ",", end);
6512
+ let slice = sliceAndTrimEndOf2(str, ptr, endPtr - +(str[endPtr - 1] === ","), end === "]");
6510
6513
  if (!slice[0]) {
6511
- throw new TomlError("incomplete key-value declaration: no value specified", {
6514
+ throw new TomlError2("incomplete key-value declaration: no value specified", {
6512
6515
  toml: str,
6513
6516
  ptr
6514
6517
  });
6515
6518
  }
6516
6519
  if (end && slice[1] > -1) {
6517
- endPtr = skipVoid(str, ptr + slice[1]);
6520
+ endPtr = skipVoid2(str, ptr + slice[1]);
6518
6521
  endPtr += +(str[endPtr] === ",");
6519
6522
  }
6520
6523
  return [
6521
- parseValue(slice[0], str, ptr, integersAsBigInt),
6524
+ parseValue2(slice[0], str, ptr, integersAsBigInt),
6522
6525
  endPtr
6523
6526
  ];
6524
6527
  }
6525
- var KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \t]*$/;
6526
- function parseKey(str, ptr, end = "=") {
6528
+ var KEY_PART_RE2 = /^[a-zA-Z0-9-_]+[ \t]*$/;
6529
+ function parseKey2(str, ptr, end = "=") {
6527
6530
  let dot = ptr - 1;
6528
6531
  let parsed = [];
6529
6532
  let endPtr = str.indexOf(end, ptr);
6530
6533
  if (endPtr < 0) {
6531
- throw new TomlError("incomplete key-value: cannot find end of key", {
6534
+ throw new TomlError2("incomplete key-value: cannot find end of key", {
6532
6535
  toml: str,
6533
6536
  ptr
6534
6537
  });
@@ -6538,29 +6541,29 @@ ${codeblock}`, options);
6538
6541
  if (c !== " " && c !== " ") {
6539
6542
  if (c === '"' || c === "'") {
6540
6543
  if (c === str[ptr + 1] && c === str[ptr + 2]) {
6541
- throw new TomlError("multiline strings are not allowed in keys", {
6544
+ throw new TomlError2("multiline strings are not allowed in keys", {
6542
6545
  toml: str,
6543
6546
  ptr
6544
6547
  });
6545
6548
  }
6546
- let eos = getStringEnd(str, ptr);
6549
+ let eos = getStringEnd2(str, ptr);
6547
6550
  if (eos < 0) {
6548
- throw new TomlError("unfinished string encountered", {
6551
+ throw new TomlError2("unfinished string encountered", {
6549
6552
  toml: str,
6550
6553
  ptr
6551
6554
  });
6552
6555
  }
6553
6556
  dot = str.indexOf(".", eos);
6554
6557
  let strEnd = str.slice(eos, dot < 0 || dot > endPtr ? endPtr : dot);
6555
- let newLine = indexOfNewline(strEnd);
6558
+ let newLine = indexOfNewline2(strEnd);
6556
6559
  if (newLine > -1) {
6557
- throw new TomlError("newlines are not allowed in keys", {
6560
+ throw new TomlError2("newlines are not allowed in keys", {
6558
6561
  toml: str,
6559
6562
  ptr: ptr + dot + newLine
6560
6563
  });
6561
6564
  }
6562
6565
  if (strEnd.trimStart()) {
6563
- throw new TomlError("found extra tokens after the string part", {
6566
+ throw new TomlError2("found extra tokens after the string part", {
6564
6567
  toml: str,
6565
6568
  ptr: eos
6566
6569
  });
@@ -6568,18 +6571,18 @@ ${codeblock}`, options);
6568
6571
  if (endPtr < eos) {
6569
6572
  endPtr = str.indexOf(end, eos);
6570
6573
  if (endPtr < 0) {
6571
- throw new TomlError("incomplete key-value: cannot find end of key", {
6574
+ throw new TomlError2("incomplete key-value: cannot find end of key", {
6572
6575
  toml: str,
6573
6576
  ptr
6574
6577
  });
6575
6578
  }
6576
6579
  }
6577
- parsed.push(parseString(str, ptr, eos));
6580
+ parsed.push(parseString2(str, ptr, eos));
6578
6581
  } else {
6579
6582
  dot = str.indexOf(".", ptr);
6580
6583
  let part = str.slice(ptr, dot < 0 || dot > endPtr ? endPtr : dot);
6581
- if (!KEY_PART_RE.test(part)) {
6582
- throw new TomlError("only letter, numbers, dashes and underscores are allowed in keys", {
6584
+ if (!KEY_PART_RE2.test(part)) {
6585
+ throw new TomlError2("only letter, numbers, dashes and underscores are allowed in keys", {
6583
6586
  toml: str,
6584
6587
  ptr
6585
6588
  });
@@ -6588,9 +6591,9 @@ ${codeblock}`, options);
6588
6591
  }
6589
6592
  }
6590
6593
  } while (dot + 1 && dot < endPtr);
6591
- return [parsed, skipVoid(str, endPtr + 1, true, true)];
6594
+ return [parsed, skipVoid2(str, endPtr + 1, true, true)];
6592
6595
  }
6593
- function parseInlineTable(str, ptr, depth, integersAsBigInt) {
6596
+ function parseInlineTable2(str, ptr, depth, integersAsBigInt) {
6594
6597
  let res = {};
6595
6598
  let seen = /* @__PURE__ */ new Set();
6596
6599
  let c;
@@ -6599,22 +6602,22 @@ ${codeblock}`, options);
6599
6602
  while ((c = str[ptr++]) !== "}" && c) {
6600
6603
  let err = { toml: str, ptr: ptr - 1 };
6601
6604
  if (c === "\n") {
6602
- throw new TomlError("newlines are not allowed in inline tables", err);
6605
+ throw new TomlError2("newlines are not allowed in inline tables", err);
6603
6606
  } else if (c === "#") {
6604
- throw new TomlError("inline tables cannot contain comments", err);
6607
+ throw new TomlError2("inline tables cannot contain comments", err);
6605
6608
  } else if (c === ",") {
6606
- throw new TomlError("expected key-value, found comma", err);
6609
+ throw new TomlError2("expected key-value, found comma", err);
6607
6610
  } else if (c !== " " && c !== " ") {
6608
6611
  let k;
6609
6612
  let t = res;
6610
6613
  let hasOwn = false;
6611
- let [key, keyEndPtr] = parseKey(str, ptr - 1);
6614
+ let [key, keyEndPtr] = parseKey2(str, ptr - 1);
6612
6615
  for (let i = 0; i < key.length; i++) {
6613
6616
  if (i)
6614
6617
  t = hasOwn ? t[k] : t[k] = {};
6615
6618
  k = key[i];
6616
6619
  if ((hasOwn = Object.hasOwn(t, k)) && (typeof t[k] !== "object" || seen.has(t[k]))) {
6617
- throw new TomlError("trying to redefine an already defined value", {
6620
+ throw new TomlError2("trying to redefine an already defined value", {
6618
6621
  toml: str,
6619
6622
  ptr
6620
6623
  });
@@ -6624,12 +6627,12 @@ ${codeblock}`, options);
6624
6627
  }
6625
6628
  }
6626
6629
  if (hasOwn) {
6627
- throw new TomlError("trying to redefine an already defined value", {
6630
+ throw new TomlError2("trying to redefine an already defined value", {
6628
6631
  toml: str,
6629
6632
  ptr
6630
6633
  });
6631
6634
  }
6632
- let [value, valueEndPtr] = extractValue(str, keyEndPtr, "}", depth - 1, integersAsBigInt);
6635
+ let [value, valueEndPtr] = extractValue2(str, keyEndPtr, "}", depth - 1, integersAsBigInt);
6633
6636
  seen.add(value);
6634
6637
  t[k] = value;
6635
6638
  ptr = valueEndPtr;
@@ -6637,46 +6640,46 @@ ${codeblock}`, options);
6637
6640
  }
6638
6641
  }
6639
6642
  if (comma) {
6640
- throw new TomlError("trailing commas are not allowed in inline tables", {
6643
+ throw new TomlError2("trailing commas are not allowed in inline tables", {
6641
6644
  toml: str,
6642
6645
  ptr: comma
6643
6646
  });
6644
6647
  }
6645
6648
  if (!c) {
6646
- throw new TomlError("unfinished table encountered", {
6649
+ throw new TomlError2("unfinished table encountered", {
6647
6650
  toml: str,
6648
6651
  ptr
6649
6652
  });
6650
6653
  }
6651
6654
  return [res, ptr];
6652
6655
  }
6653
- function parseArray(str, ptr, depth, integersAsBigInt) {
6656
+ function parseArray2(str, ptr, depth, integersAsBigInt) {
6654
6657
  let res = [];
6655
6658
  let c;
6656
6659
  ptr++;
6657
6660
  while ((c = str[ptr++]) !== "]" && c) {
6658
6661
  if (c === ",") {
6659
- throw new TomlError("expected value, found comma", {
6662
+ throw new TomlError2("expected value, found comma", {
6660
6663
  toml: str,
6661
6664
  ptr: ptr - 1
6662
6665
  });
6663
6666
  } else if (c === "#")
6664
- ptr = skipComment(str, ptr);
6667
+ ptr = skipComment2(str, ptr);
6665
6668
  else if (c !== " " && c !== " " && c !== "\n" && c !== "\r") {
6666
- let e = extractValue(str, ptr - 1, "]", depth - 1, integersAsBigInt);
6669
+ let e = extractValue2(str, ptr - 1, "]", depth - 1, integersAsBigInt);
6667
6670
  res.push(e[0]);
6668
6671
  ptr = e[1];
6669
6672
  }
6670
6673
  }
6671
6674
  if (!c) {
6672
- throw new TomlError("unfinished array encountered", {
6675
+ throw new TomlError2("unfinished array encountered", {
6673
6676
  toml: str,
6674
6677
  ptr
6675
6678
  });
6676
6679
  }
6677
6680
  return [res, ptr];
6678
6681
  }
6679
- function peekTable(key, table, meta, type) {
6682
+ function peekTable2(key, table, meta, type) {
6680
6683
  let t = table;
6681
6684
  let m = meta;
6682
6685
  let k;
@@ -6735,25 +6738,25 @@ ${codeblock}`, options);
6735
6738
  }
6736
6739
  return [k, t, state.c];
6737
6740
  }
6738
- function parse(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
6741
+ function parse2(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
6739
6742
  let res = {};
6740
6743
  let meta = {};
6741
6744
  let tbl = res;
6742
6745
  let m = meta;
6743
- for (let ptr = skipVoid(toml, 0); ptr < toml.length; ) {
6746
+ for (let ptr = skipVoid2(toml, 0); ptr < toml.length; ) {
6744
6747
  if (toml[ptr] === "[") {
6745
6748
  let isTableArray = toml[++ptr] === "[";
6746
- let k = parseKey(toml, ptr += +isTableArray, "]");
6749
+ let k = parseKey2(toml, ptr += +isTableArray, "]");
6747
6750
  if (isTableArray) {
6748
6751
  if (toml[k[1] - 1] !== "]") {
6749
- throw new TomlError("expected end of table declaration", {
6752
+ throw new TomlError2("expected end of table declaration", {
6750
6753
  toml,
6751
6754
  ptr: k[1] - 1
6752
6755
  });
6753
6756
  }
6754
6757
  k[1]++;
6755
6758
  }
6756
- let p = peekTable(
6759
+ let p = peekTable2(
6757
6760
  k[0],
6758
6761
  res,
6759
6762
  meta,
@@ -6761,7 +6764,7 @@ ${codeblock}`, options);
6761
6764
  /* Type.EXPLICIT */
6762
6765
  );
6763
6766
  if (!p) {
6764
- throw new TomlError("trying to redefine an already defined table or value", {
6767
+ throw new TomlError2("trying to redefine an already defined table or value", {
6765
6768
  toml,
6766
6769
  ptr
6767
6770
  });
@@ -6770,8 +6773,8 @@ ${codeblock}`, options);
6770
6773
  tbl = p[1];
6771
6774
  ptr = k[1];
6772
6775
  } else {
6773
- let k = parseKey(toml, ptr);
6774
- let p = peekTable(
6776
+ let k = parseKey2(toml, ptr);
6777
+ let p = peekTable2(
6775
6778
  k[0],
6776
6779
  tbl,
6777
6780
  m,
@@ -6779,28 +6782,28 @@ ${codeblock}`, options);
6779
6782
  /* Type.DOTTED */
6780
6783
  );
6781
6784
  if (!p) {
6782
- throw new TomlError("trying to redefine an already defined table or value", {
6785
+ throw new TomlError2("trying to redefine an already defined table or value", {
6783
6786
  toml,
6784
6787
  ptr
6785
6788
  });
6786
6789
  }
6787
- let v = extractValue(toml, k[1], void 0, maxDepth, integersAsBigInt);
6790
+ let v = extractValue2(toml, k[1], void 0, maxDepth, integersAsBigInt);
6788
6791
  p[1][p[0]] = v[0];
6789
6792
  ptr = v[1];
6790
6793
  }
6791
- ptr = skipVoid(toml, ptr, true);
6794
+ ptr = skipVoid2(toml, ptr, true);
6792
6795
  if (toml[ptr] && toml[ptr] !== "\n" && toml[ptr] !== "\r") {
6793
- throw new TomlError("each key-value declaration must be followed by an end-of-line", {
6796
+ throw new TomlError2("each key-value declaration must be followed by an end-of-line", {
6794
6797
  toml,
6795
6798
  ptr
6796
6799
  });
6797
6800
  }
6798
- ptr = skipVoid(toml, ptr);
6801
+ ptr = skipVoid2(toml, ptr);
6799
6802
  }
6800
6803
  return res;
6801
6804
  }
6802
- var BARE_KEY = /^[a-z0-9-_]+$/i;
6803
- function extendedTypeOf(obj) {
6805
+ var BARE_KEY2 = /^[a-z0-9-_]+$/i;
6806
+ function extendedTypeOf2(obj) {
6804
6807
  let type = typeof obj;
6805
6808
  if (type === "object") {
6806
6809
  if (Array.isArray(obj))
@@ -6810,17 +6813,17 @@ ${codeblock}`, options);
6810
6813
  }
6811
6814
  return type;
6812
6815
  }
6813
- function isArrayOfTables(obj) {
6816
+ function isArrayOfTables2(obj) {
6814
6817
  for (let i = 0; i < obj.length; i++) {
6815
- if (extendedTypeOf(obj[i]) !== "object")
6818
+ if (extendedTypeOf2(obj[i]) !== "object")
6816
6819
  return false;
6817
6820
  }
6818
6821
  return obj.length != 0;
6819
6822
  }
6820
- function formatString(s) {
6823
+ function formatString2(s) {
6821
6824
  return JSON.stringify(s).replace(/\x7f/g, "\\u007f");
6822
6825
  }
6823
- function stringifyValue(val, type, depth, numberAsFloat) {
6826
+ function stringifyValue2(val, type, depth, numberAsFloat) {
6824
6827
  if (depth === 0) {
6825
6828
  throw new Error("Could not stringify the object: maximum object depth exceeded");
6826
6829
  }
@@ -6839,7 +6842,7 @@ ${codeblock}`, options);
6839
6842
  return val.toString();
6840
6843
  }
6841
6844
  if (type === "string") {
6842
- return formatString(val);
6845
+ return formatString2(val);
6843
6846
  }
6844
6847
  if (type === "date") {
6845
6848
  if (isNaN(val.getTime())) {
@@ -6848,13 +6851,13 @@ ${codeblock}`, options);
6848
6851
  return val.toISOString();
6849
6852
  }
6850
6853
  if (type === "object") {
6851
- return stringifyInlineTable(val, depth, numberAsFloat);
6854
+ return stringifyInlineTable2(val, depth, numberAsFloat);
6852
6855
  }
6853
6856
  if (type === "array") {
6854
- return stringifyArray(val, depth, numberAsFloat);
6857
+ return stringifyArray2(val, depth, numberAsFloat);
6855
6858
  }
6856
6859
  }
6857
- function stringifyInlineTable(obj, depth, numberAsFloat) {
6860
+ function stringifyInlineTable2(obj, depth, numberAsFloat) {
6858
6861
  let keys = Object.keys(obj);
6859
6862
  if (keys.length === 0)
6860
6863
  return "{}";
@@ -6863,13 +6866,13 @@ ${codeblock}`, options);
6863
6866
  let k = keys[i];
6864
6867
  if (i)
6865
6868
  res += ", ";
6866
- res += BARE_KEY.test(k) ? k : formatString(k);
6869
+ res += BARE_KEY2.test(k) ? k : formatString2(k);
6867
6870
  res += " = ";
6868
- res += stringifyValue(obj[k], extendedTypeOf(obj[k]), depth - 1, numberAsFloat);
6871
+ res += stringifyValue2(obj[k], extendedTypeOf2(obj[k]), depth - 1, numberAsFloat);
6869
6872
  }
6870
6873
  return res + " }";
6871
6874
  }
6872
- function stringifyArray(array, depth, numberAsFloat) {
6875
+ function stringifyArray2(array, depth, numberAsFloat) {
6873
6876
  if (array.length === 0)
6874
6877
  return "[]";
6875
6878
  let res = "[ ";
@@ -6879,11 +6882,11 @@ ${codeblock}`, options);
6879
6882
  if (array[i] === null || array[i] === void 0) {
6880
6883
  throw new TypeError("arrays cannot contain null or undefined values");
6881
6884
  }
6882
- res += stringifyValue(array[i], extendedTypeOf(array[i]), depth - 1, numberAsFloat);
6885
+ res += stringifyValue2(array[i], extendedTypeOf2(array[i]), depth - 1, numberAsFloat);
6883
6886
  }
6884
6887
  return res + " ]";
6885
6888
  }
6886
- function stringifyArrayTable(array, key, depth, numberAsFloat) {
6889
+ function stringifyArrayTable2(array, key, depth, numberAsFloat) {
6887
6890
  if (depth === 0) {
6888
6891
  throw new Error("Could not stringify the object: maximum object depth exceeded");
6889
6892
  }
@@ -6891,11 +6894,11 @@ ${codeblock}`, options);
6891
6894
  for (let i = 0; i < array.length; i++) {
6892
6895
  res += `${res && "\n"}[[${key}]]
6893
6896
  `;
6894
- res += stringifyTable(0, array[i], key, depth, numberAsFloat);
6897
+ res += stringifyTable2(0, array[i], key, depth, numberAsFloat);
6895
6898
  }
6896
6899
  return res;
6897
6900
  }
6898
- function stringifyTable(tableKey, obj, prefix, depth, numberAsFloat) {
6901
+ function stringifyTable2(tableKey, obj, prefix, depth, numberAsFloat) {
6899
6902
  if (depth === 0) {
6900
6903
  throw new Error("Could not stringify the object: maximum object depth exceeded");
6901
6904
  }
@@ -6905,20 +6908,20 @@ ${codeblock}`, options);
6905
6908
  for (let i = 0; i < keys.length; i++) {
6906
6909
  let k = keys[i];
6907
6910
  if (obj[k] !== null && obj[k] !== void 0) {
6908
- let type = extendedTypeOf(obj[k]);
6911
+ let type = extendedTypeOf2(obj[k]);
6909
6912
  if (type === "symbol" || type === "function") {
6910
6913
  throw new TypeError(`cannot serialize values of type '${type}'`);
6911
6914
  }
6912
- let key = BARE_KEY.test(k) ? k : formatString(k);
6913
- if (type === "array" && isArrayOfTables(obj[k])) {
6914
- tables += (tables && "\n") + stringifyArrayTable(obj[k], prefix ? `${prefix}.${key}` : key, depth - 1, numberAsFloat);
6915
+ let key = BARE_KEY2.test(k) ? k : formatString2(k);
6916
+ if (type === "array" && isArrayOfTables2(obj[k])) {
6917
+ tables += (tables && "\n") + stringifyArrayTable2(obj[k], prefix ? `${prefix}.${key}` : key, depth - 1, numberAsFloat);
6915
6918
  } else if (type === "object") {
6916
6919
  let tblKey = prefix ? `${prefix}.${key}` : key;
6917
- tables += (tables && "\n") + stringifyTable(tblKey, obj[k], tblKey, depth - 1, numberAsFloat);
6920
+ tables += (tables && "\n") + stringifyTable2(tblKey, obj[k], tblKey, depth - 1, numberAsFloat);
6918
6921
  } else {
6919
6922
  preamble += key;
6920
6923
  preamble += " = ";
6921
- preamble += stringifyValue(obj[k], type, depth, numberAsFloat);
6924
+ preamble += stringifyValue2(obj[k], type, depth, numberAsFloat);
6922
6925
  preamble += "\n";
6923
6926
  }
6924
6927
  }
@@ -6929,16 +6932,16 @@ ${preamble}` : `[${tableKey}]`;
6929
6932
  return preamble && tables ? `${preamble}
6930
6933
  ${tables}` : preamble || tables;
6931
6934
  }
6932
- function stringify(obj, { maxDepth = 1e3, numbersAsFloat = false } = {}) {
6933
- if (extendedTypeOf(obj) !== "object") {
6935
+ function stringify2(obj, { maxDepth = 1e3, numbersAsFloat = false } = {}) {
6936
+ if (extendedTypeOf2(obj) !== "object") {
6934
6937
  throw new TypeError("stringify can only be called with an object");
6935
6938
  }
6936
- let str = stringifyTable(0, obj, "", maxDepth, numbersAsFloat);
6939
+ let str = stringifyTable2(0, obj, "", maxDepth, numbersAsFloat);
6937
6940
  if (str[str.length - 1] !== "\n")
6938
6941
  return str + "\n";
6939
6942
  return str;
6940
6943
  }
6941
- var index_default = { parse, stringify, TomlDate, TomlError };
6944
+ var index_default = { parse: parse2, stringify: stringify2, TomlDate: TomlDate2, TomlError: TomlError2 };
6942
6945
  }
6943
6946
  });
6944
6947
 
@@ -7316,7 +7319,7 @@ var require_frameworks = __commonJS({
7316
7319
  description: "A new Remix app \u2014 the result of running `npx create-remix`.",
7317
7320
  website: "https://remix.run",
7318
7321
  sort: 6,
7319
- supersedes: ["hydrogen", "vite"],
7322
+ supersedes: ["hydrogen", "vite", "node"],
7320
7323
  useRuntime: { src: "package.json", use: "@vercel/remix-builder" },
7321
7324
  ignoreRuntimes: ["@vercel/node"],
7322
7325
  detectors: {
@@ -7361,7 +7364,7 @@ var require_frameworks = __commonJS({
7361
7364
  description: "A user-obsessed, standards-focused, multi-strategy router you can deploy anywhere.",
7362
7365
  website: "https://reactrouter.com",
7363
7366
  sort: 7,
7364
- supersedes: ["hydrogen", "vite"],
7367
+ supersedes: ["hydrogen", "vite", "node"],
7365
7368
  useRuntime: { src: "package.json", use: "@vercel/remix-builder" },
7366
7369
  ignoreRuntimes: ["@vercel/node"],
7367
7370
  detectors: {
@@ -9479,6 +9482,7 @@ var require_frameworks = __commonJS({
9479
9482
  tagline: "Web framework built on Web Standards",
9480
9483
  description: "Fast, lightweight, built on Web Standards. Support for any JavaScript runtime.",
9481
9484
  website: "https://hono.dev",
9485
+ supersedes: ["node"],
9482
9486
  useRuntime: { src: "index.js", use: "@vercel/hono" },
9483
9487
  defaultRoutes: [
9484
9488
  {
@@ -9666,6 +9670,7 @@ var require_frameworks = __commonJS({
9666
9670
  tagline: "Fast, unopinionated, minimalist web framework for Node.js",
9667
9671
  description: "Fast, unopinionated, minimalist web framework for Node.js",
9668
9672
  website: "https://expressjs.com",
9673
+ supersedes: ["node"],
9669
9674
  useRuntime: { src: "index.js", use: "@vercel/express" },
9670
9675
  defaultRoutes: [
9671
9676
  {
@@ -9851,6 +9856,7 @@ var require_frameworks = __commonJS({
9851
9856
  tagline: "Universal, Tiny, and Fast Servers",
9852
9857
  description: "H(TTP) server framework built on top of web standards for high performance and composability.",
9853
9858
  website: "https://h3.dev/",
9859
+ supersedes: ["node"],
9854
9860
  useRuntime: { src: "index.js", use: "@vercel/h3" },
9855
9861
  defaultRoutes: [
9856
9862
  {
@@ -10036,6 +10042,7 @@ var require_frameworks = __commonJS({
10036
10042
  tagline: "Expressive middleware for Node.js using ES2017 async functions",
10037
10043
  description: "Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.",
10038
10044
  website: "https://koajs.com",
10045
+ supersedes: ["node"],
10039
10046
  useRuntime: { src: "index.js", use: "@vercel/koa" },
10040
10047
  defaultRoutes: [
10041
10048
  {
@@ -10221,6 +10228,7 @@ var require_frameworks = __commonJS({
10221
10228
  tagline: "Framework for building efficient, scalable Node.js server-side applications",
10222
10229
  description: "A progressive Node.js framework for building efficient, reliable and scalable server-side applications.",
10223
10230
  website: "https://nestjs.com/",
10231
+ supersedes: ["node"],
10224
10232
  useRuntime: { src: "index.js", use: "@vercel/nestjs" },
10225
10233
  defaultRoutes: [
10226
10234
  {
@@ -10454,6 +10462,7 @@ var require_frameworks = __commonJS({
10454
10462
  tagline: "Ergonomic framework for humans",
10455
10463
  description: "TypeScript with End-to-End Type Safety, type integrity, and exceptional developer experience. Supercharged by Bun.",
10456
10464
  website: "https://elysiajs.com/",
10465
+ supersedes: ["node"],
10457
10466
  useRuntime: { src: "index.js", use: "@vercel/elysia" },
10458
10467
  defaultRoutes: [
10459
10468
  {
@@ -10639,6 +10648,7 @@ var require_frameworks = __commonJS({
10639
10648
  tagline: "Fast and low overhead web framework, for Node.js",
10640
10649
  description: "Fastify is a web framework highly focused on providing the best developer experience with the least overhead and a powerful plugin architecture.",
10641
10650
  website: "https://fastify.dev/",
10651
+ supersedes: ["node"],
10642
10652
  useRuntime: { src: "index.js", use: "@vercel/fastify" },
10643
10653
  defaultRoutes: [
10644
10654
  {
@@ -11005,21 +11015,55 @@ var require_frameworks = __commonJS({
11005
11015
  {
11006
11016
  name: "Node",
11007
11017
  slug: "node",
11008
- experimental: true,
11009
11018
  runtimeFramework: true,
11010
11019
  logo: "https://api-frameworks.vercel.sh/framework-logos/node.svg",
11011
11020
  tagline: "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.",
11012
11021
  description: "A generic Node.js application deployed as a serverless function.",
11013
11022
  website: "https://nodejs.org",
11014
- useRuntime: { src: "server.ts", use: "@vercel/backends" },
11023
+ useRuntime: { src: "package.json", use: "@vercel/backends" },
11015
11024
  ignoreRuntimes: ["@vercel/node"],
11016
11025
  detectors: {
11017
11026
  every: [
11027
+ {
11028
+ path: "package.json"
11029
+ }
11030
+ ],
11031
+ some: [
11032
+ {
11033
+ path: "server.cjs"
11034
+ },
11035
+ {
11036
+ path: "server.js"
11037
+ },
11038
+ {
11039
+ path: "server.mjs"
11040
+ },
11041
+ {
11042
+ path: "server.mts"
11043
+ },
11018
11044
  {
11019
11045
  path: "server.ts"
11020
11046
  },
11021
11047
  {
11022
- path: "package.json"
11048
+ path: "server.cts"
11049
+ },
11050
+ {
11051
+ path: "src/server.cjs"
11052
+ },
11053
+ {
11054
+ path: "src/server.js"
11055
+ },
11056
+ {
11057
+ path: "src/server.mjs"
11058
+ },
11059
+ {
11060
+ path: "src/server.mts"
11061
+ },
11062
+ {
11063
+ path: "src/server.ts"
11064
+ },
11065
+ {
11066
+ path: "src/server.cts"
11023
11067
  }
11024
11068
  ]
11025
11069
  },
@@ -11032,7 +11076,7 @@ var require_frameworks = __commonJS({
11032
11076
  value: null
11033
11077
  },
11034
11078
  devCommand: {
11035
- placeholder: "`npm run dev` or `npx ts-node server.ts`",
11079
+ placeholder: "`npm run dev`, `node server.js`, or `npx ts-node server.ts`",
11036
11080
  value: null
11037
11081
  },
11038
11082
  outputDirectory: {
@@ -11131,6 +11175,34 @@ var require_frameworks = __commonJS({
11131
11175
  },
11132
11176
  getOutputDirName: async () => "public"
11133
11177
  },
11178
+ {
11179
+ name: "Mastra",
11180
+ slug: "mastra",
11181
+ logo: "https://api-frameworks.vercel.sh/framework-logos/mastra.svg",
11182
+ darkModeLogo: "https://api-frameworks.vercel.sh/framework-logos/mastra-dark.svg",
11183
+ tagline: "Build AI agents with a modern TypeScript stack",
11184
+ description: "Mastra is a framework for building AI-powered apps and agents with workflows, memory, streaming, evals, tracing, and Studio, an interactive UI for dev and testing.",
11185
+ website: "https://mastra.ai",
11186
+ detectors: {
11187
+ every: [{ matchPackage: "mastra" }]
11188
+ },
11189
+ settings: {
11190
+ installCommand: {
11191
+ placeholder: "`yarn install`, `pnpm install`, `npm install`, or `bun install`"
11192
+ },
11193
+ buildCommand: {
11194
+ placeholder: "`npm run build` or `mastra build`",
11195
+ value: "mastra build"
11196
+ },
11197
+ devCommand: {
11198
+ value: "mastra dev"
11199
+ },
11200
+ outputDirectory: {
11201
+ value: ".mastra"
11202
+ }
11203
+ },
11204
+ getOutputDirName: async () => ".mastra"
11205
+ },
11134
11206
  {
11135
11207
  name: "Other",
11136
11208
  slug: null,
@@ -13413,7 +13485,7 @@ var require_ensure = __commonJS({
13413
13485
  // ../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/utils.js
13414
13486
  var require_utils3 = __commonJS({
13415
13487
  "../../node_modules/.pnpm/jsonfile@6.1.0/node_modules/jsonfile/utils.js"(exports, module2) {
13416
- function stringify(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) {
13488
+ function stringify2(obj, { EOL = "\n", finalEOL = true, replacer = null, spaces } = {}) {
13417
13489
  const EOF = finalEOL ? EOL : "";
13418
13490
  const str = JSON.stringify(obj, replacer, spaces);
13419
13491
  return str.replace(/\n/g, EOL) + EOF;
@@ -13423,7 +13495,7 @@ var require_utils3 = __commonJS({
13423
13495
  content = content.toString("utf8");
13424
13496
  return content.replace(/^\uFEFF/, "");
13425
13497
  }
13426
- module2.exports = { stringify, stripBom };
13498
+ module2.exports = { stringify: stringify2, stripBom };
13427
13499
  }
13428
13500
  });
13429
13501
 
@@ -13437,7 +13509,7 @@ var require_jsonfile = __commonJS({
13437
13509
  _fs = require("fs");
13438
13510
  }
13439
13511
  var universalify = require_universalify();
13440
- var { stringify, stripBom } = require_utils3();
13512
+ var { stringify: stringify2, stripBom } = require_utils3();
13441
13513
  async function _readFile(file, options = {}) {
13442
13514
  if (typeof options === "string") {
13443
13515
  options = { encoding: options };
@@ -13481,13 +13553,13 @@ var require_jsonfile = __commonJS({
13481
13553
  }
13482
13554
  async function _writeFile(file, obj, options = {}) {
13483
13555
  const fs5 = options.fs || _fs;
13484
- const str = stringify(obj, options);
13556
+ const str = stringify2(obj, options);
13485
13557
  await universalify.fromCallback(fs5.writeFile)(file, str, options);
13486
13558
  }
13487
13559
  var writeFile = universalify.fromPromise(_writeFile);
13488
13560
  function writeFileSync(file, obj, options = {}) {
13489
13561
  const fs5 = options.fs || _fs;
13490
- const str = stringify(obj, options);
13562
+ const str = stringify2(obj, options);
13491
13563
  return fs5.writeFileSync(file, str, options);
13492
13564
  }
13493
13565
  var jsonfile = {
@@ -13561,10 +13633,10 @@ var require_output = __commonJS({
13561
13633
  var require_output_json = __commonJS({
13562
13634
  "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/output-json.js"(exports, module2) {
13563
13635
  "use strict";
13564
- var { stringify } = require_utils3();
13636
+ var { stringify: stringify2 } = require_utils3();
13565
13637
  var { outputFile } = require_output();
13566
13638
  async function outputJson(file, data, options = {}) {
13567
- const str = stringify(data, options);
13639
+ const str = stringify2(data, options);
13568
13640
  await outputFile(file, str, options);
13569
13641
  }
13570
13642
  module2.exports = outputJson;
@@ -13575,10 +13647,10 @@ var require_output_json = __commonJS({
13575
13647
  var require_output_json_sync = __commonJS({
13576
13648
  "../../node_modules/.pnpm/fs-extra@10.0.0/node_modules/fs-extra/lib/json/output-json-sync.js"(exports, module2) {
13577
13649
  "use strict";
13578
- var { stringify } = require_utils3();
13650
+ var { stringify: stringify2 } = require_utils3();
13579
13651
  var { outputFileSync } = require_output();
13580
13652
  function outputJsonSync(file, data, options) {
13581
- const str = stringify(data, options);
13653
+ const str = stringify2(data, options);
13582
13654
  outputFileSync(file, str, options);
13583
13655
  }
13584
13656
  module2.exports = outputJsonSync;
@@ -14173,7 +14245,7 @@ var require_semver = __commonJS({
14173
14245
  var require_parse = __commonJS({
14174
14246
  "../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/parse.js"(exports, module2) {
14175
14247
  var SemVer = require_semver();
14176
- var parse = (version2, options, throwErrors = false) => {
14248
+ var parse2 = (version2, options, throwErrors = false) => {
14177
14249
  if (version2 instanceof SemVer) {
14178
14250
  return version2;
14179
14251
  }
@@ -14186,16 +14258,16 @@ var require_parse = __commonJS({
14186
14258
  throw er;
14187
14259
  }
14188
14260
  };
14189
- module2.exports = parse;
14261
+ module2.exports = parse2;
14190
14262
  }
14191
14263
  });
14192
14264
 
14193
14265
  // ../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/valid.js
14194
14266
  var require_valid = __commonJS({
14195
14267
  "../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/valid.js"(exports, module2) {
14196
- var parse = require_parse();
14268
+ var parse2 = require_parse();
14197
14269
  var valid = (version2, options) => {
14198
- const v = parse(version2, options);
14270
+ const v = parse2(version2, options);
14199
14271
  return v ? v.version : null;
14200
14272
  };
14201
14273
  module2.exports = valid;
@@ -14205,9 +14277,9 @@ var require_valid = __commonJS({
14205
14277
  // ../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/clean.js
14206
14278
  var require_clean = __commonJS({
14207
14279
  "../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/clean.js"(exports, module2) {
14208
- var parse = require_parse();
14280
+ var parse2 = require_parse();
14209
14281
  var clean = (version2, options) => {
14210
- const s = parse(version2.trim().replace(/^[=v]+/, ""), options);
14282
+ const s = parse2(version2.trim().replace(/^[=v]+/, ""), options);
14211
14283
  return s ? s.version : null;
14212
14284
  };
14213
14285
  module2.exports = clean;
@@ -14240,10 +14312,10 @@ var require_inc = __commonJS({
14240
14312
  // ../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/diff.js
14241
14313
  var require_diff = __commonJS({
14242
14314
  "../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/diff.js"(exports, module2) {
14243
- var parse = require_parse();
14315
+ var parse2 = require_parse();
14244
14316
  var diff = (version1, version2) => {
14245
- const v1 = parse(version1, null, true);
14246
- const v2 = parse(version2, null, true);
14317
+ const v1 = parse2(version1, null, true);
14318
+ const v2 = parse2(version2, null, true);
14247
14319
  const comparison = v1.compare(v2);
14248
14320
  if (comparison === 0) {
14249
14321
  return null;
@@ -14311,9 +14383,9 @@ var require_patch = __commonJS({
14311
14383
  // ../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/prerelease.js
14312
14384
  var require_prerelease = __commonJS({
14313
14385
  "../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/prerelease.js"(exports, module2) {
14314
- var parse = require_parse();
14386
+ var parse2 = require_parse();
14315
14387
  var prerelease = (version2, options) => {
14316
- const parsed = parse(version2, options);
14388
+ const parsed = parse2(version2, options);
14317
14389
  return parsed && parsed.prerelease.length ? parsed.prerelease : null;
14318
14390
  };
14319
14391
  module2.exports = prerelease;
@@ -14485,7 +14557,7 @@ var require_cmp = __commonJS({
14485
14557
  var require_coerce = __commonJS({
14486
14558
  "../../node_modules/.pnpm/semver@7.5.2/node_modules/semver/functions/coerce.js"(exports, module2) {
14487
14559
  var SemVer = require_semver();
14488
- var parse = require_parse();
14560
+ var parse2 = require_parse();
14489
14561
  var { safeRe: re, t } = require_re();
14490
14562
  var coerce = (version2, options) => {
14491
14563
  if (version2 instanceof SemVer) {
@@ -14514,7 +14586,7 @@ var require_coerce = __commonJS({
14514
14586
  if (match === null) {
14515
14587
  return null;
14516
14588
  }
14517
- return parse(`${match[2]}.${match[3] || "0"}.${match[4] || "0"}`, options);
14589
+ return parse2(`${match[2]}.${match[3] || "0"}.${match[4] || "0"}`, options);
14518
14590
  };
14519
14591
  module2.exports = coerce;
14520
14592
  }
@@ -16109,7 +16181,7 @@ var require_semver2 = __commonJS({
16109
16181
  var constants2 = require_constants();
16110
16182
  var SemVer = require_semver();
16111
16183
  var identifiers = require_identifiers();
16112
- var parse = require_parse();
16184
+ var parse2 = require_parse();
16113
16185
  var valid = require_valid();
16114
16186
  var clean = require_clean();
16115
16187
  var inc = require_inc();
@@ -16147,7 +16219,7 @@ var require_semver2 = __commonJS({
16147
16219
  var simplifyRange = require_simplify();
16148
16220
  var subset = require_subset();
16149
16221
  module2.exports = {
16150
- parse,
16222
+ parse: parse2,
16151
16223
  valid,
16152
16224
  clean,
16153
16225
  inc,
@@ -16452,7 +16524,7 @@ var require_dist4 = __commonJS({
16452
16524
  }
16453
16525
  return { ...defaults, ...options };
16454
16526
  }
16455
- function parse(contents, options) {
16527
+ function parse2(contents, options) {
16456
16528
  const config = {};
16457
16529
  const lines = contents.split(RE_LINES);
16458
16530
  for (const line of lines) {
@@ -16478,7 +16550,7 @@ var require_dist4 = __commonJS({
16478
16550
  if (!fs5.existsSync(path22)) {
16479
16551
  return {};
16480
16552
  }
16481
- return parse(fs5.readFileSync(path22, "utf-8"), options);
16553
+ return parse2(fs5.readFileSync(path22, "utf-8"), options);
16482
16554
  }
16483
16555
  function read(options) {
16484
16556
  options = withDefaults(options);
@@ -16518,7 +16590,7 @@ var require_dist4 = __commonJS({
16518
16590
  return update2(config, options);
16519
16591
  }
16520
16592
  exports.defaults = defaults;
16521
- exports.parse = parse;
16593
+ exports.parse = parse2;
16522
16594
  exports.parseFile = parseFile;
16523
16595
  exports.read = read;
16524
16596
  exports.readUser = readUser;
@@ -17057,9 +17129,9 @@ var require_minimatch = __commonJS({
17057
17129
  throw new TypeError("pattern is too long");
17058
17130
  }
17059
17131
  };
17060
- Minimatch.prototype.parse = parse;
17132
+ Minimatch.prototype.parse = parse2;
17061
17133
  var SUBPARSE = {};
17062
- function parse(pattern, isSub) {
17134
+ function parse2(pattern, isSub) {
17063
17135
  assertValidPattern(pattern);
17064
17136
  var options = this.options;
17065
17137
  if (pattern === "**") {
@@ -17588,8 +17660,8 @@ var require_semver3 = __commonJS({
17588
17660
  }
17589
17661
  }
17590
17662
  var i;
17591
- exports.parse = parse;
17592
- function parse(version2, options) {
17663
+ exports.parse = parse2;
17664
+ function parse2(version2, options) {
17593
17665
  if (!options || typeof options !== "object") {
17594
17666
  options = {
17595
17667
  loose: !!options,
@@ -17617,12 +17689,12 @@ var require_semver3 = __commonJS({
17617
17689
  }
17618
17690
  exports.valid = valid;
17619
17691
  function valid(version2, options) {
17620
- var v = parse(version2, options);
17692
+ var v = parse2(version2, options);
17621
17693
  return v ? v.version : null;
17622
17694
  }
17623
17695
  exports.clean = clean;
17624
17696
  function clean(version2, options) {
17625
- var s = parse(version2.trim().replace(/^[=v]+/, ""), options);
17697
+ var s = parse2(version2.trim().replace(/^[=v]+/, ""), options);
17626
17698
  return s ? s.version : null;
17627
17699
  }
17628
17700
  exports.SemVer = SemVer;
@@ -17854,8 +17926,8 @@ var require_semver3 = __commonJS({
17854
17926
  if (eq(version1, version2)) {
17855
17927
  return null;
17856
17928
  } else {
17857
- var v1 = parse(version1);
17858
- var v2 = parse(version2);
17929
+ var v1 = parse2(version1);
17930
+ var v2 = parse2(version2);
17859
17931
  var prefix = "";
17860
17932
  if (v1.prerelease.length || v2.prerelease.length) {
17861
17933
  prefix = "pre";
@@ -18559,7 +18631,7 @@ var require_semver3 = __commonJS({
18559
18631
  }
18560
18632
  exports.prerelease = prerelease;
18561
18633
  function prerelease(version2, options) {
18562
- var parsed = parse(version2, options);
18634
+ var parsed = parse2(version2, options);
18563
18635
  return parsed && parsed.prerelease.length ? parsed.prerelease : null;
18564
18636
  }
18565
18637
  exports.intersects = intersects;
@@ -18596,7 +18668,7 @@ var require_semver3 = __commonJS({
18596
18668
  if (match === null) {
18597
18669
  return null;
18598
18670
  }
18599
- return parse(match[2] + "." + (match[3] || "0") + "." + (match[4] || "0"), options);
18671
+ return parse2(match[2] + "." + (match[3] || "0") + "." + (match[4] || "0"), options);
18600
18672
  }
18601
18673
  }
18602
18674
  });
@@ -18728,7 +18800,7 @@ var require_dist5 = __commonJS({
18728
18800
  tokens.push({ type: "END", index: i, value: "" });
18729
18801
  return tokens;
18730
18802
  }
18731
- function parse(str, options) {
18803
+ function parse2(str, options) {
18732
18804
  if (options === void 0) {
18733
18805
  options = {};
18734
18806
  }
@@ -18810,9 +18882,9 @@ var require_dist5 = __commonJS({
18810
18882
  }
18811
18883
  return result;
18812
18884
  }
18813
- exports.parse = parse;
18885
+ exports.parse = parse2;
18814
18886
  function compile(str, options) {
18815
- return tokensToFunction(parse(str, options), options);
18887
+ return tokensToFunction(parse2(str, options), options);
18816
18888
  }
18817
18889
  exports.compile = compile;
18818
18890
  function tokensToFunction(tokens, options) {
@@ -18942,7 +19014,7 @@ var require_dist5 = __commonJS({
18942
19014
  return new RegExp("(?:" + parts.join("|") + ")", flags(options));
18943
19015
  }
18944
19016
  function stringToRegexp(path6, keys, options) {
18945
- return tokensToRegexp(parse(path6, options), keys, options);
19017
+ return tokensToRegexp(parse2(path6, options), keys, options);
18946
19018
  }
18947
19019
  function tokensToRegexp(tokens, keys, options) {
18948
19020
  if (options === void 0) {
@@ -19099,7 +19171,7 @@ var require_dist6 = __commonJS({
19099
19171
  tokens.push({ type: "END", index: i, value: "" });
19100
19172
  return tokens;
19101
19173
  }
19102
- function parse(str, options) {
19174
+ function parse2(str, options) {
19103
19175
  if (options === void 0) {
19104
19176
  options = {};
19105
19177
  }
@@ -19198,9 +19270,9 @@ var require_dist6 = __commonJS({
19198
19270
  }
19199
19271
  return result;
19200
19272
  }
19201
- exports.parse = parse;
19273
+ exports.parse = parse2;
19202
19274
  function compile(str, options) {
19203
- return tokensToFunction(parse(str, options), options);
19275
+ return tokensToFunction(parse2(str, options), options);
19204
19276
  }
19205
19277
  exports.compile = compile;
19206
19278
  function tokensToFunction(tokens, options) {
@@ -19332,7 +19404,7 @@ var require_dist6 = __commonJS({
19332
19404
  return new RegExp("(?:".concat(parts.join("|"), ")"), flags(options));
19333
19405
  }
19334
19406
  function stringToRegexp(path6, keys, options) {
19335
- return tokensToRegexp(parse(path6, options), keys, options);
19407
+ return tokensToRegexp(parse2(path6, options), keys, options);
19336
19408
  }
19337
19409
  function tokensToRegexp(tokens, keys, options) {
19338
19410
  if (options === void 0) {
@@ -21240,6 +21312,925 @@ var require_types3 = __commonJS({
21240
21312
  }
21241
21313
  });
21242
21314
 
21315
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/error.js
21316
+ function getLineColFromPtr(string, ptr) {
21317
+ let lines = string.slice(0, ptr).split(/\r\n|\n|\r/g);
21318
+ return [lines.length, lines.pop().length + 1];
21319
+ }
21320
+ function makeCodeBlock(string, line, column) {
21321
+ let lines = string.split(/\r\n|\n|\r/g);
21322
+ let codeblock = "";
21323
+ let numberLen = (Math.log10(line + 1) | 0) + 1;
21324
+ for (let i = line - 1; i <= line + 1; i++) {
21325
+ let l = lines[i - 1];
21326
+ if (!l)
21327
+ continue;
21328
+ codeblock += i.toString().padEnd(numberLen, " ");
21329
+ codeblock += ": ";
21330
+ codeblock += l;
21331
+ codeblock += "\n";
21332
+ if (i === line) {
21333
+ codeblock += " ".repeat(numberLen + column + 2);
21334
+ codeblock += "^\n";
21335
+ }
21336
+ }
21337
+ return codeblock;
21338
+ }
21339
+ var TomlError;
21340
+ var init_error = __esm({
21341
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/error.js"() {
21342
+ TomlError = class extends Error {
21343
+ constructor(message, options) {
21344
+ const [line, column] = getLineColFromPtr(options.toml, options.ptr);
21345
+ const codeblock = makeCodeBlock(options.toml, line, column);
21346
+ super(`Invalid TOML document: ${message}
21347
+
21348
+ ${codeblock}`, options);
21349
+ __publicField(this, "line");
21350
+ __publicField(this, "column");
21351
+ __publicField(this, "codeblock");
21352
+ this.line = line;
21353
+ this.column = column;
21354
+ this.codeblock = codeblock;
21355
+ }
21356
+ };
21357
+ }
21358
+ });
21359
+
21360
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/util.js
21361
+ function isEscaped(str, ptr) {
21362
+ let i = 0;
21363
+ while (str[ptr - ++i] === "\\")
21364
+ ;
21365
+ return --i && i % 2;
21366
+ }
21367
+ function indexOfNewline(str, start = 0, end = str.length) {
21368
+ let idx = str.indexOf("\n", start);
21369
+ if (str[idx - 1] === "\r")
21370
+ idx--;
21371
+ return idx <= end ? idx : -1;
21372
+ }
21373
+ function skipComment(str, ptr) {
21374
+ for (let i = ptr; i < str.length; i++) {
21375
+ let c = str[i];
21376
+ if (c === "\n")
21377
+ return i;
21378
+ if (c === "\r" && str[i + 1] === "\n")
21379
+ return i + 1;
21380
+ if (c < " " && c !== " " || c === "\x7F") {
21381
+ throw new TomlError("control characters are not allowed in comments", {
21382
+ toml: str,
21383
+ ptr
21384
+ });
21385
+ }
21386
+ }
21387
+ return str.length;
21388
+ }
21389
+ function skipVoid(str, ptr, banNewLines, banComments) {
21390
+ let c;
21391
+ while ((c = str[ptr]) === " " || c === " " || !banNewLines && (c === "\n" || c === "\r" && str[ptr + 1] === "\n"))
21392
+ ptr++;
21393
+ return banComments || c !== "#" ? ptr : skipVoid(str, skipComment(str, ptr), banNewLines);
21394
+ }
21395
+ function skipUntil(str, ptr, sep, end, banNewLines = false) {
21396
+ if (!end) {
21397
+ ptr = indexOfNewline(str, ptr);
21398
+ return ptr < 0 ? str.length : ptr;
21399
+ }
21400
+ for (let i = ptr; i < str.length; i++) {
21401
+ let c = str[i];
21402
+ if (c === "#") {
21403
+ i = indexOfNewline(str, i);
21404
+ } else if (c === sep) {
21405
+ return i + 1;
21406
+ } else if (c === end || banNewLines && (c === "\n" || c === "\r" && str[i + 1] === "\n")) {
21407
+ return i;
21408
+ }
21409
+ }
21410
+ throw new TomlError("cannot find end of structure", {
21411
+ toml: str,
21412
+ ptr
21413
+ });
21414
+ }
21415
+ function getStringEnd(str, seek) {
21416
+ let first = str[seek];
21417
+ let target = first === str[seek + 1] && str[seek + 1] === str[seek + 2] ? str.slice(seek, seek + 3) : first;
21418
+ seek += target.length - 1;
21419
+ do
21420
+ seek = str.indexOf(target, ++seek);
21421
+ while (seek > -1 && first !== "'" && isEscaped(str, seek));
21422
+ if (seek > -1) {
21423
+ seek += target.length;
21424
+ if (target.length > 1) {
21425
+ if (str[seek] === first)
21426
+ seek++;
21427
+ if (str[seek] === first)
21428
+ seek++;
21429
+ }
21430
+ }
21431
+ return seek;
21432
+ }
21433
+ var init_util = __esm({
21434
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/util.js"() {
21435
+ init_error();
21436
+ }
21437
+ });
21438
+
21439
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/date.js
21440
+ var DATE_TIME_RE, _hasDate, _hasTime, _offset, _TomlDate, TomlDate;
21441
+ var init_date = __esm({
21442
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/date.js"() {
21443
+ DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}:\d{2}(?:\.\d+)?)?(Z|[-+]\d{2}:\d{2})?$/i;
21444
+ _TomlDate = class _TomlDate extends Date {
21445
+ constructor(date) {
21446
+ let hasDate = true;
21447
+ let hasTime = true;
21448
+ let offset = "Z";
21449
+ if (typeof date === "string") {
21450
+ let match = date.match(DATE_TIME_RE);
21451
+ if (match) {
21452
+ if (!match[1]) {
21453
+ hasDate = false;
21454
+ date = `0000-01-01T${date}`;
21455
+ }
21456
+ hasTime = !!match[2];
21457
+ hasTime && date[10] === " " && (date = date.replace(" ", "T"));
21458
+ if (match[2] && +match[2] > 23) {
21459
+ date = "";
21460
+ } else {
21461
+ offset = match[3] || null;
21462
+ date = date.toUpperCase();
21463
+ if (!offset && hasTime)
21464
+ date += "Z";
21465
+ }
21466
+ } else {
21467
+ date = "";
21468
+ }
21469
+ }
21470
+ super(date);
21471
+ __privateAdd(this, _hasDate, false);
21472
+ __privateAdd(this, _hasTime, false);
21473
+ __privateAdd(this, _offset, null);
21474
+ if (!isNaN(this.getTime())) {
21475
+ __privateSet(this, _hasDate, hasDate);
21476
+ __privateSet(this, _hasTime, hasTime);
21477
+ __privateSet(this, _offset, offset);
21478
+ }
21479
+ }
21480
+ isDateTime() {
21481
+ return __privateGet(this, _hasDate) && __privateGet(this, _hasTime);
21482
+ }
21483
+ isLocal() {
21484
+ return !__privateGet(this, _hasDate) || !__privateGet(this, _hasTime) || !__privateGet(this, _offset);
21485
+ }
21486
+ isDate() {
21487
+ return __privateGet(this, _hasDate) && !__privateGet(this, _hasTime);
21488
+ }
21489
+ isTime() {
21490
+ return __privateGet(this, _hasTime) && !__privateGet(this, _hasDate);
21491
+ }
21492
+ isValid() {
21493
+ return __privateGet(this, _hasDate) || __privateGet(this, _hasTime);
21494
+ }
21495
+ toISOString() {
21496
+ let iso = super.toISOString();
21497
+ if (this.isDate())
21498
+ return iso.slice(0, 10);
21499
+ if (this.isTime())
21500
+ return iso.slice(11, 23);
21501
+ if (__privateGet(this, _offset) === null)
21502
+ return iso.slice(0, -1);
21503
+ if (__privateGet(this, _offset) === "Z")
21504
+ return iso;
21505
+ let offset = +__privateGet(this, _offset).slice(1, 3) * 60 + +__privateGet(this, _offset).slice(4, 6);
21506
+ offset = __privateGet(this, _offset)[0] === "-" ? offset : -offset;
21507
+ let offsetDate = new Date(this.getTime() - offset * 6e4);
21508
+ return offsetDate.toISOString().slice(0, -1) + __privateGet(this, _offset);
21509
+ }
21510
+ static wrapAsOffsetDateTime(jsDate, offset = "Z") {
21511
+ let date = new _TomlDate(jsDate);
21512
+ __privateSet(date, _offset, offset);
21513
+ return date;
21514
+ }
21515
+ static wrapAsLocalDateTime(jsDate) {
21516
+ let date = new _TomlDate(jsDate);
21517
+ __privateSet(date, _offset, null);
21518
+ return date;
21519
+ }
21520
+ static wrapAsLocalDate(jsDate) {
21521
+ let date = new _TomlDate(jsDate);
21522
+ __privateSet(date, _hasTime, false);
21523
+ __privateSet(date, _offset, null);
21524
+ return date;
21525
+ }
21526
+ static wrapAsLocalTime(jsDate) {
21527
+ let date = new _TomlDate(jsDate);
21528
+ __privateSet(date, _hasDate, false);
21529
+ __privateSet(date, _offset, null);
21530
+ return date;
21531
+ }
21532
+ };
21533
+ _hasDate = new WeakMap();
21534
+ _hasTime = new WeakMap();
21535
+ _offset = new WeakMap();
21536
+ TomlDate = _TomlDate;
21537
+ }
21538
+ });
21539
+
21540
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/primitive.js
21541
+ function parseString(str, ptr = 0, endPtr = str.length) {
21542
+ let isLiteral = str[ptr] === "'";
21543
+ let isMultiline = str[ptr++] === str[ptr] && str[ptr] === str[ptr + 1];
21544
+ if (isMultiline) {
21545
+ endPtr -= 2;
21546
+ if (str[ptr += 2] === "\r")
21547
+ ptr++;
21548
+ if (str[ptr] === "\n")
21549
+ ptr++;
21550
+ }
21551
+ let tmp = 0;
21552
+ let isEscape;
21553
+ let parsed = "";
21554
+ let sliceStart = ptr;
21555
+ while (ptr < endPtr - 1) {
21556
+ let c = str[ptr++];
21557
+ if (c === "\n" || c === "\r" && str[ptr] === "\n") {
21558
+ if (!isMultiline) {
21559
+ throw new TomlError("newlines are not allowed in strings", {
21560
+ toml: str,
21561
+ ptr: ptr - 1
21562
+ });
21563
+ }
21564
+ } else if (c < " " && c !== " " || c === "\x7F") {
21565
+ throw new TomlError("control characters are not allowed in strings", {
21566
+ toml: str,
21567
+ ptr: ptr - 1
21568
+ });
21569
+ }
21570
+ if (isEscape) {
21571
+ isEscape = false;
21572
+ if (c === "u" || c === "U") {
21573
+ let code = str.slice(ptr, ptr += c === "u" ? 4 : 8);
21574
+ if (!ESCAPE_REGEX.test(code)) {
21575
+ throw new TomlError("invalid unicode escape", {
21576
+ toml: str,
21577
+ ptr: tmp
21578
+ });
21579
+ }
21580
+ try {
21581
+ parsed += String.fromCodePoint(parseInt(code, 16));
21582
+ } catch {
21583
+ throw new TomlError("invalid unicode escape", {
21584
+ toml: str,
21585
+ ptr: tmp
21586
+ });
21587
+ }
21588
+ } else if (isMultiline && (c === "\n" || c === " " || c === " " || c === "\r")) {
21589
+ ptr = skipVoid(str, ptr - 1, true);
21590
+ if (str[ptr] !== "\n" && str[ptr] !== "\r") {
21591
+ throw new TomlError("invalid escape: only line-ending whitespace may be escaped", {
21592
+ toml: str,
21593
+ ptr: tmp
21594
+ });
21595
+ }
21596
+ ptr = skipVoid(str, ptr);
21597
+ } else if (c in ESC_MAP) {
21598
+ parsed += ESC_MAP[c];
21599
+ } else {
21600
+ throw new TomlError("unrecognized escape sequence", {
21601
+ toml: str,
21602
+ ptr: tmp
21603
+ });
21604
+ }
21605
+ sliceStart = ptr;
21606
+ } else if (!isLiteral && c === "\\") {
21607
+ tmp = ptr - 1;
21608
+ isEscape = true;
21609
+ parsed += str.slice(sliceStart, tmp);
21610
+ }
21611
+ }
21612
+ return parsed + str.slice(sliceStart, endPtr - 1);
21613
+ }
21614
+ function parseValue(value, toml, ptr, integersAsBigInt) {
21615
+ if (value === "true")
21616
+ return true;
21617
+ if (value === "false")
21618
+ return false;
21619
+ if (value === "-inf")
21620
+ return -Infinity;
21621
+ if (value === "inf" || value === "+inf")
21622
+ return Infinity;
21623
+ if (value === "nan" || value === "+nan" || value === "-nan")
21624
+ return NaN;
21625
+ if (value === "-0")
21626
+ return integersAsBigInt ? 0n : 0;
21627
+ let isInt = INT_REGEX.test(value);
21628
+ if (isInt || FLOAT_REGEX.test(value)) {
21629
+ if (LEADING_ZERO.test(value)) {
21630
+ throw new TomlError("leading zeroes are not allowed", {
21631
+ toml,
21632
+ ptr
21633
+ });
21634
+ }
21635
+ value = value.replace(/_/g, "");
21636
+ let numeric = +value;
21637
+ if (isNaN(numeric)) {
21638
+ throw new TomlError("invalid number", {
21639
+ toml,
21640
+ ptr
21641
+ });
21642
+ }
21643
+ if (isInt) {
21644
+ if ((isInt = !Number.isSafeInteger(numeric)) && !integersAsBigInt) {
21645
+ throw new TomlError("integer value cannot be represented losslessly", {
21646
+ toml,
21647
+ ptr
21648
+ });
21649
+ }
21650
+ if (isInt || integersAsBigInt === true)
21651
+ numeric = BigInt(value);
21652
+ }
21653
+ return numeric;
21654
+ }
21655
+ const date = new TomlDate(value);
21656
+ if (!date.isValid()) {
21657
+ throw new TomlError("invalid value", {
21658
+ toml,
21659
+ ptr
21660
+ });
21661
+ }
21662
+ return date;
21663
+ }
21664
+ var INT_REGEX, FLOAT_REGEX, LEADING_ZERO, ESCAPE_REGEX, ESC_MAP;
21665
+ var init_primitive = __esm({
21666
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/primitive.js"() {
21667
+ init_util();
21668
+ init_date();
21669
+ init_error();
21670
+ INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/;
21671
+ FLOAT_REGEX = /^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/;
21672
+ LEADING_ZERO = /^[+-]?0[0-9_]/;
21673
+ ESCAPE_REGEX = /^[0-9a-f]{4,8}$/i;
21674
+ ESC_MAP = {
21675
+ b: "\b",
21676
+ t: " ",
21677
+ n: "\n",
21678
+ f: "\f",
21679
+ r: "\r",
21680
+ '"': '"',
21681
+ "\\": "\\"
21682
+ };
21683
+ }
21684
+ });
21685
+
21686
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/extract.js
21687
+ function sliceAndTrimEndOf(str, startPtr, endPtr, allowNewLines) {
21688
+ let value = str.slice(startPtr, endPtr);
21689
+ let commentIdx = value.indexOf("#");
21690
+ if (commentIdx > -1) {
21691
+ skipComment(str, commentIdx);
21692
+ value = value.slice(0, commentIdx);
21693
+ }
21694
+ let trimmed = value.trimEnd();
21695
+ if (!allowNewLines) {
21696
+ let newlineIdx = value.indexOf("\n", trimmed.length);
21697
+ if (newlineIdx > -1) {
21698
+ throw new TomlError("newlines are not allowed in inline tables", {
21699
+ toml: str,
21700
+ ptr: startPtr + newlineIdx
21701
+ });
21702
+ }
21703
+ }
21704
+ return [trimmed, commentIdx];
21705
+ }
21706
+ function extractValue(str, ptr, end, depth, integersAsBigInt) {
21707
+ if (depth === 0) {
21708
+ throw new TomlError("document contains excessively nested structures. aborting.", {
21709
+ toml: str,
21710
+ ptr
21711
+ });
21712
+ }
21713
+ let c = str[ptr];
21714
+ if (c === "[" || c === "{") {
21715
+ let [value, endPtr2] = c === "[" ? parseArray(str, ptr, depth, integersAsBigInt) : parseInlineTable(str, ptr, depth, integersAsBigInt);
21716
+ let newPtr = end ? skipUntil(str, endPtr2, ",", end) : endPtr2;
21717
+ if (endPtr2 - newPtr && end === "}") {
21718
+ let nextNewLine = indexOfNewline(str, endPtr2, newPtr);
21719
+ if (nextNewLine > -1) {
21720
+ throw new TomlError("newlines are not allowed in inline tables", {
21721
+ toml: str,
21722
+ ptr: nextNewLine
21723
+ });
21724
+ }
21725
+ }
21726
+ return [value, newPtr];
21727
+ }
21728
+ let endPtr;
21729
+ if (c === '"' || c === "'") {
21730
+ endPtr = getStringEnd(str, ptr);
21731
+ let parsed = parseString(str, ptr, endPtr);
21732
+ if (end) {
21733
+ endPtr = skipVoid(str, endPtr, end !== "]");
21734
+ if (str[endPtr] && str[endPtr] !== "," && str[endPtr] !== end && str[endPtr] !== "\n" && str[endPtr] !== "\r") {
21735
+ throw new TomlError("unexpected character encountered", {
21736
+ toml: str,
21737
+ ptr: endPtr
21738
+ });
21739
+ }
21740
+ endPtr += +(str[endPtr] === ",");
21741
+ }
21742
+ return [parsed, endPtr];
21743
+ }
21744
+ endPtr = skipUntil(str, ptr, ",", end);
21745
+ let slice = sliceAndTrimEndOf(str, ptr, endPtr - +(str[endPtr - 1] === ","), end === "]");
21746
+ if (!slice[0]) {
21747
+ throw new TomlError("incomplete key-value declaration: no value specified", {
21748
+ toml: str,
21749
+ ptr
21750
+ });
21751
+ }
21752
+ if (end && slice[1] > -1) {
21753
+ endPtr = skipVoid(str, ptr + slice[1]);
21754
+ endPtr += +(str[endPtr] === ",");
21755
+ }
21756
+ return [
21757
+ parseValue(slice[0], str, ptr, integersAsBigInt),
21758
+ endPtr
21759
+ ];
21760
+ }
21761
+ var init_extract = __esm({
21762
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/extract.js"() {
21763
+ init_primitive();
21764
+ init_struct();
21765
+ init_util();
21766
+ init_error();
21767
+ }
21768
+ });
21769
+
21770
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/struct.js
21771
+ function parseKey(str, ptr, end = "=") {
21772
+ let dot = ptr - 1;
21773
+ let parsed = [];
21774
+ let endPtr = str.indexOf(end, ptr);
21775
+ if (endPtr < 0) {
21776
+ throw new TomlError("incomplete key-value: cannot find end of key", {
21777
+ toml: str,
21778
+ ptr
21779
+ });
21780
+ }
21781
+ do {
21782
+ let c = str[ptr = ++dot];
21783
+ if (c !== " " && c !== " ") {
21784
+ if (c === '"' || c === "'") {
21785
+ if (c === str[ptr + 1] && c === str[ptr + 2]) {
21786
+ throw new TomlError("multiline strings are not allowed in keys", {
21787
+ toml: str,
21788
+ ptr
21789
+ });
21790
+ }
21791
+ let eos = getStringEnd(str, ptr);
21792
+ if (eos < 0) {
21793
+ throw new TomlError("unfinished string encountered", {
21794
+ toml: str,
21795
+ ptr
21796
+ });
21797
+ }
21798
+ dot = str.indexOf(".", eos);
21799
+ let strEnd = str.slice(eos, dot < 0 || dot > endPtr ? endPtr : dot);
21800
+ let newLine = indexOfNewline(strEnd);
21801
+ if (newLine > -1) {
21802
+ throw new TomlError("newlines are not allowed in keys", {
21803
+ toml: str,
21804
+ ptr: ptr + dot + newLine
21805
+ });
21806
+ }
21807
+ if (strEnd.trimStart()) {
21808
+ throw new TomlError("found extra tokens after the string part", {
21809
+ toml: str,
21810
+ ptr: eos
21811
+ });
21812
+ }
21813
+ if (endPtr < eos) {
21814
+ endPtr = str.indexOf(end, eos);
21815
+ if (endPtr < 0) {
21816
+ throw new TomlError("incomplete key-value: cannot find end of key", {
21817
+ toml: str,
21818
+ ptr
21819
+ });
21820
+ }
21821
+ }
21822
+ parsed.push(parseString(str, ptr, eos));
21823
+ } else {
21824
+ dot = str.indexOf(".", ptr);
21825
+ let part = str.slice(ptr, dot < 0 || dot > endPtr ? endPtr : dot);
21826
+ if (!KEY_PART_RE.test(part)) {
21827
+ throw new TomlError("only letter, numbers, dashes and underscores are allowed in keys", {
21828
+ toml: str,
21829
+ ptr
21830
+ });
21831
+ }
21832
+ parsed.push(part.trimEnd());
21833
+ }
21834
+ }
21835
+ } while (dot + 1 && dot < endPtr);
21836
+ return [parsed, skipVoid(str, endPtr + 1, true, true)];
21837
+ }
21838
+ function parseInlineTable(str, ptr, depth, integersAsBigInt) {
21839
+ let res = {};
21840
+ let seen = /* @__PURE__ */ new Set();
21841
+ let c;
21842
+ let comma = 0;
21843
+ ptr++;
21844
+ while ((c = str[ptr++]) !== "}" && c) {
21845
+ let err = { toml: str, ptr: ptr - 1 };
21846
+ if (c === "\n") {
21847
+ throw new TomlError("newlines are not allowed in inline tables", err);
21848
+ } else if (c === "#") {
21849
+ throw new TomlError("inline tables cannot contain comments", err);
21850
+ } else if (c === ",") {
21851
+ throw new TomlError("expected key-value, found comma", err);
21852
+ } else if (c !== " " && c !== " ") {
21853
+ let k;
21854
+ let t = res;
21855
+ let hasOwn = false;
21856
+ let [key, keyEndPtr] = parseKey(str, ptr - 1);
21857
+ for (let i = 0; i < key.length; i++) {
21858
+ if (i)
21859
+ t = hasOwn ? t[k] : t[k] = {};
21860
+ k = key[i];
21861
+ if ((hasOwn = Object.hasOwn(t, k)) && (typeof t[k] !== "object" || seen.has(t[k]))) {
21862
+ throw new TomlError("trying to redefine an already defined value", {
21863
+ toml: str,
21864
+ ptr
21865
+ });
21866
+ }
21867
+ if (!hasOwn && k === "__proto__") {
21868
+ Object.defineProperty(t, k, { enumerable: true, configurable: true, writable: true });
21869
+ }
21870
+ }
21871
+ if (hasOwn) {
21872
+ throw new TomlError("trying to redefine an already defined value", {
21873
+ toml: str,
21874
+ ptr
21875
+ });
21876
+ }
21877
+ let [value, valueEndPtr] = extractValue(str, keyEndPtr, "}", depth - 1, integersAsBigInt);
21878
+ seen.add(value);
21879
+ t[k] = value;
21880
+ ptr = valueEndPtr;
21881
+ comma = str[ptr - 1] === "," ? ptr - 1 : 0;
21882
+ }
21883
+ }
21884
+ if (comma) {
21885
+ throw new TomlError("trailing commas are not allowed in inline tables", {
21886
+ toml: str,
21887
+ ptr: comma
21888
+ });
21889
+ }
21890
+ if (!c) {
21891
+ throw new TomlError("unfinished table encountered", {
21892
+ toml: str,
21893
+ ptr
21894
+ });
21895
+ }
21896
+ return [res, ptr];
21897
+ }
21898
+ function parseArray(str, ptr, depth, integersAsBigInt) {
21899
+ let res = [];
21900
+ let c;
21901
+ ptr++;
21902
+ while ((c = str[ptr++]) !== "]" && c) {
21903
+ if (c === ",") {
21904
+ throw new TomlError("expected value, found comma", {
21905
+ toml: str,
21906
+ ptr: ptr - 1
21907
+ });
21908
+ } else if (c === "#")
21909
+ ptr = skipComment(str, ptr);
21910
+ else if (c !== " " && c !== " " && c !== "\n" && c !== "\r") {
21911
+ let e = extractValue(str, ptr - 1, "]", depth - 1, integersAsBigInt);
21912
+ res.push(e[0]);
21913
+ ptr = e[1];
21914
+ }
21915
+ }
21916
+ if (!c) {
21917
+ throw new TomlError("unfinished array encountered", {
21918
+ toml: str,
21919
+ ptr
21920
+ });
21921
+ }
21922
+ return [res, ptr];
21923
+ }
21924
+ var KEY_PART_RE;
21925
+ var init_struct = __esm({
21926
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/struct.js"() {
21927
+ init_primitive();
21928
+ init_extract();
21929
+ init_util();
21930
+ init_error();
21931
+ KEY_PART_RE = /^[a-zA-Z0-9-_]+[ \t]*$/;
21932
+ }
21933
+ });
21934
+
21935
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/parse.js
21936
+ function peekTable(key, table, meta, type) {
21937
+ let t = table;
21938
+ let m = meta;
21939
+ let k;
21940
+ let hasOwn = false;
21941
+ let state;
21942
+ for (let i = 0; i < key.length; i++) {
21943
+ if (i) {
21944
+ t = hasOwn ? t[k] : t[k] = {};
21945
+ m = (state = m[k]).c;
21946
+ if (type === 0 && (state.t === 1 || state.t === 2)) {
21947
+ return null;
21948
+ }
21949
+ if (state.t === 2) {
21950
+ let l = t.length - 1;
21951
+ t = t[l];
21952
+ m = m[l].c;
21953
+ }
21954
+ }
21955
+ k = key[i];
21956
+ if ((hasOwn = Object.hasOwn(t, k)) && m[k]?.t === 0 && m[k]?.d) {
21957
+ return null;
21958
+ }
21959
+ if (!hasOwn) {
21960
+ if (k === "__proto__") {
21961
+ Object.defineProperty(t, k, { enumerable: true, configurable: true, writable: true });
21962
+ Object.defineProperty(m, k, { enumerable: true, configurable: true, writable: true });
21963
+ }
21964
+ m[k] = {
21965
+ t: i < key.length - 1 && type === 2 ? 3 : type,
21966
+ d: false,
21967
+ i: 0,
21968
+ c: {}
21969
+ };
21970
+ }
21971
+ }
21972
+ state = m[k];
21973
+ if (state.t !== type && !(type === 1 && state.t === 3)) {
21974
+ return null;
21975
+ }
21976
+ if (type === 2) {
21977
+ if (!state.d) {
21978
+ state.d = true;
21979
+ t[k] = [];
21980
+ }
21981
+ t[k].push(t = {});
21982
+ state.c[state.i++] = state = { t: 1, d: false, i: 0, c: {} };
21983
+ }
21984
+ if (state.d) {
21985
+ return null;
21986
+ }
21987
+ state.d = true;
21988
+ if (type === 1) {
21989
+ t = hasOwn ? t[k] : t[k] = {};
21990
+ } else if (type === 0 && hasOwn) {
21991
+ return null;
21992
+ }
21993
+ return [k, t, state.c];
21994
+ }
21995
+ function parse(toml, { maxDepth = 1e3, integersAsBigInt } = {}) {
21996
+ let res = {};
21997
+ let meta = {};
21998
+ let tbl = res;
21999
+ let m = meta;
22000
+ for (let ptr = skipVoid(toml, 0); ptr < toml.length; ) {
22001
+ if (toml[ptr] === "[") {
22002
+ let isTableArray = toml[++ptr] === "[";
22003
+ let k = parseKey(toml, ptr += +isTableArray, "]");
22004
+ if (isTableArray) {
22005
+ if (toml[k[1] - 1] !== "]") {
22006
+ throw new TomlError("expected end of table declaration", {
22007
+ toml,
22008
+ ptr: k[1] - 1
22009
+ });
22010
+ }
22011
+ k[1]++;
22012
+ }
22013
+ let p = peekTable(
22014
+ k[0],
22015
+ res,
22016
+ meta,
22017
+ isTableArray ? 2 : 1
22018
+ /* Type.EXPLICIT */
22019
+ );
22020
+ if (!p) {
22021
+ throw new TomlError("trying to redefine an already defined table or value", {
22022
+ toml,
22023
+ ptr
22024
+ });
22025
+ }
22026
+ m = p[2];
22027
+ tbl = p[1];
22028
+ ptr = k[1];
22029
+ } else {
22030
+ let k = parseKey(toml, ptr);
22031
+ let p = peekTable(
22032
+ k[0],
22033
+ tbl,
22034
+ m,
22035
+ 0
22036
+ /* Type.DOTTED */
22037
+ );
22038
+ if (!p) {
22039
+ throw new TomlError("trying to redefine an already defined table or value", {
22040
+ toml,
22041
+ ptr
22042
+ });
22043
+ }
22044
+ let v = extractValue(toml, k[1], void 0, maxDepth, integersAsBigInt);
22045
+ p[1][p[0]] = v[0];
22046
+ ptr = v[1];
22047
+ }
22048
+ ptr = skipVoid(toml, ptr, true);
22049
+ if (toml[ptr] && toml[ptr] !== "\n" && toml[ptr] !== "\r") {
22050
+ throw new TomlError("each key-value declaration must be followed by an end-of-line", {
22051
+ toml,
22052
+ ptr
22053
+ });
22054
+ }
22055
+ ptr = skipVoid(toml, ptr);
22056
+ }
22057
+ return res;
22058
+ }
22059
+ var init_parse = __esm({
22060
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/parse.js"() {
22061
+ init_struct();
22062
+ init_extract();
22063
+ init_util();
22064
+ init_error();
22065
+ }
22066
+ });
22067
+
22068
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/stringify.js
22069
+ function extendedTypeOf(obj) {
22070
+ let type = typeof obj;
22071
+ if (type === "object") {
22072
+ if (Array.isArray(obj))
22073
+ return "array";
22074
+ if (obj instanceof Date)
22075
+ return "date";
22076
+ }
22077
+ return type;
22078
+ }
22079
+ function isArrayOfTables(obj) {
22080
+ for (let i = 0; i < obj.length; i++) {
22081
+ if (extendedTypeOf(obj[i]) !== "object")
22082
+ return false;
22083
+ }
22084
+ return obj.length != 0;
22085
+ }
22086
+ function formatString(s) {
22087
+ return JSON.stringify(s).replace(/\x7f/g, "\\u007f");
22088
+ }
22089
+ function stringifyValue(val, type, depth, numberAsFloat) {
22090
+ if (depth === 0) {
22091
+ throw new Error("Could not stringify the object: maximum object depth exceeded");
22092
+ }
22093
+ if (type === "number") {
22094
+ if (isNaN(val))
22095
+ return "nan";
22096
+ if (val === Infinity)
22097
+ return "inf";
22098
+ if (val === -Infinity)
22099
+ return "-inf";
22100
+ if (numberAsFloat && Number.isInteger(val))
22101
+ return val.toFixed(1);
22102
+ return val.toString();
22103
+ }
22104
+ if (type === "bigint" || type === "boolean") {
22105
+ return val.toString();
22106
+ }
22107
+ if (type === "string") {
22108
+ return formatString(val);
22109
+ }
22110
+ if (type === "date") {
22111
+ if (isNaN(val.getTime())) {
22112
+ throw new TypeError("cannot serialize invalid date");
22113
+ }
22114
+ return val.toISOString();
22115
+ }
22116
+ if (type === "object") {
22117
+ return stringifyInlineTable(val, depth, numberAsFloat);
22118
+ }
22119
+ if (type === "array") {
22120
+ return stringifyArray(val, depth, numberAsFloat);
22121
+ }
22122
+ }
22123
+ function stringifyInlineTable(obj, depth, numberAsFloat) {
22124
+ let keys = Object.keys(obj);
22125
+ if (keys.length === 0)
22126
+ return "{}";
22127
+ let res = "{ ";
22128
+ for (let i = 0; i < keys.length; i++) {
22129
+ let k = keys[i];
22130
+ if (i)
22131
+ res += ", ";
22132
+ res += BARE_KEY.test(k) ? k : formatString(k);
22133
+ res += " = ";
22134
+ res += stringifyValue(obj[k], extendedTypeOf(obj[k]), depth - 1, numberAsFloat);
22135
+ }
22136
+ return res + " }";
22137
+ }
22138
+ function stringifyArray(array, depth, numberAsFloat) {
22139
+ if (array.length === 0)
22140
+ return "[]";
22141
+ let res = "[ ";
22142
+ for (let i = 0; i < array.length; i++) {
22143
+ if (i)
22144
+ res += ", ";
22145
+ if (array[i] === null || array[i] === void 0) {
22146
+ throw new TypeError("arrays cannot contain null or undefined values");
22147
+ }
22148
+ res += stringifyValue(array[i], extendedTypeOf(array[i]), depth - 1, numberAsFloat);
22149
+ }
22150
+ return res + " ]";
22151
+ }
22152
+ function stringifyArrayTable(array, key, depth, numberAsFloat) {
22153
+ if (depth === 0) {
22154
+ throw new Error("Could not stringify the object: maximum object depth exceeded");
22155
+ }
22156
+ let res = "";
22157
+ for (let i = 0; i < array.length; i++) {
22158
+ res += `${res && "\n"}[[${key}]]
22159
+ `;
22160
+ res += stringifyTable(0, array[i], key, depth, numberAsFloat);
22161
+ }
22162
+ return res;
22163
+ }
22164
+ function stringifyTable(tableKey, obj, prefix, depth, numberAsFloat) {
22165
+ if (depth === 0) {
22166
+ throw new Error("Could not stringify the object: maximum object depth exceeded");
22167
+ }
22168
+ let preamble = "";
22169
+ let tables = "";
22170
+ let keys = Object.keys(obj);
22171
+ for (let i = 0; i < keys.length; i++) {
22172
+ let k = keys[i];
22173
+ if (obj[k] !== null && obj[k] !== void 0) {
22174
+ let type = extendedTypeOf(obj[k]);
22175
+ if (type === "symbol" || type === "function") {
22176
+ throw new TypeError(`cannot serialize values of type '${type}'`);
22177
+ }
22178
+ let key = BARE_KEY.test(k) ? k : formatString(k);
22179
+ if (type === "array" && isArrayOfTables(obj[k])) {
22180
+ tables += (tables && "\n") + stringifyArrayTable(obj[k], prefix ? `${prefix}.${key}` : key, depth - 1, numberAsFloat);
22181
+ } else if (type === "object") {
22182
+ let tblKey = prefix ? `${prefix}.${key}` : key;
22183
+ tables += (tables && "\n") + stringifyTable(tblKey, obj[k], tblKey, depth - 1, numberAsFloat);
22184
+ } else {
22185
+ preamble += key;
22186
+ preamble += " = ";
22187
+ preamble += stringifyValue(obj[k], type, depth, numberAsFloat);
22188
+ preamble += "\n";
22189
+ }
22190
+ }
22191
+ }
22192
+ if (tableKey && (preamble || !tables))
22193
+ preamble = preamble ? `[${tableKey}]
22194
+ ${preamble}` : `[${tableKey}]`;
22195
+ return preamble && tables ? `${preamble}
22196
+ ${tables}` : preamble || tables;
22197
+ }
22198
+ function stringify(obj, { maxDepth = 1e3, numbersAsFloat = false } = {}) {
22199
+ if (extendedTypeOf(obj) !== "object") {
22200
+ throw new TypeError("stringify can only be called with an object");
22201
+ }
22202
+ let str = stringifyTable(0, obj, "", maxDepth, numbersAsFloat);
22203
+ if (str[str.length - 1] !== "\n")
22204
+ return str + "\n";
22205
+ return str;
22206
+ }
22207
+ var BARE_KEY;
22208
+ var init_stringify = __esm({
22209
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/stringify.js"() {
22210
+ BARE_KEY = /^[a-z0-9-_]+$/i;
22211
+ }
22212
+ });
22213
+
22214
+ // ../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/index.js
22215
+ var dist_exports = {};
22216
+ __export(dist_exports, {
22217
+ TomlDate: () => TomlDate,
22218
+ TomlError: () => TomlError,
22219
+ default: () => dist_default,
22220
+ parse: () => parse,
22221
+ stringify: () => stringify
22222
+ });
22223
+ var dist_default;
22224
+ var init_dist = __esm({
22225
+ "../../node_modules/.pnpm/smol-toml@1.5.2/node_modules/smol-toml/dist/index.js"() {
22226
+ init_parse();
22227
+ init_stringify();
22228
+ init_date();
22229
+ init_error();
22230
+ dist_default = { parse, stringify, TomlDate, TomlError };
22231
+ }
22232
+ });
22233
+
21243
22234
  // ../fs-detectors/dist/services/utils.js
21244
22235
  var require_utils4 = __commonJS({
21245
22236
  "../fs-detectors/dist/services/utils.js"(exports, module2) {
@@ -21381,22 +22372,39 @@ var require_utils4 = __commonJS({
21381
22372
  }
21382
22373
  async function readVercelConfig(fs5) {
21383
22374
  const hasVercelJson = await fs5.hasPath("vercel.json");
21384
- if (!hasVercelJson) {
21385
- return { config: null, error: null };
22375
+ if (hasVercelJson) {
22376
+ try {
22377
+ const content = await fs5.readFile("vercel.json");
22378
+ const config = JSON.parse(content.toString());
22379
+ return { config, error: null };
22380
+ } catch {
22381
+ return {
22382
+ config: null,
22383
+ error: {
22384
+ code: "INVALID_VERCEL_JSON",
22385
+ message: "Failed to parse vercel.json. Ensure it contains valid JSON."
22386
+ }
22387
+ };
22388
+ }
21386
22389
  }
21387
- try {
21388
- const content = await fs5.readFile("vercel.json");
21389
- const config = JSON.parse(content.toString());
21390
- return { config, error: null };
21391
- } catch {
21392
- return {
21393
- config: null,
21394
- error: {
21395
- code: "INVALID_VERCEL_JSON",
21396
- message: "Failed to parse vercel.json. Ensure it contains valid JSON."
21397
- }
21398
- };
22390
+ const hasVercelToml = process.env.VERCEL_TOML_CONFIG_ENABLED === "1" && await fs5.hasPath("vercel.toml");
22391
+ if (hasVercelToml) {
22392
+ try {
22393
+ const { parse: tomlParse } = await Promise.resolve().then(() => (init_dist(), dist_exports));
22394
+ const content = await fs5.readFile("vercel.toml");
22395
+ const config = tomlParse(content.toString());
22396
+ return { config, error: null };
22397
+ } catch {
22398
+ return {
22399
+ config: null,
22400
+ error: {
22401
+ code: "INVALID_VERCEL_TOML",
22402
+ message: "Failed to parse vercel.toml. Ensure it contains valid TOML."
22403
+ }
22404
+ };
22405
+ }
21399
22406
  }
22407
+ return { config: null, error: null };
21400
22408
  }
21401
22409
  }
21402
22410
  });
@@ -22453,6 +23461,278 @@ var require_auto_detect = __commonJS({
22453
23461
  }
22454
23462
  });
22455
23463
 
23464
+ // ../fs-detectors/dist/services/detect-railway.js
23465
+ var require_detect_railway = __commonJS({
23466
+ "../fs-detectors/dist/services/detect-railway.js"(exports, module2) {
23467
+ "use strict";
23468
+ var __create2 = Object.create;
23469
+ var __defProp2 = Object.defineProperty;
23470
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
23471
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
23472
+ var __getProtoOf2 = Object.getPrototypeOf;
23473
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
23474
+ var __export2 = (target, all) => {
23475
+ for (var name in all)
23476
+ __defProp2(target, name, { get: all[name], enumerable: true });
23477
+ };
23478
+ var __copyProps2 = (to, from, except, desc) => {
23479
+ if (from && typeof from === "object" || typeof from === "function") {
23480
+ for (let key of __getOwnPropNames2(from))
23481
+ if (!__hasOwnProp2.call(to, key) && key !== except)
23482
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
23483
+ }
23484
+ return to;
23485
+ };
23486
+ var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
23487
+ // If the importer is in node compatibility mode or this is not an ESM
23488
+ // file that has been converted to a CommonJS file using a Babel-
23489
+ // compatible transform (i.e. "__esModule" has not been set), then set
23490
+ // "default" to the CommonJS "module.exports" for node compatibility.
23491
+ isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
23492
+ mod
23493
+ ));
23494
+ var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
23495
+ var detect_railway_exports = {};
23496
+ __export2(detect_railway_exports, {
23497
+ detectRailwayServices: () => detectRailwayServices
23498
+ });
23499
+ module2.exports = __toCommonJS2(detect_railway_exports);
23500
+ var import_path7 = require("path");
23501
+ var import_smol_toml = __toESM2(require_dist());
23502
+ var import_frameworks2 = require_frameworks();
23503
+ var import_detect_framework = require_detect_framework();
23504
+ var import_utils = require_utils4();
23505
+ var RAILWAY_JSON = "railway.json";
23506
+ var RAILWAY_TOML = "railway.toml";
23507
+ var MAX_SCAN_DEPTH = 5;
23508
+ var SKIP_DIRS = /* @__PURE__ */ new Set([
23509
+ ".hg",
23510
+ ".git",
23511
+ ".svn",
23512
+ ".cache",
23513
+ ".next",
23514
+ ".now",
23515
+ ".vercel",
23516
+ ".venv",
23517
+ ".yarn",
23518
+ ".turbo",
23519
+ ".output",
23520
+ "node_modules",
23521
+ "__pycache__",
23522
+ "venv",
23523
+ "CVS"
23524
+ ]);
23525
+ var DETECTION_FRAMEWORKS = import_frameworks2.frameworkList.filter(
23526
+ (framework) => !framework.experimental || framework.runtimeFramework
23527
+ );
23528
+ async function detectRailwayServices(options) {
23529
+ const { fs: fs5 } = options;
23530
+ const { configs, warnings } = await findRailwayConfigs(fs5);
23531
+ if (configs.length === 0) {
23532
+ return { services: null, errors: [], warnings };
23533
+ }
23534
+ const services = {};
23535
+ const serviceDirs = /* @__PURE__ */ new Map();
23536
+ const errors = [];
23537
+ for (const cf of configs) {
23538
+ const serviceFs = cf.dirPath === "." ? fs5 : fs5.chdir(cf.dirPath);
23539
+ const dirLabel = cf.dirPath === "." ? "root" : cf.dirPath;
23540
+ const frameworks2 = await (0, import_detect_framework.detectFrameworks)({
23541
+ fs: serviceFs,
23542
+ frameworkList: DETECTION_FRAMEWORKS,
23543
+ useExperimentalFrameworks: true
23544
+ });
23545
+ if (cf.config.deploy?.cronSchedule) {
23546
+ const schedule = cf.config.deploy.cronSchedule;
23547
+ const runtime = frameworks2.length === 1 ? (0, import_utils.inferRuntimeFromFramework)(frameworks2[0].slug) : void 0;
23548
+ const hint = {
23549
+ type: "cron",
23550
+ schedule,
23551
+ entrypoint: "<path-to-handler>"
23552
+ };
23553
+ if (runtime) {
23554
+ hint.runtime = runtime;
23555
+ }
23556
+ warnings.push({
23557
+ code: "RAILWAY_CRON_HINT",
23558
+ message: `Found Railway cron in ${dirLabel}/ (schedule: "${schedule}"). Vercel crons work with a file entrypoint. You can add the following to define this cron service:
23559
+ "${deriveServiceName(cf.dirPath)}": ${JSON.stringify(hint, null, 2)}`
23560
+ });
23561
+ continue;
23562
+ }
23563
+ const serviceName = deriveServiceName(cf.dirPath);
23564
+ const existingDir = serviceDirs.get(serviceName);
23565
+ if (existingDir) {
23566
+ errors.push({
23567
+ code: "DUPLICATE_SERVICE",
23568
+ message: `Duplicate service name "${serviceName}" derived from ${existingDir}/ and ${dirLabel}/. Rename one of the directories to avoid conflicts.`,
23569
+ serviceName
23570
+ });
23571
+ continue;
23572
+ }
23573
+ serviceDirs.set(serviceName, dirLabel);
23574
+ if (frameworks2.length === 0) {
23575
+ warnings.push({
23576
+ code: "SERVICE_SKIPPED",
23577
+ message: `Skipped service in ${dirLabel}/: no framework detected. Configure it manually in experimentalServices.`
23578
+ });
23579
+ continue;
23580
+ }
23581
+ if (frameworks2.length > 1) {
23582
+ const names = frameworks2.map((f) => f.name).join(", ");
23583
+ errors.push({
23584
+ code: "MULTIPLE_FRAMEWORKS_SERVICE",
23585
+ message: `Multiple frameworks detected in ${dirLabel}/: ${names}. Use explicit experimentalServices config.`,
23586
+ serviceName
23587
+ });
23588
+ continue;
23589
+ }
23590
+ const framework = frameworks2[0];
23591
+ let serviceConfig = {};
23592
+ serviceConfig.framework = framework.slug ?? void 0;
23593
+ if (cf.dirPath !== ".") {
23594
+ serviceConfig.entrypoint = cf.dirPath;
23595
+ }
23596
+ const buildCommand = combineBuildCommand(
23597
+ cf.config.build?.buildCommand,
23598
+ cf.config.deploy?.preDeployCommand
23599
+ );
23600
+ if (buildCommand) {
23601
+ serviceConfig.buildCommand = buildCommand;
23602
+ }
23603
+ services[serviceName] = serviceConfig;
23604
+ }
23605
+ if (errors.length > 0) {
23606
+ return { services: null, errors, warnings };
23607
+ }
23608
+ const serviceNames = Object.keys(services);
23609
+ if (serviceNames.length === 0) {
23610
+ return { services: null, errors: [], warnings };
23611
+ }
23612
+ warnings.push(...assignRoutePrefixes(services));
23613
+ return { services, errors: [], warnings };
23614
+ }
23615
+ async function findRailwayConfigs(fs5, dirPath = ".", depth = 0) {
23616
+ const configs = [];
23617
+ const warnings = [];
23618
+ const readResult = await readRailwayConfigRaw(fs5, dirPath);
23619
+ warnings.push(...readResult.warnings);
23620
+ const { config, warning } = tryParseRailwayConfig(readResult.raw);
23621
+ if (warning) {
23622
+ warnings.push(warning);
23623
+ }
23624
+ if (config) {
23625
+ configs.push({ dirPath, config });
23626
+ }
23627
+ if (depth >= MAX_SCAN_DEPTH) {
23628
+ return { configs, warnings };
23629
+ }
23630
+ const readPath = dirPath === "." ? "/" : dirPath;
23631
+ let entries;
23632
+ try {
23633
+ entries = await fs5.readdir(readPath);
23634
+ } catch {
23635
+ return { configs, warnings };
23636
+ }
23637
+ for (const entry of entries) {
23638
+ if (entry.type !== "dir" || SKIP_DIRS.has(entry.name)) {
23639
+ continue;
23640
+ }
23641
+ const childPath = dirPath === "." ? entry.name : import_path7.posix.join(dirPath, entry.name);
23642
+ const child = await findRailwayConfigs(fs5, childPath, depth + 1);
23643
+ configs.push(...child.configs);
23644
+ warnings.push(...child.warnings);
23645
+ }
23646
+ return { configs, warnings };
23647
+ }
23648
+ async function readRailwayConfigRaw(fs5, dirPath) {
23649
+ const warnings = [];
23650
+ for (const filename of [RAILWAY_JSON, RAILWAY_TOML]) {
23651
+ const filePath = dirPath === "." ? filename : import_path7.posix.join(dirPath, filename);
23652
+ try {
23653
+ const exists = await fs5.isFile(filePath);
23654
+ if (!exists)
23655
+ continue;
23656
+ } catch {
23657
+ continue;
23658
+ }
23659
+ try {
23660
+ const buf = await fs5.readFile(filePath);
23661
+ return {
23662
+ raw: { path: filePath, content: buf.toString("utf-8") },
23663
+ warnings
23664
+ };
23665
+ } catch (err) {
23666
+ warnings.push({
23667
+ code: "RAILWAY_CONFIG_ERROR",
23668
+ message: `Failed to read ${filePath}: ${err instanceof Error ? err.message : String(err)}`
23669
+ });
23670
+ }
23671
+ }
23672
+ return { raw: null, warnings };
23673
+ }
23674
+ function tryParseRailwayConfig(raw) {
23675
+ if (!raw) {
23676
+ return { config: null };
23677
+ }
23678
+ try {
23679
+ const config = raw.path.endsWith(".toml") ? import_smol_toml.default.parse(raw.content) : JSON.parse(raw.content);
23680
+ return { config };
23681
+ } catch (err) {
23682
+ return {
23683
+ config: null,
23684
+ warning: {
23685
+ code: "RAILWAY_PARSE_ERROR",
23686
+ message: `Failed to parse ${raw.path}: ${err instanceof Error ? err.message : String(err)}`
23687
+ }
23688
+ };
23689
+ }
23690
+ }
23691
+ function deriveServiceName(dirPath) {
23692
+ if (dirPath === ".") {
23693
+ return "web";
23694
+ }
23695
+ const segments = dirPath.split("/");
23696
+ return segments[segments.length - 1];
23697
+ }
23698
+ function combineBuildCommand(buildCommand, preDeployCommand) {
23699
+ const preDeploy = Array.isArray(preDeployCommand) ? preDeployCommand.join(" && ") : preDeployCommand;
23700
+ if (preDeploy && buildCommand) {
23701
+ return `${buildCommand} && ${preDeploy}`;
23702
+ } else if (preDeploy) {
23703
+ return preDeploy;
23704
+ } else {
23705
+ return buildCommand;
23706
+ }
23707
+ }
23708
+ function assignRoutePrefixes(services) {
23709
+ const warnings = [];
23710
+ const names = Object.keys(services);
23711
+ if (names.length === 1) {
23712
+ services[names[0]].routePrefix = "/";
23713
+ return warnings;
23714
+ }
23715
+ const frontendNames = names.filter(
23716
+ (name) => (0, import_utils.isFrontendFramework)(services[name].framework)
23717
+ );
23718
+ let rootName = null;
23719
+ if (frontendNames.length === 1) {
23720
+ rootName = frontendNames[0];
23721
+ } else if (frontendNames.length > 1) {
23722
+ rootName = frontendNames.find((n) => n === "frontend" || n === "web") ?? frontendNames.sort()[0];
23723
+ warnings.push({
23724
+ code: "MULTIPLE_FRONTENDS",
23725
+ message: `Multiple frontend services detected (${frontendNames.join(", ")}). "${rootName}" was assigned routePrefix "/". Adjust manually if a different service should be the root.`
23726
+ });
23727
+ }
23728
+ for (const name of names) {
23729
+ services[name].routePrefix = name === rootName ? "/" : `/_/${name}`;
23730
+ }
23731
+ return warnings;
23732
+ }
23733
+ }
23734
+ });
23735
+
22456
23736
  // ../fs-detectors/dist/services/detect-services.js
22457
23737
  var require_detect_services = __commonJS({
22458
23738
  "../fs-detectors/dist/services/detect-services.js"(exports, module2) {
@@ -22484,6 +23764,7 @@ var require_detect_services = __commonJS({
22484
23764
  var import_utils = require_utils4();
22485
23765
  var import_resolve = require_resolve();
22486
23766
  var import_auto_detect = require_auto_detect();
23767
+ var import_detect_railway = require_detect_railway();
22487
23768
  var PREVIEW_DOMAIN_MISSING = [
22488
23769
  { type: "host", value: { suf: ".vercel.app" } },
22489
23770
  { type: "host", value: { suf: ".vercel.dev" } }
@@ -22521,6 +23802,9 @@ var require_detect_services = __commonJS({
22521
23802
  if ((0, import_utils.isFrontendFramework)(service.framework)) {
22522
23803
  serviceConfig.framework = service.framework;
22523
23804
  }
23805
+ if (typeof service.buildCommand === "string") {
23806
+ serviceConfig.buildCommand = service.buildCommand;
23807
+ }
22524
23808
  inferredConfig[name] = serviceConfig;
22525
23809
  }
22526
23810
  return inferredConfig;
@@ -22541,17 +23825,41 @@ var require_detect_services = __commonJS({
22541
23825
  const configuredServices = vercelConfig?.experimentalServices;
22542
23826
  const hasConfiguredServices = configuredServices && Object.keys(configuredServices).length > 0;
22543
23827
  if (!hasConfiguredServices) {
22544
- const autoResult = await (0, import_auto_detect.autoDetectServices)({ fs: scopedFs });
22545
- if (autoResult.errors.length > 0) {
23828
+ const railwayResult = await (0, import_detect_railway.detectRailwayServices)({ fs: scopedFs });
23829
+ if (railwayResult.errors.length > 0) {
22546
23830
  return withResolvedResult({
22547
23831
  services: [],
22548
23832
  source: "auto-detected",
22549
23833
  routes: emptyRoutes(),
22550
- errors: autoResult.errors,
22551
- warnings: []
23834
+ errors: railwayResult.errors,
23835
+ warnings: railwayResult.warnings
22552
23836
  });
22553
23837
  }
22554
- if (autoResult.services) {
23838
+ if (railwayResult.services) {
23839
+ const result2 = await (0, import_resolve.resolveAllConfiguredServices)(
23840
+ railwayResult.services,
23841
+ scopedFs,
23842
+ "generated"
23843
+ );
23844
+ const inferred = result2.errors.length === 0 && result2.services.length > 0 ? {
23845
+ source: "railway",
23846
+ config: toInferredLayoutConfig(railwayResult.services),
23847
+ services: result2.services,
23848
+ warnings: railwayResult.warnings
23849
+ } : null;
23850
+ return withResolvedResult(
23851
+ {
23852
+ services: [],
23853
+ source: "auto-detected",
23854
+ routes: emptyRoutes(),
23855
+ errors: result2.errors,
23856
+ warnings: railwayResult.warnings
23857
+ },
23858
+ inferred
23859
+ );
23860
+ }
23861
+ const autoResult = await (0, import_auto_detect.autoDetectServices)({ fs: scopedFs });
23862
+ if (autoResult.services && autoResult.errors.length === 0) {
22555
23863
  const result2 = await (0, import_resolve.resolveAllConfiguredServices)(
22556
23864
  autoResult.services,
22557
23865
  scopedFs,
@@ -22575,6 +23883,14 @@ var require_detect_services = __commonJS({
22575
23883
  warnings: []
22576
23884
  } : null;
22577
23885
  return withResolvedResult(resolved, inferred);
23886
+ } else if (autoResult.errors.length > 0) {
23887
+ return withResolvedResult({
23888
+ services: [],
23889
+ source: "auto-detected",
23890
+ routes: emptyRoutes(),
23891
+ errors: autoResult.errors,
23892
+ warnings: []
23893
+ });
22578
23894
  }
22579
23895
  return withResolvedResult({
22580
23896
  services: [],
@@ -23224,7 +24540,7 @@ var require_detect_builders = __commonJS({
23224
24540
  if (!hasNextApiFiles && (fileName.startsWith("pages/api") || fileName.startsWith("src/pages/api"))) {
23225
24541
  hasNextApiFiles = true;
23226
24542
  }
23227
- if (!fallbackEntrypoint && buildCommand && !fileName.includes("/") && fileName !== "now.json" && fileName !== "vercel.json") {
24543
+ if (!fallbackEntrypoint && buildCommand && !fileName.includes("/") && fileName !== "now.json" && fileName !== "vercel.json" && fileName !== "vercel.toml") {
23228
24544
  fallbackEntrypoint = fileName;
23229
24545
  }
23230
24546
  }
@@ -29477,7 +30793,7 @@ var require_parse2 = __commonJS({
29477
30793
  var token;
29478
30794
  var key;
29479
30795
  var root;
29480
- module2.exports = function parse(text, reviver) {
30796
+ module2.exports = function parse2(text, reviver) {
29481
30797
  source = String(text);
29482
30798
  parseState = "start";
29483
30799
  stack = [];
@@ -30315,7 +31631,7 @@ var require_parse2 = __commonJS({
30315
31631
  var require_stringify = __commonJS({
30316
31632
  "../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/stringify.js"(exports, module2) {
30317
31633
  var util = require_util();
30318
- module2.exports = function stringify(value, replacer, space) {
31634
+ module2.exports = function stringify2(value, replacer, space) {
30319
31635
  const stack = [];
30320
31636
  let indent = "";
30321
31637
  let propertyList;
@@ -30533,11 +31849,11 @@ var require_stringify = __commonJS({
30533
31849
  // ../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/index.js
30534
31850
  var require_lib4 = __commonJS({
30535
31851
  "../../node_modules/.pnpm/json5@2.2.2/node_modules/json5/lib/index.js"(exports, module2) {
30536
- var parse = require_parse2();
30537
- var stringify = require_stringify();
31852
+ var parse2 = require_parse2();
31853
+ var stringify2 = require_stringify();
30538
31854
  var JSON5 = {
30539
- parse,
30540
- stringify
31855
+ parse: parse2,
31856
+ stringify: stringify2
30541
31857
  };
30542
31858
  module2.exports = JSON5;
30543
31859
  }
@@ -31076,6 +32392,15 @@ var require_get_monorepo_default_settings = __commonJS({
31076
32392
  }
31077
32393
  return !import_semver2.default.intersects(turboSemVer, "<1.8.0");
31078
32394
  }
32395
+ function supportsFilter(turboSemVer) {
32396
+ if (!turboSemVer) {
32397
+ return true;
32398
+ }
32399
+ if (!import_semver2.default.validRange(turboSemVer)) {
32400
+ return true;
32401
+ }
32402
+ return !import_semver2.default.intersects(turboSemVer, "<=1.1.0");
32403
+ }
31079
32404
  async function getMonorepoDefaultSettings(projectName, projectPath, relativeToRoot, detectorFilesystem) {
31080
32405
  const [monorepoManager, packageManager] = await Promise.all([
31081
32406
  (0, import_detect_framework.detectFramework)({
@@ -31126,8 +32451,10 @@ var require_get_monorepo_default_settings = __commonJS({
31126
32451
  if (projectPath) {
31127
32452
  if (supportsRootCommand(turboSemVer)) {
31128
32453
  buildCommand = `turbo run build`;
31129
- } else {
32454
+ } else if (supportsFilter(turboSemVer)) {
31130
32455
  buildCommand = `cd ${relativeToRoot} && turbo run build --filter={${projectPath}}...`;
32456
+ } else {
32457
+ buildCommand = `cd ${relativeToRoot} && turbo run build --scope=${projectName}`;
31131
32458
  }
31132
32459
  }
31133
32460
  return {
@@ -32930,4 +34257,265 @@ smol-toml/dist/index.cjs:
32930
34257
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32931
34258
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32932
34259
  *)
34260
+
34261
+ smol-toml/dist/error.js:
34262
+ (*!
34263
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34264
+ * SPDX-License-Identifier: BSD-3-Clause
34265
+ *
34266
+ * Redistribution and use in source and binary forms, with or without
34267
+ * modification, are permitted provided that the following conditions are met:
34268
+ *
34269
+ * 1. Redistributions of source code must retain the above copyright notice, this
34270
+ * list of conditions and the following disclaimer.
34271
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34272
+ * this list of conditions and the following disclaimer in the
34273
+ * documentation and/or other materials provided with the distribution.
34274
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34275
+ * may be used to endorse or promote products derived from this software without
34276
+ * specific prior written permission.
34277
+ *
34278
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34279
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34280
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34281
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34282
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34283
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34284
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34285
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34286
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34287
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34288
+ *)
34289
+
34290
+ smol-toml/dist/util.js:
34291
+ (*!
34292
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34293
+ * SPDX-License-Identifier: BSD-3-Clause
34294
+ *
34295
+ * Redistribution and use in source and binary forms, with or without
34296
+ * modification, are permitted provided that the following conditions are met:
34297
+ *
34298
+ * 1. Redistributions of source code must retain the above copyright notice, this
34299
+ * list of conditions and the following disclaimer.
34300
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34301
+ * this list of conditions and the following disclaimer in the
34302
+ * documentation and/or other materials provided with the distribution.
34303
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34304
+ * may be used to endorse or promote products derived from this software without
34305
+ * specific prior written permission.
34306
+ *
34307
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34308
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34309
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34310
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34311
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34312
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34313
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34314
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34315
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34316
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34317
+ *)
34318
+
34319
+ smol-toml/dist/date.js:
34320
+ (*!
34321
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34322
+ * SPDX-License-Identifier: BSD-3-Clause
34323
+ *
34324
+ * Redistribution and use in source and binary forms, with or without
34325
+ * modification, are permitted provided that the following conditions are met:
34326
+ *
34327
+ * 1. Redistributions of source code must retain the above copyright notice, this
34328
+ * list of conditions and the following disclaimer.
34329
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34330
+ * this list of conditions and the following disclaimer in the
34331
+ * documentation and/or other materials provided with the distribution.
34332
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34333
+ * may be used to endorse or promote products derived from this software without
34334
+ * specific prior written permission.
34335
+ *
34336
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34337
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34338
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34339
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34340
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34341
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34342
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34343
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34344
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34345
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34346
+ *)
34347
+
34348
+ smol-toml/dist/primitive.js:
34349
+ (*!
34350
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34351
+ * SPDX-License-Identifier: BSD-3-Clause
34352
+ *
34353
+ * Redistribution and use in source and binary forms, with or without
34354
+ * modification, are permitted provided that the following conditions are met:
34355
+ *
34356
+ * 1. Redistributions of source code must retain the above copyright notice, this
34357
+ * list of conditions and the following disclaimer.
34358
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34359
+ * this list of conditions and the following disclaimer in the
34360
+ * documentation and/or other materials provided with the distribution.
34361
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34362
+ * may be used to endorse or promote products derived from this software without
34363
+ * specific prior written permission.
34364
+ *
34365
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34366
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34367
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34368
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34369
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34370
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34371
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34372
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34373
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34374
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34375
+ *)
34376
+
34377
+ smol-toml/dist/extract.js:
34378
+ (*!
34379
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34380
+ * SPDX-License-Identifier: BSD-3-Clause
34381
+ *
34382
+ * Redistribution and use in source and binary forms, with or without
34383
+ * modification, are permitted provided that the following conditions are met:
34384
+ *
34385
+ * 1. Redistributions of source code must retain the above copyright notice, this
34386
+ * list of conditions and the following disclaimer.
34387
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34388
+ * this list of conditions and the following disclaimer in the
34389
+ * documentation and/or other materials provided with the distribution.
34390
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34391
+ * may be used to endorse or promote products derived from this software without
34392
+ * specific prior written permission.
34393
+ *
34394
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34395
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34396
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34397
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34398
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34399
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34400
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34401
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34402
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34403
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34404
+ *)
34405
+
34406
+ smol-toml/dist/struct.js:
34407
+ (*!
34408
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34409
+ * SPDX-License-Identifier: BSD-3-Clause
34410
+ *
34411
+ * Redistribution and use in source and binary forms, with or without
34412
+ * modification, are permitted provided that the following conditions are met:
34413
+ *
34414
+ * 1. Redistributions of source code must retain the above copyright notice, this
34415
+ * list of conditions and the following disclaimer.
34416
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34417
+ * this list of conditions and the following disclaimer in the
34418
+ * documentation and/or other materials provided with the distribution.
34419
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34420
+ * may be used to endorse or promote products derived from this software without
34421
+ * specific prior written permission.
34422
+ *
34423
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34424
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34425
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34426
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34427
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34428
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34429
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34430
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34431
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34432
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34433
+ *)
34434
+
34435
+ smol-toml/dist/parse.js:
34436
+ (*!
34437
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34438
+ * SPDX-License-Identifier: BSD-3-Clause
34439
+ *
34440
+ * Redistribution and use in source and binary forms, with or without
34441
+ * modification, are permitted provided that the following conditions are met:
34442
+ *
34443
+ * 1. Redistributions of source code must retain the above copyright notice, this
34444
+ * list of conditions and the following disclaimer.
34445
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34446
+ * this list of conditions and the following disclaimer in the
34447
+ * documentation and/or other materials provided with the distribution.
34448
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34449
+ * may be used to endorse or promote products derived from this software without
34450
+ * specific prior written permission.
34451
+ *
34452
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34453
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34454
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34455
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34456
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34457
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34458
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34459
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34460
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34461
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34462
+ *)
34463
+
34464
+ smol-toml/dist/stringify.js:
34465
+ (*!
34466
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34467
+ * SPDX-License-Identifier: BSD-3-Clause
34468
+ *
34469
+ * Redistribution and use in source and binary forms, with or without
34470
+ * modification, are permitted provided that the following conditions are met:
34471
+ *
34472
+ * 1. Redistributions of source code must retain the above copyright notice, this
34473
+ * list of conditions and the following disclaimer.
34474
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34475
+ * this list of conditions and the following disclaimer in the
34476
+ * documentation and/or other materials provided with the distribution.
34477
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34478
+ * may be used to endorse or promote products derived from this software without
34479
+ * specific prior written permission.
34480
+ *
34481
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34482
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34483
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34484
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34485
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34486
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34487
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34488
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34489
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34490
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34491
+ *)
34492
+
34493
+ smol-toml/dist/index.js:
34494
+ (*!
34495
+ * Copyright (c) Squirrel Chat et al., All rights reserved.
34496
+ * SPDX-License-Identifier: BSD-3-Clause
34497
+ *
34498
+ * Redistribution and use in source and binary forms, with or without
34499
+ * modification, are permitted provided that the following conditions are met:
34500
+ *
34501
+ * 1. Redistributions of source code must retain the above copyright notice, this
34502
+ * list of conditions and the following disclaimer.
34503
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
34504
+ * this list of conditions and the following disclaimer in the
34505
+ * documentation and/or other materials provided with the distribution.
34506
+ * 3. Neither the name of the copyright holder nor the names of its contributors
34507
+ * may be used to endorse or promote products derived from this software without
34508
+ * specific prior written permission.
34509
+ *
34510
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
34511
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
34512
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34513
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
34514
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34515
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34516
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34517
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34518
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34519
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34520
+ *)
32933
34521
  */