orval
Version:
A swagger client generator for typescript
4,434 lines • 155 kB
JavaScript
"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