UNPKG

orval

Version:

A swagger client generator for typescript

4,434 lines 155 kB
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// src/index.ts
var src_exports = {};
__export(src_exports, {
  Options: () => import_core12.Options,
  default: () => src_default,
  defineConfig: () => defineConfig,
  generate: () => generate
});
module.exports = __toCommonJS(src_exports);
var import_core12 = require("@orval/core");

// src/generate.ts
var import_core11 = require("@orval/core");

// src/import-specs.ts
var import_swagger_parser = __toESM(require("@apidevtools/swagger-parser"));
var import_core4 = require("@orval/core");
var import_chalk = __toESM(require("chalk"));

// ../../node_modules/js-yaml/dist/js-yaml.mjs
function isNothing(subject) {
  return typeof subject === "undefined" || subject === null;
}
function isObject(subject) {
  return typeof subject === "object" && subject !== null;
}
function toArray(sequence) {
  if (Array.isArray(sequence)) return sequence;
  else if (isNothing(sequence)) return [];
  return [sequence];
}
function extend(target, source) {
  var index, length, key, sourceKeys;
  if (source) {
    sourceKeys = Object.keys(source);
    for (index = 0, length = sourceKeys.length; index < length; index += 1) {
      key = sourceKeys[index];
      target[key] = source[key];
    }
  }
  return target;
}
function repeat(string, count) {
  var result = "", cycle;
  for (cycle = 0; cycle < count; cycle += 1) {
    result += string;
  }
  return result;
}
function isNegativeZero(number) {
  return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;
}
var isNothing_1 = isNothing;
var isObject_1 = isObject;
var toArray_1 = toArray;
var repeat_1 = repeat;
var isNegativeZero_1 = isNegativeZero;
var extend_1 = extend;
var common = {
  isNothing: isNothing_1,
  isObject: isObject_1,
  toArray: toArray_1,
  repeat: repeat_1,
  isNegativeZero: isNegativeZero_1,
  extend: extend_1
};
function formatError(exception2, compact) {
  var where = "", message = exception2.reason || "(unknown reason)";
  if (!exception2.mark) return message;
  if (exception2.mark.name) {
    where += 'in "' + exception2.mark.name + '" ';
  }
  where += "(" + (exception2.mark.line + 1) + ":" + (exception2.mark.column + 1) + ")";
  if (!compact && exception2.mark.snippet) {
    where += "\n\n" + exception2.mark.snippet;
  }
  return message + " " + where;
}
function YAMLException$1(reason, mark) {
  Error.call(this);
  this.name = "YAMLException";
  this.reason = reason;
  this.mark = mark;
  this.message = formatError(this, false);
  if (Error.captureStackTrace) {
    Error.captureStackTrace(this, this.constructor);
  } else {
    this.stack = new Error().stack || "";
  }
}
YAMLException$1.prototype = Object.create(Error.prototype);
YAMLException$1.prototype.constructor = YAMLException$1;
YAMLException$1.prototype.toString = function toString(compact) {
  return this.name + ": " + formatError(this, compact);
};
var exception = YAMLException$1;
function getLine(buffer, lineStart, lineEnd, position, maxLineLength) {
  var head = "";
  var tail = "";
  var maxHalfLength = Math.floor(maxLineLength / 2) - 1;
  if (position - lineStart > maxHalfLength) {
    head = " ... ";
    lineStart = position - maxHalfLength + head.length;
  }
  if (lineEnd - position > maxHalfLength) {
    tail = " ...";
    lineEnd = position + maxHalfLength - tail.length;
  }
  return {
    str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + tail,
    pos: position - lineStart + head.length
    // relative position
  };
}
function padStart(string, max) {
  return common.repeat(" ", max - string.length) + string;
}
function makeSnippet(mark, options) {
  options = Object.create(options || null);
  if (!mark.buffer) return null;
  if (!options.maxLength) options.maxLength = 79;
  if (typeof options.indent !== "number") options.indent = 1;
  if (typeof options.linesBefore !== "number") options.linesBefore = 3;
  if (typeof options.linesAfter !== "number") options.linesAfter = 2;
  var re = /\r?\n|\r|\0/g;
  var lineStarts = [0];
  var lineEnds = [];
  var match;
  var foundLineNo = -1;
  while (match = re.exec(mark.buffer)) {
    lineEnds.push(match.index);
    lineStarts.push(match.index + match[0].length);
    if (mark.position <= match.index && foundLineNo < 0) {
      foundLineNo = lineStarts.length - 2;
    }
  }
  if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;
  var result = "", i, line;
  var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;
  var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);
  for (i = 1; i <= options.linesBefore; i++) {
    if (foundLineNo - i < 0) break;
    line = getLine(
      mark.buffer,
      lineStarts[foundLineNo - i],
      lineEnds[foundLineNo - i],
      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),
      maxLineLength
    );
    result = common.repeat(" ", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + " | " + line.str + "\n" + result;
  }
  line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);
  result += common.repeat(" ", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line.str + "\n";
  result += common.repeat("-", options.indent + lineNoLength + 3 + line.pos) + "^\n";
  for (i = 1; i <= options.linesAfter; i++) {
    if (foundLineNo + i >= lineEnds.length) break;
    line = getLine(
      mark.buffer,
      lineStarts[foundLineNo + i],
      lineEnds[foundLineNo + i],
      mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),
      maxLineLength
    );
    result += common.repeat(" ", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + " | " + line.str + "\n";
  }
  return result.replace(/\n$/, "");
}
var snippet = makeSnippet;
var TYPE_CONSTRUCTOR_OPTIONS = [
  "kind",
  "multi",
  "resolve",
  "construct",
  "instanceOf",
  "predicate",
  "represent",
  "representName",
  "defaultStyle",
  "styleAliases"
];
var YAML_NODE_KINDS = [
  "scalar",
  "sequence",
  "mapping"
];
function compileStyleAliases(map2) {
  var result = {};
  if (map2 !== null) {
    Object.keys(map2).forEach(function(style) {
      map2[style].forEach(function(alias) {
        result[String(alias)] = style;
      });
    });
  }
  return result;
}
function Type$1(tag, options) {
  options = options || {};
  Object.keys(options).forEach(function(name) {
    if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {
      throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
    }
  });
  this.options = options;
  this.tag = tag;
  this.kind = options["kind"] || null;
  this.resolve = options["resolve"] || function() {
    return true;
  };
  this.construct = options["construct"] || function(data) {
    return data;
  };
  this.instanceOf = options["instanceOf"] || null;
  this.predicate = options["predicate"] || null;
  this.represent = options["represent"] || null;
  this.representName = options["representName"] || null;
  this.defaultStyle = options["defaultStyle"] || null;
  this.multi = options["multi"] || false;
  this.styleAliases = compileStyleAliases(options["styleAliases"] || null);
  if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
    throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
  }
}
var type = Type$1;
function compileList(schema2, name) {
  var result = [];
  schema2[name].forEach(function(currentType) {
    var newIndex = result.length;
    result.forEach(function(previousType, previousIndex) {
      if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {
        newIndex = previousIndex;
      }
    });
    result[newIndex] = currentType;
  });
  return result;
}
function compileMap() {
  var result = {
    scalar: {},
    sequence: {},
    mapping: {},
    fallback: {},
    multi: {
      scalar: [],
      sequence: [],
      mapping: [],
      fallback: []
    }
  }, index, length;
  function collectType(type2) {
    if (type2.multi) {
      result.multi[type2.kind].push(type2);
      result.multi["fallback"].push(type2);
    } else {
      result[type2.kind][type2.tag] = result["fallback"][type2.tag] = type2;
    }
  }
  for (index = 0, length = arguments.length; index < length; index += 1) {
    arguments[index].forEach(collectType);
  }
  return result;
}
function Schema$1(definition) {
  return this.extend(definition);
}
Schema$1.prototype.extend = function extend2(definition) {
  var implicit = [];
  var explicit = [];
  if (definition instanceof type) {
    explicit.push(definition);
  } else if (Array.isArray(definition)) {
    explicit = explicit.concat(definition);
  } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {
    if (definition.implicit) implicit = implicit.concat(definition.implicit);
    if (definition.explicit) explicit = explicit.concat(definition.explicit);
  } else {
    throw new exception("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");
  }
  implicit.forEach(function(type$1) {
    if (!(type$1 instanceof type)) {
      throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object.");
    }
    if (type$1.loadKind && type$1.loadKind !== "scalar") {
      throw new exception("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");
    }
    if (type$1.multi) {
      throw new exception("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.");
    }
  });
  explicit.forEach(function(type$1) {
    if (!(type$1 instanceof type)) {
      throw new exception("Specified list of YAML types (or a single Type object) contains a non-Type object.");
    }
  });
  var result = Object.create(Schema$1.prototype);
  result.implicit = (this.implicit || []).concat(implicit);
  result.explicit = (this.explicit || []).concat(explicit);
  result.compiledImplicit = compileList(result, "implicit");
  result.compiledExplicit = compileList(result, "explicit");
  result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);
  return result;
};
var schema = Schema$1;
var str = new type("tag:yaml.org,2002:str", {
  kind: "scalar",
  construct: function(data) {
    return data !== null ? data : "";
  }
});
var seq = new type("tag:yaml.org,2002:seq", {
  kind: "sequence",
  construct: function(data) {
    return data !== null ? data : [];
  }
});
var map = new type("tag:yaml.org,2002:map", {
  kind: "mapping",
  construct: function(data) {
    return data !== null ? data : {};
  }
});
var failsafe = new schema({
  explicit: [
    str,
    seq,
    map
  ]
});
function resolveYamlNull(data) {
  if (data === null) return true;
  var max = data.length;
  return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL");
}
function constructYamlNull() {
  return null;
}
function isNull(object) {
  return object === null;
}
var _null = new type("tag:yaml.org,2002:null", {
  kind: "scalar",
  resolve: resolveYamlNull,
  construct: constructYamlNull,
  predicate: isNull,
  represent: {
    canonical: function() {
      return "~";
    },
    lowercase: function() {
      return "null";
    },
    uppercase: function() {
      return "NULL";
    },
    camelcase: function() {
      return "Null";
    },
    empty: function() {
      return "";
    }
  },
  defaultStyle: "lowercase"
});
function resolveYamlBoolean(data) {
  if (data === null) return false;
  var max = data.length;
  return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE");
}
function constructYamlBoolean(data) {
  return data === "true" || data === "True" || data === "TRUE";
}
function isBoolean(object) {
  return Object.prototype.toString.call(object) === "[object Boolean]";
}
var bool = new type("tag:yaml.org,2002:bool", {
  kind: "scalar",
  resolve: resolveYamlBoolean,
  construct: constructYamlBoolean,
  predicate: isBoolean,
  represent: {
    lowercase: function(object) {
      return object ? "true" : "false";
    },
    uppercase: function(object) {
      return object ? "TRUE" : "FALSE";
    },
    camelcase: function(object) {
      return object ? "True" : "False";
    }
  },
  defaultStyle: "lowercase"
});
function isHexCode(c) {
  return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;
}
function isOctCode(c) {
  return 48 <= c && c <= 55;
}
function isDecCode(c) {
  return 48 <= c && c <= 57;
}
function resolveYamlInteger(data) {
  if (data === null) return false;
  var max = data.length, index = 0, hasDigits = false, ch;
  if (!max) return false;
  ch = data[index];
  if (ch === "-" || ch === "+") {
    ch = data[++index];
  }
  if (ch === "0") {
    if (index + 1 === max) return true;
    ch = data[++index];
    if (ch === "b") {
      index++;
      for (; index < max; index++) {
        ch = data[index];
        if (ch === "_") continue;
        if (ch !== "0" && ch !== "1") return false;
        hasDigits = true;
      }
      return hasDigits && ch !== "_";
    }
    if (ch === "x") {
      index++;
      for (; index < max; index++) {
        ch = data[index];
        if (ch === "_") continue;
        if (!isHexCode(data.charCodeAt(index))) return false;
        hasDigits = true;
      }
      return hasDigits && ch !== "_";
    }
    if (ch === "o") {
      index++;
      for (; index < max; index++) {
        ch = data[index];
        if (ch === "_") continue;
        if (!isOctCode(data.charCodeAt(index))) return false;
        hasDigits = true;
      }
      return hasDigits && ch !== "_";
    }
  }
  if (ch === "_") return false;
  for (; index < max; index++) {
    ch = data[index];
    if (ch === "_") continue;
    if (!isDecCode(data.charCodeAt(index))) {
      return false;
    }
    hasDigits = true;
  }
  if (!hasDigits || ch === "_") return false;
  return true;
}
function constructYamlInteger(data) {
  var value = data, sign = 1, ch;
  if (value.indexOf("_") !== -1) {
    value = value.replace(/_/g, "");
  }
  ch = value[0];
  if (ch === "-" || ch === "+") {
    if (ch === "-") sign = -1;
    value = value.slice(1);
    ch = value[0];
  }
  if (value === "0") return 0;
  if (ch === "0") {
    if (value[1] === "b") return sign * parseInt(value.slice(2), 2);
    if (value[1] === "x") return sign * parseInt(value.slice(2), 16);
    if (value[1] === "o") return sign * parseInt(value.slice(2), 8);
  }
  return sign * parseInt(value, 10);
}
function isInteger(object) {
  return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 === 0 && !common.isNegativeZero(object));
}
var int = new type("tag:yaml.org,2002:int", {
  kind: "scalar",
  resolve: resolveYamlInteger,
  construct: constructYamlInteger,
  predicate: isInteger,
  represent: {
    binary: function(obj) {
      return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1);
    },
    octal: function(obj) {
      return obj >= 0 ? "0o" + obj.toString(8) : "-0o" + obj.toString(8).slice(1);
    },
    decimal: function(obj) {
      return obj.toString(10);
    },
    /* eslint-disable max-len */
    hexadecimal: function(obj) {
      return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1);
    }
  },
  defaultStyle: "decimal",
  styleAliases: {
    binary: [2, "bin"],
    octal: [8, "oct"],
    decimal: [10, "dec"],
    hexadecimal: [16, "hex"]
  }
});
var YAML_FLOAT_PATTERN = new RegExp(
  // 2.5e4, 2.5 and integers
  "^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"
);
function resolveYamlFloat(data) {
  if (data === null) return false;
  if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`
  // Probably should update regexp & check speed
  data[data.length - 1] === "_") {
    return false;
  }
  return true;
}
function constructYamlFloat(data) {
  var value, sign;
  value = data.replace(/_/g, "").toLowerCase();
  sign = value[0] === "-" ? -1 : 1;
  if ("+-".indexOf(value[0]) >= 0) {
    value = value.slice(1);
  }
  if (value === ".inf") {
    return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
  } else if (value === ".nan") {
    return NaN;
  }
  return sign * parseFloat(value, 10);
}
var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
function representYamlFloat(object, style) {
  var res;
  if (isNaN(object)) {
    switch (style) {
      case "lowercase":
        return ".nan";
      case "uppercase":
        return ".NAN";
      case "camelcase":
        return ".NaN";
    }
  } else if (Number.POSITIVE_INFINITY === object) {
    switch (style) {
      case "lowercase":
        return ".inf";
      case "uppercase":
        return ".INF";
      case "camelcase":
        return ".Inf";
    }
  } else if (Number.NEGATIVE_INFINITY === object) {
    switch (style) {
      case "lowercase":
        return "-.inf";
      case "uppercase":
        return "-.INF";
      case "camelcase":
        return "-.Inf";
    }
  } else if (common.isNegativeZero(object)) {
    return "-0.0";
  }
  res = object.toString(10);
  return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res;
}
function isFloat(object) {
  return Object.prototype.toString.call(object) === "[object Number]" && (object % 1 !== 0 || common.isNegativeZero(object));
}
var float = new type("tag:yaml.org,2002:float", {
  kind: "scalar",
  resolve: resolveYamlFloat,
  construct: constructYamlFloat,
  predicate: isFloat,
  represent: representYamlFloat,
  defaultStyle: "lowercase"
});
var json = failsafe.extend({
  implicit: [
    _null,
    bool,
    int,
    float
  ]
});
var core = json;
var YAML_DATE_REGEXP = new RegExp(
  "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"
);
var YAML_TIMESTAMP_REGEXP = new RegExp(
  "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"
);
function resolveYamlTimestamp(data) {
  if (data === null) return false;
  if (YAML_DATE_REGEXP.exec(data) !== null) return true;
  if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;
  return false;
}
function constructYamlTimestamp(data) {
  var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date;
  match = YAML_DATE_REGEXP.exec(data);
  if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);
  if (match === null) throw new Error("Date resolve error");
  year = +match[1];
  month = +match[2] - 1;
  day = +match[3];
  if (!match[4]) {
    return new Date(Date.UTC(year, month, day));
  }
  hour = +match[4];
  minute = +match[5];
  second = +match[6];
  if (match[7]) {
    fraction = match[7].slice(0, 3);
    while (fraction.length < 3) {
      fraction += "0";
    }
    fraction = +fraction;
  }
  if (match[9]) {
    tz_hour = +match[10];
    tz_minute = +(match[11] || 0);
    delta = (tz_hour * 60 + tz_minute) * 6e4;
    if (match[9] === "-") delta = -delta;
  }
  date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));
  if (delta) date.setTime(date.getTime() - delta);
  return date;
}
function representYamlTimestamp(object) {
  return object.toISOString();
}
var timestamp = new type("tag:yaml.org,2002:timestamp", {
  kind: "scalar",
  resolve: resolveYamlTimestamp,
  construct: constructYamlTimestamp,
  instanceOf: Date,
  represent: representYamlTimestamp
});
function resolveYamlMerge(data) {
  return data === "<<" || data === null;
}
var merge = new type("tag:yaml.org,2002:merge", {
  kind: "scalar",
  resolve: resolveYamlMerge
});
var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";
function resolveYamlBinary(data) {
  if (data === null) return false;
  var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP;
  for (idx = 0; idx < max; idx++) {
    code = map2.indexOf(data.charAt(idx));
    if (code > 64) continue;
    if (code < 0) return false;
    bitlen += 6;
  }
  return bitlen % 8 === 0;
}
function constructYamlBinary(data) {
  var idx, tailbits, input = data.replace(/[\r\n=]/g, ""), max = input.length, map2 = BASE64_MAP, bits = 0, result = [];
  for (idx = 0; idx < max; idx++) {
    if (idx % 4 === 0 && idx) {
      result.push(bits >> 16 & 255);
      result.push(bits >> 8 & 255);
      result.push(bits & 255);
    }
    bits = bits << 6 | map2.indexOf(input.charAt(idx));
  }
  tailbits = max % 4 * 6;
  if (tailbits === 0) {
    result.push(bits >> 16 & 255);
    result.push(bits >> 8 & 255);
    result.push(bits & 255);
  } else if (tailbits === 18) {
    result.push(bits >> 10 & 255);
    result.push(bits >> 2 & 255);
  } else if (tailbits === 12) {
    result.push(bits >> 4 & 255);
  }
  return new Uint8Array(result);
}
function representYamlBinary(object) {
  var result = "", bits = 0, idx, tail, max = object.length, map2 = BASE64_MAP;
  for (idx = 0; idx < max; idx++) {
    if (idx % 3 === 0 && idx) {
      result += map2[bits >> 18 & 63];
      result += map2[bits >> 12 & 63];
      result += map2[bits >> 6 & 63];
      result += map2[bits & 63];
    }
    bits = (bits << 8) + object[idx];
  }
  tail = max % 3;
  if (tail === 0) {
    result += map2[bits >> 18 & 63];
    result += map2[bits >> 12 & 63];
    result += map2[bits >> 6 & 63];
    result += map2[bits & 63];
  } else if (tail === 2) {
    result += map2[bits >> 10 & 63];
    result += map2[bits >> 4 & 63];
    result += map2[bits << 2 & 63];
    result += map2[64];
  } else if (tail === 1) {
    result += map2[bits >> 2 & 63];
    result += map2[bits << 4 & 63];
    result += map2[64];
    result += map2[64];
  }
  return result;
}
function isBinary(obj) {
  return Object.prototype.toString.call(obj) === "[object Uint8Array]";
}
var binary = new type("tag:yaml.org,2002:binary", {
  kind: "scalar",
  resolve: resolveYamlBinary,
  construct: constructYamlBinary,
  predicate: isBinary,
  represent: representYamlBinary
});
var _hasOwnProperty$3 = Object.prototype.hasOwnProperty;
var _toString$2 = Object.prototype.toString;
function resolveYamlOmap(data) {
  if (data === null) return true;
  var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data;
  for (index = 0, length = object.length; index < length; index += 1) {
    pair = object[index];
    pairHasKey = false;
    if (_toString$2.call(pair) !== "[object Object]") return false;
    for (pairKey in pair) {
      if (_hasOwnProperty$3.call(pair, pairKey)) {
        if (!pairHasKey) pairHasKey = true;
        else return false;
      }
    }
    if (!pairHasKey) return false;
    if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);
    else return false;
  }
  return true;
}
function constructYamlOmap(data) {
  return data !== null ? data : [];
}
var omap = new type("tag:yaml.org,2002:omap", {
  kind: "sequence",
  resolve: resolveYamlOmap,
  construct: constructYamlOmap
});
var _toString$1 = Object.prototype.toString;
function resolveYamlPairs(data) {
  if (data === null) return true;
  var index, length, pair, keys, result, object = data;
  result = new Array(object.length);
  for (index = 0, length = object.length; index < length; index += 1) {
    pair = object[index];
    if (_toString$1.call(pair) !== "[object Object]") return false;
    keys = Object.keys(pair);
    if (keys.length !== 1) return false;
    result[index] = [keys[0], pair[keys[0]]];
  }
  return true;
}
function constructYamlPairs(data) {
  if (data === null) return [];
  var index, length, pair, keys, result, object = data;
  result = new Array(object.length);
  for (index = 0, length = object.length; index < length; index += 1) {
    pair = object[index];
    keys = Object.keys(pair);
    result[index] = [keys[0], pair[keys[0]]];
  }
  return result;
}
var pairs = new type("tag:yaml.org,2002:pairs", {
  kind: "sequence",
  resolve: resolveYamlPairs,
  construct: constructYamlPairs
});
var _hasOwnProperty$2 = Object.prototype.hasOwnProperty;
function resolveYamlSet(data) {
  if (data === null) return true;
  var key, object = data;
  for (key in object) {
    if (_hasOwnProperty$2.call(object, key)) {
      if (object[key] !== null) return false;
    }
  }
  return true;
}
function constructYamlSet(data) {
  return data !== null ? data : {};
}
var set = new type("tag:yaml.org,2002:set", {
  kind: "mapping",
  resolve: resolveYamlSet,
  construct: constructYamlSet
});
var _default = core.extend({
  implicit: [
    timestamp,
    merge
  ],
  explicit: [
    binary,
    omap,
    pairs,
    set
  ]
});
var _hasOwnProperty$1 = Object.prototype.hasOwnProperty;
var CONTEXT_FLOW_IN = 1;
var CONTEXT_FLOW_OUT = 2;
var CONTEXT_BLOCK_IN = 3;
var CONTEXT_BLOCK_OUT = 4;
var CHOMPING_CLIP = 1;
var CHOMPING_STRIP = 2;
var CHOMPING_KEEP = 3;
var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
function _class(obj) {
  return Object.prototype.toString.call(obj);
}
function is_EOL(c) {
  return c === 10 || c === 13;
}
function is_WHITE_SPACE(c) {
  return c === 9 || c === 32;
}
function is_WS_OR_EOL(c) {
  return c === 9 || c === 32 || c === 10 || c === 13;
}
function is_FLOW_INDICATOR(c) {
  return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;
}
function fromHexCode(c) {
  var lc;
  if (48 <= c && c <= 57) {
    return c - 48;
  }
  lc = c | 32;
  if (97 <= lc && lc <= 102) {
    return lc - 97 + 10;
  }
  return -1;
}
function escapedHexLen(c) {
  if (c === 120) {
    return 2;
  }
  if (c === 117) {
    return 4;
  }
  if (c === 85) {
    return 8;
  }
  return 0;
}
function fromDecimalCode(c) {
  if (48 <= c && c <= 57) {
    return c - 48;
  }
  return -1;
}
function simpleEscapeSequence(c) {
  return c === 48 ? "\0" : c === 97 ? "\x07" : c === 98 ? "\b" : c === 116 ? "	" : c === 9 ? "	" : c === 110 ? "\n" : c === 118 ? "\v" : c === 102 ? "\f" : c === 114 ? "\r" : c === 101 ? "\x1B" : c === 32 ? " " : c === 34 ? '"' : c === 47 ? "/" : c === 92 ? "\\" : c === 78 ? "\x85" : c === 95 ? "\xA0" : c === 76 ? "\u2028" : c === 80 ? "\u2029" : "";
}
function charFromCodepoint(c) {
  if (c <= 65535) {
    return String.fromCharCode(c);
  }
  return String.fromCharCode(
    (c - 65536 >> 10) + 55296,
    (c - 65536 & 1023) + 56320
  );
}
var simpleEscapeCheck = new Array(256);
var simpleEscapeMap = new Array(256);
for (i = 0; i < 256; i++) {
  simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
  simpleEscapeMap[i] = simpleEscapeSequence(i);
}
var i;
function State$1(input, options) {
  this.input = input;
  this.filename = options["filename"] || null;
  this.schema = options["schema"] || _default;
  this.onWarning = options["onWarning"] || null;
  this.legacy = options["legacy"] || false;
  this.json = options["json"] || false;
  this.listener = options["listener"] || null;
  this.implicitTypes = this.schema.compiledImplicit;
  this.typeMap = this.schema.compiledTypeMap;
  this.length = input.length;
  this.position = 0;
  this.line = 0;
  this.lineStart = 0;
  this.lineIndent = 0;
  this.firstTabInLine = -1;
  this.documents = [];
}
function generateError(state, message) {
  var mark = {
    name: state.filename,
    buffer: state.input.slice(0, -1),
    // omit trailing \0
    position: state.position,
    line: state.line,
    column: state.position - state.lineStart
  };
  mark.snippet = snippet(mark);
  return new exception(message, mark);
}
function throwError(state, message) {
  throw generateError(state, message);
}
function throwWarning(state, message) {
  if (state.onWarning) {
    state.onWarning.call(null, generateError(state, message));
  }
}
var directiveHandlers = {
  YAML: function handleYamlDirective(state, name, args) {
    var match, major, minor;
    if (state.version !== null) {
      throwError(state, "duplication of %YAML directive");
    }
    if (args.length !== 1) {
      throwError(state, "YAML directive accepts exactly one argument");
    }
    match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
    if (match === null) {
      throwError(state, "ill-formed argument of the YAML directive");
    }
    major = parseInt(match[1], 10);
    minor = parseInt(match[2], 10);
    if (major !== 1) {
      throwError(state, "unacceptable YAML version of the document");
    }
    state.version = args[0];
    state.checkLineBreaks = minor < 2;
    if (minor !== 1 && minor !== 2) {
      throwWarning(state, "unsupported YAML version of the document");
    }
  },
  TAG: function handleTagDirective(state, name, args) {
    var handle, prefix;
    if (args.length !== 2) {
      throwError(state, "TAG directive accepts exactly two arguments");
    }
    handle = args[0];
    prefix = args[1];
    if (!PATTERN_TAG_HANDLE.test(handle)) {
      throwError(state, "ill-formed tag handle (first argument) of the TAG directive");
    }
    if (_hasOwnProperty$1.call(state.tagMap, handle)) {
      throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
    }
    if (!PATTERN_TAG_URI.test(prefix)) {
      throwError(state, "ill-formed tag prefix (second argument) of the TAG directive");
    }
    try {
      prefix = decodeURIComponent(prefix);
    } catch (err) {
      throwError(state, "tag prefix is malformed: " + prefix);
    }
    state.tagMap[handle] = prefix;
  }
};
function captureSegment(state, start, end, checkJson) {
  var _position, _length, _character, _result;
  if (start < end) {
    _result = state.input.slice(start, end);
    if (checkJson) {
      for (_position = 0, _length = _result.length; _position < _length; _position += 1) {
        _character = _result.charCodeAt(_position);
        if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {
          throwError(state, "expected valid JSON character");
        }
      }
    } else if (PATTERN_NON_PRINTABLE.test(_result)) {
      throwError(state, "the stream contains non-printable characters");
    }
    state.result += _result;
  }
}
function mergeMappings(state, destination, source, overridableKeys) {
  var sourceKeys, key, index, quantity;
  if (!common.isObject(source)) {
    throwError(state, "cannot merge mappings; the provided source object is unacceptable");
  }
  sourceKeys = Object.keys(source);
  for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
    key = sourceKeys[index];
    if (!_hasOwnProperty$1.call(destination, key)) {
      destination[key] = source[key];
      overridableKeys[key] = true;
    }
  }
}
function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {
  var index, quantity;
  if (Array.isArray(keyNode)) {
    keyNode = Array.prototype.slice.call(keyNode);
    for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {
      if (Array.isArray(keyNode[index])) {
        throwError(state, "nested arrays are not supported inside keys");
      }
      if (typeof keyNode === "object" && _class(keyNode[index]) === "[object Object]") {
        keyNode[index] = "[object Object]";
      }
    }
  }
  if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") {
    keyNode = "[object Object]";
  }
  keyNode = String(keyNode);
  if (_result === null) {
    _result = {};
  }
  if (keyTag === "tag:yaml.org,2002:merge") {
    if (Array.isArray(valueNode)) {
      for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
        mergeMappings(state, _result, valueNode[index], overridableKeys);
      }
    } else {
      mergeMappings(state, _result, valueNode, overridableKeys);
    }
  } else {
    if (!state.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) {
      state.line = startLine || state.line;
      state.lineStart = startLineStart || state.lineStart;
      state.position = startPos || state.position;
      throwError(state, "duplicated mapping key");
    }
    if (keyNode === "__proto__") {
      Object.defineProperty(_result, keyNode, {
        configurable: true,
        enumerable: true,
        writable: true,
        value: valueNode
      });
    } else {
      _result[keyNode] = valueNode;
    }
    delete overridableKeys[keyNode];
  }
  return _result;
}
function readLineBreak(state) {
  var ch;
  ch = state.input.charCodeAt(state.position);
  if (ch === 10) {
    state.position++;
  } else if (ch === 13) {
    state.position++;
    if (state.input.charCodeAt(state.position) === 10) {
      state.position++;
    }
  } else {
    throwError(state, "a line break is expected");
  }
  state.line += 1;
  state.lineStart = state.position;
  state.firstTabInLine = -1;
}
function skipSeparationSpace(state, allowComments, checkIndent) {
  var lineBreaks = 0, ch = state.input.charCodeAt(state.position);
  while (ch !== 0) {
    while (is_WHITE_SPACE(ch)) {
      if (ch === 9 && state.firstTabInLine === -1) {
        state.firstTabInLine = state.position;
      }
      ch = state.input.charCodeAt(++state.position);
    }
    if (allowComments && ch === 35) {
      do {
        ch = state.input.charCodeAt(++state.position);
      } while (ch !== 10 && ch !== 13 && ch !== 0);
    }
    if (is_EOL(ch)) {
      readLineBreak(state);
      ch = state.input.charCodeAt(state.position);
      lineBreaks++;
      state.lineIndent = 0;
      while (ch === 32) {
        state.lineIndent++;
        ch = state.input.charCodeAt(++state.position);
      }
    } else {
      break;
    }
  }
  if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {
    throwWarning(state, "deficient indentation");
  }
  return lineBreaks;
}
function testDocumentSeparator(state) {
  var _position = state.position, ch;
  ch = state.input.charCodeAt(_position);
  if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {
    _position += 3;
    ch = state.input.charCodeAt(_position);
    if (ch === 0 || is_WS_OR_EOL(ch)) {
      return true;
    }
  }
  return false;
}
function writeFoldedLines(state, count) {
  if (count === 1) {
    state.result += " ";
  } else if (count > 1) {
    state.result += common.repeat("\n", count - 1);
  }
}
function readPlainScalar(state, nodeIndent, withinFlowCollection) {
  var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch;
  ch = state.input.charCodeAt(state.position);
  if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {
    return false;
  }
  if (ch === 63 || ch === 45) {
    following = state.input.charCodeAt(state.position + 1);
    if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
      return false;
    }
  }
  state.kind = "scalar";
  state.result = "";
  captureStart = captureEnd = state.position;
  hasPendingContent = false;
  while (ch !== 0) {
    if (ch === 58) {
      following = state.input.charCodeAt(state.position + 1);
      if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
        break;
      }
    } else if (ch === 35) {
      preceding = state.input.charCodeAt(state.position - 1);
      if (is_WS_OR_EOL(preceding)) {
        break;
      }
    } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {
      break;
    } else if (is_EOL(ch)) {
      _line = state.line;
      _lineStart = state.lineStart;
      _lineIndent = state.lineIndent;
      skipSeparationSpace(state, false, -1);
      if (state.lineIndent >= nodeIndent) {
        hasPendingContent = true;
        ch = state.input.charCodeAt(state.position);
        continue;
      } else {
        state.position = captureEnd;
        state.line = _line;
        state.lineStart = _lineStart;
        state.lineIndent = _lineIndent;
        break;
      }
    }
    if (hasPendingContent) {
      captureSegment(state, captureStart, captureEnd, false);
      writeFoldedLines(state, state.line - _line);
      captureStart = captureEnd = state.position;
      hasPendingContent = false;
    }
    if (!is_WHITE_SPACE(ch)) {
      captureEnd = state.position + 1;
    }
    ch = state.input.charCodeAt(++state.position);
  }
  captureSegment(state, captureStart, captureEnd, false);
  if (state.result) {
    return true;
  }
  state.kind = _kind;
  state.result = _result;
  return false;
}
function readSingleQuotedScalar(state, nodeIndent) {
  var ch, captureStart, captureEnd;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 39) {
    return false;
  }
  state.kind = "scalar";
  state.result = "";
  state.position++;
  captureStart = captureEnd = state.position;
  while ((ch = state.input.charCodeAt(state.position)) !== 0) {
    if (ch === 39) {
      captureSegment(state, captureStart, state.position, true);
      ch = state.input.charCodeAt(++state.position);
      if (ch === 39) {
        captureStart = state.position;
        state.position++;
        captureEnd = state.position;
      } else {
        return true;
      }
    } else if (is_EOL(ch)) {
      captureSegment(state, captureStart, captureEnd, true);
      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
      captureStart = captureEnd = state.position;
    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
      throwError(state, "unexpected end of the document within a single quoted scalar");
    } else {
      state.position++;
      captureEnd = state.position;
    }
  }
  throwError(state, "unexpected end of the stream within a single quoted scalar");
}
function readDoubleQuotedScalar(state, nodeIndent) {
  var captureStart, captureEnd, hexLength, hexResult, tmp, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 34) {
    return false;
  }
  state.kind = "scalar";
  state.result = "";
  state.position++;
  captureStart = captureEnd = state.position;
  while ((ch = state.input.charCodeAt(state.position)) !== 0) {
    if (ch === 34) {
      captureSegment(state, captureStart, state.position, true);
      state.position++;
      return true;
    } else if (ch === 92) {
      captureSegment(state, captureStart, state.position, true);
      ch = state.input.charCodeAt(++state.position);
      if (is_EOL(ch)) {
        skipSeparationSpace(state, false, nodeIndent);
      } else if (ch < 256 && simpleEscapeCheck[ch]) {
        state.result += simpleEscapeMap[ch];
        state.position++;
      } else if ((tmp = escapedHexLen(ch)) > 0) {
        hexLength = tmp;
        hexResult = 0;
        for (; hexLength > 0; hexLength--) {
          ch = state.input.charCodeAt(++state.position);
          if ((tmp = fromHexCode(ch)) >= 0) {
            hexResult = (hexResult << 4) + tmp;
          } else {
            throwError(state, "expected hexadecimal character");
          }
        }
        state.result += charFromCodepoint(hexResult);
        state.position++;
      } else {
        throwError(state, "unknown escape sequence");
      }
      captureStart = captureEnd = state.position;
    } else if (is_EOL(ch)) {
      captureSegment(state, captureStart, captureEnd, true);
      writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
      captureStart = captureEnd = state.position;
    } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
      throwError(state, "unexpected end of the document within a double quoted scalar");
    } else {
      state.position++;
      captureEnd = state.position;
    }
  }
  throwError(state, "unexpected end of the stream within a double quoted scalar");
}
function readFlowCollection(state, nodeIndent) {
  var readNext = true, _line, _lineStart, _pos, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch === 91) {
    terminator = 93;
    isMapping = false;
    _result = [];
  } else if (ch === 123) {
    terminator = 125;
    isMapping = true;
    _result = {};
  } else {
    return false;
  }
  if (state.anchor !== null) {
    state.anchorMap[state.anchor] = _result;
  }
  ch = state.input.charCodeAt(++state.position);
  while (ch !== 0) {
    skipSeparationSpace(state, true, nodeIndent);
    ch = state.input.charCodeAt(state.position);
    if (ch === terminator) {
      state.position++;
      state.tag = _tag;
      state.anchor = _anchor;
      state.kind = isMapping ? "mapping" : "sequence";
      state.result = _result;
      return true;
    } else if (!readNext) {
      throwError(state, "missed comma between flow collection entries");
    } else if (ch === 44) {
      throwError(state, "expected the node content, but found ','");
    }
    keyTag = keyNode = valueNode = null;
    isPair = isExplicitPair = false;
    if (ch === 63) {
      following = state.input.charCodeAt(state.position + 1);
      if (is_WS_OR_EOL(following)) {
        isPair = isExplicitPair = true;
        state.position++;
        skipSeparationSpace(state, true, nodeIndent);
      }
    }
    _line = state.line;
    _lineStart = state.lineStart;
    _pos = state.position;
    composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
    keyTag = state.tag;
    keyNode = state.result;
    skipSeparationSpace(state, true, nodeIndent);
    ch = state.input.charCodeAt(state.position);
    if ((isExplicitPair || state.line === _line) && ch === 58) {
      isPair = true;
      ch = state.input.charCodeAt(++state.position);
      skipSeparationSpace(state, true, nodeIndent);
      composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
      valueNode = state.result;
    }
    if (isMapping) {
      storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);
    } else if (isPair) {
      _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));
    } else {
      _result.push(keyNode);
    }
    skipSeparationSpace(state, true, nodeIndent);
    ch = state.input.charCodeAt(state.position);
    if (ch === 44) {
      readNext = true;
      ch = state.input.charCodeAt(++state.position);
    } else {
      readNext = false;
    }
  }
  throwError(state, "unexpected end of the stream within a flow collection");
}
function readBlockScalar(state, nodeIndent) {
  var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch === 124) {
    folding = false;
  } else if (ch === 62) {
    folding = true;
  } else {
    return false;
  }
  state.kind = "scalar";
  state.result = "";
  while (ch !== 0) {
    ch = state.input.charCodeAt(++state.position);
    if (ch === 43 || ch === 45) {
      if (CHOMPING_CLIP === chomping) {
        chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;
      } else {
        throwError(state, "repeat of a chomping mode identifier");
      }
    } else if ((tmp = fromDecimalCode(ch)) >= 0) {
      if (tmp === 0) {
        throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one");
      } else if (!detectedIndent) {
        textIndent = nodeIndent + tmp - 1;
        detectedIndent = true;
      } else {
        throwError(state, "repeat of an indentation width identifier");
      }
    } else {
      break;
    }
  }
  if (is_WHITE_SPACE(ch)) {
    do {
      ch = state.input.charCodeAt(++state.position);
    } while (is_WHITE_SPACE(ch));
    if (ch === 35) {
      do {
        ch = state.input.charCodeAt(++state.position);
      } while (!is_EOL(ch) && ch !== 0);
    }
  }
  while (ch !== 0) {
    readLineBreak(state);
    state.lineIndent = 0;
    ch = state.input.charCodeAt(state.position);
    while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) {
      state.lineIndent++;
      ch = state.input.charCodeAt(++state.position);
    }
    if (!detectedIndent && state.lineIndent > textIndent) {
      textIndent = state.lineIndent;
    }
    if (is_EOL(ch)) {
      emptyLines++;
      continue;
    }
    if (state.lineIndent < textIndent) {
      if (chomping === CHOMPING_KEEP) {
        state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
      } else if (chomping === CHOMPING_CLIP) {
        if (didReadContent) {
          state.result += "\n";
        }
      }
      break;
    }
    if (folding) {
      if (is_WHITE_SPACE(ch)) {
        atMoreIndented = true;
        state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
      } else if (atMoreIndented) {
        atMoreIndented = false;
        state.result += common.repeat("\n", emptyLines + 1);
      } else if (emptyLines === 0) {
        if (didReadContent) {
          state.result += " ";
        }
      } else {
        state.result += common.repeat("\n", emptyLines);
      }
    } else {
      state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
    }
    didReadContent = true;
    detectedIndent = true;
    emptyLines = 0;
    captureStart = state.position;
    while (!is_EOL(ch) && ch !== 0) {
      ch = state.input.charCodeAt(++state.position);
    }
    captureSegment(state, captureStart, state.position, false);
  }
  return true;
}
function readBlockSequence(state, nodeIndent) {
  var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch;
  if (state.firstTabInLine !== -1) return false;
  if (state.anchor !== null) {
    state.anchorMap[state.anchor] = _result;
  }
  ch = state.input.charCodeAt(state.position);
  while (ch !== 0) {
    if (state.firstTabInLine !== -1) {
      state.position = state.firstTabInLine;
      throwError(state, "tab characters must not be used in indentation");
    }
    if (ch !== 45) {
      break;
    }
    following = state.input.charCodeAt(state.position + 1);
    if (!is_WS_OR_EOL(following)) {
      break;
    }
    detected = true;
    state.position++;
    if (skipSeparationSpace(state, true, -1)) {
      if (state.lineIndent <= nodeIndent) {
        _result.push(null);
        ch = state.input.charCodeAt(state.position);
        continue;
      }
    }
    _line = state.line;
    composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
    _result.push(state.result);
    skipSeparationSpace(state, true, -1);
    ch = state.input.charCodeAt(state.position);
    if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {
      throwError(state, "bad indentation of a sequence entry");
    } else if (state.lineIndent < nodeIndent) {
      break;
    }
  }
  if (detected) {
    state.tag = _tag;
    state.anchor = _anchor;
    state.kind = "sequence";
    state.result = _result;
    return true;
  }
  return false;
}
function readBlockMapping(state, nodeIndent, flowIndent) {
  var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;
  if (state.firstTabInLine !== -1) return false;
  if (state.anchor !== null) {
    state.anchorMap[state.anchor] = _result;
  }
  ch = state.input.charCodeAt(state.position);
  while (ch !== 0) {
    if (!atExplicitKey && state.firstTabInLine !== -1) {
      state.position = state.firstTabInLine;
      throwError(state, "tab characters must not be used in indentation");
    }
    following = state.input.charCodeAt(state.position + 1);
    _line = state.line;
    if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {
      if (ch === 63) {
        if (atExplicitKey) {
          storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
          keyTag = keyNode = valueNode = null;
        }
        detected = true;
        atExplicitKey = true;
        allowCompact = true;
      } else if (atExplicitKey) {
        atExplicitKey = false;
        allowCompact = true;
      } else {
        throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line");
      }
      state.position += 1;
      ch = following;
    } else {
      _keyLine = state.line;
      _keyLineStart = state.lineStart;
      _keyPos = state.position;
      if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
        break;
      }
      if (state.line === _line) {
        ch = state.input.charCodeAt(state.position);
        while (is_WHITE_SPACE(ch)) {
          ch = state.input.charCodeAt(++state.position);
        }
        if (ch === 58) {
          ch = state.input.charCodeAt(++state.position);
          if (!is_WS_OR_EOL(ch)) {
            throwError(state, "a whitespace character is expected after the key-value separator within a block mapping");
          }
          if (atExplicitKey) {
            storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
            keyTag = keyNode = valueNode = null;
          }
          detected = true;
          atExplicitKey = false;
          allowCompact = false;
          keyTag = state.tag;
          keyNode = state.result;
        } else if (detected) {
          throwError(state, "can not read an implicit mapping pair; a colon is missed");
        } else {
          state.tag = _tag;
          state.anchor = _anchor;
          return true;
        }
      } else if (detected) {
        throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key");
      } else {
        state.tag = _tag;
        state.anchor = _anchor;
        return true;
      }
    }
    if (state.line === _line || state.lineIndent > nodeIndent) {
      if (atExplicitKey) {
        _keyLine = state.line;
        _keyLineStart = state.lineStart;
        _keyPos = state.position;
      }
      if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
        if (atExplicitKey) {
          keyNode = state.result;
        } else {
          valueNode = state.result;
        }
      }
      if (!atExplicitKey) {
        storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);
        keyTag = keyNode = valueNode = null;
      }
      skipSeparationSpace(state, true, -1);
      ch = state.input.charCodeAt(state.position);
    }
    if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {
      throwError(state, "bad indentation of a mapping entry");
    } else if (state.lineIndent < nodeIndent) {
      break;
    }
  }
  if (atExplicitKey) {
    storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
  }
  if (detected) {
    state.tag = _tag;
    state.anchor = _anchor;
    state.kind = "mapping";
    state.result = _result;
  }
  return detected;
}
function readTagProperty(state) {
  var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 33) return false;
  if (state.tag !== null) {
    throwError(state, "duplication of a tag property");
  }
  ch = state.input.charCodeAt(++state.position);
  if (ch === 60) {
    isVerbatim = true;
    ch = state.input.charCodeAt(++state.position);
  } else if (ch === 33) {
    isNamed = true;
    tagHandle = "!!";
    ch = state.input.charCodeAt(++state.position);
  } else {
    tagHandle = "!";
  }
  _position = state.position;
  if (isVerbatim) {
    do {
      ch = state.input.charCodeAt(++state.position);
    } while (ch !== 0 && ch !== 62);
    if (state.position < state.length) {
      tagName = state.input.slice(_position, state.position);
      ch = state.input.charCodeAt(++state.position);
    } else {
      throwError(state, "unexpected end of the stream within a verbatim tag");
    }
  } else {
    while (ch !== 0 && !is_WS_OR_EOL(ch)) {
      if (ch === 33) {
        if (!isNamed) {
          tagHandle = state.input.slice(_position - 1, state.position + 1);
          if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
            throwError(state, "named tag handle cannot contain such characters");
          }
          isNamed = true;
          _position = state.position + 1;
        } else {
          throwError(state, "tag suffix cannot contain exclamation marks");
        }
      }
      ch = state.input.charCodeAt(++state.position);
    }
    tagName = state.input.slice(_position, state.position);
    if (PATTERN_FLOW_INDICATORS.test(tagName)) {
      throwError(state, "tag suffix cannot contain flow indicator characters");
    }
  }
  if (tagName && !PATTERN_TAG_URI.test(tagName)) {
    throwError(state, "tag name cannot contain such characters: " + tagName);
  }
  try {
    tagName = decodeURIComponent(tagName);
  } catch (err) {
    throwError(state, "tag name is malformed: " + tagName);
  }
  if (isVerbatim) {
    state.tag = tagName;
  } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {
    state.tag = state.tagMap[tagHandle] + tagName;
  } else if (tagHandle === "!") {
    state.tag = "!" + tagName;
  } else if (tagHandle === "!!") {
    state.tag = "tag:yaml.org,2002:" + tagName;
  } else {
    throwError(state, 'undeclared tag handle "' + tagHandle + '"');
  }
  return true;
}
function readAnchorProperty(state) {
  var _position, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 38) return false;
  if (state.anchor !== null) {
    throwError(state, "duplication of an anchor property");
  }
  ch = state.input.charCodeAt(++state.position);
  _position = state.position;
  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
    ch = state.input.charCodeAt(++state.position);
  }
  if (state.position === _position) {
    throwError(state, "name of an anchor node must contain at least one character");
  }
  state.anchor = state.input.slice(_position, state.position);
  return true;
}
function readAlias(state) {
  var _position, alias, ch;
  ch = state.input.charCodeAt(state.position);
  if (ch !== 42) return false;
  ch = state.input.charCodeAt(++state.position);
  _position = state.position;
  while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
    ch = state.input.charCodeAt(++state.position);
  }
  if (state.position === _position) {
    throwError(state, "name of an alias node must contain at least one character");
  }
  alias = state.input.slice(_position, state.position);
  if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {
    throwError(state, 'unidentified alias "' + alias + '"');
  }
  state.result = state.anchorMap[alias];
  skipSeparationSpace(state, true, -1);
  return true;
}
function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
  var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent;
  if (state.listener !== null) {
    state.listener("open", state);
  }
  state.tag = null;
  state.anchor = null;
  state.kind = null;
  state.result = null;
  allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;
  if (allowToSeek) {
    if (skipSeparationSpace(state, true, -1)) {
      atNewLine = true;
      if (state.lineIndent > parentIndent) {
        indentStatus = 1;
      } else if (state.lineIndent === parentIndent) {
        indentStatus = 0;
      } else if (state.lineIndent < parentIndent) {
        indentStatus = -1;
      }
    }
  }
  if (indentStatus === 1) {
    while (readTagProperty(state) || readAnchorProperty(state)) {
      if (skipSeparationSpace(state, true, -1)) {
        atNewLine = true;
        allowBlockCollections = allowBlockStyles;
        if (state.lineIndent > parentIndent) {
          indentStatus = 1;
        } else if (state.lineIndent === parentIndent) {
          indentStatus = 0;
        } else if (state.lineIndent < parentIndent) {
          indentStatus = -1;
        }
      } else {
        allowBlockCollections = false;
      }
    }
  }
  if (allowBlockCollections) {
    allowBlockCollections = atNewLine || allowCompact;
  }
  if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {
    if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
      flowIndent = parentIndent;
    } else {
      flowIndent = parentIndent + 1;
    }
    blockIndent = state.position - state.lineStart;
    if (indentStatus === 1) {
      if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {
        hasContent = true;
      } else {
        if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {
          hasContent = true;
        } else if (readAlias(state)) {
          hasContent = true;
          if (state.tag !== null || state.anchor !== null) {
            throwError(state, "alias node should not have any properties");
          }
        } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
          hasContent = true;
          if (state.tag === null) {
            state.tag = "?";
          }
        }
        if (state.anchor !== null) {
          state.anchorMap[state.anchor] = state.result;
        }
      }
    } else if (indentStatus === 0) {
      hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
    }
  }
  if (state.tag === null) {
    if (state.anchor !== null) {
      state.anchorMap[state.anchor] = state.result;
    }
  } else if (state.tag === "?") {
    if (state.result !== null && state.kind !== "scalar") {
      throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"');
    }
    for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {
      type2 = state.implicitTypes[typeIndex];
      if (type2.resolve(state.result)) {
        state.result = type2.construct(state.result);
        state.tag = type2.tag;
        if (state.anchor !== null) {
          state.anchorMap[state.anchor] = state.result;
        }
        break;
      }
    }
  } else if (state.tag !== "!") {
    if (_hasOwnProperty$1.call(state.typeMap[state.kind || "fallback"], state.tag)) {
      type2 = state.typeMap[state.kind || "fallback"][state.tag];
    } else {
      type2 = null;
      typeList = state.typeMap.multi[state.kind || "fallback"];
      for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {
        if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {
          type2 = typeList[typeIndex];
          break;
        }
      }
    }
    if (!type2) {
      throwError(state, "unknown tag !<" + state.tag + ">");
    }
    if (state.result !== null && type2.kind !== state.kind) {
      throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type2.kind + '", not "' + state.kind + '"');
    }
    if (!type2.resolve(state.result, state.tag)) {
      throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag");
    } else {
      state.result = type2.construct(state.result, state.tag);
      if (state.anchor !== null) {
        state.anchorMap[state.anchor] = state.result;
      }
    }
  }
  if (state.listener !== null) {
    state.listener("close", state);
  }
  return state.tag !== null || state.anchor !== null || hasContent;
}
function readDocument(state) {
  var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;
  state.version = null;
  state.checkLineBreaks = state.legacy;
  state.tagMap = /* @__PURE__ */ Object.create(null);
  state.anchorMap = /* @__PURE__ */ Object.create(null);
  while ((ch = state.input.charCodeAt(state.position)) !== 0) {
    skipSeparationSpace(state, true, -1);
    ch = state.input.charCodeAt(state.position);
    if (state.lineIndent > 0 || ch !== 37) {
      break;
    }
    hasDirectives = true;
    ch = state.input.charCodeAt(++state.position);
    _position = state.position;
    while (ch !== 0 && !is_WS_OR_EOL(ch)) {
      ch = state.input.charCodeAt(++state.position);
    }
    directiveName = state.input.slice(_position, state.position);
    directiveArgs = [];
    if (directiveName.length < 1) {
      throwError(state, "directive name must not be less than one character in length");
    }
    while (ch !== 0) {
      while (is_WHITE_SPACE(ch)) {
        ch = state.input.charCodeAt(++state.position);
      }
      if (ch === 35) {
        do {
          ch = state.input.charCodeAt(++state.position);
        } while (ch !== 0 && !is_EOL(ch));
        break;
      }
      if (is_EOL(ch)) break;
      _position = state.position;
      while (ch !== 0 && !is_WS_OR_EOL(ch)) {
        ch = state.input.charCodeAt(++state.position);
      }
      directiveArgs.push(state.input.slice(_position, state.position));
    }
    if (ch !== 0) readLineBreak(state);
    if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {
      directiveHandlers[directiveName](state, directiveName, directiveArgs);
    } else {
      throwWarning(state, 'unknown document directive "' + directiveName + '"');
    }
  }
  skipSeparationSpace(state, true, -1);
  if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) {
    state.position += 3;
    skipSeparationSpace(state, true, -1);
  } else if (hasDirectives) {
    throwError(state, "directives end mark is expected");
  }
  composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
  skipSeparationSpace(state, true, -1);
  if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
    throwWarning(state, "non-ASCII line breaks are interpreted as content");
  }
  state.documents.push(state.result);
  if (state.position === state.lineStart && testDocumentSeparator(state)) {
    if (state.input.charCodeAt(state.position) === 46) {
      state.position += 3;
      skipSeparationSpace(state, true, -1);
    }
    return;
  }
  if (state.position < state.length - 1) {
    throwError(state, "end of the stream or a document separator is expected");
  } else {
    return;
  }
}
function loadDocuments(input, options) {
  input = String(input);
  options = options || {};
  if (input.length !== 0) {
    if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {
      input += "\n";
    }
    if (input.charCodeAt(0) === 65279) {
      input = input.slice(1);
    }
  }
  var state = new State$1(input, options);
  var nullpos = input.indexOf("\0");
  if (nullpos !== -1) {
    state.position = nullpos;
    throwError(state, "null byte is not allowed in input");
  }
  state.input += "\0";
  while (state.input.charCodeAt(state.position) === 32) {
    state.lineIndent += 1;
    state.position += 1;
  }
  while (state.position < state.length - 1) {
    readDocument(state);
  }
  return state.documents;
}
function loadAll$1(input, iterator, options) {
  if (iterator !== null && typeof iterator === "object" && typeof options === "undefined") {
    options = iterator;
    iterator = null;
  }
  var documents = loadDocuments(input, options);
  if (typeof iterator !== "function") {
    return documents;
  }
  for (var index = 0, length = documents.length; index < length; index += 1) {
    iterator(documents[index]);
  }
}
function load$1(input, options) {
  var documents = loadDocuments(input, options);
  if (documents.length === 0) {
    return void 0;
  } else if (documents.length === 1) {
    return documents[0];
  }
  throw new exception("expected a single document in the stream, but found more");
}
var loadAll_1 = loadAll$1;
var load_1 = load$1;
var loader = {
  loadAll: loadAll_1,
  load: load_1
};
var _toString = Object.prototype.toString;
var _hasOwnProperty = Object.prototype.hasOwnProperty;
var CHAR_BOM = 65279;
var CHAR_TAB = 9;
var CHAR_LINE_FEED = 10;
var CHAR_CARRIAGE_RETURN = 13;
var CHAR_SPACE = 32;
var CHAR_EXCLAMATION = 33;
var CHAR_DOUBLE_QUOTE = 34;
var CHAR_SHARP = 35;
var CHAR_PERCENT = 37;
var CHAR_AMPERSAND = 38;
var CHAR_SINGLE_QUOTE = 39;
var CHAR_ASTERISK = 42;
var CHAR_COMMA = 44;
var CHAR_MINUS = 45;
var CHAR_COLON = 58;
var CHAR_EQUALS = 61;
var CHAR_GREATER_THAN = 62;
var CHAR_QUESTION = 63;
var CHAR_COMMERCIAL_AT = 64;
var CHAR_LEFT_SQUARE_BRACKET = 91;
var CHAR_RIGHT_SQUARE_BRACKET = 93;
var CHAR_GRAVE_ACCENT = 96;
var CHAR_LEFT_CURLY_BRACKET = 123;
var CHAR_VERTICAL_LINE = 124;
var CHAR_RIGHT_CURLY_BRACKET = 125;
var ESCAPE_SEQUENCES = {};
ESCAPE_SEQUENCES[0] = "\\0";
ESCAPE_SEQUENCES[7] = "\\a";
ESCAPE_SEQUENCES[8] = "\\b";
ESCAPE_SEQUENCES[9] = "\\t";
ESCAPE_SEQUENCES[10] = "\\n";
ESCAPE_SEQUENCES[11] = "\\v";
ESCAPE_SEQUENCES[12] = "\\f";
ESCAPE_SEQUENCES[13] = "\\r";
ESCAPE_SEQUENCES[27] = "\\e";
ESCAPE_SEQUENCES[34] = '\\"';
ESCAPE_SEQUENCES[92] = "\\\\";
ESCAPE_SEQUENCES[133] = "\\N";
ESCAPE_SEQUENCES[160] = "\\_";
ESCAPE_SEQUENCES[8232] = "\\L";
ESCAPE_SEQUENCES[8233] = "\\P";
var DEPRECATED_BOOLEANS_SYNTAX = [
  "y",
  "Y",
  "yes",
  "Yes",
  "YES",
  "on",
  "On",
  "ON",
  "n",
  "N",
  "no",
  "No",
  "NO",
  "off",
  "Off",
  "OFF"
];
var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;
function compileStyleMap(schema2, map2) {
  var result, keys, index, length, tag, style, type2;
  if (map2 === null) return {};
  result = {};
  keys = Object.keys(map2);
  for (index = 0, length = keys.length; index < length; index += 1) {
    tag = keys[index];
    style = String(map2[tag]);
    if (tag.slice(0, 2) === "!!") {
      tag = "tag:yaml.org,2002:" + tag.slice(2);
    }
    type2 = schema2.compiledTypeMap["fallback"][tag];
    if (type2 && _hasOwnProperty.call(type2.styleAliases, style)) {
      style = type2.styleAliases[style];
    }
    result[tag] = style;
  }
  return result;
}
function encodeHex(character) {
  var string, handle, length;
  string = character.toString(16).toUpperCase();
  if (character <= 255) {
    handle = "x";
    length = 2;
  } else if (character <= 65535) {
    handle = "u";
    length = 4;
  } else if (character <= 4294967295) {
    handle = "U";
    length = 8;
  } else {
    throw new exception("code point within a string may not be greater than 0xFFFFFFFF");
  }
  return "\\" + handle + common.repeat("0", length - string.length) + string;
}
var QUOTING_TYPE_SINGLE = 1;
var QUOTING_TYPE_DOUBLE = 2;
function State(options) {
  this.schema = options["schema"] || _default;
  this.indent = Math.max(1, options["indent"] || 2);
  this.noArrayIndent = options["noArrayIndent"] || false;
  this.skipInvalid = options["skipInvalid"] || false;
  this.flowLevel = common.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"];
  this.styleMap = compileStyleMap(this.schema, options["styles"] || null);
  this.sortKeys = options["sortKeys"] || false;
  this.lineWidth = options["lineWidth"] || 80;
  this.noRefs = options["noRefs"] || false;
  this.noCompatMode = options["noCompatMode"] || false;
  this.condenseFlow = options["condenseFlow"] || false;
  this.quotingType = options["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;
  this.forceQuotes = options["forceQuotes"] || false;
  this.replacer = typeof options["replacer"] === "function" ? options["replacer"] : null;
  this.implicitTypes = this.schema.compiledImplicit;
  this.explicitTypes = this.schema.compiledExplicit;
  this.tag = null;
  this.result = "";
  this.duplicates = [];
  this.usedDuplicates = null;
}
function indentString(string, spaces) {
  var ind = common.repeat(" ", spaces), position = 0, next = -1, result = "", line, length = string.length;
  while (position < length) {
    next = string.indexOf("\n", position);
    if (next === -1) {
      line = string.slice(position);
      position = length;
    } else {
      line = string.slice(position, next + 1);
      position = next + 1;
    }
    if (line.length && line !== "\n") result += ind;
    result += line;
  }
  return result;
}
function generateNextLine(state, level) {
  return "\n" + common.repeat(" ", state.indent * level);
}
function testImplicitResolving(state, str2) {
  var index, length, type2;
  for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
    type2 = state.implicitTypes[index];
    if (type2.resolve(str2)) {
      return true;
    }
  }
  return false;
}
function isWhitespace(c) {
  return c === CHAR_SPACE || c === CHAR_TAB;
}
function isPrintable(c) {
  return 32 <= c && c <= 126 || 161 <= c && c <= 55295 && c !== 8232 && c !== 8233 || 57344 <= c && c <= 65533 && c !== CHAR_BOM || 65536 <= c && c <= 1114111;
}
function isNsCharOrWhitespace(c) {
  return isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED;
}
function isPlainSafe(c, prev, inblock) {
  var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);
  var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);
  return (
    // ns-plain-safe
    (inblock ? (
      // c = flow-in
      cIsNsCharOrWhitespace
    ) : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar
  );
}
function isPlainSafeFirst(c) {
  return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;
}
function isPlainSafeLast(c) {
  return !isWhitespace(c) && c !== CHAR_COLON;
}
function codePointAt(string, pos) {
  var first = string.charCodeAt(pos), second;
  if (first >= 55296 && first <= 56319 && pos + 1 < string.length) {
    second = string.charCodeAt(pos + 1);
    if (second >= 56320 && second <= 57343) {
      return (first - 55296) * 1024 + second - 56320 + 65536;
    }
  }
  return first;
}
function needIndentIndicator(string) {
  var leadingSpaceRe = /^\n* /;
  return leadingSpaceRe.test(string);
}
var STYLE_PLAIN = 1;
var STYLE_SINGLE = 2;
var STYLE_LITERAL = 3;
var STYLE_FOLDED = 4;
var STYLE_DOUBLE = 5;
function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) {
  var i;
  var char = 0;
  var prevChar = null;
  var hasLineBreak = false;
  var hasFoldableLine = false;
  var shouldTrackWidth = lineWidth !== -1;
  var previousLineBreak = -1;
  var plain = isPlainSafeFirst(codePointAt(string, 0)) && isPlainSafeLast(codePointAt(string, string.length - 1));
  if (singleLineOnly || forceQuotes) {
    for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {
      char = codePointAt(string, i);
      if (!isPrintable(char)) {
        return STYLE_DOUBLE;
      }
      plain = plain && isPlainSafe(char, prevChar, inblock);
      prevChar = char;
    }
  } else {
    for (i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {
      char = codePointAt(string, i);
      if (char === CHAR_LINE_FEED) {
        hasLineBreak = true;
        if (shouldTrackWidth) {
          hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented.
          i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " ";
          previousLineBreak = i;
        }
      } else if (!isPrintable(char)) {
        return STYLE_DOUBLE;
      }
      plain = plain && isPlainSafe(char, prevChar, inblock);
      prevChar = char;
    }
    hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " ");
  }
  if (!hasLineBreak && !hasFoldableLine) {
    if (plain && !forceQuotes && !testAmbiguousType(string)) {
      return STYLE_PLAIN;
    }
    return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;
  }
  if (indentPerLevel > 9 && needIndentIndicator(string)) {
    return STYLE_DOUBLE;
  }
  if (!forceQuotes) {
    return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;
  }
  return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;
}
function writeScalar(state, string, level, iskey, inblock) {
  state.dump = function() {
    if (string.length === 0) {
      return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''";
    }
    if (!state.noCompatMode) {
      if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {
        return state.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string + '"' : "'" + string + "'";
      }
    }
    var indent = state.indent * Math.max(1, level);
    var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);
    var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel;
    function testAmbiguity(string2) {
      return testImplicitResolving(state, string2);
    }
    switch (chooseScalarStyle(
      string,
      singleLineOnly,
      state.indent,
      lineWidth,
      testAmbiguity,
      state.quotingType,
      state.forceQuotes && !iskey,
      inblock
    )) {
      case STYLE_PLAIN:
        return string;
      case STYLE_SINGLE:
        return "'" + string.replace(/'/g, "''") + "'";
      case STYLE_LITERAL:
        return "|" + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent));
      case STYLE_FOLDED:
        return ">" + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent));
      case STYLE_DOUBLE:
        return '"' + escapeString(string) + '"';
      default:
        throw new exception("impossible error: invalid scalar style");
    }
  }();
}
function blockHeader(string, indentPerLevel) {
  var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : "";
  var clip = string[string.length - 1] === "\n";
  var keep = clip && (string[string.length - 2] === "\n" || string === "\n");
  var chomp = keep ? "+" : clip ? "" : "-";
  return indentIndicator + chomp + "\n";
}
function dropEndingNewline(string) {
  return string[string.length - 1] === "\n" ? string.slice(0, -1) : string;
}
function foldString(string, width) {
  var lineRe = /(\n+)([^\n]*)/g;
  var result = function() {
    var nextLF = string.indexOf("\n");
    nextLF = nextLF !== -1 ? nextLF : string.length;
    lineRe.lastIndex = nextLF;
    return foldLine(string.slice(0, nextLF), width);
  }();
  var prevMoreIndented = string[0] === "\n" || string[0] === " ";
  var moreIndented;
  var match;
  while (match = lineRe.exec(string)) {
    var prefix = match[1], line = match[2];
    moreIndented = line[0] === " ";
    result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width);
    prevMoreIndented = moreIndented;
  }
  return result;
}
function foldLine(line, width) {
  if (line === "" || line[0] === " ") return line;
  var breakRe = / [^ ]/g;
  var match;
  var start = 0, end, curr = 0, next = 0;
  var result = "";
  while (match = breakRe.exec(line)) {
    next = match.index;
    if (next - start > width) {
      end = curr > start ? curr : next;
      result += "\n" + line.slice(start, end);
      start = end + 1;
    }
    curr = next;
  }
  result += "\n";
  if (line.length - start > width && curr > start) {
    result += line.slice(start, curr) + "\n" + line.slice(curr + 1);
  } else {
    result += line.slice(start);
  }
  return result.slice(1);
}
function escapeString(string) {
  var result = "";
  var char = 0;
  var escapeSeq;
  for (var i = 0; i < string.length; char >= 65536 ? i += 2 : i++) {
    char = codePointAt(string, i);
    escapeSeq = ESCAPE_SEQUENCES[char];
    if (!escapeSeq && isPrintable(char)) {
      result += string[i];
      if (char >= 65536) result += string[i + 1];
    } else {
      result += escapeSeq || encodeHex(char);
    }
  }
  return result;
}
function writeFlowSequence(state, level, object) {
  var _result = "", _tag = state.tag, index, length, value;
  for (index = 0, length = object.length; index < length; index += 1) {
    value = object[index];
    if (state.replacer) {
      value = state.replacer.call(object, String(index), value);
    }
    if (writeNode(state, level, value, false, false) || typeof value === "undefined" && writeNode(state, level, null, false, false)) {
      if (_result !== "") _result += "," + (!state.condenseFlow ? " " : "");
      _result += state.dump;
    }
  }
  state.tag = _tag;
  state.dump = "[" + _result + "]";
}
function writeBlockSequence(state, level, object, compact) {
  var _result = "", _tag = state.tag, index, length, value;
  for (index = 0, length = object.length; index < length; index += 1) {
    value = object[index];
    if (state.replacer) {
      value = state.replacer.call(object, String(index), value);
    }
    if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) {
      if (!compact || _result !== "") {
        _result += generateNextLine(state, level);
      }
      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
        _result += "-";
      } else {
        _result += "- ";
      }
      _result += state.dump;
    }
  }
  state.tag = _tag;
  state.dump = _result || "[]";
}
function writeFlowMapping(state, level, object) {
  var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, pairBuffer;
  for (index = 0, length = objectKeyList.length; index < length; index += 1) {
    pairBuffer = "";
    if (_result !== "") pairBuffer += ", ";
    if (state.condenseFlow) pairBuffer += '"';
    objectKey = objectKeyList[index];
    objectValue = object[objectKey];
    if (state.replacer) {
      objectValue = state.replacer.call(object, objectKey, objectValue);
    }
    if (!writeNode(state, level, objectKey, false, false)) {
      continue;
    }
    if (state.dump.length > 1024) pairBuffer += "? ";
    pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " ");
    if (!writeNode(state, level, objectValue, false, false)) {
      continue;
    }
    pairBuffer += state.dump;
    _result += pairBuffer;
  }
  state.tag = _tag;
  state.dump = "{" + _result + "}";
}
function writeBlockMapping(state, level, object, compact) {
  var _result = "", _tag = state.tag, objectKeyList = Object.keys(object), index, length, objectKey, objectValue, explicitPair, pairBuffer;
  if (state.sortKeys === true) {
    objectKeyList.sort();
  } else if (typeof state.sortKeys === "function") {
    objectKeyList.sort(state.sortKeys);
  } else if (state.sortKeys) {
    throw new exception("sortKeys must be a boolean or a function");
  }
  for (index = 0, length = objectKeyList.length; index < length; index += 1) {
    pairBuffer = "";
    if (!compact || _result !== "") {
      pairBuffer += generateNextLine(state, level);
    }
    objectKey = objectKeyList[index];
    objectValue = object[objectKey];
    if (state.replacer) {
      objectValue = state.replacer.call(object, objectKey, objectValue);
    }
    if (!writeNode(state, level + 1, objectKey, true, true, true)) {
      continue;
    }
    explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024;
    if (explicitPair) {
      if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
        pairBuffer += "?";
      } else {
        pairBuffer += "? ";
      }
    }
    pairBuffer += state.dump;
    if (explicitPair) {
      pairBuffer += generateNextLine(state, level);
    }
    if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
      continue;
    }
    if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
      pairBuffer += ":";
    } else {
      pairBuffer += ": ";
    }
    pairBuffer += state.dump;
    _result += pairBuffer;
  }
  state.tag = _tag;
  state.dump = _result || "{}";
}
function detectType(state, object, explicit) {
  var _result, typeList, index, length, type2, style;
  typeList = explicit ? state.explicitTypes : state.implicitTypes;
  for (index = 0, length = typeList.length; index < length; index += 1) {
    type2 = typeList[index];
    if ((type2.instanceOf || type2.predicate) && (!type2.instanceOf || typeof object === "object" && object instanceof type2.instanceOf) && (!type2.predicate || type2.predicate(object))) {
      if (explicit) {
        if (type2.multi && type2.representName) {
          state.tag = type2.representName(object);
        } else {
          state.tag = type2.tag;
        }
      } else {
        state.tag = "?";
      }
      if (type2.represent) {
        style = state.styleMap[type2.tag] || type2.defaultStyle;
        if (_toString.call(type2.represent) === "[object Function]") {
          _result = type2.represent(object, style);
        } else if (_hasOwnProperty.call(type2.represent, style)) {
          _result = type2.represent[style](object, style);
        } else {
          throw new exception("!<" + type2.tag + '> tag resolver accepts not "' + style + '" style');
        }
        state.dump = _result;
      }
      return true;
    }
  }
  return false;
}
function writeNode(state, level, object, block, compact, iskey, isblockseq) {
  state.tag = null;
  state.dump = object;
  if (!detectType(state, object, false)) {
    detectType(state, object, true);
  }
  var type2 = _toString.call(state.dump);
  var inblock = block;
  var tagStr;
  if (block) {
    block = state.flowLevel < 0 || state.flowLevel > level;
  }
  var objectOrArray = type2 === "[object Object]" || type2 === "[object Array]", duplicateIndex, duplicate;
  if (objectOrArray) {
    duplicateIndex = state.duplicates.indexOf(object);
    duplicate = duplicateIndex !== -1;
  }
  if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) {
    compact = false;
  }
  if (duplicate && state.usedDuplicates[duplicateIndex]) {
    state.dump = "*ref_" + duplicateIndex;
  } else {
    if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
      state.usedDuplicates[duplicateIndex] = true;
    }
    if (type2 === "[object Object]") {
      if (block && Object.keys(state.dump).length !== 0) {
        writeBlockMapping(state, level, state.dump, compact);
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + state.dump;
        }
      } else {
        writeFlowMapping(state, level, state.dump);
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + " " + state.dump;
        }
      }
    } else if (type2 === "[object Array]") {
      if (block && state.dump.length !== 0) {
        if (state.noArrayIndent && !isblockseq && level > 0) {
          writeBlockSequence(state, level - 1, state.dump, compact);
        } else {
          writeBlockSequence(state, level, state.dump, compact);
        }
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + state.dump;
        }
      } else {
        writeFlowSequence(state, level, state.dump);
        if (duplicate) {
          state.dump = "&ref_" + duplicateIndex + " " + state.dump;
        }
      }
    } else if (type2 === "[object String]") {
      if (state.tag !== "?") {
        writeScalar(state, state.dump, level, iskey, inblock);
      }
    } else if (type2 === "[object Undefined]") {
      return false;
    } else {
      if (state.skipInvalid) return false;
      throw new exception("unacceptable kind of an object to dump " + type2);
    }
    if (state.tag !== null && state.tag !== "?") {
      tagStr = encodeURI(
        state.tag[0] === "!" ? state.tag.slice(1) : state.tag
      ).replace(/!/g, "%21");
      if (state.tag[0] === "!") {
        tagStr = "!" + tagStr;
      } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") {
        tagStr = "!!" + tagStr.slice(18);
      } else {
        tagStr = "!<" + tagStr + ">";
      }
      state.dump = tagStr + " " + state.dump;
    }
  }
  return true;
}
function getDuplicateReferences(object, state) {
  var objects = [], duplicatesIndexes = [], index, length;
  inspectNode(object, objects, duplicatesIndexes);
  for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
    state.duplicates.push(objects[duplicatesIndexes[index]]);
  }
  state.usedDuplicates = new Array(length);
}
function inspectNode(object, objects, duplicatesIndexes) {
  var objectKeyList, index, length;
  if (object !== null && typeof object === "object") {
    index = objects.indexOf(object);
    if (index !== -1) {
      if (duplicatesIndexes.indexOf(index) === -1) {
        duplicatesIndexes.push(index);
      }
    } else {
      objects.push(object);
      if (Array.isArray(object)) {
        for (index = 0, length = object.length; index < length; index += 1) {
          inspectNode(object[index], objects, duplicatesIndexes);
        }
      } else {
        objectKeyList = Object.keys(object);
        for (index = 0, length = objectKeyList.length; index < length; index += 1) {
          inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
        }
      }
    }
  }
}
function dump$1(input, options) {
  options = options || {};
  var state = new State(options);
  if (!state.noRefs) getDuplicateReferences(input, state);
  var value = input;
  if (state.replacer) {
    value = state.replacer.call({ "": value }, "", value);
  }
  if (writeNode(state, 0, value, true, true)) return state.dump + "\n";
  return "";
}
var dump_1 = dump$1;
var dumper = {
  dump: dump_1
};
function renamed(from, to) {
  return function() {
    throw new Error("Function yaml." + from + " is removed in js-yaml 4. Use yaml." + to + " instead, which is now safe by default.");
  };
}
var Type = type;
var Schema = schema;
var FAILSAFE_SCHEMA = failsafe;
var JSON_SCHEMA = json;
var CORE_SCHEMA = core;
var DEFAULT_SCHEMA = _default;
var load = loader.load;
var loadAll = loader.loadAll;
var dump = dumper.dump;
var YAMLException = exception;
var types = {
  binary,
  float,
  map,
  null: _null,
  pairs,
  set,
  timestamp,
  bool,
  int,
  merge,
  omap,
  seq,
  str
};
var safeLoad = renamed("safeLoad", "load");
var safeLoadAll = renamed("safeLoadAll", "loadAll");
var safeDump = renamed("safeDump", "dump");
var jsYaml = {
  Type,
  Schema,
  FAILSAFE_SCHEMA,
  JSON_SCHEMA,
  CORE_SCHEMA,
  DEFAULT_SCHEMA,
  load,
  loadAll,
  dump,
  YAMLException,
  types,
  safeLoad,
  safeLoadAll,
  safeDump
};
var js_yaml_default = jsYaml;

// src/import-specs.ts
var import_fs_extra = __toESM(require("fs-extra"));

// src/import-open-api.ts
var import_core3 = require("@orval/core");

// src/api.ts
var import_core2 = require("@orval/core");
var import_mock = require("@orval/mock");

// src/client.ts
var import_angular = __toESM(require("@orval/angular"));
var import_axios = __toESM(require("@orval/axios"));
var import_core = require("@orval/core");
var import_fetch = __toESM(require("@orval/fetch"));
var import_hono = __toESM(require("@orval/hono"));
var mock = __toESM(require("@orval/mock"));
var import_query = __toESM(require("@orval/query"));
var import_swr = __toESM(require("@orval/swr"));
var import_zod = __toESM(require("@orval/zod"));
var DEFAULT_CLIENT = import_core.OutputClient.AXIOS;
var getGeneratorClient = (outputClient, output) => {
  const GENERATOR_CLIENT = {
    axios: (0, import_axios.default)({ type: "axios" })(),
    "axios-functions": (0, import_axios.default)({ type: "axios-functions" })(),
    angular: (0, import_angular.default)()(),
    "react-query": (0, import_query.default)({ output, type: "react-query" })(),
    "svelte-query": (0, import_query.default)({ output, type: "svelte-query" })(),
    "vue-query": (0, import_query.default)({ output, type: "vue-query" })(),
    swr: (0, import_swr.default)()(),
    zod: (0, import_zod.default)()(),
    hono: (0, import_hono.default)()(),
    fetch: (0, import_fetch.default)()()
  };
  const generator = (0, import_core.isFunction)(outputClient) ? outputClient(GENERATOR_CLIENT) : GENERATOR_CLIENT[outputClient];
  if (!generator) {
    throw `Oups... \u{1F37B}. Client not found: ${outputClient}`;
  }
  return generator;
};
var generateClientImports = ({
  client = DEFAULT_CLIENT,
  implementation,
  imports,
  specsName,
  hasSchemaDir,
  isAllowSyntheticDefaultImports,
  hasGlobalMutator,
  hasTagsMutator,
  hasParamsSerializerOptions,
  packageJson,
  output
}) => {
  const { dependencies } = getGeneratorClient(client, output);
  return (0, import_core.generateDependencyImports)(
    implementation,
    dependencies ? [
      ...dependencies(
        hasGlobalMutator,
        hasParamsSerializerOptions,
        packageJson,
        output.httpClient,
        hasTagsMutator
      ),
      ...imports
    ] : imports,
    specsName,
    hasSchemaDir,
    isAllowSyntheticDefaultImports
  );
};
var generateClientHeader = ({
  outputClient = DEFAULT_CLIENT,
  isRequestOptions,
  isGlobalMutator,
  isMutator,
  provideIn,
  hasAwaitedType,
  titles,
  output,
  verbOptions,
  tag,
  clientImplementation
}) => {
  const { header } = getGeneratorClient(outputClient, output);
  return {
    implementation: header ? header({
      title: titles.implementation,
      isRequestOptions,
      isGlobalMutator,
      isMutator,
      provideIn,
      hasAwaitedType,
      output,
      verbOptions,
      tag,
      clientImplementation
    }) : "",
    implementationMock: `export const ${titles.implementationMock} = () => [
`
  };
};
var generateClientFooter = ({
  outputClient = DEFAULT_CLIENT,
  operationNames,
  hasMutator,
  hasAwaitedType,
  titles,
  output
}) => {
  const { footer } = getGeneratorClient(outputClient, output);
  if (!footer) {
    return {
      implementation: "",
      implementationMock: `
]
`
    };
  }
  let implementation;
  try {
    if ((0, import_core.isFunction)(outputClient)) {
      implementation = footer(
        operationNames
      );
      console.warn(
        "[WARN] Passing an array of strings for operations names to the footer function is deprecated and will be removed in a future major release. Please pass them in an object instead: { operationNames: string[] }."
      );
    } else {
      implementation = footer({
        operationNames,
        title: titles.implementation,
        hasMutator,
        hasAwaitedType
      });
    }
  } catch {
    implementation = footer({
      operationNames,
      title: titles.implementation,
      hasMutator,
      hasAwaitedType
    });
  }
  return {
    implementation,
    implementationMock: `]
