gedcom
Version:
a simple and readable gedcom parser
1,231 lines (1,228 loc) • 1.05 MB
JavaScript
#!/usr/bin/env node
import { createRequire } from "node:module";
import * as Fs from "node:fs";
import fs$1 from "node:fs";
import * as Path from "node:path";
import path$1, { dirname } from "node:path";
import process$1 from "node:process";
import require$$0$1, { format } from "util";
import { normalize, resolve } from "path";
import { readFileSync } from "fs";
import { fileURLToPath } from "node:url";
import require$$0$2 from "os";
import require$$0 from "url";
//#region rolldown:runtime
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 __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (var keys$7 = __getOwnPropNames(from), i = 0, n = keys$7.length, key$1; i < n; i++) {
key$1 = keys$7[i];
if (!__hasOwnProp.call(to, key$1) && key$1 !== except) {
__defProp(to, key$1, {
get: ((k) => from[k]).bind(null, key$1),
enumerable: !(desc = __getOwnPropDesc(from, key$1)) || desc.enumerable
});
}
}
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
value: mod,
enumerable: true
}) : target, mod));
var __require = /* @__PURE__ */ createRequire(import.meta.url);
//#endregion
//#region node_modules/.pnpm/get-stdin@9.0.0/node_modules/get-stdin/index.js
const { stdin } = process;
async function getStdin() {
let result = "";
if (stdin.isTTY) return result;
stdin.setEncoding("utf8");
for await (const chunk of stdin) result += chunk;
return result;
}
getStdin.buffer = async () => {
const result = [];
let length = 0;
if (stdin.isTTY) return Buffer.concat([]);
for await (const chunk of stdin) {
result.push(chunk);
length += chunk.length;
}
return Buffer.concat(result, length);
};
//#endregion
//#region node_modules/.pnpm/meow@13.2.0/node_modules/meow/build/dependencies.js
function camelCase$1(str) {
if (!(str !== str.toLowerCase() && str !== str.toUpperCase())) str = str.toLowerCase();
if (str.indexOf("-") === -1 && str.indexOf("_") === -1) return str;
else {
let camelcase = "";
let nextChrUpper = false;
const leadingHyphens = str.match(/^-+/);
for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {
let chr = str.charAt(i);
if (nextChrUpper) {
nextChrUpper = false;
chr = chr.toUpperCase();
}
if (i !== 0 && (chr === "-" || chr === "_")) nextChrUpper = true;
else if (chr !== "-" && chr !== "_") camelcase += chr;
}
return camelcase;
}
}
function decamelize$1(str, joinString) {
const lowercase = str.toLowerCase();
joinString = joinString || "-";
let notCamelcase = "";
for (let i = 0; i < str.length; i++) {
const chrLower = lowercase.charAt(i);
const chrString = str.charAt(i);
if (chrLower !== chrString && i > 0) notCamelcase += `${joinString}${lowercase.charAt(i)}`;
else notCamelcase += chrString;
}
return notCamelcase;
}
function looksLikeNumber(x) {
if (x === null || x === void 0) return false;
if (typeof x === "number") return true;
if (/^0x[0-9a-f]+$/i.test(x)) return true;
if (/^0[^.]/.test(x)) return false;
return /^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
}
function tokenizeArgString(argString) {
if (Array.isArray(argString)) return argString.map((e) => typeof e !== "string" ? e + "" : e);
argString = argString.trim();
let i = 0;
let prevC = null;
let c = null;
let opening = null;
const args = [];
for (let ii = 0; ii < argString.length; ii++) {
prevC = c;
c = argString.charAt(ii);
if (c === " " && !opening) {
if (!(prevC === " ")) i++;
continue;
}
if (c === opening) opening = null;
else if ((c === "'" || c === "\"") && !opening) opening = c;
if (!args[i]) args[i] = "";
args[i] += c;
}
return args;
}
var DefaultValuesForTypeKey;
(function(DefaultValuesForTypeKey$1) {
DefaultValuesForTypeKey$1["BOOLEAN"] = "boolean";
DefaultValuesForTypeKey$1["STRING"] = "string";
DefaultValuesForTypeKey$1["NUMBER"] = "number";
DefaultValuesForTypeKey$1["ARRAY"] = "array";
})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {}));
let mixin;
var YargsParser = class {
constructor(_mixin) {
mixin = _mixin;
}
parse(argsInput, options) {
const opts = Object.assign({
alias: void 0,
array: void 0,
boolean: void 0,
config: void 0,
configObjects: void 0,
configuration: void 0,
coerce: void 0,
count: void 0,
default: void 0,
envPrefix: void 0,
narg: void 0,
normalize: void 0,
string: void 0,
number: void 0,
__: void 0,
key: void 0
}, options);
const args = tokenizeArgString(argsInput);
const inputIsString = typeof argsInput === "string";
const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));
const configuration = Object.assign({
"boolean-negation": true,
"camel-case-expansion": true,
"combine-arrays": false,
"dot-notation": true,
"duplicate-arguments-array": true,
"flatten-duplicate-arrays": true,
"greedy-arrays": true,
"halt-at-non-option": false,
"nargs-eats-options": false,
"negation-prefix": "no-",
"parse-numbers": true,
"parse-positional-numbers": true,
"populate--": false,
"set-placeholder-key": false,
"short-option-groups": true,
"strip-aliased": false,
"strip-dashed": false,
"unknown-options-as-args": false
}, opts.configuration);
const defaults$1 = Object.assign(Object.create(null), opts.default);
const configObjects = opts.configObjects || [];
const envPrefix = opts.envPrefix;
const notFlagsOption = configuration["populate--"];
const notFlagsArgv = notFlagsOption ? "--" : "_";
const newAliases = Object.create(null);
const defaulted = Object.create(null);
const __ = opts.__ || mixin.format;
const flags = {
aliases: Object.create(null),
arrays: Object.create(null),
bools: Object.create(null),
strings: Object.create(null),
numbers: Object.create(null),
counts: Object.create(null),
normalize: Object.create(null),
configs: Object.create(null),
nargs: Object.create(null),
coercions: Object.create(null),
keys: []
};
const negative = /^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/;
const negatedBoolean = /* @__PURE__ */ new RegExp("^--" + configuration["negation-prefix"] + "(.+)");
[].concat(opts.array || []).filter(Boolean).forEach(function(opt) {
const key$1 = typeof opt === "object" ? opt.key : opt;
const assignment = Object.keys(opt).map(function(key$2) {
return {
boolean: "bools",
string: "strings",
number: "numbers"
}[key$2];
}).filter(Boolean).pop();
if (assignment) flags[assignment][key$1] = true;
flags.arrays[key$1] = true;
flags.keys.push(key$1);
});
[].concat(opts.boolean || []).filter(Boolean).forEach(function(key$1) {
flags.bools[key$1] = true;
flags.keys.push(key$1);
});
[].concat(opts.string || []).filter(Boolean).forEach(function(key$1) {
flags.strings[key$1] = true;
flags.keys.push(key$1);
});
[].concat(opts.number || []).filter(Boolean).forEach(function(key$1) {
flags.numbers[key$1] = true;
flags.keys.push(key$1);
});
[].concat(opts.count || []).filter(Boolean).forEach(function(key$1) {
flags.counts[key$1] = true;
flags.keys.push(key$1);
});
[].concat(opts.normalize || []).filter(Boolean).forEach(function(key$1) {
flags.normalize[key$1] = true;
flags.keys.push(key$1);
});
if (typeof opts.narg === "object") Object.entries(opts.narg).forEach(([key$1, value]) => {
if (typeof value === "number") {
flags.nargs[key$1] = value;
flags.keys.push(key$1);
}
});
if (typeof opts.coerce === "object") Object.entries(opts.coerce).forEach(([key$1, value]) => {
if (typeof value === "function") {
flags.coercions[key$1] = value;
flags.keys.push(key$1);
}
});
if (typeof opts.config !== "undefined") {
if (Array.isArray(opts.config) || typeof opts.config === "string") [].concat(opts.config).filter(Boolean).forEach(function(key$1) {
flags.configs[key$1] = true;
});
else if (typeof opts.config === "object") Object.entries(opts.config).forEach(([key$1, value]) => {
if (typeof value === "boolean" || typeof value === "function") flags.configs[key$1] = value;
});
}
extendAliases(opts.key, aliases, opts.default, flags.arrays);
Object.keys(defaults$1).forEach(function(key$1) {
(flags.aliases[key$1] || []).forEach(function(alias) {
defaults$1[alias] = defaults$1[key$1];
});
});
let error = null;
checkConfiguration();
let notFlags = [];
const argv = Object.assign(Object.create(null), { _: [] });
const argvReturn = {};
for (let i = 0; i < args.length; i++) {
const arg = args[i];
const truncatedArg = arg.replace(/^-{3,}/, "---");
let broken;
let key$1;
let letters;
let m;
let next;
let value;
if (arg !== "--" && /^-/.test(arg) && isUnknownOptionAsArg(arg)) pushPositional(arg);
else if (truncatedArg.match(/^---+(=|$)/)) {
pushPositional(arg);
continue;
} else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) {
m = arg.match(/^--?([^=]+)=([\s\S]*)$/);
if (m !== null && Array.isArray(m) && m.length >= 3) if (checkAllAliases(m[1], flags.arrays)) i = eatArray(i, m[1], args, m[2]);
else if (checkAllAliases(m[1], flags.nargs) !== false) i = eatNargs(i, m[1], args, m[2]);
else setArg(m[1], m[2], true);
} else if (arg.match(negatedBoolean) && configuration["boolean-negation"]) {
m = arg.match(negatedBoolean);
if (m !== null && Array.isArray(m) && m.length >= 2) {
key$1 = m[1];
setArg(key$1, checkAllAliases(key$1, flags.arrays) ? [false] : false);
}
} else if (arg.match(/^--.+/) || !configuration["short-option-groups"] && arg.match(/^-[^-]+/)) {
m = arg.match(/^--?(.+)/);
if (m !== null && Array.isArray(m) && m.length >= 2) {
key$1 = m[1];
if (checkAllAliases(key$1, flags.arrays)) i = eatArray(i, key$1, args);
else if (checkAllAliases(key$1, flags.nargs) !== false) i = eatNargs(i, key$1, args);
else {
next = args[i + 1];
if (next !== void 0 && (!next.match(/^-/) || next.match(negative)) && !checkAllAliases(key$1, flags.bools) && !checkAllAliases(key$1, flags.counts)) {
setArg(key$1, next);
i++;
} else if (/^(true|false)$/.test(next)) {
setArg(key$1, next);
i++;
} else setArg(key$1, defaultValue(key$1));
}
}
} else if (arg.match(/^-.\..+=/)) {
m = arg.match(/^-([^=]+)=([\s\S]*)$/);
if (m !== null && Array.isArray(m) && m.length >= 3) setArg(m[1], m[2]);
} else if (arg.match(/^-.\..+/) && !arg.match(negative)) {
next = args[i + 1];
m = arg.match(/^-(.\..+)/);
if (m !== null && Array.isArray(m) && m.length >= 2) {
key$1 = m[1];
if (next !== void 0 && !next.match(/^-/) && !checkAllAliases(key$1, flags.bools) && !checkAllAliases(key$1, flags.counts)) {
setArg(key$1, next);
i++;
} else setArg(key$1, defaultValue(key$1));
}
} else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {
letters = arg.slice(1, -1).split("");
broken = false;
for (let j = 0; j < letters.length; j++) {
next = arg.slice(j + 2);
if (letters[j + 1] && letters[j + 1] === "=") {
value = arg.slice(j + 3);
key$1 = letters[j];
if (checkAllAliases(key$1, flags.arrays)) i = eatArray(i, key$1, args, value);
else if (checkAllAliases(key$1, flags.nargs) !== false) i = eatNargs(i, key$1, args, value);
else setArg(key$1, value);
broken = true;
break;
}
if (next === "-") {
setArg(letters[j], next);
continue;
}
if (/[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && checkAllAliases(next, flags.bools) === false) {
setArg(letters[j], next);
broken = true;
break;
}
if (letters[j + 1] && letters[j + 1].match(/\W/)) {
setArg(letters[j], next);
broken = true;
break;
} else setArg(letters[j], defaultValue(letters[j]));
}
key$1 = arg.slice(-1)[0];
if (!broken && key$1 !== "-") if (checkAllAliases(key$1, flags.arrays)) i = eatArray(i, key$1, args);
else if (checkAllAliases(key$1, flags.nargs) !== false) i = eatNargs(i, key$1, args);
else {
next = args[i + 1];
if (next !== void 0 && (!/^(-|--)[^-]/.test(next) || next.match(negative)) && !checkAllAliases(key$1, flags.bools) && !checkAllAliases(key$1, flags.counts)) {
setArg(key$1, next);
i++;
} else if (/^(true|false)$/.test(next)) {
setArg(key$1, next);
i++;
} else setArg(key$1, defaultValue(key$1));
}
} else if (arg.match(/^-[0-9]$/) && arg.match(negative) && checkAllAliases(arg.slice(1), flags.bools)) {
key$1 = arg.slice(1);
setArg(key$1, defaultValue(key$1));
} else if (arg === "--") {
notFlags = args.slice(i + 1);
break;
} else if (configuration["halt-at-non-option"]) {
notFlags = args.slice(i);
break;
} else pushPositional(arg);
}
applyEnvVars(argv, true);
applyEnvVars(argv, false);
setConfig(argv);
setConfigObjects();
applyDefaultsAndAliases(argv, flags.aliases, defaults$1, true);
applyCoercions(argv);
if (configuration["set-placeholder-key"]) setPlaceholderKeys(argv);
Object.keys(flags.counts).forEach(function(key$1) {
if (!hasKey(argv, key$1.split("."))) setArg(key$1, 0);
});
if (notFlagsOption && notFlags.length) argv[notFlagsArgv] = [];
notFlags.forEach(function(key$1) {
argv[notFlagsArgv].push(key$1);
});
if (configuration["camel-case-expansion"] && configuration["strip-dashed"]) Object.keys(argv).filter((key$1) => key$1 !== "--" && key$1.includes("-")).forEach((key$1) => {
delete argv[key$1];
});
if (configuration["strip-aliased"]) [].concat(...Object.keys(aliases).map((k) => aliases[k])).forEach((alias) => {
if (configuration["camel-case-expansion"] && alias.includes("-")) delete argv[alias.split(".").map((prop) => camelCase$1(prop)).join(".")];
delete argv[alias];
});
function pushPositional(arg) {
const maybeCoercedNumber = maybeCoerceNumber("_", arg);
if (typeof maybeCoercedNumber === "string" || typeof maybeCoercedNumber === "number") argv._.push(maybeCoercedNumber);
}
function eatNargs(i, key$1, args$1, argAfterEqualSign) {
let ii;
let toEat = checkAllAliases(key$1, flags.nargs);
toEat = typeof toEat !== "number" || isNaN(toEat) ? 1 : toEat;
if (toEat === 0) {
if (!isUndefined$1(argAfterEqualSign)) error = Error(__("Argument unexpected for: %s", key$1));
setArg(key$1, defaultValue(key$1));
return i;
}
let available = isUndefined$1(argAfterEqualSign) ? 0 : 1;
if (configuration["nargs-eats-options"]) {
if (args$1.length - (i + 1) + available < toEat) error = Error(__("Not enough arguments following: %s", key$1));
available = toEat;
} else {
for (ii = i + 1; ii < args$1.length; ii++) if (!args$1[ii].match(/^-[^0-9]/) || args$1[ii].match(negative) || isUnknownOptionAsArg(args$1[ii])) available++;
else break;
if (available < toEat) error = Error(__("Not enough arguments following: %s", key$1));
}
let consumed = Math.min(available, toEat);
if (!isUndefined$1(argAfterEqualSign) && consumed > 0) {
setArg(key$1, argAfterEqualSign);
consumed--;
}
for (ii = i + 1; ii < consumed + i + 1; ii++) setArg(key$1, args$1[ii]);
return i + consumed;
}
function eatArray(i, key$1, args$1, argAfterEqualSign) {
let argsToSet = [];
let next = argAfterEqualSign || args$1[i + 1];
const nargsCount = checkAllAliases(key$1, flags.nargs);
if (checkAllAliases(key$1, flags.bools) && !/^(true|false)$/.test(next)) argsToSet.push(true);
else if (isUndefined$1(next) || isUndefined$1(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) {
if (defaults$1[key$1] !== void 0) {
const defVal = defaults$1[key$1];
argsToSet = Array.isArray(defVal) ? defVal : [defVal];
}
} else {
if (!isUndefined$1(argAfterEqualSign)) argsToSet.push(processValue(key$1, argAfterEqualSign, true));
for (let ii = i + 1; ii < args$1.length; ii++) {
if (!configuration["greedy-arrays"] && argsToSet.length > 0 || nargsCount && typeof nargsCount === "number" && argsToSet.length >= nargsCount) break;
next = args$1[ii];
if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next)) break;
i = ii;
argsToSet.push(processValue(key$1, next, inputIsString));
}
}
if (typeof nargsCount === "number" && (nargsCount && argsToSet.length < nargsCount || isNaN(nargsCount) && argsToSet.length === 0)) error = Error(__("Not enough arguments following: %s", key$1));
setArg(key$1, argsToSet);
return i;
}
function setArg(key$1, val, shouldStripQuotes = inputIsString) {
if (/-/.test(key$1) && configuration["camel-case-expansion"]) addNewAlias(key$1, key$1.split(".").map(function(prop) {
return camelCase$1(prop);
}).join("."));
const value = processValue(key$1, val, shouldStripQuotes);
const splitKey = key$1.split(".");
setKey(argv, splitKey, value);
if (flags.aliases[key$1]) flags.aliases[key$1].forEach(function(x) {
setKey(argv, x.split("."), value);
});
if (splitKey.length > 1 && configuration["dot-notation"]) (flags.aliases[splitKey[0]] || []).forEach(function(x) {
let keyProperties = x.split(".");
const a = [].concat(splitKey);
a.shift();
keyProperties = keyProperties.concat(a);
if (!(flags.aliases[key$1] || []).includes(keyProperties.join("."))) setKey(argv, keyProperties, value);
});
if (checkAllAliases(key$1, flags.normalize) && !checkAllAliases(key$1, flags.arrays)) [key$1].concat(flags.aliases[key$1] || []).forEach(function(key$2) {
Object.defineProperty(argvReturn, key$2, {
enumerable: true,
get() {
return val;
},
set(value$1) {
val = typeof value$1 === "string" ? mixin.normalize(value$1) : value$1;
}
});
});
}
function addNewAlias(key$1, alias) {
if (!(flags.aliases[key$1] && flags.aliases[key$1].length)) {
flags.aliases[key$1] = [alias];
newAliases[alias] = true;
}
if (!(flags.aliases[alias] && flags.aliases[alias].length)) addNewAlias(alias, key$1);
}
function processValue(key$1, val, shouldStripQuotes) {
if (shouldStripQuotes) val = stripQuotes(val);
if (checkAllAliases(key$1, flags.bools) || checkAllAliases(key$1, flags.counts)) {
if (typeof val === "string") val = val === "true";
}
let value = Array.isArray(val) ? val.map(function(v) {
return maybeCoerceNumber(key$1, v);
}) : maybeCoerceNumber(key$1, val);
if (checkAllAliases(key$1, flags.counts) && (isUndefined$1(value) || typeof value === "boolean")) value = increment();
if (checkAllAliases(key$1, flags.normalize) && checkAllAliases(key$1, flags.arrays)) if (Array.isArray(val)) value = val.map((val$1) => {
return mixin.normalize(val$1);
});
else value = mixin.normalize(val);
return value;
}
function maybeCoerceNumber(key$1, value) {
if (!configuration["parse-positional-numbers"] && key$1 === "_") return value;
if (!checkAllAliases(key$1, flags.strings) && !checkAllAliases(key$1, flags.bools) && !Array.isArray(value)) {
if (looksLikeNumber(value) && configuration["parse-numbers"] && Number.isSafeInteger(Math.floor(parseFloat(`${value}`))) || !isUndefined$1(value) && checkAllAliases(key$1, flags.numbers)) value = Number(value);
}
return value;
}
function setConfig(argv$1) {
const configLookup = Object.create(null);
applyDefaultsAndAliases(configLookup, flags.aliases, defaults$1);
Object.keys(flags.configs).forEach(function(configKey) {
const configPath = argv$1[configKey] || configLookup[configKey];
if (configPath) try {
let config = null;
const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);
const resolveConfig = flags.configs[configKey];
if (typeof resolveConfig === "function") {
try {
config = resolveConfig(resolvedConfigPath);
} catch (e) {
config = e;
}
if (config instanceof Error) {
error = config;
return;
}
} else config = mixin.require(resolvedConfigPath);
setConfigObject(config);
} catch (ex) {
if (ex.name === "PermissionDenied") error = ex;
else if (argv$1[configKey]) error = Error(__("Invalid JSON config file: %s", configPath));
}
});
}
function setConfigObject(config, prev) {
Object.keys(config).forEach(function(key$1) {
const value = config[key$1];
const fullKey = prev ? prev + "." + key$1 : key$1;
if (typeof value === "object" && value !== null && !Array.isArray(value) && configuration["dot-notation"]) setConfigObject(value, fullKey);
else if (!hasKey(argv, fullKey.split(".")) || checkAllAliases(fullKey, flags.arrays) && configuration["combine-arrays"]) setArg(fullKey, value);
});
}
function setConfigObjects() {
if (typeof configObjects !== "undefined") configObjects.forEach(function(configObject) {
setConfigObject(configObject);
});
}
function applyEnvVars(argv$1, configOnly) {
if (typeof envPrefix === "undefined") return;
const prefix = typeof envPrefix === "string" ? envPrefix : "";
const env$3 = mixin.env();
Object.keys(env$3).forEach(function(envVar) {
if (prefix === "" || envVar.lastIndexOf(prefix, 0) === 0) {
const keys$7 = envVar.split("__").map(function(key$1, i) {
if (i === 0) key$1 = key$1.substring(prefix.length);
return camelCase$1(key$1);
});
if ((configOnly && flags.configs[keys$7.join(".")] || !configOnly) && !hasKey(argv$1, keys$7)) setArg(keys$7.join("."), env$3[envVar]);
}
});
}
function applyCoercions(argv$1) {
let coerce;
const applied = /* @__PURE__ */ new Set();
Object.keys(argv$1).forEach(function(key$1) {
if (!applied.has(key$1)) {
coerce = checkAllAliases(key$1, flags.coercions);
if (typeof coerce === "function") try {
const value = maybeCoerceNumber(key$1, coerce(argv$1[key$1]));
[].concat(flags.aliases[key$1] || [], key$1).forEach((ali) => {
applied.add(ali);
argv$1[ali] = value;
});
} catch (err) {
error = err;
}
}
});
}
function setPlaceholderKeys(argv$1) {
flags.keys.forEach((key$1) => {
if (~key$1.indexOf(".")) return;
if (typeof argv$1[key$1] === "undefined") argv$1[key$1] = void 0;
});
return argv$1;
}
function applyDefaultsAndAliases(obj, aliases$1, defaults$2, canLog = false) {
Object.keys(defaults$2).forEach(function(key$1) {
if (!hasKey(obj, key$1.split("."))) {
setKey(obj, key$1.split("."), defaults$2[key$1]);
if (canLog) defaulted[key$1] = true;
(aliases$1[key$1] || []).forEach(function(x) {
if (hasKey(obj, x.split("."))) return;
setKey(obj, x.split("."), defaults$2[key$1]);
});
}
});
}
function hasKey(obj, keys$7) {
let o = obj;
if (!configuration["dot-notation"]) keys$7 = [keys$7.join(".")];
keys$7.slice(0, -1).forEach(function(key$2) {
o = o[key$2] || {};
});
const key$1 = keys$7[keys$7.length - 1];
if (typeof o !== "object") return false;
else return key$1 in o;
}
function setKey(obj, keys$7, value) {
let o = obj;
if (!configuration["dot-notation"]) keys$7 = [keys$7.join(".")];
keys$7.slice(0, -1).forEach(function(key$2) {
key$2 = sanitizeKey(key$2);
if (typeof o === "object" && o[key$2] === void 0) o[key$2] = {};
if (typeof o[key$2] !== "object" || Array.isArray(o[key$2])) {
if (Array.isArray(o[key$2])) o[key$2].push({});
else o[key$2] = [o[key$2], {}];
o = o[key$2][o[key$2].length - 1];
} else o = o[key$2];
});
const key$1 = sanitizeKey(keys$7[keys$7.length - 1]);
const isTypeArray = checkAllAliases(keys$7.join("."), flags.arrays);
const isValueArray = Array.isArray(value);
let duplicate = configuration["duplicate-arguments-array"];
if (!duplicate && checkAllAliases(key$1, flags.nargs)) {
duplicate = true;
if (!isUndefined$1(o[key$1]) && flags.nargs[key$1] === 1 || Array.isArray(o[key$1]) && o[key$1].length === flags.nargs[key$1]) o[key$1] = void 0;
}
if (value === increment()) o[key$1] = increment(o[key$1]);
else if (Array.isArray(o[key$1])) if (duplicate && isTypeArray && isValueArray) o[key$1] = configuration["flatten-duplicate-arrays"] ? o[key$1].concat(value) : (Array.isArray(o[key$1][0]) ? o[key$1] : [o[key$1]]).concat([value]);
else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) o[key$1] = value;
else o[key$1] = o[key$1].concat([value]);
else if (o[key$1] === void 0 && isTypeArray) o[key$1] = isValueArray ? value : [value];
else if (duplicate && !(o[key$1] === void 0 || checkAllAliases(key$1, flags.counts) || checkAllAliases(key$1, flags.bools))) o[key$1] = [o[key$1], value];
else o[key$1] = value;
}
function extendAliases(...args$1) {
args$1.forEach(function(obj) {
Object.keys(obj || {}).forEach(function(key$1) {
if (flags.aliases[key$1]) return;
flags.aliases[key$1] = [].concat(aliases[key$1] || []);
flags.aliases[key$1].concat(key$1).forEach(function(x) {
if (/-/.test(x) && configuration["camel-case-expansion"]) {
const c = camelCase$1(x);
if (c !== key$1 && flags.aliases[key$1].indexOf(c) === -1) {
flags.aliases[key$1].push(c);
newAliases[c] = true;
}
}
});
flags.aliases[key$1].concat(key$1).forEach(function(x) {
if (x.length > 1 && /[A-Z]/.test(x) && configuration["camel-case-expansion"]) {
const c = decamelize$1(x, "-");
if (c !== key$1 && flags.aliases[key$1].indexOf(c) === -1) {
flags.aliases[key$1].push(c);
newAliases[c] = true;
}
}
});
flags.aliases[key$1].forEach(function(x) {
flags.aliases[x] = [key$1].concat(flags.aliases[key$1].filter(function(y) {
return x !== y;
}));
});
});
});
}
function checkAllAliases(key$1, flag) {
const toCheck = [].concat(flags.aliases[key$1] || [], key$1);
const keys$7 = Object.keys(flag);
const setAlias = toCheck.find((key$2) => keys$7.includes(key$2));
return setAlias ? flag[setAlias] : false;
}
function hasAnyFlag(key$1) {
const flagsKeys = Object.keys(flags);
return [].concat(flagsKeys.map((k) => flags[k])).some(function(flag) {
return Array.isArray(flag) ? flag.includes(key$1) : flag[key$1];
});
}
function hasFlagsMatching(arg, ...patterns) {
return [].concat(...patterns).some(function(pattern) {
const match = arg.match(pattern);
return match && hasAnyFlag(match[1]);
});
}
function hasAllShortFlags(arg) {
if (arg.match(negative) || !arg.match(/^-[^-]+/)) return false;
let hasAllFlags = true;
let next;
const letters = arg.slice(1).split("");
for (let j = 0; j < letters.length; j++) {
next = arg.slice(j + 2);
if (!hasAnyFlag(letters[j])) {
hasAllFlags = false;
break;
}
if (letters[j + 1] && letters[j + 1] === "=" || next === "-" || /[A-Za-z]/.test(letters[j]) && /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) || letters[j + 1] && letters[j + 1].match(/\W/)) break;
}
return hasAllFlags;
}
function isUnknownOptionAsArg(arg) {
return configuration["unknown-options-as-args"] && isUnknownOption(arg);
}
function isUnknownOption(arg) {
arg = arg.replace(/^-{3,}/, "--");
if (arg.match(negative)) return false;
if (hasAllShortFlags(arg)) return false;
return !hasFlagsMatching(arg, /^-+([^=]+?)=[\s\S]*$/, negatedBoolean, /^-+([^=]+?)$/, /^-+([^=]+?)-$/, /^-+([^=]+?\d+)$/, /^-+([^=]+?)\W+.*$/);
}
function defaultValue(key$1) {
if (!checkAllAliases(key$1, flags.bools) && !checkAllAliases(key$1, flags.counts) && `${key$1}` in defaults$1) return defaults$1[key$1];
else return defaultForType(guessType(key$1));
}
function defaultForType(type) {
return {
[DefaultValuesForTypeKey.BOOLEAN]: true,
[DefaultValuesForTypeKey.STRING]: "",
[DefaultValuesForTypeKey.NUMBER]: void 0,
[DefaultValuesForTypeKey.ARRAY]: []
}[type];
}
function guessType(key$1) {
let type = DefaultValuesForTypeKey.BOOLEAN;
if (checkAllAliases(key$1, flags.strings)) type = DefaultValuesForTypeKey.STRING;
else if (checkAllAliases(key$1, flags.numbers)) type = DefaultValuesForTypeKey.NUMBER;
else if (checkAllAliases(key$1, flags.bools)) type = DefaultValuesForTypeKey.BOOLEAN;
else if (checkAllAliases(key$1, flags.arrays)) type = DefaultValuesForTypeKey.ARRAY;
return type;
}
function isUndefined$1(num) {
return num === void 0;
}
function checkConfiguration() {
Object.keys(flags.counts).find((key$1) => {
if (checkAllAliases(key$1, flags.arrays)) {
error = Error(__("Invalid configuration: %s, opts.count excludes opts.array.", key$1));
return true;
} else if (checkAllAliases(key$1, flags.nargs)) {
error = Error(__("Invalid configuration: %s, opts.count excludes opts.narg.", key$1));
return true;
}
return false;
});
}
return {
aliases: Object.assign({}, flags.aliases),
argv: Object.assign(argvReturn, argv),
configuration,
defaulted: Object.assign({}, defaulted),
error,
newAliases: Object.assign({}, newAliases)
};
}
};
function combineAliases(aliases) {
const aliasArrays = [];
const combined = Object.create(null);
let change = true;
Object.keys(aliases).forEach(function(key$1) {
aliasArrays.push([].concat(aliases[key$1], key$1));
});
while (change) {
change = false;
for (let i = 0; i < aliasArrays.length; i++) for (let ii = i + 1; ii < aliasArrays.length; ii++) if (aliasArrays[i].filter(function(v) {
return aliasArrays[ii].indexOf(v) !== -1;
}).length) {
aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);
aliasArrays.splice(ii, 1);
change = true;
break;
}
}
aliasArrays.forEach(function(aliasArray) {
aliasArray = aliasArray.filter(function(v, i, self$1) {
return self$1.indexOf(v) === i;
});
const lastAlias = aliasArray.pop();
if (lastAlias !== void 0 && typeof lastAlias === "string") combined[lastAlias] = aliasArray;
});
return combined;
}
function increment(orig) {
return orig !== void 0 ? orig + 1 : 1;
}
function sanitizeKey(key$1) {
if (key$1 === "__proto__") return "___proto___";
return key$1;
}
function stripQuotes(val) {
return typeof val === "string" && (val[0] === "'" || val[0] === "\"") && val[val.length - 1] === val[0] ? val.substring(1, val.length - 1) : val;
}
var _a, _b, _c;
const minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12;
const nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1);
if (nodeVersion) {
if (Number(nodeVersion.match(/^([^.]+)/)[1]) < minNodeVersion) throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);
}
const env$2 = process ? process.env : {};
const parser = new YargsParser({
cwd: process.cwd,
env: () => {
return env$2;
},
format,
normalize,
resolve,
require: (path$2) => {
if (typeof __require !== "undefined") return __require(path$2);
else if (path$2.match(/\.json$/)) return JSON.parse(readFileSync(path$2, "utf8"));
else throw Error("only .json config files are supported in ESM");
}
});
const yargsParser = function Parser(args, opts) {
return parser.parse(args.slice(), opts).argv;
};
yargsParser.detailed = function(args, opts) {
return parser.parse(args.slice(), opts);
};
yargsParser.camelCase = camelCase$1;
yargsParser.decamelize = decamelize$1;
yargsParser.looksLikeNumber = looksLikeNumber;
const isObject$3$1 = (value) => typeof value === "object" && value !== null;
const isObjectCustom$1 = (value) => isObject$3$1(value) && !(value instanceof RegExp) && !(value instanceof Error) && !(value instanceof Date);
const mapObjectSkip$1 = Symbol("mapObjectSkip");
const _mapObject = (object, mapper, options, isSeen = /* @__PURE__ */ new WeakMap()) => {
options = {
deep: false,
target: {},
...options
};
if (isSeen.has(object)) return isSeen.get(object);
isSeen.set(object, options.target);
const { target } = options;
delete options.target;
const mapArray = (array) => array.map((element) => isObjectCustom$1(element) ? _mapObject(element, mapper, options, isSeen) : element);
if (Array.isArray(object)) return mapArray(object);
for (const [key$1, value] of Object.entries(object)) {
const mapResult = mapper(key$1, value, object);
if (mapResult === mapObjectSkip$1) continue;
let [newKey, newValue, { shouldRecurse = true } = {}] = mapResult;
if (newKey === "__proto__") continue;
if (options.deep && shouldRecurse && isObjectCustom$1(newValue)) newValue = Array.isArray(newValue) ? mapArray(newValue) : _mapObject(newValue, mapper, options, isSeen);
target[newKey] = newValue;
}
return target;
};
function mapObject$2(object, mapper, options) {
if (!isObject$3$1(object)) throw new TypeError(`Expected an object, got \`${object}\` (${typeof object})`);
return _mapObject(object, mapper, options);
}
const UPPERCASE = /[\p{Lu}]/u;
const LOWERCASE = /[\p{Ll}]/u;
const LEADING_CAPITAL = /^[\p{Lu}](?![\p{Lu}])/gu;
const IDENTIFIER$1 = /([\p{Alpha}\p{N}_]|$)/u;
const SEPARATORS = /[_.\- ]+/;
const LEADING_SEPARATORS = /* @__PURE__ */ new RegExp("^" + SEPARATORS.source);
const SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER$1.source, "gu");
const NUMBERS_AND_IDENTIFIER = new RegExp("\\d+" + IDENTIFIER$1.source, "gu");
const preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase$1) => {
let isLastCharLower = false;
let isLastCharUpper = false;
let isLastLastCharUpper = false;
let isLastLastCharPreserved = false;
for (let index = 0; index < string.length; index++) {
const character = string[index];
isLastLastCharPreserved = index > 2 ? string[index - 3] === "-" : true;
if (isLastCharLower && UPPERCASE.test(character)) {
string = string.slice(0, index) + "-" + string.slice(index);
isLastCharLower = false;
isLastLastCharUpper = isLastCharUpper;
isLastCharUpper = true;
index++;
} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase$1)) {
string = string.slice(0, index - 1) + "-" + string.slice(index - 1);
isLastLastCharUpper = isLastCharUpper;
isLastCharUpper = false;
isLastCharLower = true;
} else {
isLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;
isLastLastCharUpper = isLastCharUpper;
isLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;
}
}
return string;
};
const preserveConsecutiveUppercase = (input, toLowerCase) => {
LEADING_CAPITAL.lastIndex = 0;
return input.replaceAll(LEADING_CAPITAL, (match) => toLowerCase(match));
};
const postProcess = (input, toUpperCase) => {
SEPARATORS_AND_IDENTIFIER.lastIndex = 0;
NUMBERS_AND_IDENTIFIER.lastIndex = 0;
return input.replaceAll(NUMBERS_AND_IDENTIFIER, (match, pattern, offset) => ["_", "-"].includes(input.charAt(offset + match.length)) ? match : toUpperCase(match)).replaceAll(SEPARATORS_AND_IDENTIFIER, (_$15, identifier$1) => toUpperCase(identifier$1));
};
function camelCase(input, options) {
if (!(typeof input === "string" || Array.isArray(input))) throw new TypeError("Expected the input to be `string | string[]`");
options = {
pascalCase: false,
preserveConsecutiveUppercase: false,
...options
};
if (Array.isArray(input)) input = input.map((x) => x.trim()).filter((x) => x.length).join("-");
else input = input.trim();
if (input.length === 0) return "";
const toLowerCase = options.locale === false ? (string) => string.toLowerCase() : (string) => string.toLocaleLowerCase(options.locale);
const toUpperCase = options.locale === false ? (string) => string.toUpperCase() : (string) => string.toLocaleUpperCase(options.locale);
if (input.length === 1) {
if (SEPARATORS.test(input)) return "";
return options.pascalCase ? toUpperCase(input) : toLowerCase(input);
}
if (input !== toLowerCase(input)) input = preserveCamelCase(input, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);
input = input.replace(LEADING_SEPARATORS, "");
input = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);
if (options.pascalCase) input = toUpperCase(input.charAt(0)) + input.slice(1);
return postProcess(input, toUpperCase);
}
var QuickLRU = class extends Map {
constructor(options = {}) {
super();
if (!(options.maxSize && options.maxSize > 0)) throw new TypeError("`maxSize` must be a number greater than 0");
if (typeof options.maxAge === "number" && options.maxAge === 0) throw new TypeError("`maxAge` must be a number greater than 0");
this.maxSize = options.maxSize;
this.maxAge = options.maxAge || Number.POSITIVE_INFINITY;
this.onEviction = options.onEviction;
this.cache = /* @__PURE__ */ new Map();
this.oldCache = /* @__PURE__ */ new Map();
this._size = 0;
}
_emitEvictions(cache$3) {
if (typeof this.onEviction !== "function") return;
for (const [key$1, item] of cache$3) this.onEviction(key$1, item.value);
}
_deleteIfExpired(key$1, item) {
if (typeof item.expiry === "number" && item.expiry <= Date.now()) {
if (typeof this.onEviction === "function") this.onEviction(key$1, item.value);
return this.delete(key$1);
}
return false;
}
_getOrDeleteIfExpired(key$1, item) {
if (this._deleteIfExpired(key$1, item) === false) return item.value;
}
_getItemValue(key$1, item) {
return item.expiry ? this._getOrDeleteIfExpired(key$1, item) : item.value;
}
_peek(key$1, cache$3) {
const item = cache$3.get(key$1);
return this._getItemValue(key$1, item);
}
_set(key$1, value) {
this.cache.set(key$1, value);
this._size++;
if (this._size >= this.maxSize) {
this._size = 0;
this._emitEvictions(this.oldCache);
this.oldCache = this.cache;
this.cache = /* @__PURE__ */ new Map();
}
}
_moveToRecent(key$1, item) {
this.oldCache.delete(key$1);
this._set(key$1, item);
}
*_entriesAscending() {
for (const item of this.oldCache) {
const [key$1, value] = item;
if (!this.cache.has(key$1)) {
if (this._deleteIfExpired(key$1, value) === false) yield item;
}
}
for (const item of this.cache) {
const [key$1, value] = item;
if (this._deleteIfExpired(key$1, value) === false) yield item;
}
}
get(key$1) {
if (this.cache.has(key$1)) {
const item = this.cache.get(key$1);
return this._getItemValue(key$1, item);
}
if (this.oldCache.has(key$1)) {
const item = this.oldCache.get(key$1);
if (this._deleteIfExpired(key$1, item) === false) {
this._moveToRecent(key$1, item);
return item.value;
}
}
}
set(key$1, value, { maxAge = this.maxAge } = {}) {
const expiry = typeof maxAge === "number" && maxAge !== Number.POSITIVE_INFINITY ? Date.now() + maxAge : void 0;
if (this.cache.has(key$1)) this.cache.set(key$1, {
value,
expiry
});
else this._set(key$1, {
value,
expiry
});
return this;
}
has(key$1) {
if (this.cache.has(key$1)) return !this._deleteIfExpired(key$1, this.cache.get(key$1));
if (this.oldCache.has(key$1)) return !this._deleteIfExpired(key$1, this.oldCache.get(key$1));
return false;
}
peek(key$1) {
if (this.cache.has(key$1)) return this._peek(key$1, this.cache);
if (this.oldCache.has(key$1)) return this._peek(key$1, this.oldCache);
}
delete(key$1) {
const deleted = this.cache.delete(key$1);
if (deleted) this._size--;
return this.oldCache.delete(key$1) || deleted;
}
clear() {
this.cache.clear();
this.oldCache.clear();
this._size = 0;
}
resize(newSize) {
if (!(newSize && newSize > 0)) throw new TypeError("`maxSize` must be a number greater than 0");
const items = [...this._entriesAscending()];
const removeCount = items.length - newSize;
if (removeCount < 0) {
this.cache = new Map(items);
this.oldCache = /* @__PURE__ */ new Map();
this._size = items.length;
} else {
if (removeCount > 0) this._emitEvictions(items.slice(0, removeCount));
this.oldCache = new Map(items.slice(removeCount));
this.cache = /* @__PURE__ */ new Map();
this._size = 0;
}
this.maxSize = newSize;
}
*keys() {
for (const [key$1] of this) yield key$1;
}
*values() {
for (const [, value] of this) yield value;
}
*[Symbol.iterator]() {
for (const item of this.cache) {
const [key$1, value] = item;
if (this._deleteIfExpired(key$1, value) === false) yield [key$1, value.value];
}
for (const item of this.oldCache) {
const [key$1, value] = item;
if (!this.cache.has(key$1)) {
if (this._deleteIfExpired(key$1, value) === false) yield [key$1, value.value];
}
}
}
*entriesDescending() {
let items = [...this.cache];
for (let i = items.length - 1; i >= 0; --i) {
const [key$1, value] = items[i];
if (this._deleteIfExpired(key$1, value) === false) yield [key$1, value.value];
}
items = [...this.oldCache];
for (let i = items.length - 1; i >= 0; --i) {
const [key$1, value] = items[i];
if (!this.cache.has(key$1)) {
if (this._deleteIfExpired(key$1, value) === false) yield [key$1, value.value];
}
}
}
*entriesAscending() {
for (const [key$1, value] of this._entriesAscending()) yield [key$1, value.value];
}
get size() {
if (!this._size) return this.oldCache.size;
let oldCacheSize = 0;
for (const key$1 of this.oldCache.keys()) if (!this.cache.has(key$1)) oldCacheSize++;
return Math.min(this._size + oldCacheSize, this.maxSize);
}
entries() {
return this.entriesAscending();
}
forEach(callbackFunction, thisArgument = this) {
for (const [key$1, value] of this.entriesAscending()) callbackFunction.call(thisArgument, value, key$1, this);
}
get [Symbol.toStringTag]() {
return JSON.stringify([...this.entriesAscending()]);
}
};
const has$1 = (array, key$1) => array.some((element) => {
if (typeof element === "string") return element === key$1;
element.lastIndex = 0;
return element.test(key$1);
});
const cache$2 = new QuickLRU({ maxSize: 1e5 });
const isObject$2$1 = (value) => typeof value === "object" && value !== null && !(value instanceof RegExp) && !(value instanceof Error) && !(value instanceof Date);
const transform$1 = (input, options = {}) => {
if (!isObject$2$1(input)) return input;
const { exclude, pascalCase = false, stopPaths, deep = false, preserveConsecutiveUppercase: preserveConsecutiveUppercase$1 = false } = options;
const stopPathsSet = new Set(stopPaths);
const makeMapper = (parentPath) => (key$1, value) => {
if (deep && isObject$2$1(value)) {
const path$2 = parentPath === void 0 ? key$1 : `${parentPath}.${key$1}`;
if (!stopPathsSet.has(path$2)) value = mapObject$2(value, makeMapper(path$2));
}
if (!(exclude && has$1(exclude, key$1))) {
const cacheKey = pascalCase ? `${key$1}_` : key$1;
if (cache$2.has(cacheKey)) key$1 = cache$2.get(cacheKey);
else {
const returnValue = camelCase(key$1, {
pascalCase,
locale: false,
preserveConsecutiveUppercase: preserveConsecutiveUppercase$1
});
if (key$1.length < 100) cache$2.set(cacheKey, returnValue);
key$1 = returnValue;
}
}
return [key$1, value];
};
return mapObject$2(input, makeMapper(void 0));
};
function camelcaseKeys(input, options) {
if (Array.isArray(input)) return Object.keys(input).map((key$1) => transform$1(input[key$1], options));
return transform$1(input, options);
}
function trimNewlines(string) {
let start = 0;
let end = string.length;
while (start < end && (string[start] === "\r" || string[start] === "\n")) start++;
while (end > start && (string[end - 1] === "\r" || string[end - 1] === "\n")) end--;
return start > 0 || end < string.length ? string.slice(start, end) : string;
}
function getDefaultExportFromCjs(x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
}
var minIndent = (string) => {
const match = string.match(/^[ \t]*(?=\S)/gm);
if (!match) return 0;
return match.reduce((r, a) => Math.min(r, a.length), Infinity);
};
const minIndent$1 = getDefaultExportFromCjs(minIndent);
function stripIndent(string) {
const indent = minIndent$1(string);
if (indent === 0) return string;
const regex = new RegExp(`^[ \\t]{${indent}}`, "gm");
return string.replace(regex, "");
}
function indentString(string, count = 1, options = {}) {
const { indent = " ", includeEmptyLines = false } = options;
if (typeof string !== "string") throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof string}\``);
if (typeof count !== "number") throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof count}\``);
if (count < 0) throw new RangeError(`Expected \`count\` to be at least 0, got \`${count}\``);
if (typeof indent !== "string") throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof indent}\``);
if (count === 0) return string;
const regex = includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
return string.replace(regex, indent.repeat(count));
}
function redent(string, count = 0, options = {}) {
return indentString(stripIndent(string), count, options);
}
var debug_1 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {};
const SEMVER_SPEC_VERSION = "2.0.0";
const MAX_LENGTH$1 = 256;
const MAX_SAFE_INTEGER$1$1 = Number.MAX_SAFE_INTEGER || 9007199254740991;
var constants$1 = {
MAX_LENGTH: MAX_LENGTH$1,
MAX_SAFE_COMPONENT_LENGTH: 16,
MAX_SAFE_BUILD_LENGTH: MAX_LENGTH$1 - 6,
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1$1,
RELEASE_TYPES: [
"major",
"premajor",
"minor",
"preminor",
"patch",
"prepatch",
"prerelease"
],
SEMVER_SPEC_VERSION,
FLAG_INCLUDE_PRERELEASE: 1,
FLAG_LOOSE: 2
};
var re$1 = { exports: {} };
(function(module$2, exports$1) {
const { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH: MAX_LENGTH$2 } = constants$1;
const debug$1 = debug_1;
exports$1 = module$2.exports = {};
const re$2 = exports$1.re = [];
const safeRe = exports$1.safeRe = [];
const src = exports$1.src = [];
const t$1 = exports$1.t = {};
let R = 0;
const LETTERDASHNUMBER = "[a-zA-Z0-9-]";
const safeRegexReplacements = [
["\\s", 1],
["\\d", MAX_LENGTH$2],
[LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]
];
const makeSafeRegex = (value) => {
for (const [token, max$1] of safeRegexReplacements) value = value.split(`${token}*`).join(`${token}{0,${max$1}}`).split(`${token}+`).join(`${token}{1,${max$1}}`);
return value;
};
const createToken = (name, value, isGlobal) => {
const safe = makeSafeRegex(value);
const index = R++;
debug$1(name, index, value);
t$1[name] = index;
src[index] = value;
re$2[index] = new RegExp(value, isGlobal ? "g" : void 0);
safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
};
createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*");
createToken("NUMERICIDENTIFIERLOOSE", "\\d+");
createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
createToken("MAINVERSION", `(${src[t$1.NUMERICIDENTIFIER]})\\.(${src[t$1.NUMERICIDENTIFIER]})\\.(${src[t$1.NUMERICIDENTIFIER]})`);
createToken("MAINVERSIONLOOSE", `(${src[t$1.NUMERICIDENTIFIERLOOSE]})\\.(${src[t$1.NUMERICIDENTIFIERLOOSE]})\\.(${src[t$1.NUMERICIDENTIFIERLOOSE]})`);
createToken("PRERELEASEIDENTIFIER", `(?:${src[t$1.NUMERICIDENTIFIER]}|${src[t$1.NONNUMERICIDENTIFIER]})`);
createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t$1.NUMERICIDENTIFIERLOOSE]}|${src[t$1.NONNUMERICIDENTIFIER]})`);
createToken("PRERELEASE", `(?:-(${src[t$1.PRERELEASEIDENTIFIER]}(?:\\.${src[t$1.PRERELEASEIDENTIFIER]})*))`);
createToken("PRERELEASELOOSE", `(?:-?(${src[t$1.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t$1.PRERELEASEIDENTIFIERLOOSE]})*))`);
createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
createToken("BUILD", `(?:\\+(${src[t$1.BUILDIDENTIFIER]}(?:\\.${src[t$1.BUILDIDENTIFIER]})*))`);
createToken("FULLPLAIN", `v?${src[t$1.MAINVERSION]}${src[t$1.PRERELEASE]}?${src[t$1.BUILD]}?`);
createToken("FULL", `^${src[t$1.FULLPLAIN]}$`);
createToken("LOOSEPLAIN", `[v=\\s]*${src[t$1.MAINVERSIONLOOSE]}${src[t$1.PRERELEASELOOSE]}?${src[t$1.BUILD]}?`);
createToken("LOOSE", `^${src[t$1.LOOSEPLAIN]}$`);
createToken("GTLT", "((?:<|>)?=?)");
createToken("XRANGEIDENTIFIERLOOSE", `${src[t$1.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
createToken("XRANGEIDENTIFIER", `${src[t$1.NUMERICIDENTIFIER]}|x|X|\\*`);
createToken("XRANGEPLAIN", `[v=\\s]*(${src[t$1.XRANGEIDENTIFIER]})(?:\\.(${src[t$1.XRANGEIDENTIFIER]})(?:\\.(${src[t$1.XRANGEIDENTIFIER]})(?:${src[t$1.PRERELEASE]})?${src[t$1.BUILD]}?)?)?`);
createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t$1.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t$1.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t$1.XRANGEIDENTIFIERLOOSE]})(?:${src[t$1.PRERELEASELOOSE]})?${src[t$1.BUILD]}?)?)?`);
createToken("XRANGE", `^${src[t$1.GTLT]}\\s*${src[t$1.XRANGEPLAIN]}$`);
createToken("XRANGELOOSE", `^${src[t$1.GTLT]}\\s*${src[t$1.XRANGEPLAINLOOSE]}$`);
createToken("COER