UNPKG

@modern-js/utils

Version:

A Progressive React Framework for modern web development.

1,169 lines (1,168 loc) • 77.2 kB
(()=>{ var e = { 923: (e)=>{ function BrowserslistError(e) { this.name = "BrowserslistError"; this.message = e; this.browserslist = true; if (Error.captureStackTrace) Error.captureStackTrace(this, BrowserslistError); } BrowserslistError.prototype = Error.prototype; e.exports = BrowserslistError; }, 751: (e, s, r)=>{ var n = r(878); var t = r(768).agents; var a = r(40); var i = r(17); var o = r(476); var l = r(923); var f = r(347); var u = 31558432982.399998; var d = 37; var c = 1; var v = 2; function isVersionsMatch(e, s) { return 0 === (e + ".").indexOf(s + "."); } function isEolReleased(e) { var s = e.slice(1); return browserslist.nodeVersions.some(function(e) { return isVersionsMatch(e, s); }); } function normalize(e) { return e.filter(function(e) { return "string" == typeof e; }); } function normalizeElectron(e) { var s = e; if (3 === e.split(".").length) s = e.split(".").slice(0, -1).join("."); return s; } function nameMapper(e) { return function(s) { return e + " " + s; }; } function getMajor(e) { return parseInt(e.split(".")[0]); } function getMajorVersions(e, s) { if (0 === e.length) return []; var r = uniq(e.map(getMajor)); var n = r[r.length - s]; if (!n) return e; var t = []; for(var a = e.length - 1; a >= 0; a--){ if (n > getMajor(e[a])) break; t.unshift(e[a]); } return t; } function uniq(e) { var s = []; for(var r = 0; r < e.length; r++)if (-1 === s.indexOf(e[r])) s.push(e[r]); return s; } function fillUsage(e, s, r) { for(var n in r)e[s + " " + n] = r[n]; } function generateFilter(e, s) { s = parseFloat(s); if (">" === e) return function(e) { return parseFloat(e) > s; }; if (">=" === e) return function(e) { return parseFloat(e) >= s; }; if ("<" === e) return function(e) { return parseFloat(e) < s; }; return function(e) { return parseFloat(e) <= s; }; } function generateSemverFilter(e, s) { s = s.split(".").map(parseSimpleInt); s[1] = s[1] || 0; s[2] = s[2] || 0; if (">" === e) return function(e) { e = e.split(".").map(parseSimpleInt); return compareSemver(e, s) > 0; }; if (">=" === e) return function(e) { e = e.split(".").map(parseSimpleInt); return compareSemver(e, s) >= 0; }; if ("<" === e) return function(e) { e = e.split(".").map(parseSimpleInt); return compareSemver(s, e) > 0; }; return function(e) { e = e.split(".").map(parseSimpleInt); return compareSemver(s, e) >= 0; }; } function parseSimpleInt(e) { return parseInt(e); } function compare(e, s) { if (e < s) return -1; if (e > s) return 1; return 0; } function compareSemver(e, s) { return compare(parseInt(e[0]), parseInt(s[0])) || compare(parseInt(e[1] || "0"), parseInt(s[1] || "0")) || compare(parseInt(e[2] || "0"), parseInt(s[2] || "0")); } function semverFilterLoose(e, s) { s = s.split(".").map(parseSimpleInt); if (void 0 === s[1]) s[1] = "x"; switch(e){ case "<=": return function(e) { e = e.split(".").map(parseSimpleInt); return compareSemverLoose(e, s) <= 0; }; case ">=": default: return function(e) { e = e.split(".").map(parseSimpleInt); return compareSemverLoose(e, s) >= 0; }; } } function compareSemverLoose(e, s) { if (e[0] !== s[0]) return e[0] < s[0] ? -1 : 1; if ("x" === s[1]) return 0; if (e[1] !== s[1]) return e[1] < s[1] ? -1 : 1; return 0; } function resolveVersion(e, s) { if (-1 !== e.versions.indexOf(s)) return s; if (browserslist.versionAliases[e.name][s]) return browserslist.versionAliases[e.name][s]; return false; } function normalizeVersion(e, s) { var r = resolveVersion(e, s); if (r) return r; if (1 === e.versions.length) return e.versions[0]; return false; } function filterByYear(e, s) { e /= 1e3; return Object.keys(t).reduce(function(r, n) { var t = byName(n, s); if (!t) return r; var a = Object.keys(t.releaseDate).filter(function(s) { var r = t.releaseDate[s]; return null !== r && r >= e; }); return r.concat(a.map(nameMapper(t.name))); }, []); } function cloneData(e) { return { name: e.name, versions: e.versions, released: e.released, releaseDate: e.releaseDate }; } function mapVersions(e, s) { e.versions = e.versions.map(function(e) { return s[e] || e; }); e.released = e.versions.map(function(e) { return s[e] || e; }); var r = {}; for(var n in e.releaseDate)r[s[n] || n] = e.releaseDate[n]; e.releaseDate = r; return e; } function byName(e, s) { e = e.toLowerCase(); e = browserslist.aliases[e] || e; if (s.mobileToDesktop && browserslist.desktopNames[e]) { var r = browserslist.data[browserslist.desktopNames[e]]; if ("android" === e) return normalizeAndroidData(cloneData(browserslist.data[e]), r); var n = cloneData(r); n.name = e; if ("op_mob" === e) n = mapVersions(n, { "10.0-10.1": "10" }); return n; } return browserslist.data[e]; } function normalizeAndroidVersions(e, s) { var r = d; var n = s[s.length - 1]; return e.filter(function(e) { return /^(?:[2-4]\.|[34]$)/.test(e); }).concat(s.slice(r - n - 1)); } function normalizeAndroidData(e, s) { e.released = normalizeAndroidVersions(e.released, s.released); e.versions = normalizeAndroidVersions(e.versions, s.versions); return e; } function checkName(e, s) { var r = byName(e, s); if (!r) throw new l("Unknown browser " + e); return r; } function unknownQuery(e) { return new l("Unknown browser query `" + e + "`. Maybe you are using old Browserslist or made typo in query."); } function filterAndroid(e, s, r) { if (r.mobileToDesktop) return e; var n = browserslist.data.android.released; var t = n[n.length - 1]; var a = t - d - s; if (a > 0) return e.slice(-1); return e.slice(a - 1); } function resolve(e, s) { e = Array.isArray(e) ? flatten(e.map(parse)) : parse(e); return e.reduce(function(e, r, n) { var t = r.queryString; var a = 0 === t.indexOf("not "); if (a) { if (0 === n) throw new l("Write any browsers query (for instance, `defaults`) before `" + t + "`"); t = t.slice(4); } for(var i = 0; i < p.length; i++){ var o = p[i]; var f = t.match(o.regexp); if (f) { var u = [ s ].concat(f.slice(1)); var d = o.select.apply(browserslist, u).map(function(e) { var r = e.split(" "); if ("0" === r[1]) return r[0] + " " + byName(r[0], s).versions[0]; return e; }); switch(r.type){ case v: if (a) return e.filter(function(e) { return -1 === d.indexOf(e); }); return e.filter(function(e) { return -1 !== d.indexOf(e); }); case c: default: if (a) { var m = {}; d.forEach(function(e) { m[e] = true; }); return e.filter(function(e) { return !m[e]; }); } return e.concat(d); } } } throw unknownQuery(t); }, []); } var m = {}; function browserslist(e, s) { if (void 0 === s) s = {}; if (void 0 === s.path) s.path = i.resolve ? i.resolve(".") : "."; if (null == e) { var r = browserslist.loadConfig(s); e = r ? r : browserslist.defaults; } if (!("string" == typeof e || Array.isArray(e))) throw new l("Browser queries must be an array or string. Got " + typeof e + "."); var n = { ignoreUnknownVersions: s.ignoreUnknownVersions, dangerousExtend: s.dangerousExtend, mobileToDesktop: s.mobileToDesktop, path: s.path, env: s.env }; f.oldDataWarning(browserslist.data); var t = f.getStat(s, browserslist.data); if (t) { n.customUsage = {}; for(var a in t)fillUsage(n.customUsage, a, t[a]); } var o = JSON.stringify([ e, n ]); if (m[o]) return m[o]; var u = uniq(resolve(e, n)).sort(function(e, s) { e = e.split(" "); s = s.split(" "); if (e[0] !== s[0]) return compare(e[0], s[0]); var r = e[1].split("-")[0]; var n = s[1].split("-")[0]; return compareSemver(n.split("."), r.split(".")); }); if (!process.env.BROWSERSLIST_DISABLE_CACHE) m[o] = u; return u; } function parse(e) { var s = []; do e = doMatch(e, s); while (e); return s; } function doMatch(e, s) { var r = /^(?:,\s*|\s+or\s+)(.*)/i; var n = /^\s+and\s+(.*)/i; return find(e, function(e, t, a) { if (n.test(e)) { s.unshift({ type: v, queryString: e.match(n)[1] }); return true; } if (r.test(e)) { s.unshift({ type: c, queryString: e.match(r)[1] }); return true; } if (t === a) { s.unshift({ type: c, queryString: e.trim() }); return true; } return false; }); } function find(e, s) { for(var r = 1, n = e.length; r <= n; r++){ var t = e.substr(-r, r); if (s(t, r, n)) return e.slice(0, -r); } return ""; } function flatten(e) { if (!Array.isArray(e)) return [ e ]; return e.reduce(function(e, s) { return e.concat(flatten(s)); }, []); } browserslist.cache = {}; browserslist.data = {}; browserslist.usage = { global: {}, custom: null }; browserslist.defaults = [ "> 0.5%", "last 2 versions", "Firefox ESR", "not dead" ]; browserslist.aliases = { fx: "firefox", ff: "firefox", ios: "ios_saf", explorer: "ie", blackberry: "bb", explorermobile: "ie_mob", operamini: "op_mini", operamobile: "op_mob", chromeandroid: "and_chr", firefoxandroid: "and_ff", ucandroid: "and_uc", qqandroid: "and_qq" }; browserslist.desktopNames = { and_chr: "chrome", and_ff: "firefox", ie_mob: "ie", op_mob: "opera", android: "chrome" }; browserslist.versionAliases = {}; browserslist.clearCaches = f.clearCaches; browserslist.parseConfig = f.parseConfig; browserslist.readConfig = f.readConfig; browserslist.findConfig = f.findConfig; browserslist.loadConfig = f.loadConfig; browserslist.coverage = function(e, s) { var r; if (void 0 === s) r = browserslist.usage.global; else if ("my stats" === s) { var n = {}; n.path = i.resolve ? i.resolve(".") : "."; var t = f.getStat(n); if (!t) throw new l("Custom usage statistics was not provided"); r = {}; for(var a in t)fillUsage(r, a, t[a]); } else if ("string" == typeof s) { s = s.length > 2 ? s.toLowerCase() : s.toUpperCase(); f.loadCountry(browserslist.usage, s, browserslist.data); r = browserslist.usage[s]; } else { if ("dataByBrowser" in s) s = s.dataByBrowser; r = {}; for(var o in s)for(var u in s[o])r[o + " " + u] = s[o][u]; } return e.reduce(function(e, s) { var n = r[s]; if (void 0 === n) n = r[s.replace(/ \S+$/, " 0")]; return e + (n || 0); }, 0); }; function nodeQuery(e, s) { var r = browserslist.nodeVersions.filter(function(e) { return isVersionsMatch(e, s); }); if (0 === r.length) if (e.ignoreUnknownVersions) return []; else throw new l("Unknown version " + s + " of Node.js"); return [ "node " + r[r.length - 1] ]; } function sinceQuery(e, s, r, n) { s = parseInt(s); r = parseInt(r || "01") - 1; n = parseInt(n || "01"); return filterByYear(Date.UTC(s, r, n, 0, 0, 0), e); } function coverQuery(e, s, r) { s = parseFloat(s); var n = browserslist.usage.global; if (r) if (r.match(/^my\s+stats$/i)) { if (!e.customUsage) throw new l("Custom usage statistics was not provided"); n = e.customUsage; } else { var t; t = 2 === r.length ? r.toUpperCase() : r.toLowerCase(); f.loadCountry(browserslist.usage, t, browserslist.data); n = browserslist.usage[t]; } var a = Object.keys(n).sort(function(e, s) { return n[s] - n[e]; }); var i = 0; var o = []; var u; for(var d = 0; d < a.length; d++){ u = a[d]; if (0 === n[u]) break; i += n[u]; o.push(u); if (i >= s) break; } return o; } var p = [ { regexp: /^last\s+(\d+)\s+major\s+versions?$/i, select: function(e, s) { return Object.keys(t).reduce(function(r, n) { var t = byName(n, e); if (!t) return r; var a = getMajorVersions(t.released, s); a = a.map(nameMapper(t.name)); if ("android" === t.name) a = filterAndroid(a, s, e); return r.concat(a); }, []); } }, { regexp: /^last\s+(\d+)\s+versions?$/i, select: function(e, s) { return Object.keys(t).reduce(function(r, n) { var t = byName(n, e); if (!t) return r; var a = t.released.slice(-s); a = a.map(nameMapper(t.name)); if ("android" === t.name) a = filterAndroid(a, s, e); return r.concat(a); }, []); } }, { regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i, select: function(e, s) { var r = getMajorVersions(Object.keys(o), s); return r.map(function(e) { return "chrome " + o[e]; }); } }, { regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i, select: function(e, s) { return getMajorVersions(browserslist.nodeVersions, s).map(function(e) { return "node " + e; }); } }, { regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i, select: function(e, s, r) { var n = checkName(r, e); var t = getMajorVersions(n.released, s); var a = t.map(nameMapper(n.name)); if ("android" === n.name) a = filterAndroid(a, s, e); return a; } }, { regexp: /^last\s+(\d+)\s+electron\s+versions?$/i, select: function(e, s) { return Object.keys(o).slice(-s).map(function(e) { return "chrome " + o[e]; }); } }, { regexp: /^last\s+(\d+)\s+node\s+versions?$/i, select: function(e, s) { return browserslist.nodeVersions.slice(-s).map(function(e) { return "node " + e; }); } }, { regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i, select: function(e, s, r) { var n = checkName(r, e); var t = n.released.slice(-s).map(nameMapper(n.name)); if ("android" === n.name) t = filterAndroid(t, s, e); return t; } }, { regexp: /^unreleased\s+versions$/i, select: function(e) { return Object.keys(t).reduce(function(s, r) { var n = byName(r, e); if (!n) return s; var t = n.versions.filter(function(e) { return -1 === n.released.indexOf(e); }); t = t.map(nameMapper(n.name)); return s.concat(t); }, []); } }, { regexp: /^unreleased\s+electron\s+versions?$/i, select: function() { return []; } }, { regexp: /^unreleased\s+(\w+)\s+versions?$/i, select: function(e, s) { var r = checkName(s, e); return r.versions.filter(function(e) { return -1 === r.released.indexOf(e); }).map(nameMapper(r.name)); } }, { regexp: /^last\s+(\d*.?\d+)\s+years?$/i, select: function(e, s) { return filterByYear(Date.now() - u * s, e); } }, { regexp: /^since (\d+)$/i, select: sinceQuery }, { regexp: /^since (\d+)-(\d+)$/i, select: sinceQuery }, { regexp: /^since (\d+)-(\d+)-(\d+)$/i, select: sinceQuery }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/, select: function(e, s, r) { r = parseFloat(r); var n = browserslist.usage.global; return Object.keys(n).reduce(function(e, t) { if (">" === s) { if (n[t] > r) e.push(t); } else if ("<" === s) { if (n[t] < r) e.push(t); } else if ("<=" === s) { if (n[t] <= r) e.push(t); } else if (n[t] >= r) e.push(t); return e; }, []); } }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/, select: function(e, s, r) { r = parseFloat(r); if (!e.customUsage) throw new l("Custom usage statistics was not provided"); var n = e.customUsage; return Object.keys(n).reduce(function(e, t) { var a = n[t]; if (null == a) return e; if (">" === s) { if (a > r) e.push(t); } else if ("<" === s) { if (a < r) e.push(t); } else if ("<=" === s) { if (a <= r) e.push(t); } else if (a >= r) e.push(t); return e; }, []); } }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/, select: function(e, s, r, n) { r = parseFloat(r); var t = f.loadStat(e, n, browserslist.data); if (t) { e.customUsage = {}; for(var a in t)fillUsage(e.customUsage, a, t[a]); } if (!e.customUsage) throw new l("Custom usage statistics was not provided"); var i = e.customUsage; return Object.keys(i).reduce(function(e, n) { var t = i[n]; if (null == t) return e; if (">" === s) { if (t > r) e.push(n); } else if ("<" === s) { if (t < r) e.push(n); } else if ("<=" === s) { if (t <= r) e.push(n); } else if (t >= r) e.push(n); return e; }, []); } }, { regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/, select: function(e, s, r, n) { r = parseFloat(r); n = 2 === n.length ? n.toUpperCase() : n.toLowerCase(); f.loadCountry(browserslist.usage, n, browserslist.data); var t = browserslist.usage[n]; return Object.keys(t).reduce(function(e, n) { var a = t[n]; if (null == a) return e; if (">" === s) { if (a > r) e.push(n); } else if ("<" === s) { if (a < r) e.push(n); } else if ("<=" === s) { if (a <= r) e.push(n); } else if (a >= r) e.push(n); return e; }, []); } }, { regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i, select: coverQuery }, { regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i, select: coverQuery }, { regexp: /^supports\s+([\w-]+)$/, select: function(e, s) { f.loadFeature(browserslist.cache, s); var r = browserslist.cache[s]; return Object.keys(r).reduce(function(e, s) { var n = r[s]; if (n.indexOf("y") >= 0 || n.indexOf("a") >= 0) e.push(s); return e; }, []); } }, { regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i, select: function(e, s, r) { var n = normalizeElectron(s); var t = normalizeElectron(r); if (!o[n]) throw new l("Unknown version " + s + " of electron"); if (!o[t]) throw new l("Unknown version " + r + " of electron"); s = parseFloat(s); r = parseFloat(r); return Object.keys(o).filter(function(e) { var n = parseFloat(e); return n >= s && n <= r; }).map(function(e) { return "chrome " + o[e]; }); } }, { regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i, select: function(e, s, r) { return browserslist.nodeVersions.filter(semverFilterLoose(">=", s)).filter(semverFilterLoose("<=", r)).map(function(e) { return "node " + e; }); } }, { regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i, select: function(e, s, r, n) { var t = checkName(s, e); r = parseFloat(normalizeVersion(t, r) || r); n = parseFloat(normalizeVersion(t, n) || n); function filter(e) { var s = parseFloat(e); return s >= r && s <= n; } return t.released.filter(filter).map(nameMapper(t.name)); } }, { regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i, select: function(e, s, r) { var n = normalizeElectron(r); return Object.keys(o).filter(generateFilter(s, n)).map(function(e) { return "chrome " + o[e]; }); } }, { regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i, select: function(e, s, r) { return browserslist.nodeVersions.filter(generateSemverFilter(s, r)).map(function(e) { return "node " + e; }); } }, { regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/, select: function(e, s, r, n) { var t = checkName(s, e); var a = browserslist.versionAliases[t.name][n]; if (a) n = a; return t.released.filter(generateFilter(r, n)).map(function(e) { return t.name + " " + e; }); } }, { regexp: /^(firefox|ff|fx)\s+esr$/i, select: function() { return [ "firefox 91" ]; } }, { regexp: /(operamini|op_mini)\s+all/i, select: function() { return [ "op_mini all" ]; } }, { regexp: /^electron\s+([\d.]+)$/i, select: function(e, s) { var r = normalizeElectron(s); var n = o[r]; if (!n) throw new l("Unknown version " + s + " of electron"); return [ "chrome " + n ]; } }, { regexp: /^node\s+(\d+)$/i, select: nodeQuery }, { regexp: /^node\s+(\d+\.\d+)$/i, select: nodeQuery }, { regexp: /^node\s+(\d+\.\d+\.\d+)$/i, select: nodeQuery }, { regexp: /^current\s+node$/i, select: function(e) { return [ f.currentNode(resolve, e) ]; } }, { regexp: /^maintained\s+node\s+versions$/i, select: function(e) { var s = Date.now(); var r = Object.keys(a).filter(function(e) { return s < Date.parse(a[e].end) && s > Date.parse(a[e].start) && isEolReleased(e); }).map(function(e) { return "node " + e.slice(1); }); return resolve(r, e); } }, { regexp: /^phantomjs\s+1.9$/i, select: function() { return [ "safari 5" ]; } }, { regexp: /^phantomjs\s+2.1$/i, select: function() { return [ "safari 6" ]; } }, { regexp: /^(\w+)\s+(tp|[\d.]+)$/i, select: function(e, s, r) { if (/^tp$/i.test(r)) r = "TP"; var n = checkName(s, e); var t = normalizeVersion(n, r); if (t) r = t; else { t = -1 === r.indexOf(".") ? r + ".0" : r.replace(/\.0$/, ""); t = normalizeVersion(n, t); if (t) r = t; else if (e.ignoreUnknownVersions) return []; else throw new l("Unknown version " + r + " of " + s); } return [ n.name + " " + r ]; } }, { regexp: /^browserslist config$/i, select: function(e) { return browserslist(void 0, e); } }, { regexp: /^extends (.+)$/i, select: function(e, s) { return resolve(f.loadQueries(e, s), e); } }, { regexp: /^defaults$/i, select: function(e) { return resolve(browserslist.defaults, e); } }, { regexp: /^dead$/i, select: function(e) { var s = [ "ie <= 10", "ie_mob <= 11", "bb <= 10", "op_mob <= 12.1", "samsung 4" ]; return resolve(s, e); } }, { regexp: /^(\w+)$/i, select: function(e, s) { if (byName(s, e)) throw new l("Specify versions in Browserslist query for browser " + s); throw unknownQuery(s); } } ]; (function() { for(var e in t){ var s = t[e]; browserslist.data[e] = { name: e, versions: normalize(t[e].versions), released: normalize(t[e].versions.slice(0, -3)), releaseDate: t[e].release_date }; fillUsage(browserslist.usage.global, e, s.usage_global); browserslist.versionAliases[e] = {}; for(var r = 0; r < s.versions.length; r++){ var a = s.versions[r]; if (a) { if (-1 !== a.indexOf("-")) { var i = a.split("-"); for(var o = 0; o < i.length; o++)browserslist.versionAliases[e][i[o]] = a; } } } } browserslist.versionAliases.op_mob["59"] = "58"; browserslist.nodeVersions = n.map(function(e) { return e.version; }); })(); e.exports = browserslist; }, 347: (e, s, r)=>{ var n = r(711)["default"]; var t = r(225)["default"]; var a = r(17); var i = r(147); var o = r(923); var l = /^\s*\[(.+)]\s*$/; var f = /^browserslist-config-/; var u = /@[^/]+\/browserslist-config(-|$|\/)/; var d = 15552000000; var c = "Browserslist config should be a string or an array of strings with browser queries"; var v = false; var m = {}; var p = {}; function checkExtend(e) { var s = " Use `dangerousExtend` option to disable."; if (!f.test(e) && !u.test(e)) throw new o("Browserslist config needs `browserslist-config-` prefix. " + s); if (-1 !== e.replace(/^@[^/]+\//, "").indexOf(".")) throw new o("`.` not allowed in Browserslist config name. " + s); if (-1 !== e.indexOf("node_modules")) throw new o("`node_modules` not allowed in Browserslist config." + s); } function isFile(e) { if (e in m) return m[e]; var s = i.existsSync(e) && i.statSync(e).isFile(); if (!process.env.BROWSERSLIST_DISABLE_CACHE) m[e] = s; return s; } function eachParent(e, s) { var r = isFile(e) ? a.dirname(e) : e; var n = a.resolve(r); do { var t = s(n); if (void 0 !== t) return t; }while (n !== (n = a.dirname(n))); } function check(e) { if (Array.isArray(e)) { for(var s = 0; s < e.length; s++)if ("string" != typeof e[s]) throw new o(c); } else if ("string" != typeof e) throw new o(c); } function pickEnv(e, s) { if ("object" != typeof e) return e; var r; r = "string" == typeof s.env ? s.env : process.env.BROWSERSLIST_ENV ? process.env.BROWSERSLIST_ENV : process.env.NODE_ENV ? process.env.NODE_ENV : "production"; if (s.throwOnMissing) { if (r && "defaults" !== r && !e[r]) throw new o("Missing config for Browserslist environment `" + r + "`"); } return e[r] || e.defaults; } function parsePackage(e) { var s = JSON.parse(i.readFileSync(e)); if (s.browserlist && !s.browserslist) throw new o("`browserlist` key instead of `browserslist` in " + e); var r = s.browserslist; if (Array.isArray(r) || "string" == typeof r) r = { defaults: r }; for(var n in r)check(r[n]); return r; } function latestReleaseTime(e) { var s = 0; for(var r in e){ var n = e[r].releaseDate || {}; for(var t in n)if (s < n[t]) s = n[t]; } return 1e3 * s; } function normalizeStats(e, s) { if (!e) e = {}; if (s && "dataByBrowser" in s) s = s.dataByBrowser; if ("object" != typeof s) return; var r = {}; for(var n in s){ var t = Object.keys(s[n]); if (1 === t.length && e[n] && 1 === e[n].versions.length) { var a = e[n].versions[0]; r[n] = {}; r[n][a] = s[n][t[0]]; } else r[n] = s[n]; } return r; } function normalizeUsageData(e, s) { for(var r in e){ var n = e[r]; if ("0" in n) { var t = s[r].versions; n[t[t.length - 1]] = n[0]; delete n[0]; } } } e.exports = { loadQueries: function(e, s) { if (!e.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) checkExtend(s); var n = require(r(174).resolve(s, { paths: [ ".", e.path ] })); if (n) { if (Array.isArray(n)) return n; else if ("object" == typeof n) { if (!n.defaults) n.defaults = []; return pickEnv(n, e); } } throw new o("`" + s + "` config exports not an array of queries or an object of envs"); }, loadStat: function(e, s, n) { if (!e.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) checkExtend(s); var t = require(r(174).resolve(a.join(s, "browserslist-stats.json"), { paths: [ "." ] })); return normalizeStats(n, t); }, getStat: function(e, s) { var r; if (e.stats) r = e.stats; else if (process.env.BROWSERSLIST_STATS) r = process.env.BROWSERSLIST_STATS; else if (e.path && a.resolve && i.existsSync) r = eachParent(e.path, function(e) { var s = a.join(e, "browserslist-stats.json"); return isFile(s) ? s : void 0; }); if ("string" == typeof r) try { r = JSON.parse(i.readFileSync(r)); } catch (e) { throw new o("Can't read " + r); } return normalizeStats(s, r); }, loadConfig: function(s) { if (process.env.BROWSERSLIST) return process.env.BROWSERSLIST; if (s.config || process.env.BROWSERSLIST_CONFIG) { var r = s.config || process.env.BROWSERSLIST_CONFIG; if ("package.json" === a.basename(r)) return pickEnv(parsePackage(r), s); return pickEnv(e.exports.readConfig(r), s); } if (s.path) return pickEnv(e.exports.findConfig(s.path), s); }, loadCountry: function(e, s, r) { var n = s.replace(/[^\w-]/g, ""); if (!e[n]) { var a = require("caniuse-lite/data/regions/" + n + ".js"); var i = t(a); normalizeUsageData(i, r); e[s] = {}; for(var o in i)for(var l in i[o])e[s][o + " " + l] = i[o][l]; } }, loadFeature: function(e, s) { s = s.replace(/[^\w-]/g, ""); if (e[s]) return; var r = require("caniuse-lite/data/features/" + s + ".js"); var t = n(r).stats; e[s] = {}; for(var a in t)for(var i in t[a])e[s][a + " " + i] = t[a][i]; }, parseConfig: function(e) { var s = { defaults: [] }; var r = [ "defaults" ]; e.toString().replace(/#[^\n]*/g, "").split(/\n|,/).map(function(e) { return e.trim(); }).filter(function(e) { return "" !== e; }).forEach(function(e) { if (l.test(e)) { r = e.match(l)[1].trim().split(" "); r.forEach(function(e) { if (s[e]) throw new o("Duplicate section " + e + " in Browserslist config"); s[e] = []; }); } else r.forEach(function(r) { s[r].push(e); }); }); return s; }, readConfig: function(s) { if (!isFile(s)) throw new o("Can't read " + s + " config"); return e.exports.parseConfig(i.readFileSync(s)); }, findConfig: function(s) { s = a.resolve(s); var r = []; var n = eachParent(s, function(s) { if (s in p) return p[s]; r.push(s); var n = a.join(s, "browserslist"); var t = a.join(s, "package.json"); var i = a.join(s, ".browserslistrc"); var l; if (isFile(t)) try { l = parsePackage(t); } catch (e) { if ("BrowserslistError" === e.name) throw e; console.warn("[Browserslist] Could not parse " + t + ". Ignoring it."); } if (isFile(n) && l) throw new o(s + " contains both browserslist and package.json with browsers"); if (isFile(i) && l) throw new o(s + " contains both .browserslistrc and package.json with browsers"); if (isFile(n) && isFile(i)) throw new o(s + " contains both .browserslistrc and browserslist"); if (isFile(n)) return e.exports.readConfig(n); if (isFile(i)) return e.exports.readConfig(i); else return l; }); if (!process.env.BROWSERSLIST_DISABLE_CACHE) r.forEach(function(e) { p[e] = n; }); return n; }, clearCaches: function() { v = false; m = {}; p = {}; this.cache = {}; }, oldDataWarning: function(e) { if (v) return; v = true; if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return; var s = latestReleaseTime(e); var r = Date.now() - d; if (0 !== s && s < r) console.warn("Browserslist: caniuse-lite is outdated. Please run:\n npx browserslist@latest --update-db\n Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating"); }, currentNode: function() { return "node " + process.versions.node; } }; }, 476: (e)=>{ e.exports = { "0.20": "39", .21: "41", .22: "41", .23: "41", .24: "41", .25: "42", .26: "42",