`
  };
};
var generateClientTitle = ({
  outputClient = DEFAULT_CLIENT,
  title,
  customTitleFunc,
  output
}) => {
  const { title: generatorTitle } = getGeneratorClient(outputClient, output);
  if (!generatorTitle) {
    return {
      implementation: "",
      implementationMock: `get${(0, import_core.pascal)(title)}Mock`
    };
  }
  if (customTitleFunc) {
    const customTitle = customTitleFunc(title);
    return {
      implementation: generatorTitle(customTitle),
      implementationMock: `get${(0, import_core.pascal)(customTitle)}Mock`
    };
  }
  return {
    implementation: generatorTitle(title),
    implementationMock: `get${(0, import_core.pascal)(title)}Mock`
  };
};
var generateMock2 = (verbOption, options) => {
  if (!options.mock) {
    return {
      implementation: {
        function: "",
        handler: "",
        handlerName: ""
      },
      imports: []
    };
  }
  if ((0, import_core.isFunction)(options.mock)) {
    return options.mock(verbOption, options);
  }
  return mock.generateMock(
    verbOption,
    options
  );
};
var generateOperations = (outputClient = DEFAULT_CLIENT, verbsOptions, options, output) => {
  return (0, import_core.asyncReduce)(
    verbsOptions,
    async (acc, verbOption) => {
      const { client: generatorClient } = getGeneratorClient(
        outputClient,
        output
      );
      const client = await generatorClient(verbOption, options, outputClient);
      if (!client.implementation) {
        return acc;
      }
      const generatedMock = generateMock2(verbOption, options);
      acc[verbOption.operationId] = {
        implementation: verbOption.doc + client.implementation,
        imports: client.imports,
        implementationMock: generatedMock.implementation,
        importsMock: generatedMock.imports,
        tags: verbOption.tags,
        mutator: verbOption.mutator,
        clientMutators: client.mutators,
        formData: verbOption.formData,
        formUrlEncoded: verbOption.formUrlEncoded,
        paramsSerializer: verbOption.paramsSerializer,
        operationName: verbOption.operationName
      };
      return acc;
    },
    {}
  );
};
var generateExtraFiles = (outputClient = DEFAULT_CLIENT, verbsOptions, output, context) => {
  const { extraFiles: generateExtraFiles2 } = getGeneratorClient(
    outputClient,
    output
  );
  if (!generateExtraFiles2) {
    return Promise.resolve([]);
  }
  return generateExtraFiles2(verbsOptions, output, context);
};

// src/api.ts
var getApiBuilder = async ({
  input,
  output,
  context
}) => {
  var _a;
  const api = await (0, import_core2.asyncReduce)(
    Object.entries((_a = context.specs[context.specKey].paths) != null ? _a : {}),
    async (acc, [pathRoute, verbs]) => {
      var _a2;
      const route = (0, import_core2.getRoute)(pathRoute);
      let resolvedVerbs = verbs;
      let resolvedContext = context;
      if ((0, import_core2.isReference)(verbs)) {
        const { schema: schema2, imports } = (0, import_core2.resolveRef)(verbs, context);
        resolvedVerbs = schema2;
        resolvedContext = {
          ...context,
          ...imports.length ? {
            specKey: imports[0].specKey
          } : {}
        };
      }
      let verbsOptions = await (0, import_core2.generateVerbsOptions)({
        verbs: resolvedVerbs,
        input,
        output,
        route,
        pathRoute,
        context: resolvedContext
      });
      if (output.override.useDeprecatedOperations === false) {
        verbsOptions = verbsOptions.filter((verb) => {
          return !verb.deprecated;
        });
      }
      const schemas = verbsOptions.reduce(
        (acc2, { queryParams, headers, body, response, props }) => {
          if (props) {
            acc2.push(
              ...props.flatMap(
                (param) => param.type === import_core2.GetterPropType.NAMED_PATH_PARAMS ? param.schema : []
              )
            );
          }
          if (queryParams) {
            acc2.push(queryParams.schema, ...queryParams.deps);
          }
          if (headers) {
            acc2.push(headers.schema, ...headers.deps);
          }
          acc2.push(...body.schemas);
          acc2.push(...response.schemas);
          return acc2;
        },
        []
      );
      const fullRoute = (0, import_core2.getFullRoute)(
        route,
        (_a2 = verbs.servers) != null ? _a2 : context.specs[context.specKey].servers,
        output.baseUrl
      );
      if (!output.target) {
        (0, import_core2.logError)("Output does not have a target");
        process.exit(1);
      }
      const pathOperations = await generateOperations(
        output.client,
        verbsOptions,
        {
          route: fullRoute,
          pathRoute,
          override: output.override,
          context: resolvedContext,
          mock: output.mock,
          output: output.target
        },
        output
      );
      verbsOptions.forEach((verbOption) => {
        acc.verbOptions[verbOption.operationId] = verbOption;
      });
      acc.schemas.push(...schemas);
      acc.operations = { ...acc.operations, ...pathOperations };
      return acc;
    },
    {
      operations: {},
      verbOptions: {},
      schemas: []
    }
  );
  const extraFiles = await generateExtraFiles(
    output.client,
    api.verbOptions,
    output,
    context
  );
  return {
    operations: api.operations,
    schemas: api.schemas,
    verbOptions: api.verbOptions,
    title: generateClientTitle,
    header: generateClientHeader,
    footer: generateClientFooter,
    imports: generateClientImports,
    importsMock: import_mock.generateMockImports,
    extraFiles
  };
};

// src/import-open-api.ts
var importOpenApi = async ({
  data,
  input,
  output,
  target,
  workspace
}) => {
  var _a;
  const specs = await generateInputSpecs({ specs: data, input, workspace });
  const schemas = getApiSchemas({ input, output, target, workspace, specs });
  const api = await getApiBuilder({
    input,
    output,
    context: {
      specKey: target,
      target,
      workspace,
      specs,
      output
    }
  });
  return {
    ...api,
    schemas: {
      ...schemas,
      [target]: [...(_a = schemas[target]) != null ? _a : [], ...api.schemas]
    },
    target,
    info: specs[target].info
  };
};
var generateInputSpecs = async ({
  specs,
  input,
  workspace
}) => {
  var _a;
  const transformerFn = ((_a = input.override) == null ? void 0 : _a.transformer) ? await (0, import_core3.dynamicImport)(input.override.transformer, workspace) : void 0;
  return (0, import_core3.asyncReduce)(
    Object.entries(specs),
    async (acc, [specKey, value]) => {
      const schema2 = await (0, import_core3.openApiConverter)(
        value,
        input.converterOptions,
        specKey
      );
      const transfomedSchema = transformerFn ? transformerFn(schema2) : schema2;
      if (input.validation) {
        await (0, import_core3.ibmOpenapiValidator)(transfomedSchema, input.validation);
      }
      acc[specKey] = transfomedSchema;
      return acc;
    },
    {}
  );
};
var getApiSchemas = ({
  input,
  output,
  target,
  workspace,
  specs
}) => {
  return Object.entries(specs).reduce(
    (acc, [specKey, spec]) => {
      var _a, _b, _c, _d;
      const context = {
        specKey,
        target,
        workspace,
        specs,
        output
      };
      const parsedSchemas = spec.openapi ? (_a = spec.components) == null ? void 0 : _a.schemas : getAllSchemas(spec, specKey);
      const schemaDefinition = (0, import_core3.generateSchemasDefinition)(
        parsedSchemas,
        context,
        output.override.components.schemas.suffix,
        input.filters
      );
      const responseDefinition = (0, import_core3.generateComponentDefinition)(
        (_b = spec.components) == null ? void 0 : _b.responses,
        context,
        output.override.components.responses.suffix
      );
      const bodyDefinition = (0, import_core3.generateComponentDefinition)(
        (_c = spec.components) == null ? void 0 : _c.requestBodies,
        context,
        output.override.components.requestBodies.suffix
      );
      const parameters = (0, import_core3.generateParameterDefinition)(
        (_d = spec.components) == null ? void 0 : _d.parameters,
        context,
        output.override.components.parameters.suffix
      );
      const schemas = [
        ...schemaDefinition,
        ...responseDefinition,
        ...bodyDefinition,
        ...parameters
      ];
      if (!schemas.length) {
        return acc;
      }
      acc[specKey] = schemas;
      return acc;
    },
    {}
  );
};
var getAllSchemas = (spec, specKey) => {
  var _a;
  const keysToOmit = [
    "openapi",
    "info",
    "servers",
    "paths",
    "components",
    "security",
    "tags",
    "externalDocs"
  ];
  const cleanedSpec = Object.fromEntries(
    Object.entries(spec).filter(([key]) => !keysToOmit.includes(key))
  );
  if (specKey && (0, import_core3.isSchema)(cleanedSpec)) {
    const name = import_core3.upath.getSchemaFileName(specKey);
    const additionalKeysToOmit = [
      "type",
      "properties",
      "allOf",
      "oneOf",
      "anyOf",
      "items"
    ];
    return {
      [name]: cleanedSpec,
      ...getAllSchemas(
        Object.fromEntries(
          Object.entries(cleanedSpec).filter(
            ([key]) => !additionalKeysToOmit.includes(key)
          )
        )
      )
    };
  }
  const schemas = Object.entries(cleanedSpec).reduce(
    (acc, [key, value]) => {
      if (!(0, import_core3.isObject)(value)) {
        return acc;
      }
      if (!(0, import_core3.isSchema)(value) && !(0, import_core3.isReference)(value)) {
        return { ...acc, ...getAllSchemas(value) };
      }
      acc[key] = value;
      return acc;
    },
    {}
  );
  return {
    ...schemas,
    ...(_a = spec == null ? void 0 : spec.components) == null ? void 0 : _a.schemas
  };
};

// src/import-specs.ts
var resolveSpecs = async (path, { validate, ...options }, isUrl3, isOnlySchema) => {
  try {
    if (validate) {
      try {
        await import_swagger_parser.default.validate(path, options);
      } catch (e) {
        if ((e == null ? void 0 : e.name) === "ParserError") {
          throw e;
        }
        if (!isOnlySchema) {
          (0, import_core4.log)(`\u26A0\uFE0F  ${import_chalk.default.yellow(e)}`);
        }
      }
    }
    const data = (await import_swagger_parser.default.resolve(path, options)).values();
    if (isUrl3) {
      return data;
    }
    return Object.fromEntries(
      Object.entries(data).sort().map(([key, value]) => [import_core4.upath.resolve(key), value])
    );
  } catch {
    const file = await import_fs_extra.default.readFile(path, "utf8");
    return {
      [path]: js_yaml_default.load(file)
    };
  }
};
var importSpecs = async (workspace, options) => {
  const { input, output } = options;
  if (!(0, import_core4.isString)(input.target)) {
    return importOpenApi({
      data: { [workspace]: input.target },
      input,
      output,
      target: workspace,
      workspace
    });
  }
  const isPathUrl = (0, import_core4.isUrl)(input.target);
  const data = await resolveSpecs(
    input.target,
    input.parserOptions,
    isPathUrl,
    !output.target
  );
  return importOpenApi({
    data,
    input,
    output,
    target: input.target,
    workspace
  });
};

// src/utils/options.ts
var import_core7 = require("@orval/core");
var import_mock2 = require("@orval/mock");
var import_chalk2 = __toESM(require("chalk"));

// package.json
var package_default = {
  name: "orval",
  description: "A swagger client generator for typescript",
  version: "7.8.0",
  license: "MIT",
  files: [
    "dist"
  ],
  bin: "dist/bin/orval.js",
  type: "commonjs",
  main: "dist/index.js",
  keywords: [
    "rest",
    "client",
    "swagger",
    "open-api",
    "fetch",
    "data fetching",
    "code-generation",
    "angular",
    "react",
    "react-query",
    "svelte",
    "svelte-query",
    "vue",
    "vue-query",
    "msw",
    "mock",
    "axios",
    "vue-query",
    "vue",
    "swr",
    "zod",
    "hono"
  ],
  author: {
    name: "Victor Bury",
    email: "victor@anymaniax.com"
  },
  repository: {
    type: "git",
    url: "git+https://github.com/orval-labs/orval.git"
  },
  scripts: {
    build: "tsup ./src/bin/orval.ts ./src/index.ts --target node12 --clean --sourcemap --dts",
    dev: "tsup ./src/bin/orval.ts ./src/index.ts --target node12 --clean --sourcemap --watch ./src --onSuccess 'yarn generate-api'",
    lint: "eslint src/**/*.ts",
    "generate-api": "node ./dist/bin/orval.js --config ../../samples/react-query/basic/orval.config.ts",
    test: "tsc --noEmit && vitest --passWithNoTests"
  },
  devDependencies: {
    "@types/inquirer": "^9.0.6",
    "@types/js-yaml": "^4.0.8",
    "@types/lodash.uniq": "^4.5.8",
    "typedoc-plugin-coverage": "^3.4.1"
  },
  dependencies: {
    "@apidevtools/swagger-parser": "^10.1.1",
    "@orval/angular": "7.8.0",
    "@orval/axios": "7.8.0",
    "@orval/core": "7.8.0",
    "@orval/fetch": "7.8.0",
    "@orval/hono": "7.8.0",
    "@orval/mock": "7.8.0",
    "@orval/query": "7.8.0",
    "@orval/swr": "7.8.0",
    "@orval/zod": "7.8.0",
    ajv: "^8.17.1",
    cac: "^6.7.14",
    chalk: "^4.1.2",
    chokidar: "^4.0.3",
    enquirer: "^2.4.1",
    execa: "^5.1.1",
    "find-up": "5.0.0",
    "fs-extra": "^11.2.0",
    "lodash.uniq": "^4.5.0",
    "openapi3-ts": "4.2.2",
    "string-argv": "^0.3.2",
    tsconfck: "^2.0.1",
    typedoc: "^0.28.0",
    "typedoc-plugin-markdown": "^4.4.2",
    typescript: "^5.6.3"
  }
};

// src/utils/github.ts
var import_core5 = require("@orval/core");
var import_enquirer = require("enquirer");
var import_fs_extra2 = __toESM(require("fs-extra"));

// src/utils/request.ts
var import_https = __toESM(require("https"));
var request = (urlOptions, data) => {
  return new Promise((resolve, reject) => {
    const req = import_https.default.request(urlOptions, (res) => {
      let body = "";
      res.on("data", (chunk) => body += chunk.toString());
      res.on("error", reject);
      res.on("end", () => {
        const response = {
          status: res.statusCode,
          headers: res.headers,
          body: JSON.parse(body)
        };
        if (res.statusCode && res.statusCode >= 200 && res.statusCode <= 299) {
          resolve(response);
        } else {
          reject(response);
        }
      });
    });
    req.on("error", reject);
    if (data) {
      req.write(data, "binary");
    }
    req.end();
  });
};

// src/utils/github.ts
var getGithubSpecReq = ({
  accessToken,
  repo,
  owner,
  branch,
  path
}) => {
  const payload = JSON.stringify({
    query: `query {
      repository(name: "${repo}", owner: "${owner}") {
        object(expression: "${branch}:${path}") {
          ... on Blob {
            text
          }
        }
      }
    }`
  });
  return [
    {
      method: "POST",
      hostname: "api.github.com",
      path: "/graphql",
      headers: {
        "content-type": "application/json",
        "user-agent": "orval-importer",
        authorization: `bearer ${accessToken}`,
        "Content-Length": payload.length
      }
    },
    payload
  ];
};
var githubToken = null;
var getGithubAcessToken = async (githubTokenPath) => {
  if (githubToken) {
    return githubToken;
  }
  if (await import_fs_extra2.default.pathExists(githubTokenPath)) {
    return import_fs_extra2.default.readFile(githubTokenPath, "utf-8");
  } else {
    const answers = await (0, import_enquirer.prompt)([
      {
        type: "input",
        name: "githubToken",
        message: "Please provide a GitHub token with `repo` rules checked (https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)"
      },
      {
        type: "confirm",
        name: "saveToken",
        message: "Would you like to store your token for the next time? (stored in your node_modules)"
      }
    ]);
    githubToken = answers.githubToken;
    if (answers.saveToken) {
      await import_fs_extra2.default.outputFile(githubTokenPath, answers.githubToken);
    }
    return answers.githubToken;
  }
};
var getGithubOpenApi = async (url) => {
  var _a, _b, _c, _d;
  const githubTokenPath = import_core5.upath.join(__dirname, ".githubToken");
  const accessToken = await getGithubAcessToken(githubTokenPath);
  const [info] = url.split("github.com/").slice(-1);
  const [owner, repo, , branch, ...paths] = info.split("/");
  const path = paths.join("/");
  try {
    const { body } = await request(...getGithubSpecReq({ accessToken, repo, owner, branch, path }));
    if ((_a = body.errors) == null ? void 0 : _a.length) {
      const isErrorRemoveLink = (_b = body.errors) == null ? void 0 : _b.some(
        (error) => (error == null ? void 0 : error.type) === "NOT_FOUND"
      );
      if (isErrorRemoveLink) {
        const answers = await (0, import_enquirer.prompt)([
          {
            type: "confirm",
            name: "removeToken",
            message: "Your token doesn't have the correct permissions, should we remove it?"
          }
        ]);
        if (answers.removeToken) {
          await import_fs_extra2.default.unlink(githubTokenPath);
        }
      }
    }
    return (_d = (_c = body.data) == null ? void 0 : _c.repository) == null ? void 0 : _d.object.text;
  } catch (e) {
    if (!e.body) {
      throw `Oups... \u{1F37B}. ${e}`;
    }
    if (e.body.message === "Bad credentials") {
      const answers = await (0, import_enquirer.prompt)([
        {
          type: "confirm",
          name: "removeToken",
          message: "Your token doesn't have the correct permissions, should we remove it?"
        }
      ]);
      if (answers.removeToken) {
        await import_fs_extra2.default.unlink(githubTokenPath);
      }
    }
    throw e.body.message || `Oups... \u{1F37B}. ${e}`;
  }
};
var githubResolver = {
  order: 199,
  canRead(file) {
    return file.url.includes("github.com");
  },
  read(file) {
    return getGithubOpenApi(file.url);
  }
};

// src/utils/package-json.ts
var import_find_up = __toESM(require("find-up"));
var import_fs_extra3 = __toESM(require("fs-extra"));
var loadPackageJson = async (packageJson, workspace = process.cwd()) => {
  if (!packageJson) {
    const pkgPath = await (0, import_find_up.default)(["package.json"], {
      cwd: workspace
    });
    if (pkgPath) {
      const pkg = await Promise.resolve().then(() => __toESM(require(pkgPath)));
      return pkg;
    }
    return;
  }
  const normalizedPath = normalizePath(packageJson, workspace);
  if (import_fs_extra3.default.existsSync(normalizedPath)) {
    const pkg = await Promise.resolve().then(() => __toESM(require(normalizedPath)));
    return pkg;
  }
  return;
};

// src/utils/tsconfig.ts
var import_core6 = require("@orval/core");
var import_find_up2 = __toESM(require("find-up"));
var import_fs_extra4 = __toESM(require("fs-extra"));
var import_tsconfck = require("tsconfck");
var loadTsconfig = async (tsconfig, workspace = process.cwd()) => {
  var _a, _b;
  if ((0, import_core6.isUndefined)(tsconfig)) {
    const configPath = await (0, import_find_up2.default)(["tsconfig.json", "jsconfig.json"], {
      cwd: workspace
    });
    if (configPath) {
      const config = await (0, import_tsconfck.parse)(configPath);
      return config.tsconfig;
    }
    return;
  }
  if ((0, import_core6.isString)(tsconfig)) {
    const normalizedPath = normalizePath(tsconfig, workspace);
    if (import_fs_extra4.default.existsSync(normalizedPath)) {
      const config = await (0, import_tsconfck.parse)(normalizedPath);
      const tsconfig2 = ((_b = (_a = config.referenced) == null ? void 0 : _a.find(
        ({ tsconfigFile }) => tsconfigFile === normalizedPath
      )) == null ? void 0 : _b.tsconfig) || config.tsconfig;
      return tsconfig2;
    }
    return;
  }
  if ((0, import_core6.isObject)(tsconfig)) {
    return tsconfig;
  }
  return;
};

// src/utils/options.ts
function defineConfig(options) {
  return options;
}
var normalizeOptions = async (optionsExport, workspace = process.cwd(), globalOptions = {}) => {
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha, _ia, _ja, _ka, _la, _ma, _na, _oa, _pa, _qa, _ra, _sa, _ta, _ua, _va, _wa, _xa, _ya, _za, _Aa, _Ba, _Ca, _Da, _Ea, _Fa, _Ga, _Ha, _Ia, _Ja, _Ka, _La, _Ma, _Na, _Oa, _Pa, _Qa, _Ra, _Sa, _Ta, _Ua, _Va, _Wa, _Xa, _Ya, _Za, __a, _$a, _ab, _bb, _cb, _db, _eb, _fb, _gb, _hb, _ib, _jb, _kb, _lb, _mb, _nb, _ob, _pb, _qb, _rb, _sb, _tb, _ub, _vb, _wb, _xb, _yb, _zb, _Ab, _Bb, _Cb, _Db, _Eb, _Fb, _Gb, _Hb, _Ib, _Jb, _Kb, _Lb, _Mb, _Nb, _Ob, _Pb, _Qb, _Rb, _Sb, _Tb, _Ub, _Vb, _Wb, _Xb, _Yb, _Zb, __b, _$b, _ac, _bc, _cc, _dc, _ec;
  const options = await ((0, import_core7.isFunction)(optionsExport) ? optionsExport() : optionsExport);
  if (!options.input) {
    (0, import_core7.createLogger)().error(import_chalk2.default.red(`Config require an input`));
    process.exit(1);
  }
  if (!options.output) {
    (0, import_core7.createLogger)().error(import_chalk2.default.red(`Config require an output`));
    process.exit(1);
  }
  const inputOptions = (0, import_core7.isString)(options.input) ? { target: options.input } : options.input;
  const outputOptions = (0, import_core7.isString)(options.output) ? { target: options.output } : options.output;
  const outputWorkspace = normalizePath(
    outputOptions.workspace || "",
    workspace
  );
  const { clean, prettier, client, httpClient, mode, tslint, biome } = globalOptions;
  const tsconfig = await loadTsconfig(
    outputOptions.tsconfig || globalOptions.tsconfig,
    workspace
  );
  const packageJson = await loadPackageJson(
    outputOptions.packageJson || globalOptions.packageJson,
    workspace
  );
  const mockOption = (_a = outputOptions.mock) != null ? _a : globalOptions.mock;
  let mock2;
  if (typeof mockOption === "boolean" && mockOption) {
    mock2 = import_mock2.DEFAULT_MOCK_OPTIONS;
  } else if ((0, import_core7.isFunction)(mockOption)) {
  } else if (!mockOption) {
    mock2 = void 0;
  } else {
    mock2 = {
      ...import_mock2.DEFAULT_MOCK_OPTIONS,
      ...mockOption
    };
  }
  const defaultFileExtension = ".ts";
  const globalQueryOptions = {
    useQuery: true,
    useMutation: true,
    signal: true,
    shouldExportMutatorHooks: true,
    shouldExportHttpClient: true,
    shouldExportQueryKey: true,
    shouldSplitQueryKey: false,
    ...normalizeQueryOptions((_b = outputOptions.override) == null ? void 0 : _b.query, workspace)
  };
  const normalizedOptions = {
    input: {
      target: globalOptions.input ? normalizePathOrUrl(globalOptions.input, process.cwd()) : normalizePathOrUrl(inputOptions.target, workspace),
      validation: inputOptions.validation || false,
      override: {
        transformer: normalizePath(
          (_c = inputOptions.override) == null ? void 0 : _c.transformer,
          workspace
        )
      },
      converterOptions: (_d = inputOptions.converterOptions) != null ? _d : {},
      parserOptions: (0, import_core7.mergeDeep)(
        parserDefaultOptions,
        (_e = inputOptions.parserOptions) != null ? _e : {}
      ),
      filters: inputOptions.filters
    },
    output: {
      target: globalOptions.output ? normalizePath(globalOptions.output, process.cwd()) : normalizePath(outputOptions.target, outputWorkspace),
      schemas: normalizePath(outputOptions.schemas, outputWorkspace),
      namingConvention: outputOptions.namingConvention || import_core7.NamingConvention.CAMEL_CASE,
      fileExtension: outputOptions.fileExtension || defaultFileExtension,
      workspace: outputOptions.workspace ? outputWorkspace : void 0,
      client: (_g = (_f = outputOptions.client) != null ? _f : client) != null ? _g : import_core7.OutputClient.AXIOS_FUNCTIONS,
      httpClient: (_i = (_h = outputOptions.httpClient) != null ? _h : httpClient) != null ? _i : import_core7.OutputHttpClient.AXIOS,
      mode: normalizeOutputMode((_j = outputOptions.mode) != null ? _j : mode),
      mock: mock2,
      clean: (_l = (_k = outputOptions.clean) != null ? _k : clean) != null ? _l : false,
      docs: (_m = outputOptions.docs) != null ? _m : false,
      prettier: (_o = (_n = outputOptions.prettier) != null ? _n : prettier) != null ? _o : false,
      tslint: (_q = (_p = outputOptions.tslint) != null ? _p : tslint) != null ? _q : false,
      biome: (_s = (_r = outputOptions.biome) != null ? _r : biome) != null ? _s : false,
      tsconfig,
      packageJson,
      headers: (_t = outputOptions.headers) != null ? _t : false,
      indexFiles: (_u = outputOptions.indexFiles) != null ? _u : true,
      baseUrl: outputOptions.baseUrl,
      unionAddMissingProperties: (_v = outputOptions.unionAddMissingProperties) != null ? _v : false,
      override: {
        ...outputOptions.override,
        mock: {
          arrayMin: (_y = (_x = (_w = outputOptions.override) == null ? void 0 : _w.mock) == null ? void 0 : _x.arrayMin) != null ? _y : 1,
          arrayMax: (_B = (_A = (_z = outputOptions.override) == null ? void 0 : _z.mock) == null ? void 0 : _A.arrayMax) != null ? _B : 10,
          ...(_D = (_C = outputOptions.override) == null ? void 0 : _C.mock) != null ? _D : {}
        },
        operations: normalizeOperationsAndTags(
          (_F = (_E = outputOptions.override) == null ? void 0 : _E.operations) != null ? _F : {},
          outputWorkspace,
          {
            query: globalQueryOptions
          }
        ),
        tags: normalizeOperationsAndTags(
          (_H = (_G = outputOptions.override) == null ? void 0 : _G.tags) != null ? _H : {},
          outputWorkspace,
          {
            query: globalQueryOptions
          }
        ),
        mutator: normalizeMutator(
          outputWorkspace,
          (_I = outputOptions.override) == null ? void 0 : _I.mutator
        ),
        formData: (_M = !(0, import_core7.isBoolean)((_J = outputOptions.override) == null ? void 0 : _J.formData) ? normalizeMutator(
          outputWorkspace,
          (_K = outputOptions.override) == null ? void 0 : _K.formData
        ) : (_L = outputOptions.override) == null ? void 0 : _L.formData) != null ? _M : true,
        formUrlEncoded: (_Q = !(0, import_core7.isBoolean)((_N = outputOptions.override) == null ? void 0 : _N.formUrlEncoded) ? normalizeMutator(
          outputWorkspace,
          (_O = outputOptions.override) == null ? void 0 : _O.formUrlEncoded
        ) : (_P = outputOptions.override) == null ? void 0 : _P.formUrlEncoded) != null ? _Q : true,
        paramsSerializer: normalizeMutator(
          outputWorkspace,
          (_R = outputOptions.override) == null ? void 0 : _R.paramsSerializer
        ),
        header: ((_S = outputOptions.override) == null ? void 0 : _S.header) === false ? false : (0, import_core7.isFunction)((_T = outputOptions.override) == null ? void 0 : _T.header) ? (_U = outputOptions.override) == null ? void 0 : _U.header : getDefaultFilesHeader,
        requestOptions: (_W = (_V = outputOptions.override) == null ? void 0 : _V.requestOptions) != null ? _W : true,
        components: {
          schemas: {
            suffix: import_core7.RefComponentSuffix.schemas,
            itemSuffix: (__ = (_Z = (_Y = (_X = outputOptions.override) == null ? void 0 : _X.components) == null ? void 0 : _Y.schemas) == null ? void 0 : _Z.itemSuffix) != null ? __ : "Item",
            ...(_ba = (_aa = (_$ = outputOptions.override) == null ? void 0 : _$.components) == null ? void 0 : _aa.schemas) != null ? _ba : {}
          },
          responses: {
            suffix: import_core7.RefComponentSuffix.responses,
            ...(_ea = (_da = (_ca = outputOptions.override) == null ? void 0 : _ca.components) == null ? void 0 : _da.responses) != null ? _ea : {}
          },
          parameters: {
            suffix: import_core7.RefComponentSuffix.parameters,
            ...(_ha = (_ga = (_fa = outputOptions.override) == null ? void 0 : _fa.components) == null ? void 0 : _ga.parameters) != null ? _ha : {}
          },
          requestBodies: {
            suffix: import_core7.RefComponentSuffix.requestBodies,
            ...(_ka = (_ja = (_ia = outputOptions.override) == null ? void 0 : _ia.components) == null ? void 0 : _ja.requestBodies) != null ? _ka : {}
          }
        },
        hono: normalizeHonoOptions((_la = outputOptions.override) == null ? void 0 : _la.hono, workspace),
        query: globalQueryOptions,
        zod: {
          strict: {
            param: (_pa = (_oa = (_na = (_ma = outputOptions.override) == null ? void 0 : _ma.zod) == null ? void 0 : _na.strict) == null ? void 0 : _oa.param) != null ? _pa : false,
            query: (_ta = (_sa = (_ra = (_qa = outputOptions.override) == null ? void 0 : _qa.zod) == null ? void 0 : _ra.strict) == null ? void 0 : _sa.query) != null ? _ta : false,
            header: (_xa = (_wa = (_va = (_ua = outputOptions.override) == null ? void 0 : _ua.zod) == null ? void 0 : _va.strict) == null ? void 0 : _wa.header) != null ? _xa : false,
            body: (_Ba = (_Aa = (_za = (_ya = outputOptions.override) == null ? void 0 : _ya.zod) == null ? void 0 : _za.strict) == null ? void 0 : _Aa.body) != null ? _Ba : false,
            response: (_Fa = (_Ea = (_Da = (_Ca = outputOptions.override) == null ? void 0 : _Ca.zod) == null ? void 0 : _Da.strict) == null ? void 0 : _Ea.response) != null ? _Fa : false
          },
          generate: {
            param: (_Ja = (_Ia = (_Ha = (_Ga = outputOptions.override) == null ? void 0 : _Ga.zod) == null ? void 0 : _Ha.generate) == null ? void 0 : _Ia.param) != null ? _Ja : true,
            query: (_Na = (_Ma = (_La = (_Ka = outputOptions.override) == null ? void 0 : _Ka.zod) == null ? void 0 : _La.generate) == null ? void 0 : _Ma.query) != null ? _Na : true,
            header: (_Ra = (_Qa = (_Pa = (_Oa = outputOptions.override) == null ? void 0 : _Oa.zod) == null ? void 0 : _Pa.generate) == null ? void 0 : _Qa.header) != null ? _Ra : true,
            body: (_Va = (_Ua = (_Ta = (_Sa = outputOptions.override) == null ? void 0 : _Sa.zod) == null ? void 0 : _Ta.generate) == null ? void 0 : _Ua.body) != null ? _Va : true,
            response: (_Za = (_Ya = (_Xa = (_Wa = outputOptions.override) == null ? void 0 : _Wa.zod) == null ? void 0 : _Xa.generate) == null ? void 0 : _Ya.response) != null ? _Za : true
          },
          coerce: {
            param: (_bb = (_ab = (_$a = (__a = outputOptions.override) == null ? void 0 : __a.zod) == null ? void 0 : _$a.coerce) == null ? void 0 : _ab.param) != null ? _bb : false,
            query: (_fb = (_eb = (_db = (_cb = outputOptions.override) == null ? void 0 : _cb.zod) == null ? void 0 : _db.coerce) == null ? void 0 : _eb.query) != null ? _fb : false,
            header: (_jb = (_ib = (_hb = (_gb = outputOptions.override) == null ? void 0 : _gb.zod) == null ? void 0 : _hb.coerce) == null ? void 0 : _ib.header) != null ? _jb : false,
            body: (_nb = (_mb = (_lb = (_kb = outputOptions.override) == null ? void 0 : _kb.zod) == null ? void 0 : _lb.coerce) == null ? void 0 : _mb.body) != null ? _nb : false,
            response: (_rb = (_qb = (_pb = (_ob = outputOptions.override) == null ? void 0 : _ob.zod) == null ? void 0 : _pb.coerce) == null ? void 0 : _qb.response) != null ? _rb : false
          },
          preprocess: {
            ...((_ub = (_tb = (_sb = outputOptions.override) == null ? void 0 : _sb.zod) == null ? void 0 : _tb.preprocess) == null ? void 0 : _ub.param) ? {
              param: normalizeMutator(
                workspace,
                outputOptions.override.zod.preprocess.param
              )
            } : {},
            ...((_xb = (_wb = (_vb = outputOptions.override) == null ? void 0 : _vb.zod) == null ? void 0 : _wb.preprocess) == null ? void 0 : _xb.query) ? {
              query: normalizeMutator(
                workspace,
                outputOptions.override.zod.preprocess.query
              )
            } : {},
            ...((_Ab = (_zb = (_yb = outputOptions.override) == null ? void 0 : _yb.zod) == null ? void 0 : _zb.preprocess) == null ? void 0 : _Ab.header) ? {
              header: normalizeMutator(
                workspace,
                outputOptions.override.zod.preprocess.header
              )
            } : {},
            ...((_Db = (_Cb = (_Bb = outputOptions.override) == null ? void 0 : _Bb.zod) == null ? void 0 : _Cb.preprocess) == null ? void 0 : _Db.body) ? {
              body: normalizeMutator(
                workspace,
                outputOptions.override.zod.preprocess.body
              )
            } : {},
            ...((_Gb = (_Fb = (_Eb = outputOptions.override) == null ? void 0 : _Eb.zod) == null ? void 0 : _Fb.preprocess) == null ? void 0 : _Gb.response) ? {
              response: normalizeMutator(
                workspace,
                outputOptions.override.zod.preprocess.response
              )
            } : {}
          },
          generateEachHttpStatus: (_Jb = (_Ib = (_Hb = outputOptions.override) == null ? void 0 : _Hb.zod) == null ? void 0 : _Ib.generateEachHttpStatus) != null ? _Jb : false,
          dateTimeOptions: (_Mb = (_Lb = (_Kb = outputOptions.override) == null ? void 0 : _Kb.zod) == null ? void 0 : _Lb.dateTimeOptions) != null ? _Mb : {}
        },
        swr: {
          ...(_Ob = (_Nb = outputOptions.override) == null ? void 0 : _Nb.swr) != null ? _Ob : {}
        },
        angular: {
          provideIn: (_Rb = (_Qb = (_Pb = outputOptions.override) == null ? void 0 : _Pb.angular) == null ? void 0 : _Qb.provideIn) != null ? _Rb : "root"
        },
        fetch: {
          includeHttpResponseReturnType: (_Ub = (_Tb = (_Sb = outputOptions.override) == null ? void 0 : _Sb.fetch) == null ? void 0 : _Tb.includeHttpResponseReturnType) != null ? _Ub : true,
          ...(_Wb = (_Vb = outputOptions.override) == null ? void 0 : _Vb.fetch) != null ? _Wb : {}
        },
        useDates: ((_Xb = outputOptions.override) == null ? void 0 : _Xb.useDates) || false,
        useDeprecatedOperations: (_Zb = (_Yb = outputOptions.override) == null ? void 0 : _Yb.useDeprecatedOperations) != null ? _Zb : true,
        useNativeEnums: (_$b = (__b = outputOptions.override) == null ? void 0 : __b.useNativeEnums) != null ? _$b : false,
        suppressReadonlyModifier: ((_ac = outputOptions.override) == null ? void 0 : _ac.suppressReadonlyModifier) || false
      },
      allParamsOptional: (_bc = outputOptions.allParamsOptional) != null ? _bc : false,
      urlEncodeParameters: (_cc = outputOptions.urlEncodeParameters) != null ? _cc : false,
      optionsParamRequired: (_dc = outputOptions.optionsParamRequired) != null ? _dc : false,
      propertySortOrder: (_ec = outputOptions.propertySortOrder) != null ? _ec : import_core7.PropertySortOrder.SPECIFICATION
    },
    hooks: options.hooks ? normalizeHooks(options.hooks) : {}
  };
  if (!normalizedOptions.input.target) {
    (0, import_core7.createLogger)().error(import_chalk2.default.red(`Config require an input target`));
    process.exit(1);
  }
  if (!normalizedOptions.output.target && !normalizedOptions.output.schemas) {
    (0, import_core7.createLogger)().error(
      import_chalk2.default.red(`Config require an output target or schemas`)
    );
    process.exit(1);
  }
  return normalizedOptions;
};
var parserDefaultOptions = {
  validate: true,
  resolve: { github: githubResolver }
};
var normalizeMutator = (workspace, mutator) => {
  var _a;
  if ((0, import_core7.isObject)(mutator)) {
    if (!mutator.path) {
      (0, import_core7.createLogger)().error(import_chalk2.default.red(`Mutator need a path`));
      process.exit(1);
    }
    return {
      ...mutator,
      path: import_core7.upath.resolve(workspace, mutator.path),
      default: (_a = mutator.default || !mutator.name) != null ? _a : false
    };
  }
  if ((0, import_core7.isString)(mutator)) {
    return {
      path: import_core7.upath.resolve(workspace, mutator),
      default: true
    };
  }
  return mutator;
};
var normalizePathOrUrl = (path, workspace) => {
  if ((0, import_core7.isString)(path) && !(0, import_core7.isUrl)(path)) {
    return normalizePath(path, workspace);
  }
  return path;
};
var normalizePath = (path, workspace) => {
  if (!(0, import_core7.isString)(path)) {
    return path;
  }
  return import_core7.upath.resolve(workspace, path);
};
var normalizeOperationsAndTags = (operationsOrTags, workspace, global) => {
  return Object.fromEntries(
    Object.entries(operationsOrTags).map(
      ([
        key,
        {
          transformer,
          mutator,
          formData,
          formUrlEncoded,
          paramsSerializer,
          query: query2,
          zod: zod2,
          ...rest
        }
      ]) => {
        var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K;
        return [
          key,
          {
            ...rest,
            ...query2 ? {
              query: normalizeQueryOptions(query2, workspace, global.query)
            } : {},
            ...zod2 ? {
              zod: {
                strict: {
                  param: (_b = (_a = zod2.strict) == null ? void 0 : _a.param) != null ? _b : false,
                  query: (_d = (_c = zod2.strict) == null ? void 0 : _c.query) != null ? _d : false,
                  header: (_f = (_e = zod2.strict) == null ? void 0 : _e.header) != null ? _f : false,
                  body: (_h = (_g = zod2.strict) == null ? void 0 : _g.body) != null ? _h : false,
                  response: (_j = (_i = zod2.strict) == null ? void 0 : _i.response) != null ? _j : false
                },
                generate: {
                  param: (_l = (_k = zod2.generate) == null ? void 0 : _k.param) != null ? _l : true,
                  query: (_n = (_m = zod2.generate) == null ? void 0 : _m.query) != null ? _n : true,
                  header: (_p = (_o = zod2.generate) == null ? void 0 : _o.header) != null ? _p : true,
                  body: (_r = (_q = zod2.generate) == null ? void 0 : _q.body) != null ? _r : true,
                  response: (_t = (_s = zod2.generate) == null ? void 0 : _s.response) != null ? _t : true
                },
                coerce: {
                  param: (_v = (_u = zod2.coerce) == null ? void 0 : _u.param) != null ? _v : false,
                  query: (_x = (_w = zod2.coerce) == null ? void 0 : _w.query) != null ? _x : false,
                  header: (_z = (_y = zod2.coerce) == null ? void 0 : _y.header) != null ? _z : false,
                  body: (_B = (_A = zod2.coerce) == null ? void 0 : _A.body) != null ? _B : false,
                  response: (_D = (_C = zod2.coerce) == null ? void 0 : _C.response) != null ? _D : false
                },
                preprocess: {
                  ...((_E = zod2.preprocess) == null ? void 0 : _E.param) ? {
                    param: normalizeMutator(
                      workspace,
                      zod2.preprocess.param
                    )
                  } : {},
                  ...((_F = zod2.preprocess) == null ? void 0 : _F.query) ? {
                    query: normalizeMutator(
                      workspace,
                      zod2.preprocess.query
                    )
                  } : {},
                  ...((_G = zod2.preprocess) == null ? void 0 : _G.header) ? {
                    header: normalizeMutator(
                      workspace,
                      zod2.preprocess.header
                    )
                  } : {},
                  ...((_H = zod2.preprocess) == null ? void 0 : _H.body) ? {
                    body: normalizeMutator(
                      workspace,
                      zod2.preprocess.body
                    )
                  } : {},
                  ...((_I = zod2.preprocess) == null ? void 0 : _I.response) ? {
                    response: normalizeMutator(
                      workspace,
                      zod2.preprocess.response
                    )
                  } : {}
                },
                generateEachHttpStatus: (_J = zod2 == null ? void 0 : zod2.generateEachHttpStatus) != null ? _J : false,
                dateTimeOptions: (_K = zod2 == null ? void 0 : zod2.dateTimeOptions) != null ? _K : {}
              }
            } : {},
            ...transformer ? { transformer: normalizePath(transformer, workspace) } : {},
            ...mutator ? { mutator: normalizeMutator(workspace, mutator) } : {},
            ...formData ? {
              formData: !(0, import_core7.isBoolean)(formData) ? normalizeMutator(workspace, formData) : formData
            } : {},
            ...formUrlEncoded ? {
              formUrlEncoded: !(0, import_core7.isBoolean)(formUrlEncoded) ? normalizeMutator(workspace, formUrlEncoded) : formUrlEncoded
            } : {},
            ...paramsSerializer ? {
              paramsSerializer: normalizeMutator(
                workspace,
                paramsSerializer
              )
            } : {}
          }
        ];
      }
    )
  );
};
var normalizeOutputMode = (mode) => {
  if (!mode) {
    return import_core7.OutputMode.SINGLE;
  }
  if (!Object.values(import_core7.OutputMode).includes(mode)) {
    (0, import_core7.createLogger)().warn(import_chalk2.default.yellow(`Unknown the provided mode => ${mode}`));
    return import_core7.OutputMode.SINGLE;
  }
  return mode;
};
var normalizeHooks = (hooks) => {
  const keys = Object.keys(hooks);
  return keys.reduce((acc, key) => {
    if ((0, import_core7.isString)(hooks[key])) {
      return {
        ...acc,
        [key]: [hooks[key]]
      };
    } else if (Array.isArray(hooks[key])) {
      return {
        ...acc,
        [key]: hooks[key]
      };
    } else if ((0, import_core7.isFunction)(hooks[key])) {
      return {
        ...acc,
        [key]: [hooks[key]]
      };
    } else if ((0, import_core7.isObject)(hooks[key])) {
      return {
        ...acc,
        [key]: [hooks[key]]
      };
    }
    return acc;
  }, {});
};
var normalizeHonoOptions = (hono2 = {}, workspace) => {
  var _a, _b;
  return {
    ...hono2.handlers ? { handlers: import_core7.upath.resolve(workspace, hono2.handlers) } : {},
    compositeRoute: (_a = hono2.compositeRoute) != null ? _a : "",
    validator: (_b = hono2.validator) != null ? _b : true,
    validatorOutputPath: hono2.validatorOutputPath ? import_core7.upath.resolve(workspace, hono2.validatorOutputPath) : ""
  };
};
var normalizeQueryOptions = (queryOptions = {}, outputWorkspace, globalOptions = {}) => {
  if (queryOptions.options) {
    console.warn(
      "[WARN] Using query options is deprecated and will be removed in a future major release. Please use queryOptions or mutationOptions instead."
    );
  }
  return {
    ...!(0, import_core7.isUndefined)(queryOptions.usePrefetch) ? { usePrefetch: queryOptions.usePrefetch } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.useQuery) ? { useQuery: queryOptions.useQuery } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.useSuspenseQuery) ? { useSuspenseQuery: queryOptions.useSuspenseQuery } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.useMutation) ? { useMutation: queryOptions.useMutation } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.useInfinite) ? { useInfinite: queryOptions.useInfinite } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.useSuspenseInfiniteQuery) ? { useSuspenseInfiniteQuery: queryOptions.useSuspenseInfiniteQuery } : {},
    ...queryOptions.useInfiniteQueryParam ? { useInfiniteQueryParam: queryOptions.useInfiniteQueryParam } : {},
    ...queryOptions.options ? { options: queryOptions.options } : {},
    ...globalOptions.queryKey ? {
      queryKey: globalOptions.queryKey
    } : {},
    ...(queryOptions == null ? void 0 : queryOptions.queryKey) ? {
      queryKey: normalizeMutator(outputWorkspace, queryOptions == null ? void 0 : queryOptions.queryKey)
    } : {},
    ...globalOptions.queryOptions ? {
      queryOptions: globalOptions.queryOptions
    } : {},
    ...(queryOptions == null ? void 0 : queryOptions.queryOptions) ? {
      queryOptions: normalizeMutator(
        outputWorkspace,
        queryOptions == null ? void 0 : queryOptions.queryOptions
      )
    } : {},
    ...globalOptions.mutationOptions ? {
      mutationOptions: globalOptions.mutationOptions
    } : {},
    ...(queryOptions == null ? void 0 : queryOptions.mutationOptions) ? {
      mutationOptions: normalizeMutator(
        outputWorkspace,
        queryOptions == null ? void 0 : queryOptions.mutationOptions
      )
    } : {},
    ...!(0, import_core7.isUndefined)(globalOptions.shouldExportQueryKey) ? {
      shouldExportQueryKey: globalOptions.shouldExportQueryKey
    } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.shouldExportQueryKey) ? { shouldExportQueryKey: queryOptions.shouldExportQueryKey } : {},
    ...!(0, import_core7.isUndefined)(globalOptions.shouldExportHttpClient) ? {
      shouldExportHttpClient: globalOptions.shouldExportHttpClient
    } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.shouldExportHttpClient) ? { shouldExportHttpClient: queryOptions.shouldExportHttpClient } : {},
    ...!(0, import_core7.isUndefined)(globalOptions.shouldExportMutatorHooks) ? {
      shouldExportMutatorHooks: globalOptions.shouldExportMutatorHooks
    } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.shouldExportMutatorHooks) ? { shouldExportMutatorHooks: queryOptions.shouldExportMutatorHooks } : {},
    ...!(0, import_core7.isUndefined)(globalOptions.shouldSplitQueryKey) ? {
      shouldSplitQueryKey: globalOptions.shouldSplitQueryKey
    } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.shouldSplitQueryKey) ? { shouldSplitQueryKey: queryOptions.shouldSplitQueryKey } : {},
    ...!(0, import_core7.isUndefined)(globalOptions.signal) ? {
      signal: globalOptions.signal
    } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.signal) ? { signal: queryOptions.signal } : {},
    ...!(0, import_core7.isUndefined)(globalOptions.version) ? {
      version: globalOptions.version
    } : {},
    ...!(0, import_core7.isUndefined)(queryOptions.version) ? { version: queryOptions.version } : {}
  };
};
var getDefaultFilesHeader = ({
  title,
  description,
  version
} = {}) => [
  `Generated by ${package_default.name} v${package_default.version} \u{1F37A}`,
  `Do not edit manually.`,
  ...title ? [title] : [],
  ...description ? [description] : [],
  ...version ? [`OpenAPI spec version: ${version}`] : []
];

// src/utils/watcher.ts
var import_core8 = require("@orval/core");
var startWatcher = async (watchOptions, watchFn, defaultTarget = ".") => {
  if (!watchOptions) return;
  const { watch } = await Promise.resolve().then(() => __toESM(require("chokidar")));
  const ignored = ["**/{.git,node_modules}/**"];
  const watchPaths = typeof watchOptions === "boolean" ? defaultTarget : Array.isArray(watchOptions) ? watchOptions.filter(
    (path) => typeof path === "string"
  ) : watchOptions;
  (0, import_core8.log)(
    `Watching for changes in ${Array.isArray(watchPaths) ? watchPaths.map((v) => '"' + v + '"').join(" | ") : '"' + watchPaths + '"'}`
  );
  const watcher = watch(watchPaths, {
    ignorePermissionErrors: true,
    ignored
  });
  watcher.on("all", async (type2, file) => {
    (0, import_core8.log)(`Change detected: ${type2} ${file}`);
    try {
      await watchFn();
    } catch (e) {
      (0, import_core8.logError)(e);
    }
  });
};

// src/write-specs.ts
var import_core10 = require("@orval/core");
var import_chalk4 = __toESM(require("chalk"));
var import_execa2 = __toESM(require("execa"));
var import_fs_extra5 = __toESM(require("fs-extra"));
var import_lodash = __toESM(require("lodash.uniq"));

// src/utils/executeHook.ts
var import_core9 = require("@orval/core");
var import_chalk3 = __toESM(require("chalk"));
var import_execa = __toESM(require("execa"));
var import_string_argv = require("string-argv");
var executeHook = async (name, commands = [], args = []) => {
  (0, import_core9.log)(import_chalk3.default.white(`Running ${name} hook...`));
  for (const command of commands) {
    try {
      if ((0, import_core9.isString)(command)) {
        await executeCommand(command, args);
      } else if ((0, import_core9.isFunction)(command)) {
        await command(args);
      } else if ((0, import_core9.isObject)(command)) {
        await executeObjectCommand(command, args);
      }
    } catch (e) {
      (0, import_core9.logError)(e, `Failed to run ${name} hook`);
    }
  }
};
async function executeCommand(command, args) {
  const [cmd, ..._args] = [...(0, import_string_argv.parseArgsStringToArgv)(command), ...args];
  await (0, import_execa.default)(cmd, _args);
}
async function executeObjectCommand(command, args) {
  if (command.injectGeneratedDirsAndFiles === false) {
    args = [];
  }
  if ((0, import_core9.isString)(command.command)) {
    await executeCommand(command.command, args);
  } else if ((0, import_core9.isFunction)(command.command)) {
    await command.command();
  }
}

// src/write-specs.ts
var getHeader = (option, info) => {
  if (!option) {
    return "";
  }
  const header = option(info);
  return Array.isArray(header) ? (0, import_core10.jsDoc)({ description: header }) : header;
};
var writeSpecs = async (builder, workspace, options, projectName) => {
  var _a, _b;
  const { info = { title: "", version: 0 }, schemas, target } = builder;
  const { output } = options;
  const projectTitle = projectName || info.title;
  const specsName = Object.keys(schemas).reduce(
    (acc, specKey) => {
      const basePath = import_core10.upath.getSpecName(specKey, target);
      const name = basePath.slice(1).split("/").join("-");
      acc[specKey] = name;
      return acc;
    },
    {}
  );
  const header = getHeader(output.override.header, info);
  if (output.schemas) {
    const rootSchemaPath = output.schemas;
    const fileExtension = ["tags", "tags-split", "split"].includes(output.mode) ? ".ts" : (_a = output.fileExtension) != null ? _a : ".ts";
    await Promise.all(
      Object.entries(schemas).map(([specKey, schemas2]) => {
        const schemaPath = !(0, import_core10.isRootKey)(specKey, target) ? import_core10.upath.join(rootSchemaPath, specsName[specKey]) : rootSchemaPath;
        return (0, import_core10.writeSchemas)({
          schemaPath,
          schemas: schemas2,
          target,
          namingConvention: output.namingConvention,
          fileExtension,
          specsName,
          specKey,
          isRootKey: (0, import_core10.isRootKey)(specKey, target),
          header,
          indexFiles: output.indexFiles
        });
      })
    );
  }
  let implementationPaths = [];
  if (output.target) {
    const writeMode = getWriteMode(output.mode);
    implementationPaths = await writeMode({
      builder,
      workspace,
      output,
      specsName,
      header,
      needSchema: !output.schemas && output.client !== "zod"
    });
  }
  if (output.workspace) {
    const workspacePath = output.workspace;
    const imports = implementationPaths.filter(
      (path) => !output.mock || !path.endsWith(`.${(0, import_core10.getMockFileExtensionByTypeName)(output.mock)}.ts`)
    ).map(
      (path) => import_core10.upath.relativeSafe(
        workspacePath,
        (0, import_core10.getFileInfo)(path).pathWithoutExtension
      )
    );
    if (output.schemas) {
      imports.push(
        import_core10.upath.relativeSafe(workspacePath, (0, import_core10.getFileInfo)(output.schemas).dirname)
      );
    }
    if (output.indexFiles) {
      const indexFile = import_core10.upath.join(workspacePath, "/index.ts");
      if (await import_fs_extra5.default.pathExists(indexFile)) {
        const data = await import_fs_extra5.default.readFile(indexFile, "utf8");
        const importsNotDeclared = imports.filter((imp) => !data.includes(imp));
        await import_fs_extra5.default.appendFile(
          indexFile,
          (0, import_lodash.default)(importsNotDeclared).map((imp) => `export * from '${imp}';
