{"version":3,"sources":["jsdelivr-header.js","/npm/browserslist-useragent@4.0.0/lib/index.js"],"names":[],"mappings":"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","file":"/npm/browserslist-useragent@4.0.0/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/browserslist-useragent@4.0.0/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeQuery = exports.resolveUserAgent = exports.matchesUA = void 0;\nconst browserslist_1 = __importDefault(require(\"browserslist\"));\nconst semver_1 = __importDefault(require(\"semver\"));\nconst ua_parser_js_1 = __importDefault(require(\"ua-parser-js\"));\n// @see https://github.com/ai/browserslist#browsers\n// map of equivalent browsers,\n// see https://github.com/ai/browserslist/issues/156\nconst browserNameMap = {\n    bb: 'BlackBerry',\n    and_chr: 'Chrome',\n    ChromeAndroid: 'Chrome',\n    FirefoxAndroid: 'Firefox',\n    ff: 'Firefox',\n    ie_mob: 'ExplorerMobile',\n    ie: 'Explorer',\n    and_ff: 'Firefox',\n    ios_saf: 'iOS',\n    op_mini: 'OperaMini',\n    op_mob: 'OperaMobile',\n    and_qq: 'QQAndroid',\n    and_uc: 'UCAndroid',\n};\nfunction resolveUserAgent(uaString) {\n    const parsedUA = (0, ua_parser_js_1.default)(uaString);\n    const parsedBrowserVersion = semverify(parsedUA.browser.version);\n    const parsedOSVersion = semverify(parsedUA.os.version);\n    const parsedEngineVersion = semverify(parsedUA.engine.version);\n    // Case A: For Safari on iOS, the use the browser version\n    if (parsedUA.browser.name === 'Safari' && parsedUA.os.name === 'iOS') {\n        return {\n            family: 'iOS',\n            version: parsedBrowserVersion,\n        };\n    }\n    // Case B: The browser on iOS didn't report as safari,\n    // so we use the iOS version as a proxy to the browser\n    // version. This is based on the assumption that the\n    // underlying Safari Engine used will be *atleast* equal\n    // to the iOS version it's running on.\n    if (parsedUA.os.name === 'iOS') {\n        return {\n            family: 'iOS',\n            version: parsedOSVersion\n        };\n    }\n    if ((parsedUA.browser.name === 'Opera' && parsedUA.device.type === 'mobile') ||\n        parsedUA.browser.name === 'Opera Mobi') {\n        return {\n            family: 'OperaMobile',\n            version: parsedBrowserVersion\n        };\n    }\n    if (parsedUA.browser.name === 'Samsung Browser') {\n        return {\n            family: 'Samsung',\n            version: parsedBrowserVersion\n        };\n    }\n    if (parsedUA.browser.name === 'IE') {\n        return {\n            family: 'Explorer',\n            version: parsedBrowserVersion\n        };\n    }\n    if (parsedUA.browser.name === 'IEMobile') {\n        return {\n            family: 'ExplorerMobile',\n            version: parsedBrowserVersion\n        };\n    }\n    // Use engine version for gecko-based browsers\n    if (parsedUA.engine.name === 'Gecko') {\n        return {\n            family: 'Firefox',\n            version: parsedEngineVersion\n        };\n    }\n    // Use engine version for blink-based browsers\n    if (parsedUA.engine.name === 'Blink') {\n        return {\n            family: 'Chrome',\n            version: parsedEngineVersion\n        };\n    }\n    // Chrome based browsers pre-blink (WebKit)\n    if (parsedUA.browser.name &&\n        ['Chrome', 'Chromium', 'Chrome WebView', 'Chrome Headless'].includes(parsedUA.browser.name)) {\n        return {\n            family: 'Chrome',\n            version: parsedBrowserVersion\n        };\n    }\n    if (parsedUA.browser.name === 'Android Browser') {\n        // Versions prior to Blink were based\n        // on the OS version. Only after this\n        // did android start using system chrome for web-views\n        return {\n            family: 'Android',\n            version: parsedOSVersion\n        };\n    }\n    return {\n        family: parsedUA.browser.name || null,\n        version: parsedBrowserVersion\n    };\n}\nexports.resolveUserAgent = resolveUserAgent;\n// Convert version to a semver value.\n// 2.5 -> 2.5.0; 1 -> 1.0.0;\nconst semverify = (version) => {\n    if (!version) {\n        return null;\n    }\n    const cooerced = semver_1.default.coerce(version, { loose: true });\n    if (!cooerced) {\n        return null;\n    }\n    return cooerced.version;\n};\n// 10.0-10.2 -> 10.0, 10.1, 10.2\nfunction generateSemversInRange(versionRange) {\n    const [start, end] = versionRange.split('-');\n    const startSemver = semverify(start);\n    const endSemver = semverify(end);\n    if (!startSemver || !endSemver) {\n        return [];\n    }\n    const versionsInRange = [];\n    let curVersion = startSemver;\n    while (semver_1.default.gte(endSemver, curVersion)) {\n        versionsInRange.push(curVersion);\n        curVersion = semver_1.default.inc(curVersion, 'minor');\n    }\n    return versionsInRange;\n}\nfunction normalizeQuery(query) {\n    let normalizedQuery = query;\n    const regex = `(${Object.keys(browserNameMap).join('|')})`;\n    const match = query.match(new RegExp(regex));\n    if (match) {\n        normalizedQuery = query.replace(match[0], browserNameMap[match[0]]);\n    }\n    return normalizedQuery;\n}\nexports.normalizeQuery = normalizeQuery;\nconst parseBrowsersList = (browsersList) => {\n    const browsers = browsersList\n        .map((browser) => {\n        const [name, version] = browser.split(' ');\n        return { name, version };\n    })\n        // #38 Filter out non-numerical browser versions\n        .filter((browser) => browser.version !== 'TP')\n        .map((browser) => {\n        let normalizedName = browser.name;\n        let normalizedVersion = browser.version;\n        if (browser.name in browserNameMap) {\n            normalizedName = browserNameMap[browser.name];\n        }\n        // browserslist might return ranges (9.0-9.2), unwrap them\n        // see https://github.com/browserslist/browserslist-useragent/issues/41\n        if (browser.version.indexOf('-') > 0) {\n            return generateSemversInRange(browser.version).map((version) => ({\n                family: normalizedName,\n                version,\n            }));\n        }\n        else {\n            return {\n                family: normalizedName,\n                version: normalizedVersion,\n            };\n        }\n    });\n    return browsers.flat();\n};\nconst compareBrowserSemvers = (versionA, versionB, options) => {\n    const semverifiedA = semverify(versionA);\n    const semverifiedB = semverify(versionB);\n    if (!semverifiedA || !semverifiedB) {\n        return false;\n    }\n    let referenceVersion = semverifiedB;\n    if (options.ignorePatch) {\n        referenceVersion = `~${semverifiedB}`;\n    }\n    if (options.ignoreMinor) {\n        referenceVersion = `^${semverifiedB}`;\n    }\n    if (options.allowHigherVersions) {\n        return semver_1.default.gte(semverifiedA, semverifiedB);\n    }\n    else {\n        return semver_1.default.satisfies(semverifiedA, referenceVersion);\n    }\n};\nconst matchesUA = (uaString, opts = {}) => {\n    // bail out early if the user agent is invalid\n    if (!uaString) {\n        return false;\n    }\n    let normalizedQuery;\n    if (opts.browsers) {\n        normalizedQuery = opts.browsers.map(normalizeQuery);\n    }\n    const browsers = (0, browserslist_1.default)(normalizedQuery, {\n        env: opts.env,\n        path: opts.path || process.cwd(),\n    });\n    const parsedBrowsers = parseBrowsersList(browsers);\n    const resolvedUserAgent = resolveUserAgent(uaString);\n    const options = Object.assign({ ignoreMinor: false, ignorePatch: true }, opts);\n    return parsedBrowsers.some((browser) => {\n        if (!resolvedUserAgent.family)\n            return false;\n        if (!resolvedUserAgent.version)\n            return false;\n        if (!browser.version)\n            return false;\n        return (browser.family.toLowerCase() ===\n            resolvedUserAgent.family.toLocaleLowerCase() &&\n            compareBrowserSemvers(resolvedUserAgent.version, browser.version, options));\n    });\n};\nexports.matchesUA = matchesUA;\n"]}