UNPKG

snyk-policy

Version:

Snyk's policy parser and matching logic

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