`).join("")
        );
      } else {
        await import_fs_extra5.default.outputFile(
          indexFile,
          (0, import_lodash.default)(imports).map((imp) => `export * from '${imp}';`).join("\n") + "\n"
        );
      }
      implementationPaths = [indexFile, ...implementationPaths];
    }
  }
  if (builder.extraFiles.length) {
    await Promise.all(
      builder.extraFiles.map(
        async (file) => import_fs_extra5.default.outputFile(file.path, file.content)
      )
    );
    implementationPaths = [
      ...implementationPaths,
      ...builder.extraFiles.map((file) => file.path)
    ];
  }
  const paths = [
    ...output.schemas ? [(0, import_core10.getFileInfo)(output.schemas).dirname] : [],
    ...implementationPaths
  ];
  if (options.hooks.afterAllFilesWrite) {
    await executeHook(
      "afterAllFilesWrite",
      options.hooks.afterAllFilesWrite,
      paths
    );
  }
  if (output.prettier) {
    try {
      await (0, import_execa2.default)("prettier", ["--write", ...paths]);
    } catch {
      (0, import_core10.log)(
        import_chalk4.default.yellow(
          `\u26A0\uFE0F  ${projectTitle ? `${projectTitle} - ` : ""}Prettier not found`
        )
      );
    }
  }
  if (output.biome) {
    try {
      await (0, import_execa2.default)("biome", ["check", "--write", ...paths]);
    } catch (e) {
      const message = e.exitCode === 1 ? e.stdout + e.stderr : `\u26A0\uFE0F  ${projectTitle ? `${projectTitle} - ` : ""}biome not found`;
      (0, import_core10.log)(import_chalk4.default.yellow(message));
    }
  }
  if (output.docs) {
    try {
      let config = {};
      let configPath = null;
      if (typeof output.docs === "object") {
        ({ configPath = null, ...config } = output.docs);
        if (configPath) {
          config.options = configPath;
        }
      }
      const getTypedocApplication = async () => {
        const { Application: Application2 } = await Promise.resolve().then(() => __toESM(require("typedoc")));
        return Application2;
      };
      const Application = await getTypedocApplication();
      const app = await Application.bootstrapWithPlugins({
        entryPoints: paths,
        theme: "markdown",
        // Set the custom config location if it has been provided.
        ...config,
        plugin: ["typedoc-plugin-markdown", ...(_b = config.plugin) != null ? _b : []]
      });
      if (!app.options.isSet("readme")) {
        app.options.setValue("readme", "none");
      }
      if (!app.options.isSet("logLevel")) {
        app.options.setValue("logLevel", "None");
      }
      const project = await app.convert();
      if (project) {
        await app.generateDocs(project, app.options.getValue("out"));
      } else {
        throw new Error("TypeDoc not initialised");
      }
    } catch (e) {
      const message = e.exitCode === 1 ? e.stdout + e.stderr : `\u26A0\uFE0F  ${projectTitle ? `${projectTitle} - ` : ""}Unable to generate docs`;
      (0, import_core10.log)(import_chalk4.default.yellow(message));
    }
  }
  (0, import_core10.createSuccessMessage)(projectTitle);
};
var getWriteMode = (mode) => {
  switch (mode) {
    case import_core10.OutputMode.SPLIT:
      return import_core10.writeSplitMode;
    case import_core10.OutputMode.TAGS:
      return import_core10.writeTagsMode;
    case import_core10.OutputMode.TAGS_SPLIT:
      return import_core10.writeSplitTagsMode;
    case import_core10.OutputMode.SINGLE:
    default:
      return import_core10.writeSingleMode;
  }
};

// src/generate.ts
var generateSpec = async (workspace, options, projectName) => {
  if (options.output.clean) {
    const extraPatterns = Array.isArray(options.output.clean) ? options.output.clean : [];
    if (options.output.target) {
      await (0, import_core11.removeFiles)(
        ["**/*", "!**/*.d.ts", ...extraPatterns],
        (0, import_core11.getFileInfo)(options.output.target).dirname
      );
    }
    if (options.output.schemas) {
      await (0, import_core11.removeFiles)(
        ["**/*", "!**/*.d.ts", ...extraPatterns],
        (0, import_core11.getFileInfo)(options.output.schemas).dirname
      );
    }
    (0, import_core11.log)(`${projectName ? `${projectName}: ` : ""}Cleaning output folder`);
  }
  const writeSpecBuilder = await importSpecs(workspace, options);
  await writeSpecs(writeSpecBuilder, workspace, options, projectName);
};
var generateSpecs = async (config, workspace, projectName) => {
  if (projectName) {
    const options = config[projectName];
    if (options) {
      try {
        await generateSpec(workspace, options, projectName);
      } catch (e) {
        (0, import_core11.logError)(e, projectName);
        process.exit(1);
      }
    } else {
      (0, import_core11.logError)("Project not found");
      process.exit(1);
    }
    return;
  }
  let hasErrors;
  const accumulate = await (0, import_core11.asyncReduce)(
    Object.entries(config),
    async (acc, [projectName2, options]) => {
      try {
        acc.push(await generateSpec(workspace, options, projectName2));
      } catch (e) {
        hasErrors = true;
        (0, import_core11.logError)(e, projectName2);
      }
      return acc;
    },
    []
  );
  if (hasErrors) process.exit(1);
  return accumulate;
};
var generateConfig = async (configFile, options) => {
  const {
    path,
    file: configExternal,
    error
  } = await (0, import_core11.loadFile)(configFile, {
    defaultFileName: "orval.config"
  });
  if (!configExternal) {
    throw `failed to load from ${path} => ${error}`;
  }
  const workspace = import_core11.upath.dirname(path);
  const config = await ((0, import_core11.isFunction)(configExternal) ? configExternal() : configExternal);
  const normalizedConfig = await (0, import_core11.asyncReduce)(
    Object.entries(config),
    async (acc, [key, value]) => {
      acc[key] = await normalizeOptions(value, workspace, options);
      return acc;
    },
    {}
  );
  const fileToWatch = Object.entries(normalizedConfig).filter(
    ([project]) => (options == null ? void 0 : options.projectName) === void 0 || project === (options == null ? void 0 : options.projectName)
  ).map(([, { input }]) => input.target).filter((target) => (0, import_core11.isString)(target));
  if ((options == null ? void 0 : options.watch) && fileToWatch.length) {
    startWatcher(
      options == null ? void 0 : options.watch,
      () => generateSpecs(normalizedConfig, workspace, options == null ? void 0 : options.projectName),
      fileToWatch
    );
  } else {
    await generateSpecs(normalizedConfig, workspace, options == null ? void 0 : options.projectName);
  }
};

// src/index.ts
__reExport(src_exports, require("@orval/core"), module.exports);
var generate = async (optionsExport, workspace = process.cwd(), options) => {
  if (!optionsExport || (0, import_core12.isString)(optionsExport)) {
    return generateConfig(optionsExport, options);
  }
  const normalizedOptions = await normalizeOptions(
    optionsExport,
    workspace,
    options
  );
  if (options == null ? void 0 : options.watch) {
    startWatcher(
      options == null ? void 0 : options.watch,
      async () => {
        try {
          await generateSpec(workspace, normalizedOptions);
        } catch (e) {
          (0, import_core12.logError)(e, options == null ? void 0 : options.projectName);
        }
      },
      normalizedOptions.input.target
    );
  } else {
    try {
      return await generateSpec(workspace, normalizedOptions);
    } catch (e) {
      (0, import_core12.logError)(e, options == null ? void 0 : options.projectName);
    }
  }
};
var src_default = generate;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
  Options,
  defineConfig,
  generate,
  ...require("@orval/core")
});
/*! Bundled license information:

js-yaml/dist/js-yaml.mjs:
  (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *)
*/
//# sourceMappingURL=index.js.map