snyk-policy
Version:
Snyk's policy parser and matching logic
1,282 lines • 166 kB
JavaScript
import ba from "url";
import zi, { statSync as Yr, lstatSync as wa, promises as Vr } from "fs";
import * as ee from "path";
import Ji from "path";
import Ca from "util";
var Ut = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function sr(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var qr = { exports: {} }, _r, Kn;
function Sa() {
if (Kn) return _r;
Kn = 1;
var e = 1e3, t = e * 60, r = t * 60, n = r * 24, i = n * 7, s = n * 365.25;
_r = function(c, f) {
f = f || {};
var m = typeof c;
if (m === "string" && c.length > 0)
return o(c);
if (m === "number" && isFinite(c))
return f.long ? a(c) : u(c);
throw new Error(
"val is not a non-empty string or a valid number. val=" + JSON.stringify(c)
);
};
function o(c) {
if (c = String(c), !(c.length > 100)) {
var f = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
c
);
if (f) {
var m = parseFloat(f[1]), d = (f[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 u(c) {
var f = Math.abs(c);
return f >= n ? Math.round(c / n) + "d" : f >= r ? Math.round(c / r) + "h" : f >= t ? Math.round(c / t) + "m" : f >= e ? Math.round(c / e) + "s" : c + "ms";
}
function a(c) {
var f = Math.abs(c);
return f >= n ? h(c, f, n, "day") : f >= r ? h(c, f, r, "hour") : f >= t ? h(c, f, t, "minute") : f >= e ? h(c, f, e, "second") : c + " ms";
}
function h(c, f, m, d) {
var _ = f >= m * 1.5;
return Math.round(c / m) + " " + d + (_ ? "s" : "");
}
return _r;
}
function Oa(e) {
r.debug = r, r.default = r, r.coerce = a, r.disable = o, r.enable = i, r.enabled = u, r.humanize = Sa(), r.destroy = h, Object.keys(e).forEach((c) => {
r[c] = e[c];
}), r.names = [], r.skips = [], r.formatters = {};
function t(c) {
let f = 0;
for (let m = 0; m < c.length; m++)
f = (f << 5) - f + c.charCodeAt(m), f |= 0;
return r.colors[Math.abs(f) % r.colors.length];
}
r.selectColor = t;
function r(c) {
let f, m = null, d, _;
function v(...A) {
if (!v.enabled)
return;
const D = v, W = Number(/* @__PURE__ */ new Date()), j = W - (f || W);
D.diff = j, D.prev = f, D.curr = W, f = W, A[0] = r.coerce(A[0]), typeof A[0] != "string" && A.unshift("%O");
let B = 0;
A[0] = A[0].replace(/%([a-zA-Z%])/g, (ae, ke) => {
if (ae === "%%")
return "%";
B++;
const be = r.formatters[ke];
if (typeof be == "function") {
const Ue = A[B];
ae = be.call(D, Ue), A.splice(B, 1), B--;
}
return ae;
}), r.formatArgs.call(D, A), (D.log || r.log).apply(D, A);
}
return v.namespace = c, v.useColors = r.useColors(), v.color = r.selectColor(c), v.extend = n, v.destroy = r.destroy, Object.defineProperty(v, "enabled", {
enumerable: !0,
configurable: !1,
get: () => m !== null ? m : (d !== r.namespaces && (d = r.namespaces, _ = r.enabled(c)), _),
set: (A) => {
m = A;
}
}), typeof r.init == "function" && r.init(v), v;
}
function n(c, f) {
const m = r(this.namespace + (typeof f > "u" ? ":" : f) + c);
return m.log = this.log, m;
}
function i(c) {
r.save(c), r.namespaces = c, r.names = [], r.skips = [];
const f = (typeof c == "string" ? c : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean);
for (const m of f)
m[0] === "-" ? r.skips.push(m.slice(1)) : r.names.push(m);
}
function s(c, f) {
let m = 0, d = 0, _ = -1, v = 0;
for (; m < c.length; )
if (d < f.length && (f[d] === c[m] || f[d] === "*"))
f[d] === "*" ? (_ = d, v = m, d++) : (m++, d++);
else if (_ !== -1)
d = _ + 1, v++, m = v;
else
return !1;
for (; d < f.length && f[d] === "*"; )
d++;
return d === f.length;
}
function o() {
const c = [
...r.names,
...r.skips.map((f) => "-" + f)
].join(",");
return r.enable(""), c;
}
function u(c) {
for (const f of r.skips)
if (s(c, f))
return !1;
for (const f of r.names)
if (s(c, f))
return !0;
return !1;
}
function a(c) {
return c instanceof Error ? c.stack || c.message : c;
}
function h() {
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 h = "color: " + this.color;
a.splice(1, 0, h, "color: inherit");
let c = 0, f = 0;
a[0].replace(/%[a-zA-Z%]/g, (m) => {
m !== "%%" && (c++, m === "%c" && (f = c));
}), a.splice(f, 0, h);
}
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") || 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: u } = e.exports;
u.j = function(a) {
try {
return JSON.stringify(a);
} catch (h) {
return "[UnexpectedJSONParseError]: " + h.message;
}
};
})(qr, qr.exports);
var or = qr.exports;
const Ae = /* @__PURE__ */ sr(or);
var Xr = { exports: {} };
const Ta = "2.0.0", Zi = 256, Ra = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
9007199254740991, Ia = 16, Fa = Zi - 6, La = [
"major",
"premajor",
"minor",
"preminor",
"patch",
"prepatch",
"prerelease"
];
var ar = {
MAX_LENGTH: Zi,
MAX_SAFE_COMPONENT_LENGTH: Ia,
MAX_SAFE_BUILD_LENGTH: Fa,
MAX_SAFE_INTEGER: Ra,
RELEASE_TYPES: La,
SEMVER_SPEC_VERSION: Ta,
FLAG_INCLUDE_PRERELEASE: 1,
FLAG_LOOSE: 2
};
const Na = typeof process == "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...e) => console.error("SEMVER", ...e) : () => {
};
var lr = Na;
(function(e, t) {
const {
MAX_SAFE_COMPONENT_LENGTH: r,
MAX_SAFE_BUILD_LENGTH: n,
MAX_LENGTH: i
} = ar, s = lr;
t = e.exports = {};
const o = t.re = [], u = t.safeRe = [], a = t.src = [], h = t.safeSrc = [], c = t.t = {};
let f = 0;
const m = "[a-zA-Z0-9-]", d = [
["\\s", 1],
["\\d", i],
[m, n]
], _ = (A) => {
for (const [D, W] of d)
A = A.split(`${D}*`).join(`${D}{0,${W}}`).split(`${D}+`).join(`${D}{1,${W}}`);
return A;
}, v = (A, D, W) => {
const j = _(D), B = f++;
s(A, B, D), c[A] = B, a[B] = D, h[B] = j, o[B] = new RegExp(D, W ? "g" : void 0), u[B] = new RegExp(j, W ? "g" : void 0);
};
v("NUMERICIDENTIFIER", "0|[1-9]\\d*"), v("NUMERICIDENTIFIERLOOSE", "\\d+"), v("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${m}*`), v("MAINVERSION", `(${a[c.NUMERICIDENTIFIER]})\\.(${a[c.NUMERICIDENTIFIER]})\\.(${a[c.NUMERICIDENTIFIER]})`), v("MAINVERSIONLOOSE", `(${a[c.NUMERICIDENTIFIERLOOSE]})\\.(${a[c.NUMERICIDENTIFIERLOOSE]})\\.(${a[c.NUMERICIDENTIFIERLOOSE]})`), v("PRERELEASEIDENTIFIER", `(?:${a[c.NONNUMERICIDENTIFIER]}|${a[c.NUMERICIDENTIFIER]})`), v("PRERELEASEIDENTIFIERLOOSE", `(?:${a[c.NONNUMERICIDENTIFIER]}|${a[c.NUMERICIDENTIFIERLOOSE]})`), v("PRERELEASE", `(?:-(${a[c.PRERELEASEIDENTIFIER]}(?:\\.${a[c.PRERELEASEIDENTIFIER]})*))`), v("PRERELEASELOOSE", `(?:-?(${a[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[c.PRERELEASEIDENTIFIERLOOSE]})*))`), v("BUILDIDENTIFIER", `${m}+`), v("BUILD", `(?:\\+(${a[c.BUILDIDENTIFIER]}(?:\\.${a[c.BUILDIDENTIFIER]})*))`), v("FULLPLAIN", `v?${a[c.MAINVERSION]}${a[c.PRERELEASE]}?${a[c.BUILD]}?`), v("FULL", `^${a[c.FULLPLAIN]}$`), v("LOOSEPLAIN", `[v=\\s]*${a[c.MAINVERSIONLOOSE]}${a[c.PRERELEASELOOSE]}?${a[c.BUILD]}?`), v("LOOSE", `^${a[c.LOOSEPLAIN]}$`), v("GTLT", "((?:<|>)?=?)"), v("XRANGEIDENTIFIERLOOSE", `${a[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`), v("XRANGEIDENTIFIER", `${a[c.NUMERICIDENTIFIER]}|x|X|\\*`), v("XRANGEPLAIN", `[v=\\s]*(${a[c.XRANGEIDENTIFIER]})(?:\\.(${a[c.XRANGEIDENTIFIER]})(?:\\.(${a[c.XRANGEIDENTIFIER]})(?:${a[c.PRERELEASE]})?${a[c.BUILD]}?)?)?`), v("XRANGEPLAINLOOSE", `[v=\\s]*(${a[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[c.XRANGEIDENTIFIERLOOSE]})(?:${a[c.PRERELEASELOOSE]})?${a[c.BUILD]}?)?)?`), v("XRANGE", `^${a[c.GTLT]}\\s*${a[c.XRANGEPLAIN]}$`), v("XRANGELOOSE", `^${a[c.GTLT]}\\s*${a[c.XRANGEPLAINLOOSE]}$`), v("COERCEPLAIN", `(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`), v("COERCE", `${a[c.COERCEPLAIN]}(?:$|[^\\d])`), v("COERCEFULL", a[c.COERCEPLAIN] + `(?:${a[c.PRERELEASE]})?(?:${a[c.BUILD]})?(?:$|[^\\d])`), v("COERCERTL", a[c.COERCE], !0), v("COERCERTLFULL", a[c.COERCEFULL], !0), v("LONETILDE", "(?:~>?)"), v("TILDETRIM", `(\\s*)${a[c.LONETILDE]}\\s+`, !0), t.tildeTrimReplace = "$1~", v("TILDE", `^${a[c.LONETILDE]}${a[c.XRANGEPLAIN]}$`), v("TILDELOOSE", `^${a[c.LONETILDE]}${a[c.XRANGEPLAINLOOSE]}$`), v("LONECARET", "(?:\\^)"), v("CARETTRIM", `(\\s*)${a[c.LONECARET]}\\s+`, !0), t.caretTrimReplace = "$1^", v("CARET", `^${a[c.LONECARET]}${a[c.XRANGEPLAIN]}$`), v("CARETLOOSE", `^${a[c.LONECARET]}${a[c.XRANGEPLAINLOOSE]}$`), v("COMPARATORLOOSE", `^${a[c.GTLT]}\\s*(${a[c.LOOSEPLAIN]})$|^$`), v("COMPARATOR", `^${a[c.GTLT]}\\s*(${a[c.FULLPLAIN]})$|^$`), v("COMPARATORTRIM", `(\\s*)${a[c.GTLT]}\\s*(${a[c.LOOSEPLAIN]}|${a[c.XRANGEPLAIN]})`, !0), t.comparatorTrimReplace = "$1$2$3", v("HYPHENRANGE", `^\\s*(${a[c.XRANGEPLAIN]})\\s+-\\s+(${a[c.XRANGEPLAIN]})\\s*$`), v("HYPHENRANGELOOSE", `^\\s*(${a[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[c.XRANGEPLAINLOOSE]})\\s*$`), v("STAR", "(<|>)?=?\\s*\\*"), v("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), v("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
})(Xr, Xr.exports);
var At = Xr.exports;
const Da = Object.freeze({ loose: !0 }), ja = Object.freeze({}), Pa = (e) => e ? typeof e != "object" ? Da : e : ja;
var en = Pa;
const zn = /^[0-9]+$/, Qi = (e, t) => {
const r = zn.test(e), n = zn.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 = lr, { MAX_LENGTH: Jn, MAX_SAFE_INTEGER: Ht } = ar, { safeRe: Bt, t: Yt } = At, ka = en, { 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 > Jn)
throw new TypeError(
`version is longer than ${Jn} characters`
);
Gt("SemVer", t, r), this.options = r, this.loose = !!r.loose, this.includePrerelease = !!r.includePrerelease;
const n = t.trim().match(r.loose ? Bt[Yt.LOOSE] : Bt[Yt.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) {
if (t.startsWith("pre")) {
if (!r && n === !1)
throw new Error("invalid increment argument: identifier is empty");
if (r) {
const i = `-${r}`.match(this.options.loose ? Bt[Yt.PRERELEASELOOSE] : Bt[Yt.PRERELEASE]);
if (!i || i[1] !== r)
throw new Error(`invalid identifier: ${r}`);
}
}
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 "release":
if (this.prerelease.length === 0)
throw new Error(`version ${this.raw} is not a prerelease`);
this.prerelease.length = 0;
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 (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 K = Ua;
const Zn = K, 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 = K, 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, u = s ? n : r, a = !!o.prerelease.length;
if (!!u.prerelease.length && !a) {
if (!u.patch && !u.minor)
return "major";
if (u.compareMain(o) === 0)
return u.minor && !u.patch ? "minor" : "patch";
}
const c = a ? "pre" : "";
return r.major !== n.major ? c + "major" : r.minor !== n.minor ? c + "minor" : r.patch !== n.patch ? c + "patch" : "prerelease";
};
var Ja = za;
const Za = K, Qa = (e, t) => new Za(e, t).major;
var el = Qa;
const tl = K, rl = (e, t) => new tl(e, t).minor;
var nl = rl;
const il = K, 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 = K, ul = (e, t, r) => new ti(e, r).compare(new ti(t, r));
var se = ul;
const fl = se, hl = (e, t, r) => fl(t, e, r);
var pl = hl;
const dl = se, ml = (e, t) => dl(e, t, !0);
var gl = ml;
const ri = K, vl = (e, t, r) => {
const n = new ri(e, r), i = new ri(t, r);
return n.compare(i) || n.compareBuild(i);
};
var tn = vl;
const El = tn, yl = (e, t) => e.sort((r, n) => El(r, n, t));
var xl = yl;
const $l = tn, Al = (e, t) => e.sort((r, n) => $l(n, r, t));
var bl = Al;
const wl = se, Cl = (e, t, r) => wl(e, t, r) > 0;
var cr = Cl;
const Sl = se, Ol = (e, t, r) => Sl(e, t, r) < 0;
var rn = Ol;
const _l = se, Tl = (e, t, r) => _l(e, t, r) === 0;
var ts = Tl;
const Rl = se, Il = (e, t, r) => Rl(e, t, r) !== 0;
var rs = Il;
const Fl = se, Ll = (e, t, r) => Fl(e, t, r) >= 0;
var nn = Ll;
const Nl = se, Dl = (e, t, r) => Nl(e, t, r) <= 0;
var sn = Dl;
const jl = ts, Pl = rs, Ml = cr, kl = nn, Ul = rn, Gl = sn, 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 = K, Yl = ot, { safeRe: Vt, t: qt } = 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 ? Vt[qt.COERCEFULL] : Vt[qt.COERCE]);
else {
const a = t.includePrerelease ? Vt[qt.COERCERTLFULL] : Vt[qt.COERCERTL];
let h;
for (; (h = a.exec(e)) && (!r || r.index + r[0].length !== e.length); )
(!r || h.index + h[0].length !== r.index + r[0].length) && (r = h), a.lastIndex = h.index + h[1].length + h[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]}` : "", u = t.includePrerelease && r[6] ? `+${r[6]}` : "";
return Yl(`${n}.${i}.${s}${o}${u}`, 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, Tr, ni;
function oe() {
if (ni) return Tr;
ni = 1;
const e = /\s+/g;
class t {
constructor(E, S) {
if (S = i(S), E instanceof t)
return E.loose === !!S.loose && E.includePrerelease === !!S.includePrerelease ? E : new t(E.raw, S);
if (E instanceof s)
return this.raw = E.value, this.set = [[E]], this.formatted = void 0, this;
if (this.options = S, this.loose = !!S.loose, this.includePrerelease = !!S.includePrerelease, this.raw = E.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) => !v(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 E = 0; E < this.set.length; E++) {
E > 0 && (this.formatted += "||");
const S = this.set[E];
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(E) {
const b = ((this.options.includePrerelease && d) | (this.options.loose && _)) + ":" + E, O = n.get(b);
if (O)
return O;
const w = this.options.loose, y = w ? a[h.HYPHENRANGELOOSE] : a[h.HYPHENRANGE];
E = E.replace(y, Ft(this.options.includePrerelease)), o("hyphen replace", E), E = E.replace(a[h.COMPARATORTRIM], c), o("comparator trim", E), E = E.replace(a[h.TILDETRIM], f), o("tilde trim", E), E = E.replace(a[h.CARETTRIM], m), o("caret trim", E);
let L = E.split(" ").map((P) => W(P, this.options)).join(" ").split(/\s+/).map((P) => It(P, this.options));
w && (L = L.filter((P) => (o("loose invalid filter", P, this.options), !!P.match(a[h.COMPARATORLOOSE])))), o("range list", L);
const T = /* @__PURE__ */ new Map(), R = L.map((P) => new s(P, this.options));
for (const P of R) {
if (v(P))
return [P];
T.set(P.value, P);
}
T.size > 1 && T.has("") && T.delete("");
const q = [...T.values()];
return n.set(b, q), q;
}
intersects(E, S) {
if (!(E instanceof t))
throw new TypeError("a Range is required");
return this.set.some((b) => D(b, S) && E.set.some((O) => D(O, S) && b.every((w) => O.every((y) => w.intersects(y, S)))));
}
// if ANY of the sets match ALL of its comparators, then pass
test(E) {
if (!E)
return !1;
if (typeof E == "string")
try {
E = new u(E, this.options);
} catch {
return !1;
}
for (let S = 0; S < this.set.length; S++)
if (Lt(this.set[S], E, this.options))
return !0;
return !1;
}
}
Tr = t;
const r = Wl, n = new r(), i = en, s = ur(), o = lr, u = K, {
safeRe: a,
t: h,
comparatorTrimReplace: c,
tildeTrimReplace: f,
caretTrimReplace: m
} = At, { FLAG_INCLUDE_PRERELEASE: d, FLAG_LOOSE: _ } = ar, v = (x) => x.value === "<0.0.0-0", A = (x) => x.value === "", D = (x, E) => {
let S = !0;
const b = x.slice();
let O = b.pop();
for (; S && b.length; )
S = b.every((w) => O.intersects(w, E)), O = b.pop();
return S;
}, W = (x, E) => (o("comp", x, E), x = ae(x, E), o("caret", x), x = B(x, E), o("tildes", x), x = be(x, E), o("xrange", x), x = Rt(x, E), o("stars", x), x), j = (x) => !x || x.toLowerCase() === "x" || x === "*", B = (x, E) => x.trim().split(/\s+/).map((S) => ct(S, E)).join(" "), ct = (x, E) => {
const S = E.loose ? a[h.TILDELOOSE] : a[h.TILDE];
return x.replace(S, (b, O, w, y, L) => {
o("tilde", x, b, O, w, y, L);
let T;
return j(O) ? T = "" : j(w) ? T = `>=${O}.0.0 <${+O + 1}.0.0-0` : j(y) ? T = `>=${O}.${w}.0 <${O}.${+w + 1}.0-0` : L ? (o("replaceTilde pr", L), T = `>=${O}.${w}.${y}-${L} <${O}.${+w + 1}.0-0`) : T = `>=${O}.${w}.${y} <${O}.${+w + 1}.0-0`, o("tilde return", T), T;
});
}, ae = (x, E) => x.trim().split(/\s+/).map((S) => ke(S, E)).join(" "), ke = (x, E) => {
o("caret", x, E);
const S = E.loose ? a[h.CARETLOOSE] : a[h.CARET], b = E.includePrerelease ? "-0" : "";
return x.replace(S, (O, w, y, L, T) => {
o("caret", x, O, w, y, L, T);
let R;
return j(w) ? R = "" : j(y) ? R = `>=${w}.0.0${b} <${+w + 1}.0.0-0` : j(L) ? w === "0" ? R = `>=${w}.${y}.0${b} <${w}.${+y + 1}.0-0` : R = `>=${w}.${y}.0${b} <${+w + 1}.0.0-0` : T ? (o("replaceCaret pr", T), w === "0" ? y === "0" ? R = `>=${w}.${y}.${L}-${T} <${w}.${y}.${+L + 1}-0` : R = `>=${w}.${y}.${L}-${T} <${w}.${+y + 1}.0-0` : R = `>=${w}.${y}.${L}-${T} <${+w + 1}.0.0-0`) : (o("no pr"), w === "0" ? y === "0" ? R = `>=${w}.${y}.${L}${b} <${w}.${y}.${+L + 1}-0` : R = `>=${w}.${y}.${L}${b} <${w}.${+y + 1}.0-0` : R = `>=${w}.${y}.${L} <${+w + 1}.0.0-0`), o("caret return", R), R;
});
}, be = (x, E) => (o("replaceXRanges", x, E), x.split(/\s+/).map((S) => Ue(S, E)).join(" ")), Ue = (x, E) => {
x = x.trim();
const S = E.loose ? a[h.XRANGELOOSE] : a[h.XRANGE];
return x.replace(S, (b, O, w, y, L, T) => {
o("xRange", x, b, O, w, y, L, T);
const R = j(w), q = R || j(y), P = q || j(L), we = P;
return O === "=" && we && (O = ""), T = E.includePrerelease ? "-0" : "", R ? O === ">" || O === "<" ? b = "<0.0.0-0" : b = "*" : O && we ? (q && (y = 0), L = 0, O === ">" ? (O = ">=", q ? (w = +w + 1, y = 0, L = 0) : (y = +y + 1, L = 0)) : O === "<=" && (O = "<", q ? w = +w + 1 : y = +y + 1), O === "<" && (T = "-0"), b = `${O + w}.${y}.${L}${T}`) : q ? b = `>=${w}.0.0${T} <${+w + 1}.0.0-0` : P && (b = `>=${w}.${y}.0${T} <${w}.${+y + 1}.0-0`), o("xRange return", b), b;
});
}, Rt = (x, E) => (o("replaceStars", x, E), x.trim().replace(a[h.STAR], "")), It = (x, E) => (o("replaceGTE0", x, E), x.trim().replace(a[E.includePrerelease ? h.GTE0PRE : h.GTE0], "")), Ft = (x) => (E, S, b, O, w, y, L, T, R, q, P, we) => (j(b) ? S = "" : j(O) ? S = `>=${b}.0.0${x ? "-0" : ""}` : j(w) ? S = `>=${b}.${O}.0${x ? "-0" : ""}` : y ? S = `>=${S}` : S = `>=${S}${x ? "-0" : ""}`, j(R) ? T = "" : j(q) ? T = `<${+R + 1}.0.0-0` : j(P) ? T = `<${R}.${+q + 1}.0-0` : we ? T = `<=${R}.${q}.${P}-${we}` : x ? T = `<${R}.${q}.${+P + 1}-0` : T = `<=${T}`, `${S} ${T}`.trim()), Lt = (x, E, S) => {
for (let b = 0; b < x.length; b++)
if (!x[b].test(E))
return !1;
if (E.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 === E.major && O.minor === E.minor && O.patch === E.patch)
return !0;
}
return !1;
}
return !0;
};
return Tr;
}
var Rr, ii;
function ur() {
if (ii) return Rr;
ii = 1;
const e = Symbol("SemVer ANY");
class t {
static get ANY() {
return e;
}
constructor(c, f) {
if (f = r(f), c instanceof t) {
if (c.loose === !!f.loose)
return c;
c = c.value;
}
c = c.trim().split(/\s+/).join(" "), o("comparator", c, f), this.options = f, this.loose = !!f.loose, this.parse(c), this.semver === e ? this.value = "" : this.value = this.operator + this.semver.version, o("comp", this);
}
parse(c) {
const f = this.options.loose ? n[i.COMPARATORLOOSE] : n[i.COMPARATOR], m = c.match(f);
if (!m)
throw new TypeError(`Invalid comparator: ${c}`);
this.operator = m[1] !== void 0 ? m[1] : "", this.operator === "=" && (this.operator = ""), m[2] ? this.semver = new u(m[2], this.options.loose) : this.semver = e;
}
toString() {
return this.value;
}
test(c) {
if (o("Comparator.test", c, this.options.loose), this.semver === e || c === e)
return !0;
if (typeof c == "string")
try {
c = new u(c, this.options);
} catch {
return !1;
}
return s(c, this.operator, this.semver, this.options);
}
intersects(c, f) {
if (!(c instanceof t))
throw new TypeError("a Comparator is required");
return this.operator === "" ? this.value === "" ? !0 : new a(c.value, f).test(this.value) : c.operator === "" ? c.value === "" ? !0 : new a(this.value, f).test(c.semver) : (f = r(f), f.includePrerelease && (this.value === "<0.0.0-0" || c.value === "<0.0.0-0") || !f.includePrerelease && (this.value.startsWith("<0.0.0") || c.value.startsWith("<0.0.0")) ? !1 : !!(this.operator.startsWith(">") && c.operator.startsWith(">") || this.operator.startsWith("<") && c.operator.startsWith("<") || this.semver.version === c.semver.version && this.operator.includes("=") && c.operator.includes("=") || s(this.semver, "<", c.semver, f) && this.operator.startsWith(">") && c.operator.startsWith("<") || s(this.semver, ">", c.semver, f) && this.operator.startsWith("<") && c.operator.startsWith(">")));
}
}
Rr = t;
const r = en, { safeRe: n, t: i } = At, s = ns, o = lr, u = K, a = oe();
return Rr;
}
const Kl = oe(), zl = (e, t, r) => {
try {
t = new Kl(t, r);
} catch {
return !1;
}
return t.test(e);
};
var fr = zl;
const Jl = oe(), Zl = (e, t) => new Jl(e, t).set.map((r) => r.map((n) => n.value).join(" ").trim().split(" "));
var Ql = Zl;
const ec = K, tc = oe(), 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 = K, sc = oe(), 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 Ir = K, lc = oe(), si = cr, cc = (e, t) => {
e = new lc(e, t);
let r = new Ir("0.0.0");
if (e.test(r) || (r = new Ir("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 u = new Ir(o.semver.version);
switch (o.operator) {
case ">":
u.prerelease.length === 0 ? u.patch++ : u.prerelease.push(0), u.raw = u.format();
case "":
case ">=":
(!s || si(u, s)) && (s = u);
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 = oe(), hc = (e, t) => {
try {
return new fc(e, t).range || "*";
} catch {
return null;
}
};
var pc = hc;
const dc = K, is = ur(), { ANY: mc } = is, gc = oe(), vc = fr, oi = cr, ai = rn, Ec = sn, yc = nn, xc = (e, t, r, n) => {
e = new dc(e, n), t = new gc(t, n);
let i, s, o, u, a;
switch (r) {
case ">":
i = oi, s = Ec, o = ai, u = ">", a = ">=";
break;
case "<":
i = ai, s = yc, o = oi, u = "<", a = "<=";
break;
default:
throw new TypeError('Must provide a hilo val of "<" or ">"');
}
if (vc(e, t, n))
return !1;
for (let h = 0; h < t.set.length; ++h) {
const c = t.set[h];
let f = null, m = null;
if (c.forEach((d) => {
d.semver === mc && (d = new is(">=0.0.0")), f = f || d, m = m || d, i(d.semver, f.semver, n) ? f = d : o(d.semver, m.semver, n) && (m = d);
}), f.operator === u || f.operator === a || (!m.operator || m.operator === u) && s(e, m.semver))
return !1;
if (m.operator === a && o(e, m.semver))
return !1;
}
return !0;
};
var on = xc;
const $c = on, Ac = (e, t, r) => $c(e, t, ">", r);
var bc = Ac;
const wc = on, Cc = (e, t, r) => wc(e, t, "<", r);
var Sc = Cc;
const li = oe(), Oc = (e, t, r) => (e = new li(e, r), t = new li(t, r), e.intersects(t, r));
var _c = Oc;
const Tc = fr, Rc = se;
var Ic = (e, t, r) => {
const n = [];
let i = null, s = null;
const o = e.sort((c, f) => Rc(c, f, r));
for (const c of o)
Tc(c, t, r) ? (s = c, i || (i = c)) : (s && n.push([i, s]), s = null, i = null);
i && n.push([i, null]);
const u = [];
for (const [c, f] of n)
c === f ? u.push(c) : !f && c === o[0] ? u.push("*") : f ? c === o[0] ? u.push(`<=${f}`) : u.push(`${c} - ${f}`) : u.push(`>=${c}`);
const a = u.join(" || "), h = typeof t.raw == "string" ? t.raw : String(t);
return a.length < h.length ? a : t;
};
const ci = oe(), an = ur(), { ANY: Fr } = an, ht = fr, ln = se, 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 = Nc(i, s, r);
if (n = n || o !== null, o)
continue e;
}
if (n)
return !1;
}
return !0;
}, Lc = [new an(">=0.0.0-0")], ui = [new an(">=0.0.0")], Nc = (e, t, r) => {
if (e === t)
return !0;
if (e.length === 1 && e[0].semver === Fr) {
if (t.length === 1 && t[0].semver === Fr)
return !0;
r.includePrerelease ? e = Lc : e = ui;
}
if (t.length === 1 && t[0].semver === Fr) {
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 = ln(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 _ of t)
if (!ht(d, String(_), r))
return !1;
return !0;
}
let u, a, h, c, f = s && !r.includePrerelease && s.semver.prerelease.length ? s.semver : !1, m = i && !r.includePrerelease && i.semver.prerelease.length ? i.semver : !1;
f && f.prerelease.length === 1 && s.operator === "<" && f.prerelease[0] === 0 && (f = !1);
for (const d of t) {
if (c = c || d.operator === ">" || d.operator === ">=", h = h || 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 (u = fi(i, d, r), u === d && u !== i)
return !1;
} else if (i.operator === ">=" && !ht(i.semver, String(d), r))
return !1;
}
if (s) {
if (f && d.semver.prerelease && d.semver.prerelease.length && d.semver.major === f.major && d.semver.minor === f.minor && d.semver.patch === f.patch && (f = !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 && h && !s && o !== 0 || s && c && !i && o !== 0 || m || f);
}, fi = (e, t, r) => {
if (!e)
return t;
const n = ln(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 = ln(e.semver, t.semver, r);
return n < 0 ? e : n > 0 || t.operator === "<" && e.operator === "<=" ? t : e;
};
var Dc = Fc;
const Lr = At, pi = ar, jc = K, di = es, Pc = ot, Mc = Ya, kc = Xa, Uc = Ka, Gc = Ja, Hc = el, Bc = nl, Yc = ol, Vc = cl, qc = se, Xc = pl, Wc = gl, Kc = tn, zc = xl, Jc = bl, Zc = cr, Qc = rn, eu = ts, tu = rs, ru = nn, nu = sn, iu = ns, su = ql, ou = ur(), au = oe(), lu = fr, cu = Ql, uu = nc, fu = ac, hu = uc, pu = pc, du = on, mu = bc, gu = Sc, vu = _c, Eu = Ic, yu = Dc;
var Wr = {
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: Eu,
subset: yu,
SemVer: jc,
re: Lr.re,
src: Lr.src,
tokens: Lr.t,
SEMVER_SPEC_VERSION: pi.SEMVER_SPEC_VERSION,
RELEASE_TYPES: pi.RELEASE_TYPES,
compareIdentifiers: di.compareIdentifiers,
rcompareIdentifiers: di.rcompareIdentifiers
}, rt = {}, cn = { exports: {} };
const N = (...e) => e.every((t) => t) ? e.join("") : "", V = (e) => e ? encodeURIComponent(e) : "", bt = {
sshtemplate: ({ domain: e, user: t, project: r, committish: n }) => `git@${e}:${t}/${r}.git${N("#", n)}`,
sshurltemplate: ({ domain: e, user: t, project: r, committish: n }) => `git+ssh://git@${e}/${t}/${r}.git${N("#", n)}`,
browsetemplate: ({ domain: e, user: t, project: r, committish: n, treepath: i }) => `https://${e}/${t}/${r}${N("/", i, "/", V(n))}`,
browsefiletemplate: ({ domain: e, user: t, project: r, committish: n, treepath: i, path: s, fragment: o, hashformat: u }) => `https://${e}/${t}/${r}/${i}/${V(n || "master")}/${s}${N("#", u(o || ""))}`,
docstemplate: ({ domain: e, user: t, project: r, treepath: n, committish: i }) => `https://${e}/${t}/${r}${N("/", n, "/", V(i))}#readme`,
httpstemplate: ({ auth: e, domain: t, user: r, project: n, committish: i }) => `git+https://${N(e, "@")}${t}/${r}/${n}.git${N("#", i)}`,
filetemplate: ({ domain: e, user: t, project: r, committish: n, path: i }) => `https://${e}/${t}/${r}/raw/${V(n) || "master"}/${i}`,
shortcuttemplate: ({ type: e, user: t, project: r, committish: n }) => `${e}:${t}/${r}${N("#", n)}`,
pathtemplate: ({ user: e, project: t, committish: r }) => `${e}/${t}${N("#", r)}`,
bugstemplate: ({ domain: e, user: t, project: r }) => `https://${e}/${t}/${r}/issues`,
hashformat: ss
}, te = {};
te.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://${N(e, "@")}raw.githubusercontent.com/${t}/${r}/${V(n) || "master"}/${i}`,
gittemplate: ({ auth: e, domain: t, user: r, project: n, committish: i }) => `git://${N(e, "@")}${t}/${r}/${n}.git${N("#", i)}`,
tarballtemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://codeload.${e}/${t}/${r}/tar.gz/${V(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 };
}
});
te.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/${V(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) };
}
});
te.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://${N(e, "@")}${t}/${r}/${n}.git${N("#", i)}`,
tarballtemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://${e}/${t}/${r}/repository/archive.tar.gz?ref=${V(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) };
}
});
te.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${N("#", r)}`,
sshurltemplate: ({ domain: e, project: t, committish: r }) => `git+ssh://git@${e}/${t}.git${N("#", r)}`,
browsetemplate: ({ domain: e, project: t, committish: r }) => `https://${e}/${t}${N("/", V(r))}`,
browsefiletemplate: ({ domain: e, project: t, committish: r, path: n, hashformat: i }) => `https://${e}/${t}${N("/", V(r))}${N("#", i(n))}`,
docstemplate: ({ domain: e, project: t, committish: r }) => `https://${e}/${t}${N("/", V(r))}`,
httpstemplate: ({ domain: e, project: t, committish: r }) => `git+https://${e}/${t}.git${N("#", r)}`,
filetemplate: ({ user: e, project: t, committish: r, path: n }) => `https://gist.githubusercontent.com/${e}/${t}/raw${N("/", V(r))}/${n}`,
shortcuttemplate: ({ type: e, project: t, committish: r }) => `${e}:${t}${N("#", r)}`,
pathtemplate: ({ project: e, committish: t }) => `${e}${N("#", t)}`,
bugstemplate: ({ domain: e, project: t }) => `https://${e}/${t}`,
gittemplate: ({ domain: e, project: t, committish: r }) => `git://${e}/${t}.git${N("#", r)}`,
tarballtemplate: ({ project: e, committish: t }) => `https://codeload.github.com/gist/${e}/tar.gz/${V(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);
}
});
te.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: u }) => `https://${e}/${t}/${r}/${i}/${V(n || "main")}/${s}${N("#", u(o || ""))}`,
filetemplate: ({ domain: e, user: t, project: r, committish: n, path: i }) => `https://${e}/${t}/${r}/blob/${V(n) || "main"}/${i}`,
httpstemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://${e}/${t}/${r}.git${N("#", n)}`,
tarballtemplate: ({ domain: e, user: t, project: r, committish: n }) => `https://${e}/${t}/${r}/archive/${V(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}${N("/", n, "/", V(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(te);
te.byShortcut = {};
te.byDomain = {};
for (const e of xu)
te.byShortcut[`${e}:`] = e, te.byDomain[te[e].domain] = e;
function ss(e) {
return e.toLowerCase().replace(/^\W+|\/|\W+$/g, "").replace(/\W+/g, "-");
}
var os = te;
const $u = os;
let Au = class {
constructor(t, r, n, i, s, o, u = {}) {
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 = u;
}
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 thi