snyk-policy
Version:
Snyk's policy parser and matching logic
1,283 lines • 166 kB
JavaScript
import ba from "url";
import zi, { statSync as Hr, lstatSync as Ca, promises as Br } from "fs";
import * as Z from "path";
import Ji from "path";
import wa from "util";
var Ut = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function nr(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var Yr = { exports: {} }, Sr, Xn;
function Sa() {
if (Xn) return Sr;
Xn = 1;
var e = 1e3, t = e * 60, r = t * 60, n = r * 24, i = n * 7, s = n * 365.25;
Sr = function(f, h) {
h = h || {};
var m = typeof f;
if (m === "string" && f.length > 0)
return o(f);
if (m === "number" && isFinite(f))
return h.long ? a(f) : c(f);
throw new Error(
"val is not a non-empty string or a valid number. val=" + JSON.stringify(f)
);
};
function o(f) {
if (f = String(f), !(f.length > 100)) {
var h = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
f
);
if (h) {
var m = parseFloat(h[1]), d = (h[2] || "ms").toLowerCase();
switch (d) {
case "years":
case "year":
case "yrs":
case "yr":
case "y":
return m * s;
case "weeks":
case "week":
case "w":
return m * i;
case "days":
case "day":
case "d":
return m * n;
case "hours":
case "hour":
case "hrs":
case "hr":
case "h":
return m * r;
case "minutes":
case "minute":
case "mins":
case "min":
case "m":
return m * t;
case "seconds":
case "second":
case "secs":
case "sec":
case "s":
return m * e;
case "milliseconds":
case "millisecond":
case "msecs":
case "msec":
case "ms":
return m;
default:
return;
}
}
}
}
function c(f) {
var h = Math.abs(f);
return h >= n ? Math.round(f / n) + "d" : h >= r ? Math.round(f / r) + "h" : h >= t ? Math.round(f / t) + "m" : h >= e ? Math.round(f / e) + "s" : f + "ms";
}
function a(f) {
var h = Math.abs(f);
return h >= n ? u(f, h, n, "day") : h >= r ? u(f, h, r, "hour") : h >= t ? u(f, h, t, "minute") : h >= e ? u(f, h, e, "second") : f + " ms";
}
function u(f, h, m, d) {
var v = h >= m * 1.5;
return Math.round(f / m) + " " + d + (v ? "s" : "");
}
return Sr;
}
function Oa(e) {
r.debug = r, r.default = r, r.coerce = a, r.disable = s, r.enable = i, r.enabled = o, r.humanize = Sa(), r.destroy = u, Object.keys(e).forEach((f) => {
r[f] = e[f];
}), r.names = [], r.skips = [], r.formatters = {};
function t(f) {
let h = 0;
for (let m = 0; m < f.length; m++)
h = (h << 5) - h + f.charCodeAt(m), h |= 0;
return r.colors[Math.abs(h) % r.colors.length];
}
r.selectColor = t;
function r(f) {
let h, m = null, d, v;
function _(...A) {
if (!_.enabled)
return;
const M = _, te = Number(/* @__PURE__ */ new Date()), D = te - (h || te);
M.diff = D, M.prev = h, M.curr = te, h = te, A[0] = r.coerce(A[0]), typeof A[0] != "string" && A.unshift("%O");
let oe = 0;
A[0] = A[0].replace(/%([a-zA-Z%])/g, (ae, ke) => {
if (ae === "%%")
return "%";
oe++;
const Ce = r.formatters[ke];
if (typeof Ce == "function") {
const Ue = A[oe];
ae = Ce.call(M, Ue), A.splice(oe, 1), oe--;
}
return ae;
}), r.formatArgs.call(M, A), (M.log || r.log).apply(M, A);
}
return _.namespace = f, _.useColors = r.useColors(), _.color = r.selectColor(f), _.extend = n, _.destroy = r.destroy, Object.defineProperty(_, "enabled", {
enumerable: !0,
configurable: !1,
get: () => m !== null ? m : (d !== r.namespaces && (d = r.namespaces, v = r.enabled(f)), v),
set: (A) => {
m = A;
}
}), typeof r.init == "function" && r.init(_), _;
}
function n(f, h) {
const m = r(this.namespace + (typeof h > "u" ? ":" : h) + f);
return m.log = this.log, m;
}
function i(f) {
r.save(f), r.namespaces = f, r.names = [], r.skips = [];
let h;
const m = (typeof f == "string" ? f : "").split(/[\s,]+/), d = m.length;
for (h = 0; h < d; h++)
m[h] && (f = m[h].replace(/\*/g, ".*?"), f[0] === "-" ? r.skips.push(new RegExp("^" + f.slice(1) + "$")) : r.names.push(new RegExp("^" + f + "$")));
}
function s() {
const f = [
...r.names.map(c),
...r.skips.map(c).map((h) => "-" + h)
].join(",");
return r.enable(""), f;
}
function o(f) {
if (f[f.length - 1] === "*")
return !0;
let h, m;
for (h = 0, m = r.skips.length; h < m; h++)
if (r.skips[h].test(f))
return !1;
for (h = 0, m = r.names.length; h < m; h++)
if (r.names[h].test(f))
return !0;
return !1;
}
function c(f) {
return f.toString().substring(2, f.toString().length - 2).replace(/\.\*\?$/, "*");
}
function a(f) {
return f instanceof Error ? f.stack || f.message : f;
}
function u() {
console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
}
return r.enable(r.load()), r;
}
var _a = Oa;
(function(e, t) {
t.formatArgs = n, t.save = i, t.load = s, t.useColors = r, t.storage = o(), t.destroy = /* @__PURE__ */ (() => {
let a = !1;
return () => {
a || (a = !0, console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."));
};
})(), t.colors = [
"#0000CC",
"#0000FF",
"#0033CC",
"#0033FF",
"#0066CC",
"#0066FF",
"#0099CC",
"#0099FF",
"#00CC00",
"#00CC33",
"#00CC66",
"#00CC99",
"#00CCCC",
"#00CCFF",
"#3300CC",
"#3300FF",
"#3333CC",
"#3333FF",
"#3366CC",
"#3366FF",
"#3399CC",
"#3399FF",
"#33CC00",
"#33CC33",
"#33CC66",
"#33CC99",
"#33CCCC",
"#33CCFF",
"#6600CC",
"#6600FF",
"#6633CC",
"#6633FF",
"#66CC00",
"#66CC33",
"#9900CC",
"#9900FF",
"#9933CC",
"#9933FF",
"#99CC00",
"#99CC33",
"#CC0000",
"#CC0033",
"#CC0066",
"#CC0099",
"#CC00CC",
"#CC00FF",
"#CC3300",
"#CC3333",
"#CC3366",
"#CC3399",
"#CC33CC",
"#CC33FF",
"#CC6600",
"#CC6633",
"#CC9900",
"#CC9933",
"#CCCC00",
"#CCCC33",
"#FF0000",
"#FF0033",
"#FF0066",
"#FF0099",
"#FF00CC",
"#FF00FF",
"#FF3300",
"#FF3333",
"#FF3366",
"#FF3399",
"#FF33CC",
"#FF33FF",
"#FF6600",
"#FF6633",
"#FF9900",
"#FF9933",
"#FFCC00",
"#FFCC33"
];
function r() {
if (typeof window < "u" && window.process && (window.process.type === "renderer" || window.process.__nwjs))
return !0;
if (typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))
return !1;
let a;
return typeof document < "u" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
typeof window < "u" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
typeof navigator < "u" && navigator.userAgent && (a = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(a[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
}
function n(a) {
if (a[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + a[0] + (this.useColors ? "%c " : " ") + "+" + e.exports.humanize(this.diff), !this.useColors)
return;
const u = "color: " + this.color;
a.splice(1, 0, u, "color: inherit");
let f = 0, h = 0;
a[0].replace(/%[a-zA-Z%]/g, (m) => {
m !== "%%" && (f++, m === "%c" && (h = f));
}), a.splice(h, 0, u);
}
t.log = console.debug || console.log || (() => {
});
function i(a) {
try {
a ? t.storage.setItem("debug", a) : t.storage.removeItem("debug");
} catch {
}
}
function s() {
let a;
try {
a = t.storage.getItem("debug");
} catch {
}
return !a && typeof process < "u" && "env" in process && (a = process.env.DEBUG), a;
}
function o() {
try {
return localStorage;
} catch {
}
}
e.exports = _a(t);
const { formatters: c } = e.exports;
c.j = function(a) {
try {
return JSON.stringify(a);
} catch (u) {
return "[UnexpectedJSONParseError]: " + u.message;
}
};
})(Yr, Yr.exports);
var ir = Yr.exports;
const be = /* @__PURE__ */ nr(ir);
var Vr = { exports: {} };
const Ta = "2.0.0", Zi = 256, Ra = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
9007199254740991, Ia = 16, Fa = Zi - 6, Na = [
"major",
"premajor",
"minor",
"preminor",
"patch",
"prepatch",
"prerelease"
];
var sr = {
MAX_LENGTH: Zi,
MAX_SAFE_COMPONENT_LENGTH: Ia,
MAX_SAFE_BUILD_LENGTH: Fa,
MAX_SAFE_INTEGER: Ra,
RELEASE_TYPES: Na,
SEMVER_SPEC_VERSION: Ta,
FLAG_INCLUDE_PRERELEASE: 1,
FLAG_LOOSE: 2
};
const La = typeof process == "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...e) => console.error("SEMVER", ...e) : () => {
};
var or = La;
(function(e, t) {
const {
MAX_SAFE_COMPONENT_LENGTH: r,
MAX_SAFE_BUILD_LENGTH: n,
MAX_LENGTH: i
} = sr, s = or;
t = e.exports = {};
const o = t.re = [], c = t.safeRe = [], a = t.src = [], u = t.t = {};
let f = 0;
const h = "[a-zA-Z0-9-]", m = [
["\\s", 1],
["\\d", i],
[h, n]
], d = (_) => {
for (const [A, M] of m)
_ = _.split(`${A}*`).join(`${A}{0,${M}}`).split(`${A}+`).join(`${A}{1,${M}}`);
return _;
}, v = (_, A, M) => {
const te = d(A), D = f++;
s(_, D, A), u[_] = D, a[D] = A, o[D] = new RegExp(A, M ? "g" : void 0), c[D] = new RegExp(te, M ? "g" : void 0);
};
v("NUMERICIDENTIFIER", "0|[1-9]\\d*"), v("NUMERICIDENTIFIERLOOSE", "\\d+"), v("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${h}*`), v("MAINVERSION", `(${a[u.NUMERICIDENTIFIER]})\\.(${a[u.NUMERICIDENTIFIER]})\\.(${a[u.NUMERICIDENTIFIER]})`), v("MAINVERSIONLOOSE", `(${a[u.NUMERICIDENTIFIERLOOSE]})\\.(${a[u.NUMERICIDENTIFIERLOOSE]})\\.(${a[u.NUMERICIDENTIFIERLOOSE]})`), v("PRERELEASEIDENTIFIER", `(?:${a[u.NUMERICIDENTIFIER]}|${a[u.NONNUMERICIDENTIFIER]})`), v("PRERELEASEIDENTIFIERLOOSE", `(?:${a[u.NUMERICIDENTIFIERLOOSE]}|${a[u.NONNUMERICIDENTIFIER]})`), v("PRERELEASE", `(?:-(${a[u.PRERELEASEIDENTIFIER]}(?:\\.${a[u.PRERELEASEIDENTIFIER]})*))`), v("PRERELEASELOOSE", `(?:-?(${a[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[u.PRERELEASEIDENTIFIERLOOSE]})*))`), v("BUILDIDENTIFIER", `${h}+`), v("BUILD", `(?:\\+(${a[u.BUILDIDENTIFIER]}(?:\\.${a[u.BUILDIDENTIFIER]})*))`), v("FULLPLAIN", `v?${a[u.MAINVERSION]}${a[u.PRERELEASE]}?${a[u.BUILD]}?`), v("FULL", `^${a[u.FULLPLAIN]}$`), v("LOOSEPLAIN", `[v=\\s]*${a[u.MAINVERSIONLOOSE]}${a[u.PRERELEASELOOSE]}?${a[u.BUILD]}?`), v("LOOSE", `^${a[u.LOOSEPLAIN]}$`), v("GTLT", "((?:<|>)?=?)"), v("XRANGEIDENTIFIERLOOSE", `${a[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`), v("XRANGEIDENTIFIER", `${a[u.NUMERICIDENTIFIER]}|x|X|\\*`), v("XRANGEPLAIN", `[v=\\s]*(${a[u.XRANGEIDENTIFIER]})(?:\\.(${a[u.XRANGEIDENTIFIER]})(?:\\.(${a[u.XRANGEIDENTIFIER]})(?:${a[u.PRERELEASE]})?${a[u.BUILD]}?)?)?`), v("XRANGEPLAINLOOSE", `[v=\\s]*(${a[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[u.XRANGEIDENTIFIERLOOSE]})(?:${a[u.PRERELEASELOOSE]})?${a[u.BUILD]}?)?)?`), v("XRANGE", `^${a[u.GTLT]}\\s*${a[u.XRANGEPLAIN]}$`), v("XRANGELOOSE", `^${a[u.GTLT]}\\s*${a[u.XRANGEPLAINLOOSE]}$`), v("COERCEPLAIN", `(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`), v("COERCE", `${a[u.COERCEPLAIN]}(?:$|[^\\d])`), v("COERCEFULL", a[u.COERCEPLAIN] + `(?:${a[u.PRERELEASE]})?(?:${a[u.BUILD]})?(?:$|[^\\d])`), v("COERCERTL", a[u.COERCE], !0), v("COERCERTLFULL", a[u.COERCEFULL], !0), v("LONETILDE", "(?:~>?)"), v("TILDETRIM", `(\\s*)${a[u.LONETILDE]}\\s+`, !0), t.tildeTrimReplace = "$1~", v("TILDE", `^${a[u.LONETILDE]}${a[u.XRANGEPLAIN]}$`), v("TILDELOOSE", `^${a[u.LONETILDE]}${a[u.XRANGEPLAINLOOSE]}$`), v("LONECARET", "(?:\\^)"), v("CARETTRIM", `(\\s*)${a[u.LONECARET]}\\s+`, !0), t.caretTrimReplace = "$1^", v("CARET", `^${a[u.LONECARET]}${a[u.XRANGEPLAIN]}$`), v("CARETLOOSE", `^${a[u.LONECARET]}${a[u.XRANGEPLAINLOOSE]}$`), v("COMPARATORLOOSE", `^${a[u.GTLT]}\\s*(${a[u.LOOSEPLAIN]})$|^$`), v("COMPARATOR", `^${a[u.GTLT]}\\s*(${a[u.FULLPLAIN]})$|^$`), v("COMPARATORTRIM", `(\\s*)${a[u.GTLT]}\\s*(${a[u.LOOSEPLAIN]}|${a[u.XRANGEPLAIN]})`, !0), t.comparatorTrimReplace = "$1$2$3", v("HYPHENRANGE", `^\\s*(${a[u.XRANGEPLAIN]})\\s+-\\s+(${a[u.XRANGEPLAIN]})\\s*$`), v("HYPHENRANGELOOSE", `^\\s*(${a[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[u.XRANGEPLAINLOOSE]})\\s*$`), v("STAR", "(<|>)?=?\\s*\\*"), v("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), v("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
})(Vr, Vr.exports);
var At = Vr.exports;
const Da = Object.freeze({ loose: !0 }), ja = Object.freeze({}), Pa = (e) => e ? typeof e != "object" ? Da : e : ja;
var Zr = Pa;
const Wn = /^[0-9]+$/, Qi = (e, t) => {
const r = Wn.test(e), n = Wn.test(t);
return r && n && (e = +e, t = +t), e === t ? 0 : r && !n ? -1 : n && !r ? 1 : e < t ? -1 : 1;
}, Ma = (e, t) => Qi(t, e);
var es = {
compareIdentifiers: Qi,
rcompareIdentifiers: Ma
};
const Gt = or, { MAX_LENGTH: Kn, MAX_SAFE_INTEGER: Ht } = sr, { safeRe: zn, t: Jn } = At, ka = Zr, { compareIdentifiers: Ve } = es;
let Ua = class le {
constructor(t, r) {
if (r = ka(r), t instanceof le) {
if (t.loose === !!r.loose && t.includePrerelease === !!r.includePrerelease)
return t;
t = t.version;
} else if (typeof t != "string")
throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);
if (t.length > Kn)
throw new TypeError(
`version is longer than ${Kn} characters`
);
Gt("SemVer", t, r), this.options = r, this.loose = !!r.loose, this.includePrerelease = !!r.includePrerelease;
const n = t.trim().match(r.loose ? zn[Jn.LOOSE] : zn[Jn.FULL]);
if (!n)
throw new TypeError(`Invalid Version: ${t}`);
if (this.raw = t, this.major = +n[1], this.minor = +n[2], this.patch = +n[3], this.major > Ht || this.major < 0)
throw new TypeError("Invalid major version");
if (this.minor > Ht || this.minor < 0)
throw new TypeError("Invalid minor version");
if (this.patch > Ht || this.patch < 0)
throw new TypeError("Invalid patch version");
n[4] ? this.prerelease = n[4].split(".").map((i) => {
if (/^[0-9]+$/.test(i)) {
const s = +i;
if (s >= 0 && s < Ht)
return s;
}
return i;
}) : this.prerelease = [], this.build = n[5] ? n[5].split(".") : [], this.format();
}
format() {
return this.version = `${this.major}.${this.minor}.${this.patch}`, this.prerelease.length && (this.version += `-${this.prerelease.join(".")}`), this.version;
}
toString() {
return this.version;
}
compare(t) {
if (Gt("SemVer.compare", this.version, this.options, t), !(t instanceof le)) {
if (typeof t == "string" && t === this.version)
return 0;
t = new le(t, this.options);
}
return t.version === this.version ? 0 : this.compareMain(t) || this.comparePre(t);
}
compareMain(t) {
return t instanceof le || (t = new le(t, this.options)), Ve(this.major, t.major) || Ve(this.minor, t.minor) || Ve(this.patch, t.patch);
}
comparePre(t) {
if (t instanceof le || (t = new le(t, this.options)), this.prerelease.length && !t.prerelease.length)
return -1;
if (!this.prerelease.length && t.prerelease.length)
return 1;
if (!this.prerelease.length && !t.prerelease.length)
return 0;
let r = 0;
do {
const n = this.prerelease[r], i = t.prerelease[r];
if (Gt("prerelease compare", r, n, i), n === void 0 && i === void 0)
return 0;
if (i === void 0)
return 1;
if (n === void 0)
return -1;
if (n === i)
continue;
return Ve(n, i);
} while (++r);
}
compareBuild(t) {
t instanceof le || (t = new le(t, this.options));
let r = 0;
do {
const n = this.build[r], i = t.build[r];
if (Gt("build compare", r, n, i), n === void 0 && i === void 0)
return 0;
if (i === void 0)
return 1;
if (n === void 0)
return -1;
if (n === i)
continue;
return Ve(n, i);
} while (++r);
}
// preminor will bump the version up to the next minor release, and immediately
// down to pre-release. premajor and prepatch work the same way.
inc(t, r, n) {
switch (t) {
case "premajor":
this.prerelease.length = 0, this.patch = 0, this.minor = 0, this.major++, this.inc("pre", r, n);
break;
case "preminor":
this.prerelease.length = 0, this.patch = 0, this.minor++, this.inc("pre", r, n);
break;
case "prepatch":
this.prerelease.length = 0, this.inc("patch", r, n), this.inc("pre", r, n);
break;
case "prerelease":
this.prerelease.length === 0 && this.inc("patch", r, n), this.inc("pre", r, n);
break;
case "major":
(this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) && this.major++, this.minor = 0, this.patch = 0, this.prerelease = [];
break;
case "minor":
(this.patch !== 0 || this.prerelease.length === 0) && this.minor++, this.patch = 0, this.prerelease = [];
break;
case "patch":
this.prerelease.length === 0 && this.patch++, this.prerelease = [];
break;
case "pre": {
const i = Number(n) ? 1 : 0;
if (!r && n === !1)
throw new Error("invalid increment argument: identifier is empty");
if (this.prerelease.length === 0)
this.prerelease = [i];
else {
let s = this.prerelease.length;
for (; --s >= 0; )
typeof this.prerelease[s] == "number" && (this.prerelease[s]++, s = -2);
if (s === -1) {
if (r === this.prerelease.join(".") && n === !1)
throw new Error("invalid increment argument: identifier already exists");
this.prerelease.push(i);
}
}
if (r) {
let s = [r, i];
n === !1 && (s = [r]), Ve(this.prerelease[0], r) === 0 ? isNaN(this.prerelease[1]) && (this.prerelease = s) : this.prerelease = s;
}
break;
}
default:
throw new Error(`invalid increment argument: ${t}`);
}
return this.raw = this.format(), this.build.length && (this.raw += `+${this.build.join(".")}`), this;
}
};
var X = Ua;
const Zn = X, Ga = (e, t, r = !1) => {
if (e instanceof Zn)
return e;
try {
return new Zn(e, t);
} catch (n) {
if (!r)
return null;
throw n;
}
};
var ot = Ga;
const Ha = ot, Ba = (e, t) => {
const r = Ha(e, t);
return r ? r.version : null;
};
var Ya = Ba;
const Va = ot, qa = (e, t) => {
const r = Va(e.trim().replace(/^[=v]+/, ""), t);
return r ? r.version : null;
};
var Xa = qa;
const Qn = X, Wa = (e, t, r, n, i) => {
typeof r == "string" && (i = n, n = r, r = void 0);
try {
return new Qn(
e instanceof Qn ? e.version : e,
r
).inc(t, n, i).version;
} catch {
return null;
}
};
var Ka = Wa;
const ei = ot, za = (e, t) => {
const r = ei(e, null, !0), n = ei(t, null, !0), i = r.compare(n);
if (i === 0)
return null;
const s = i > 0, o = s ? r : n, c = s ? n : r, a = !!o.prerelease.length;
if (!!c.prerelease.length && !a)
return !c.patch && !c.minor ? "major" : o.patch ? "patch" : o.minor ? "minor" : "major";
const f = a ? "pre" : "";
return r.major !== n.major ? f + "major" : r.minor !== n.minor ? f + "minor" : r.patch !== n.patch ? f + "patch" : "prerelease";
};
var Ja = za;
const Za = X, Qa = (e, t) => new Za(e, t).major;
var el = Qa;
const tl = X, rl = (e, t) => new tl(e, t).minor;
var nl = rl;
const il = X, sl = (e, t) => new il(e, t).patch;
var ol = sl;
const al = ot, ll = (e, t) => {
const r = al(e, t);
return r && r.prerelease.length ? r.prerelease : null;
};
var cl = ll;
const ti = X, ul = (e, t, r) => new ti(e, r).compare(new ti(t, r));
var ie = ul;
const fl = ie, hl = (e, t, r) => fl(t, e, r);
var pl = hl;
const dl = ie, ml = (e, t) => dl(e, t, !0);
var gl = ml;
const ri = X, vl = (e, t, r) => {
const n = new ri(e, r), i = new ri(t, r);
return n.compare(i) || n.compareBuild(i);
};
var Qr = vl;
const yl = Qr, El = (e, t) => e.sort((r, n) => yl(r, n, t));
var xl = El;
const $l = Qr, Al = (e, t) => e.sort((r, n) => $l(n, r, t));
var bl = Al;
const Cl = ie, wl = (e, t, r) => Cl(e, t, r) > 0;
var ar = wl;
const Sl = ie, Ol = (e, t, r) => Sl(e, t, r) < 0;
var en = Ol;
const _l = ie, Tl = (e, t, r) => _l(e, t, r) === 0;
var ts = Tl;
const Rl = ie, Il = (e, t, r) => Rl(e, t, r) !== 0;
var rs = Il;
const Fl = ie, Nl = (e, t, r) => Fl(e, t, r) >= 0;
var tn = Nl;
const Ll = ie, Dl = (e, t, r) => Ll(e, t, r) <= 0;
var rn = Dl;
const jl = ts, Pl = rs, Ml = ar, kl = tn, Ul = en, Gl = rn, Hl = (e, t, r, n) => {
switch (t) {
case "===":
return typeof e == "object" && (e = e.version), typeof r == "object" && (r = r.version), e === r;
case "!==":
return typeof e == "object" && (e = e.version), typeof r == "object" && (r = r.version), e !== r;
case "":
case "=":
case "==":
return jl(e, r, n);
case "!=":
return Pl(e, r, n);
case ">":
return Ml(e, r, n);
case ">=":
return kl(e, r, n);
case "<":
return Ul(e, r, n);
case "<=":
return Gl(e, r, n);
default:
throw new TypeError(`Invalid operator: ${t}`);
}
};
var ns = Hl;
const Bl = X, Yl = ot, { safeRe: Bt, t: Yt } = At, Vl = (e, t) => {
if (e instanceof Bl)
return e;
if (typeof e == "number" && (e = String(e)), typeof e != "string")
return null;
t = t || {};
let r = null;
if (!t.rtl)
r = e.match(t.includePrerelease ? Bt[Yt.COERCEFULL] : Bt[Yt.COERCE]);
else {
const a = t.includePrerelease ? Bt[Yt.COERCERTLFULL] : Bt[Yt.COERCERTL];
let u;
for (; (u = a.exec(e)) && (!r || r.index + r[0].length !== e.length); )
(!r || u.index + u[0].length !== r.index + r[0].length) && (r = u), a.lastIndex = u.index + u[1].length + u[2].length;
a.lastIndex = -1;
}
if (r === null)
return null;
const n = r[2], i = r[3] || "0", s = r[4] || "0", o = t.includePrerelease && r[5] ? `-${r[5]}` : "", c = t.includePrerelease && r[6] ? `+${r[6]}` : "";
return Yl(`${n}.${i}.${s}${o}${c}`, t);
};
var ql = Vl;
let Xl = class {
constructor() {
this.max = 1e3, this.map = /* @__PURE__ */ new Map();
}
get(t) {
const r = this.map.get(t);
if (r !== void 0)
return this.map.delete(t), this.map.set(t, r), r;
}
delete(t) {
return this.map.delete(t);
}
set(t, r) {
if (!this.delete(t) && r !== void 0) {
if (this.map.size >= this.max) {
const i = this.map.keys().next().value;
this.delete(i);
}
this.map.set(t, r);
}
return this;
}
};
var Wl = Xl, Or, ni;
function se() {
if (ni) return Or;
ni = 1;
const e = /\s+/g;
class t {
constructor(y, S) {
if (S = i(S), y instanceof t)
return y.loose === !!S.loose && y.includePrerelease === !!S.includePrerelease ? y : new t(y.raw, S);
if (y instanceof s)
return this.raw = y.value, this.set = [[y]], this.formatted = void 0, this;
if (this.options = S, this.loose = !!S.loose, this.includePrerelease = !!S.includePrerelease, this.raw = y.trim().replace(e, " "), this.set = this.raw.split("||").map((b) => this.parseRange(b.trim())).filter((b) => b.length), !this.set.length)
throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
if (this.set.length > 1) {
const b = this.set[0];
if (this.set = this.set.filter((O) => !_(O[0])), this.set.length === 0)
this.set = [b];
else if (this.set.length > 1) {
for (const O of this.set)
if (O.length === 1 && A(O[0])) {
this.set = [O];
break;
}
}
}
this.formatted = void 0;
}
get range() {
if (this.formatted === void 0) {
this.formatted = "";
for (let y = 0; y < this.set.length; y++) {
y > 0 && (this.formatted += "||");
const S = this.set[y];
for (let b = 0; b < S.length; b++)
b > 0 && (this.formatted += " "), this.formatted += S[b].toString().trim();
}
}
return this.formatted;
}
format() {
return this.range;
}
toString() {
return this.range;
}
parseRange(y) {
const b = ((this.options.includePrerelease && d) | (this.options.loose && v)) + ":" + y, O = n.get(b);
if (O)
return O;
const C = this.options.loose, E = C ? a[u.HYPHENRANGELOOSE] : a[u.HYPHENRANGE];
y = y.replace(E, Ft(this.options.includePrerelease)), o("hyphen replace", y), y = y.replace(a[u.COMPARATORTRIM], f), o("comparator trim", y), y = y.replace(a[u.TILDETRIM], h), o("tilde trim", y), y = y.replace(a[u.CARETTRIM], m), o("caret trim", y);
let N = y.split(" ").map((j) => te(j, this.options)).join(" ").split(/\s+/).map((j) => It(j, this.options));
C && (N = N.filter((j) => (o("loose invalid filter", j, this.options), !!j.match(a[u.COMPARATORLOOSE])))), o("range list", N);
const T = /* @__PURE__ */ new Map(), R = N.map((j) => new s(j, this.options));
for (const j of R) {
if (_(j))
return [j];
T.set(j.value, j);
}
T.size > 1 && T.has("") && T.delete("");
const V = [...T.values()];
return n.set(b, V), V;
}
intersects(y, S) {
if (!(y instanceof t))
throw new TypeError("a Range is required");
return this.set.some((b) => M(b, S) && y.set.some((O) => M(O, S) && b.every((C) => O.every((E) => C.intersects(E, S)))));
}
// if ANY of the sets match ALL of its comparators, then pass
test(y) {
if (!y)
return !1;
if (typeof y == "string")
try {
y = new c(y, this.options);
} catch {
return !1;
}
for (let S = 0; S < this.set.length; S++)
if (Nt(this.set[S], y, this.options))
return !0;
return !1;
}
}
Or = t;
const r = Wl, n = new r(), i = Zr, s = lr(), o = or, c = X, {
safeRe: a,
t: u,
comparatorTrimReplace: f,
tildeTrimReplace: h,
caretTrimReplace: m
} = At, { FLAG_INCLUDE_PRERELEASE: d, FLAG_LOOSE: v } = sr, _ = (x) => x.value === "<0.0.0-0", A = (x) => x.value === "", M = (x, y) => {
let S = !0;
const b = x.slice();
let O = b.pop();
for (; S && b.length; )
S = b.every((C) => O.intersects(C, y)), O = b.pop();
return S;
}, te = (x, y) => (o("comp", x, y), x = ae(x, y), o("caret", x), x = oe(x, y), o("tildes", x), x = Ce(x, y), o("xrange", x), x = Rt(x, y), o("stars", x), x), D = (x) => !x || x.toLowerCase() === "x" || x === "*", oe = (x, y) => x.trim().split(/\s+/).map((S) => ct(S, y)).join(" "), ct = (x, y) => {
const S = y.loose ? a[u.TILDELOOSE] : a[u.TILDE];
return x.replace(S, (b, O, C, E, N) => {
o("tilde", x, b, O, C, E, N);
let T;
return D(O) ? T = "" : D(C) ? T = `>=${O}.0.0 <${+O + 1}.0.0-0` : D(E) ? T = `>=${O}.${C}.0 <${O}.${+C + 1}.0-0` : N ? (o("replaceTilde pr", N), T = `>=${O}.${C}.${E}-${N} <${O}.${+C + 1}.0-0`) : T = `>=${O}.${C}.${E} <${O}.${+C + 1}.0-0`, o("tilde return", T), T;
});
}, ae = (x, y) => x.trim().split(/\s+/).map((S) => ke(S, y)).join(" "), ke = (x, y) => {
o("caret", x, y);
const S = y.loose ? a[u.CARETLOOSE] : a[u.CARET], b = y.includePrerelease ? "-0" : "";
return x.replace(S, (O, C, E, N, T) => {
o("caret", x, O, C, E, N, T);
let R;
return D(C) ? R = "" : D(E) ? R = `>=${C}.0.0${b} <${+C + 1}.0.0-0` : D(N) ? C === "0" ? R = `>=${C}.${E}.0${b} <${C}.${+E + 1}.0-0` : R = `>=${C}.${E}.0${b} <${+C + 1}.0.0-0` : T ? (o("replaceCaret pr", T), C === "0" ? E === "0" ? R = `>=${C}.${E}.${N}-${T} <${C}.${E}.${+N + 1}-0` : R = `>=${C}.${E}.${N}-${T} <${C}.${+E + 1}.0-0` : R = `>=${C}.${E}.${N}-${T} <${+C + 1}.0.0-0`) : (o("no pr"), C === "0" ? E === "0" ? R = `>=${C}.${E}.${N}${b} <${C}.${E}.${+N + 1}-0` : R = `>=${C}.${E}.${N}${b} <${C}.${+E + 1}.0-0` : R = `>=${C}.${E}.${N} <${+C + 1}.0.0-0`), o("caret return", R), R;
});
}, Ce = (x, y) => (o("replaceXRanges", x, y), x.split(/\s+/).map((S) => Ue(S, y)).join(" ")), Ue = (x, y) => {
x = x.trim();
const S = y.loose ? a[u.XRANGELOOSE] : a[u.XRANGE];
return x.replace(S, (b, O, C, E, N, T) => {
o("xRange", x, b, O, C, E, N, T);
const R = D(C), V = R || D(E), j = V || D(N), we = j;
return O === "=" && we && (O = ""), T = y.includePrerelease ? "-0" : "", R ? O === ">" || O === "<" ? b = "<0.0.0-0" : b = "*" : O && we ? (V && (E = 0), N = 0, O === ">" ? (O = ">=", V ? (C = +C + 1, E = 0, N = 0) : (E = +E + 1, N = 0)) : O === "<=" && (O = "<", V ? C = +C + 1 : E = +E + 1), O === "<" && (T = "-0"), b = `${O + C}.${E}.${N}${T}`) : V ? b = `>=${C}.0.0${T} <${+C + 1}.0.0-0` : j && (b = `>=${C}.${E}.0${T} <${C}.${+E + 1}.0-0`), o("xRange return", b), b;
});
}, Rt = (x, y) => (o("replaceStars", x, y), x.trim().replace(a[u.STAR], "")), It = (x, y) => (o("replaceGTE0", x, y), x.trim().replace(a[y.includePrerelease ? u.GTE0PRE : u.GTE0], "")), Ft = (x) => (y, S, b, O, C, E, N, T, R, V, j, we) => (D(b) ? S = "" : D(O) ? S = `>=${b}.0.0${x ? "-0" : ""}` : D(C) ? S = `>=${b}.${O}.0${x ? "-0" : ""}` : E ? S = `>=${S}` : S = `>=${S}${x ? "-0" : ""}`, D(R) ? T = "" : D(V) ? T = `<${+R + 1}.0.0-0` : D(j) ? T = `<${R}.${+V + 1}.0-0` : we ? T = `<=${R}.${V}.${j}-${we}` : x ? T = `<${R}.${V}.${+j + 1}-0` : T = `<=${T}`, `${S} ${T}`.trim()), Nt = (x, y, S) => {
for (let b = 0; b < x.length; b++)
if (!x[b].test(y))
return !1;
if (y.prerelease.length && !S.includePrerelease) {
for (let b = 0; b < x.length; b++)
if (o(x[b].semver), x[b].semver !== s.ANY && x[b].semver.prerelease.length > 0) {
const O = x[b].semver;
if (O.major === y.major && O.minor === y.minor && O.patch === y.patch)
return !0;
}
return !1;
}
return !0;
};
return Or;
}
var _r, ii;
function lr() {
if (ii) return _r;
ii = 1;
const e = Symbol("SemVer ANY");
class t {
static get ANY() {
return e;
}
constructor(f, h) {
if (h = r(h), f instanceof t) {
if (f.loose === !!h.loose)
return f;
f = f.value;
}
f = f.trim().split(/\s+/).join(" "), o("comparator", f, h), this.options = h, this.loose = !!h.loose, this.parse(f), this.semver === e ? this.value = "" : this.value = this.operator + this.semver.version, o("comp", this);
}
parse(f) {
const h = this.options.loose ? n[i.COMPARATORLOOSE] : n[i.COMPARATOR], m = f.match(h);
if (!m)
throw new TypeError(`Invalid comparator: ${f}`);
this.operator = m[1] !== void 0 ? m[1] : "", this.operator === "=" && (this.operator = ""), m[2] ? this.semver = new c(m[2], this.options.loose) : this.semver = e;
}
toString() {
return this.value;
}
test(f) {
if (o("Comparator.test", f, this.options.loose), this.semver === e || f === e)
return !0;
if (typeof f == "string")
try {
f = new c(f, this.options);
} catch {
return !1;
}
return s(f, this.operator, this.semver, this.options);
}
intersects(f, h) {
if (!(f instanceof t))
throw new TypeError("a Comparator is required");
return this.operator === "" ? this.value === "" ? !0 : new a(f.value, h).test(this.value) : f.operator === "" ? f.value === "" ? !0 : new a(this.value, h).test(f.semver) : (h = r(h), h.includePrerelease && (this.value === "<0.0.0-0" || f.value === "<0.0.0-0") || !h.includePrerelease && (this.value.startsWith("<0.0.0") || f.value.startsWith("<0.0.0")) ? !1 : !!(this.operator.startsWith(">") && f.operator.startsWith(">") || this.operator.startsWith("<") && f.operator.startsWith("<") || this.semver.version === f.semver.version && this.operator.includes("=") && f.operator.includes("=") || s(this.semver, "<", f.semver, h) && this.operator.startsWith(">") && f.operator.startsWith("<") || s(this.semver, ">", f.semver, h) && this.operator.startsWith("<") && f.operator.startsWith(">")));
}
}
_r = t;
const r = Zr, { safeRe: n, t: i } = At, s = ns, o = or, c = X, a = se();
return _r;
}
const Kl = se(), zl = (e, t, r) => {
try {
t = new Kl(t, r);
} catch {
return !1;
}
return t.test(e);
};
var cr = zl;
const Jl = se(), Zl = (e, t) => new Jl(e, t).set.map((r) => r.map((n) => n.value).join(" ").trim().split(" "));
var Ql = Zl;
const ec = X, tc = se(), rc = (e, t, r) => {
let n = null, i = null, s = null;
try {
s = new tc(t, r);
} catch {
return null;
}
return e.forEach((o) => {
s.test(o) && (!n || i.compare(o) === -1) && (n = o, i = new ec(n, r));
}), n;
};
var nc = rc;
const ic = X, sc = se(), oc = (e, t, r) => {
let n = null, i = null, s = null;
try {
s = new sc(t, r);
} catch {
return null;
}
return e.forEach((o) => {
s.test(o) && (!n || i.compare(o) === 1) && (n = o, i = new ic(n, r));
}), n;
};
var ac = oc;
const Tr = X, lc = se(), si = ar, cc = (e, t) => {
e = new lc(e, t);
let r = new Tr("0.0.0");
if (e.test(r) || (r = new Tr("0.0.0-0"), e.test(r)))
return r;
r = null;
for (let n = 0; n < e.set.length; ++n) {
const i = e.set[n];
let s = null;
i.forEach((o) => {
const c = new Tr(o.semver.version);
switch (o.operator) {
case ">":
c.prerelease.length === 0 ? c.patch++ : c.prerelease.push(0), c.raw = c.format();
case "":
case ">=":
(!s || si(c, s)) && (s = c);
break;
case "<":
case "<=":
break;
default:
throw new Error(`Unexpected operation: ${o.operator}`);
}
}), s && (!r || si(r, s)) && (r = s);
}
return r && e.test(r) ? r : null;
};
var uc = cc;
const fc = se(), hc = (e, t) => {
try {
return new fc(e, t).range || "*";
} catch {
return null;
}
};
var pc = hc;
const dc = X, is = lr(), { ANY: mc } = is, gc = se(), vc = cr, oi = ar, ai = en, yc = rn, Ec = tn, xc = (e, t, r, n) => {
e = new dc(e, n), t = new gc(t, n);
let i, s, o, c, a;
switch (r) {
case ">":
i = oi, s = yc, o = ai, c = ">", a = ">=";
break;
case "<":
i = ai, s = Ec, o = oi, c = "<", a = "<=";
break;
default:
throw new TypeError('Must provide a hilo val of "<" or ">"');
}
if (vc(e, t, n))
return !1;
for (let u = 0; u < t.set.length; ++u) {
const f = t.set[u];
let h = null, m = null;
if (f.forEach((d) => {
d.semver === mc && (d = new is(">=0.0.0")), h = h || d, m = m || d, i(d.semver, h.semver, n) ? h = d : o(d.semver, m.semver, n) && (m = d);
}), h.operator === c || h.operator === a || (!m.operator || m.operator === c) && s(e, m.semver))
return !1;
if (m.operator === a && o(e, m.semver))
return !1;
}
return !0;
};
var nn = xc;
const $c = nn, Ac = (e, t, r) => $c(e, t, ">", r);
var bc = Ac;
const Cc = nn, wc = (e, t, r) => Cc(e, t, "<", r);
var Sc = wc;
const li = se(), Oc = (e, t, r) => (e = new li(e, r), t = new li(t, r), e.intersects(t, r));
var _c = Oc;
const Tc = cr, Rc = ie;
var Ic = (e, t, r) => {
const n = [];
let i = null, s = null;
const o = e.sort((f, h) => Rc(f, h, r));
for (const f of o)
Tc(f, t, r) ? (s = f, i || (i = f)) : (s && n.push([i, s]), s = null, i = null);
i && n.push([i, null]);
const c = [];
for (const [f, h] of n)
f === h ? c.push(f) : !h && f === o[0] ? c.push("*") : h ? f === o[0] ? c.push(`<=${h}`) : c.push(`${f} - ${h}`) : c.push(`>=${f}`);
const a = c.join(" || "), u = typeof t.raw == "string" ? t.raw : String(t);
return a.length < u.length ? a : t;
};
const ci = se(), sn = lr(), { ANY: Rr } = sn, ht = cr, on = ie, Fc = (e, t, r = {}) => {
if (e === t)
return !0;
e = new ci(e, r), t = new ci(t, r);
let n = !1;
e: for (const i of e.set) {
for (const s of t.set) {
const o = Lc(i, s, r);
if (n = n || o !== null, o)
continue e;
}
if (n)
return !1;
}
return !0;
}, Nc = [new sn(">=0.0.0-0")], ui = [new sn(">=0.0.0")], Lc = (e, t, r) => {
if (e === t)
return !0;
if (e.length === 1 && e[0].semver === Rr) {
if (t.length === 1 && t[0].semver === Rr)
return !0;
r.includePrerelease ? e = Nc : e = ui;
}
if (t.length === 1 && t[0].semver === Rr) {
if (r.includePrerelease)
return !0;
t = ui;
}
const n = /* @__PURE__ */ new Set();
let i, s;
for (const d of e)
d.operator === ">" || d.operator === ">=" ? i = fi(i, d, r) : d.operator === "<" || d.operator === "<=" ? s = hi(s, d, r) : n.add(d.semver);
if (n.size > 1)
return null;
let o;
if (i && s) {
if (o = on(i.semver, s.semver, r), o > 0)
return null;
if (o === 0 && (i.operator !== ">=" || s.operator !== "<="))
return null;
}
for (const d of n) {
if (i && !ht(d, String(i), r) || s && !ht(d, String(s), r))
return null;
for (const v of t)
if (!ht(d, String(v), r))
return !1;
return !0;
}
let c, a, u, f, h = s && !r.includePrerelease && s.semver.prerelease.length ? s.semver : !1, m = i && !r.includePrerelease && i.semver.prerelease.length ? i.semver : !1;
h && h.prerelease.length === 1 && s.operator === "<" && h.prerelease[0] === 0 && (h = !1);
for (const d of t) {
if (f = f || d.operator === ">" || d.operator === ">=", u = u || d.operator === "<" || d.operator === "<=", i) {
if (m && d.semver.prerelease && d.semver.prerelease.length && d.semver.major === m.major && d.semver.minor === m.minor && d.semver.patch === m.patch && (m = !1), d.operator === ">" || d.operator === ">=") {
if (c = fi(i, d, r), c === d && c !== i)
return !1;
} else if (i.operator === ">=" && !ht(i.semver, String(d), r))
return !1;
}
if (s) {
if (h && d.semver.prerelease && d.semver.prerelease.length && d.semver.major === h.major && d.semver.minor === h.minor && d.semver.patch === h.patch && (h = !1), d.operator === "<" || d.operator === "<=") {
if (a = hi(s, d, r), a === d && a !== s)
return !1;
} else if (s.operator === "<=" && !ht(s.semver, String(d), r))
return !1;
}
if (!d.operator && (s || i) && o !== 0)
return !1;
}
return !(i && u && !s && o !== 0 || s && f && !i && o !== 0 || m || h);
}, fi = (e, t, r) => {
if (!e)
return t;
const n = on(e.semver, t.semver, r);
return n > 0 ? e : n < 0 || t.operator === ">" && e.operator === ">=" ? t : e;
}, hi = (e, t, r) => {
if (!e)
return t;
const n = on(e.semver, t.semver, r);
return n < 0 ? e : n > 0 || t.operator === "<" && e.operator === "<=" ? t : e;
};
var Dc = Fc;
const Ir = At, pi = sr, jc = X, di = es, Pc = ot, Mc = Ya, kc = Xa, Uc = Ka, Gc = Ja, Hc = el, Bc = nl, Yc = ol, Vc = cl, qc = ie, Xc = pl, Wc = gl, Kc = Qr, zc = xl, Jc = bl, Zc = ar, Qc = en, eu = ts, tu = rs, ru = tn, nu = rn, iu = ns, su = ql, ou = lr(), au = se(), lu = cr, cu = Ql, uu = nc, fu = ac, hu = uc, pu = pc, du = nn, mu = bc, gu = Sc, vu = _c, yu = Ic, Eu = Dc;
var qr = {
parse: Pc,
valid: Mc,
clean: kc,
inc: Uc,
diff: Gc,
major: Hc,
minor: Bc,
patch: Yc,
prerelease: Vc,
compare: qc,
rcompare: Xc,
compareLoose: Wc,
compareBuild: Kc,
sort: zc,
rsort: Jc,
gt: Zc,
lt: Qc,
eq: eu,
neq: tu,
gte: ru,
lte: nu,
cmp: iu,
coerce: su,
Comparator: ou,
Range: au,
satisfies: lu,
toComparators: cu,
maxSatisfying: uu,
minSatisfying: fu,
minVersion: hu,
validRange: pu,
outside: du,
gtr: mu,
ltr: gu,
intersects: vu,
simplifyRange: yu,
subset: Eu,
SemVer: jc,
re: Ir.re,
src: Ir.src,
tokens: Ir.t,
SEMVER_SPEC_VERSION: pi.SEMVER_SPEC_VERSION,
RELEASE_TYPES: pi.RELEASE_TYPES,
compareIdentifiers: di.compareIdentifiers,
rcompareIdentifiers: di.rcompareIdentifiers
}, rt = {}, an = { exports: {} };
const L = (...e) => e.every((t) => t) ? e.join("") : "", Y = (e) => e ? encodeURIComponent(e) : "", bt = {
sshtemplate: ({ domain: e, user: t, project: r, committish: n }) => `git@${e}:${t}/${r}.git${L("#", n)}`,
sshurltemplate: ({ domain: e, user: t, project: r, committish: n }) => `git+ssh://git@${e}/${t}/${r}.git${L("#", n)}`,
browsetemplate: ({ domain: e, user: t, project: r, committish: n, treepath: i }) => `https://${e}/${t}/${r}${L("/", i, "/", Y(n))}`,
browsefiletemplate: ({ domain: e, user: t, project: r, committish: n, treepath: i, path: s, fragment: o, hashformat: c }) => `https://${e}/${t}/${r}/${i}/${Y(n || "master")}/${s}${L("#", c(o || ""))}`,
docstemplate: ({ domain: e, user: t, project: r, treepath: n, committish: i }) => `https://${e}/${t}/${r}${L("/", n, "/", Y(i))}#readme`,
httpstemplate: ({ auth: e, domain: t, user: r, project: n, committish: i }) => `git+https://${L(e, "@")}${t}/${r}/${n}.git${L("#", i)}`,
filetemplate: ({ domain: e, user: t, project: r, committish: n, path: i }) => `https://${e}/${t}/${r}/raw/${Y(n) || "master"}/${i}`,
shortcuttemplate: ({ type: e, user: t, project: r, committish: n }) => `${e}:${t}/${r}${L("#", n)}`,
pathtemplate: ({ user: e, project: t, committish: r }) => `${e}/${t}${L("#", r)}`,
bugstemplate: ({ domain: e, user: t, project: r }) => `https://${e}/${t}/${r}/issues`,
hashformat: ss
}, Q = {};
Q.github = Object.assign({}, bt, {
// First two are insecure and generally shouldn't be used any more, but
// they are still supported.
protocols: ["git:", "http:", "git+ssh:", "git+https:", "ssh:", "https:"],
domain: "github.com",
treepath: "tree",
filetemplate: ({ auth: e, user: t, project: r, committish: n, path: i }) => `https://${L(e, "@")}raw.githubusercontent.com/${t}/${r}/${Y(n) || "master"}/${i}`,
gittemplate: ({ auth: e, domain: t, user: r, project: n, committish: i }) => `git://${L(e, "@")}${t}/${r}/${n}.git${L("#", i)}`,
tarballtemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://codeload.${e}/${t}/${r}/tar.gz/${Y(n) || "master"}`,
extract: (e) => {
let [, t, r, n, i] = e.pathname.split("/", 5);
if (!(n && n !== "tree") && (n || (i = e.hash.slice(1)), r && r.endsWith(".git") && (r = r.slice(0, -4)), !(!t || !r)))
return { user: t, project: r, committish: i };
}
});
Q.bitbucket = Object.assign({}, bt, {
protocols: ["git+ssh:", "git+https:", "ssh:", "https:"],
domain: "bitbucket.org",
treepath: "src",
tarballtemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://${e}/${t}/${r}/get/${Y(n) || "master"}.tar.gz`,
extract: (e) => {
let [, t, r, n] = e.pathname.split("/", 4);
if (!["get"].includes(n) && (r && r.endsWith(".git") && (r = r.slice(0, -4)), !(!t || !r)))
return { user: t, project: r, committish: e.hash.slice(1) };
}
});
Q.gitlab = Object.assign({}, bt, {
protocols: ["git+ssh:", "git+https:", "ssh:", "https:"],
domain: "gitlab.com",
treepath: "tree",
httpstemplate: ({ auth: e, domain: t, user: r, project: n, committish: i }) => `git+https://${L(e, "@")}${t}/${r}/${n}.git${L("#", i)}`,
tarballtemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://${e}/${t}/${r}/repository/archive.tar.gz?ref=${Y(n) || "master"}`,
extract: (e) => {
const t = e.pathname.slice(1);
if (t.includes("/-/") || t.includes("/archive.tar.gz"))
return;
const r = t.split("/");
let n = r.pop();
n.endsWith(".git") && (n = n.slice(0, -4));
const i = r.join("/");
if (!(!i || !n))
return { user: i, project: n, committish: e.hash.slice(1) };
}
});
Q.gist = Object.assign({}, bt, {
protocols: ["git:", "git+ssh:", "git+https:", "ssh:", "https:"],
domain: "gist.github.com",
sshtemplate: ({ domain: e, project: t, committish: r }) => `git@${e}:${t}.git${L("#", r)}`,
sshurltemplate: ({ domain: e, project: t, committish: r }) => `git+ssh://git@${e}/${t}.git${L("#", r)}`,
browsetemplate: ({ domain: e, project: t, committish: r }) => `https://${e}/${t}${L("/", Y(r))}`,
browsefiletemplate: ({ domain: e, project: t, committish: r, path: n, hashformat: i }) => `https://${e}/${t}${L("/", Y(r))}${L("#", i(n))}`,
docstemplate: ({ domain: e, project: t, committish: r }) => `https://${e}/${t}${L("/", Y(r))}`,
httpstemplate: ({ domain: e, project: t, committish: r }) => `git+https://${e}/${t}.git${L("#", r)}`,
filetemplate: ({ user: e, project: t, committish: r, path: n }) => `https://gist.githubusercontent.com/${e}/${t}/raw${L("/", Y(r))}/${n}`,
shortcuttemplate: ({ type: e, project: t, committish: r }) => `${e}:${t}${L("#", r)}`,
pathtemplate: ({ project: e, committish: t }) => `${e}${L("#", t)}`,
bugstemplate: ({ domain: e, project: t }) => `https://${e}/${t}`,
gittemplate: ({ domain: e, project: t, committish: r }) => `git://${e}/${t}.git${L("#", r)}`,
tarballtemplate: ({ project: e, committish: t }) => `https://codeload.github.com/gist/${e}/tar.gz/${Y(t) || "master"}`,
extract: (e) => {
let [, t, r, n] = e.pathname.split("/", 4);
if (n !== "raw") {
if (!r) {
if (!t)
return;
r = t, t = null;
}
return r.endsWith(".git") && (r = r.slice(0, -4)), { user: t, project: r, committish: e.hash.slice(1) };
}
},
hashformat: function(e) {
return e && "file-" + ss(e);
}
});
Q.sourcehut = Object.assign({}, bt, {
protocols: ["git+ssh:", "https:"],
domain: "git.sr.ht",
treepath: "tree",
browsefiletemplate: ({ domain: e, user: t, project: r, committish: n, treepath: i, path: s, fragment: o, hashformat: c }) => `https://${e}/${t}/${r}/${i}/${Y(n || "main")}/${s}${L("#", c(o || ""))}`,
filetemplate: ({ domain: e, user: t, project: r, committish: n, path: i }) => `https://${e}/${t}/${r}/blob/${Y(n) || "main"}/${i}`,
httpstemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://${e}/${t}/${r}.git${L("#", n)}`,
tarballtemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://${e}/${t}/${r}/archive/${Y(n) || "main"}.tar.gz`,
bugstemplate: ({ domain: e, user: t, project: r }) => `https://todo.sr.ht/${t}/${r}`,
docstemplate: ({ domain: e, user: t, project: r, treepath: n, committish: i }) => `https://${e}/${t}/${r}${L("/", n, "/", Y(i))}#readme`,
extract: (e) => {
let [, t, r, n] = e.pathname.split("/", 4);
if (!["archive"].includes(n) && (r && r.endsWith(".git") && (r = r.slice(0, -4)), !(!t || !r)))
return { user: t, project: r, committish: e.hash.slice(1) };
}
});
const xu = Object.keys(Q);
Q.byShortcut = {};
Q.byDomain = {};
for (const e of xu)
Q.byShortcut[`${e}:`] = e, Q.byDomain[Q[e].domain] = e;
function ss(e) {
return e.toLowerCase().replace(/^\W+|\/|\W+$/g, "").replace(/\W+/g, "-");
}
var os = Q;
const $u = os;
let Au = class {
constructor(t, r, n, i, s, o, c = {}) {
Object.assign(this, $u[t]), this.type = t, this.user = r, this.auth = n, this.project = i, this.committish = s, this.default = o, this.opts = c;
}
hash() {
return this.committish ? `#${this.committish}` : "";
}
ssh(t) {
return this._fill(this.sshtemplate, t);
}
_fill(t, r) {
if (typeof t == "function") {
const n = { ...this, ...this.opts, ...r };
n.path || (n.path = ""), n.path.startsWith("/") && (n.path = n.path.slice(1)), n.noCommittish && (n.committish = null);
const i = t(n);
return n.noGitPlus && i.startsWith("git+") ? i.slice(4) : i;
}
return null;
}
sshurl(t) {
return this._fill(this.sshurltemplate, t);
}
browse(t, r, n) {
return typeof t != "string" ? this._fill(this.browsetemplate, t) : (typeof r != "string" && (n = r, r = null), this._fill(this.browsefiletemplate, { ...n, fragment: r, path: t }));
}
docs(t) {
return this._fill(this.docstemplate, t);
}
bugs(t) {
return this._fill(this.bugstemplate, t);
}
https(t) {
return this._fill(this.httpstemplate, t);
}
git(t) {
return this._fill(this.gittemplate, t);
}
shortcut(t) {
return this._fill(this.shortcuttemplate, t);
}
path(t) {
return this._fill(this.pathtemplate, t);
}
tarball(t) {
return this._fill(this.tarballtemplate, { ...t, noCommittish: !1 });
}
file(t, r) {
return this._fill(this.filetemplate, { ...r, path: t });
}
getDefaultRepresentation() {
return this.default;
}
toString(t) {
return this.default && typeof this[this.default] == "function" ? this[this.default](t) : this.sshurl(t);
}
};
var bu = Au, Fr, mi;
function Cu() {
return mi || (mi = 1, Fr = function(e) {
e.prototype[Symbol.iterator] = function* () {
for (let t = this.head; t; t = t.next)
yield t.value;
};
}), Fr;
}
var wu = I;
I.Node = je;
I.create = I;
function I(e) {
var t = this;
if (t instanceof I || (t = new I()), t.tail