UNPKG

snyk-policy

Version:

Snyk's policy parser and matching logic

1,282 lines 166 kB
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