{"version":3,"file":"index.cjs","sources":["../../src/browserslist-generator/ensure-semver.ts","../../src/browserslist-generator/compare-versions.ts","../../src/browserslist-generator/normalize-browser-version-regexp.ts","../../src/browserslist-generator/browser-version.ts","../../src/browserslist-generator/constant.ts","../../src/browserslist-generator/ecma-version.ts","../../src/browserslist-generator/range-correction.ts","../../src/browserslist-generator/i-caniuse.ts","../../src/browserslist-generator/ua-parser-wrapper.ts","../../src/browserslist-generator/browserslist-generator.ts"],"sourcesContent":["import type {SemVer} from \"semver\";\nimport {coerce as _coerce} from \"semver\";\nimport {SAFARI_TP_MAJOR_VERSION} from \"./browser-version.js\";\nimport type {CaniuseBrowser} from \"./i-caniuse.js\";\n\n/**\n * Coerces the given version\n */\nexport function ensureSemver(browser: CaniuseBrowser | undefined, version: string): SemVer {\n\tif ((browser === \"op_mini\" || browser === \"android\") && version === \"all\") {\n\t\treturn _coerce(\"0.0.0\")!;\n\t} else if (browser === \"safari\" && version === \"TP\") {\n\t\treturn SAFARI_TP_MAJOR_VERSION;\n\t}\n\n\treturn _coerce(version, {loose: true})!;\n}\n\n/**\n * Coerces the given version\n */\nexport function coerceToString(browser: CaniuseBrowser, version: string): string {\n\treturn ensureSemver(browser, version).toString();\n}\n","/**\n * Compares two versions, a and b\n */\nexport function compareVersions(a: string, b: string): number {\n\tconst normalizedA = isNaN(parseFloat(a)) ? a : parseFloat(a);\n\tconst normalizedB = isNaN(parseFloat(b)) ? b : parseFloat(b);\n\n\tif (typeof normalizedA === \"string\" && typeof normalizedB !== \"string\") {\n\t\treturn 1;\n\t}\n\n\tif (typeof normalizedB === \"string\" && typeof normalizedA !== \"string\") {\n\t\treturn -1;\n\t}\n\n\tif (normalizedA < normalizedB) return -1;\n\tif (normalizedA > normalizedB) return 1;\n\treturn 0;\n}\n","/**\n * A Regular Expression that captures the part of a browser version that should be kept\n */\nexport const NORMALIZE_BROWSER_VERSION_REGEXP = /(?![\\d.,]+-)-*(.*)/;\n","import Browserslist from \"browserslist\";\nimport {coerce as _coerce, gt, gte, lt} from \"semver\";\nimport {ensureSemver} from \"./ensure-semver.js\";\nimport {compareVersions} from \"./compare-versions.js\";\nimport type {CaniuseBrowser} from \"./i-caniuse.js\";\nimport {NORMALIZE_BROWSER_VERSION_REGEXP} from \"./normalize-browser-version-regexp.js\";\n\nexport const SAFARI_TP_MAJOR_VERSION = (() => {\n\tconst versions = getSortedBrowserVersions(\"safari\");\n\tconst lastVersionBeforeTp = versions[versions.length - 2];\n\tconst coerced = _coerce(lastVersionBeforeTp)!;\n\tif (coerced.minor === 9) {\n\t\treturn _coerce(coerced.major + 1)!;\n\t} else {\n\t\treturn _coerce(`${coerced.major}.${coerced.minor + 1}.0`)!;\n\t}\n})();\n\n/**\n * Ensures that for any given version of a browser, if it is newer than the latest known version, the last known version will be used as a fallback\n */\nexport function normalizeBrowserVersion(browser: CaniuseBrowser, givenVersion: string, versions: string[] = getSortedBrowserVersions(browser), allowSmaller = false): string {\n\tconst givenVersionCoerced = ensureSemver(browser, givenVersion);\n\tconst latestVersion = getLatestVersionOfBrowser(browser);\n\tconst latestVersionCoerced = ensureSemver(browser, latestVersion);\n\n\tif (givenVersionCoerced == null || latestVersionCoerced == null) {\n\t\tthrow new TypeError(`Could not detect the version of: '${givenVersion}' for browser: ${browser}`);\n\t}\n\n\tif (\n\t\tgivenVersionCoerced.major > latestVersionCoerced.major ||\n\t\t(givenVersionCoerced.major === latestVersionCoerced.major && givenVersionCoerced.minor > latestVersionCoerced.minor) ||\n\t\t(givenVersionCoerced.major === latestVersionCoerced.major && givenVersionCoerced.minor === latestVersionCoerced.minor && givenVersionCoerced.patch > latestVersionCoerced.patch)\n\t) {\n\t\treturn latestVersion;\n\t}\n\n\tconst closestMatch = getClosestMatchingBrowserVersion(browser, givenVersion, versions);\n\n\t// Allow smaller, but not larger browser versions than the known ones\n\tif (allowSmaller && lt(givenVersionCoerced, ensureSemver(browser, closestMatch), {loose: true})) {\n\t\treturn givenVersion;\n\t}\n\n\treturn closestMatch;\n}\n\n/**\n * Gets the known version of the given browser that is closest to the given version\n */\nexport function getClosestMatchingBrowserVersion(browser: CaniuseBrowser, version: string, versions: string[] = getSortedBrowserVersions(browser)): string {\n\tconst coerced = ensureSemver(browser, version);\n\n\tif (browser === \"op_mini\" && version === \"all\") return \"all\";\n\tif (browser === \"safari\") {\n\t\tif (version === \"TP\") return \"TP\";\n\t\t// If the given version is greater than or equal to the latest non-technical preview version of Safari, the closest match IS TP.\n\t\telse if (gt(ensureSemver(browser, `${coerced.major}.${coerced.minor}`), ensureSemver(browser, versions.slice(-2)[0]))) return \"TP\";\n\t}\n\n\tlet candidate = versions[0];\n\n\tversions.forEach(currentVersion => {\n\t\tconst currentCoerced = ensureSemver(browser, currentVersion);\n\t\tif (gte(coerced, currentCoerced)) {\n\t\t\tcandidate = currentVersion;\n\t\t}\n\t});\n\n\treturn candidate;\n}\n\nexport function getSortedBrowserVersionsWithLeadingVersion(browser: CaniuseBrowser, inputVersion?: string): string[] {\n\tconst versions: string[] = getSortedBrowserVersions(browser);\n\tconst [firstVersion] = versions;\n\n\tif (firstVersion != null && inputVersion != null) {\n\t\tconst firstVersionSemver = ensureSemver(browser, firstVersion);\n\t\tlet nextInputVersion = inputVersion;\n\t\twhile (true) {\n\t\t\tconst nextInputSemver = ensureSemver(browser, nextInputVersion);\n\t\t\tif (gt(firstVersionSemver, nextInputSemver)) {\n\t\t\t\tversions.unshift(nextInputVersion);\n\t\t\t\tnextInputVersion = String(nextInputSemver.major + 1);\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn versions;\n}\n\n/**\n * Gets all versions of the given browser, sorted\n */\nexport function getSortedBrowserVersions(browser: CaniuseBrowser): string[] {\n\t// Generate the Browserslist query\n\tconst queryResult: string[] = Browserslist([`>= 0%`, `unreleased versions`]);\n\tconst versions: string[] = [];\n\n\t// First, organize the different versions of the browsers inside the Map\n\tqueryResult.forEach(part => {\n\t\tconst [currentBrowser, version] = part.split(\" \") as [CaniuseBrowser, string];\n\t\tif (currentBrowser !== browser) return;\n\n\t\tconst versionMatch = version.match(NORMALIZE_BROWSER_VERSION_REGEXP);\n\t\tconst normalizedVersion = versionMatch == null ? version : versionMatch[1];\n\n\t\tversions.push(normalizedVersion);\n\t});\n\n\treturn versions.sort(compareVersions);\n}\n\n/**\n * Gets the latest version of the given browser\n */\nexport function getLatestVersionOfBrowser(browser: CaniuseBrowser): string {\n\tconst versions = getSortedBrowserVersions(browser);\n\treturn versions[versions.length - 1];\n}\n\n/**\n * Gets the oldest (stable) version of the given browser\n */\nexport function getOldestVersionOfBrowser(browser: CaniuseBrowser): string {\n\tconst versions = getSortedBrowserVersions(browser);\n\treturn versions[0];\n}\n\n/**\n * Gets the previous version of the given browser from the given version\n */\nexport function getPreviousVersionOfBrowser(browser: CaniuseBrowser, version: string): string | undefined {\n\tconst versions = getSortedBrowserVersions(browser);\n\tconst indexOfVersion = versions.indexOf(normalizeBrowserVersion(browser, version, versions));\n\t// If the version isn't included, or if it is the first version of it, return undefined\n\tif (indexOfVersion <= 0) return undefined;\n\treturn versions[indexOfVersion - 1];\n}\n\n/**\n * Gets the previous version of the given browser from the given version\n */\nexport function getNextVersionOfBrowser(browser: CaniuseBrowser, version: string): string | undefined {\n\tconst versions = getSortedBrowserVersions(browser);\n\tconst indexOfVersion = versions.indexOf(normalizeBrowserVersion(browser, version, versions));\n\t// If the version isn't included, or if it is the first version of it, return undefined\n\tif (indexOfVersion <= 0) return undefined;\n\treturn versions[indexOfVersion + 1];\n}\n","/**\n * Caniuse has only a limited set of supported browsers.\n * There are cases where there is simply no way to guess\n * a browser based on a User Agent, and in these cases\n * this can be used as a fallback.\n * Chrome is the world's most used browser, and as an evergreen\n * browser, it is commonly the newest version. But to be safe\n * This fallback browser is placed a bit in the past\n */\nexport const UNKNOWN_CANIUSE_BROWSER = {\n\tbrowser: \"chrome\",\n\tversion: \"80\"\n} as const;\n","export type EcmaVersion = \"es3\" | \"es5\" | \"es2015\" | \"es2016\" | \"es2017\" | \"es2018\" | \"es2019\" | \"es2020\" | \"es2021\" | \"es2022\" | \"es2023\";\n\nexport const ES5_FEATURES: string[] = [\n\t\"javascript.builtins.Object.create\",\n\t\"javascript.builtins.Object.getPrototypeOf\",\n\t\"javascript.builtins.Object.defineProperty\",\n\t\"javascript.builtins.Object.defineProperties\",\n\t\"javascript.builtins.Object.getOwnPropertyDescriptor\",\n\t\"javascript.builtins.Object.getOwnPropertyNames\",\n\t\"javascript.builtins.Object.keys\",\n\t\"javascript.builtins.Object.preventExtensions\",\n\t\"javascript.builtins.Object.isExtensible\",\n\t\"javascript.builtins.Object.seal\",\n\t\"javascript.builtins.Object.isSealed\",\n\t\"javascript.builtins.Object.freeze\",\n\t\"javascript.builtins.Object.isFrozen\",\n\t\"javascript.builtins.Function.bind\",\n\t\"javascript.builtins.String.trim\",\n\t\"javascript.builtins.Array.isArray\",\n\t\"javascript.builtins.Array.every\",\n\t\"javascript.builtins.Array.filter\",\n\t\"javascript.builtins.Array.forEach\",\n\t\"javascript.builtins.Array.indexOf\",\n\t\"javascript.builtins.Array.lastIndexOf\",\n\t\"javascript.builtins.Array.map\",\n\t\"javascript.builtins.Array.reduce\",\n\t\"javascript.builtins.Array.some\",\n\t\"javascript.builtins.JSON.parse\",\n\t\"javascript.builtins.JSON.stringify\",\n\t\"javascript.builtins.Date.now\",\n\t\"javascript.builtins.Date.toISOString\"\n];\n\nexport const ES2015_FEATURES: string[] = [\n\t...ES5_FEATURES,\n\t\"javascript.classes\",\n\t\"javascript.statements.const\",\n\t\"javascript.statements.let\",\n\t\"javascript.functions.arrow_functions\",\n\t\"javascript.functions.rest_parameters\",\n\t\"javascript.grammar.template_literals\",\n\t\"javascript.operators.destructuring\",\n\t\"javascript.operators.spread.spread_in_arrays\",\n\t\"javascript.functions.default_parameters\",\n\t\"javascript.builtins.RegExp.sticky\",\n\t\"javascript.operators.object_initializer.shorthand_property_names\",\n\t\"javascript.operators.object_initializer.computed_property_names\",\n\t\"javascript.operators.object_initializer.shorthand_method_names\"\n];\n\nexport const ES2016_FEATURES: string[] = [...ES2015_FEATURES, \"javascript.operators.exponentiation\", \"javascript.builtins.Array.includes\"];\n\nexport const ES2017_FEATURES: string[] = [\n\t...ES2016_FEATURES,\n\t\"javascript.builtins.AsyncFunction\",\n\t\"javascript.builtins.Object.values\",\n\t\"javascript.builtins.Object.entries\",\n\t\"javascript.builtins.Object.getOwnPropertyDescriptors\",\n\t\"javascript.builtins.String.padStart\",\n\t\"javascript.builtins.String.padEnd\"\n];\n\nexport const ES2018_FEATURES: string[] = [...ES2017_FEATURES, \"javascript.operators.spread.spread_in_object_literals\", \"javascript.builtins.Promise.finally\"];\n\nexport const ES2019_FEATURES: string[] = [\n\t...ES2018_FEATURES,\n\t\"javascript.builtins.Array.flat\",\n\t\"javascript.builtins.Array.flatMap\",\n\t\"javascript.builtins.Object.fromEntries\",\n\t\"javascript.builtins.String.trimStart\",\n\t\"javascript.builtins.String.trimEnd\",\n\t\"javascript.builtins.JSON.json_superset\",\n\t\"javascript.builtins.JSON.stringify.well_formed_stringify\",\n\t\"javascript.builtins.Symbol.description\",\n\t\"javascript.statements.try_catch.optional_catch_binding\"\n];\n\nexport const ES2020_FEATURES: string[] = [...ES2019_FEATURES, \"javascript.builtins.String.matchAll\"];\n\nexport const ES2021_FEATURES: string[] = [\n\t...ES2020_FEATURES,\n\t\"javascript.operators.logical_or_assignment\",\n\t\"javascript.operators.nullish_coalescing_assignment\",\n\t\"javascript.operators.logical_and_assignment\",\n\t\"javascript.builtins.String.replaceAll\",\n\t\"javascript.grammar.numeric_separators\",\n\t\"javascript.builtins.Promise.any\"\n];\n\nexport const ES2022_FEATURES: string[] = [\n\t...ES2021_FEATURES,\n\t\"javascript.builtins.Array.at\",\n\t\"javascript.builtins.String.matchAll\",\n\t\"javascript.classes.public_class_fields\",\n\t\"javascript.classes.private_class_fields\",\n\t\"javascript.classes.private_class_fields_in\",\n\t\"javascript.classes.static_class_fields\",\n\t\"javascript.operators.await.top_level\",\n\t\"javascript.builtins.RegExp.hasIndices\"\n];\n\nexport const ES2023_FEATURES: string[] = [\n\t...ES2022_FEATURES,\n\t\"javascript.builtins.Array.findLast\",\n\t\"javascript.builtins.Array.findLastIndex\",\n\t\"javascript.grammar.hashbang_comments\",\n\t\"javascript.builtins.WeakMap.symbol_as_keys\",\n\t\"javascript.builtins.Array.toReversed\",\n\t\"javascript.builtins.Array.toSorted\",\n\t\"javascript.builtins.Array.toSpliced\",\n\t\"javascript.builtins.Array.with\"\n];\n","import {gte, lte} from \"semver\";\nimport {getSortedBrowserVersions} from \"./browser-version.js\";\nimport {coerceToString} from \"./ensure-semver.js\";\nimport type {CaniuseBrowser, CaniuseSupportKind, CaniuseDataCorrection} from \"./i-caniuse.js\";\n\n/**\n * Applies the given correction within the given version range\n */\nexport function rangeCorrection(browser: CaniuseBrowser, supportKind: CaniuseSupportKind, start?: string, end?: string): CaniuseDataCorrection[] {\n\tconst versions = getSortedBrowserVersions(browser);\n\tconst corrections: CaniuseDataCorrection[] = [];\n\n\tversions.forEach(version => {\n\t\tlet shouldSet = false;\n\n\t\tif (start == null && end == null) {\n\t\t\tshouldSet = true;\n\t\t} else if (start != null && end == null) {\n\t\t\tif (version === \"TP\") {\n\t\t\t\tshouldSet = true;\n\t\t\t} else if (version === \"all\") {\n\t\t\t\tshouldSet = true;\n\t\t\t} else {\n\t\t\t\tshouldSet = gte(coerceToString(browser, version), coerceToString(browser, start));\n\t\t\t}\n\t\t} else if (start == null && end != null) {\n\t\t\tif (version === \"TP\") {\n\t\t\t\tshouldSet = end === \"TP\";\n\t\t\t} else if (version === \"all\") {\n\t\t\t\tshouldSet = true;\n\t\t\t} else {\n\t\t\t\tshouldSet = lte(coerceToString(browser, version), coerceToString(browser, end));\n\t\t\t}\n\t\t} else if (start != null && end != null) {\n\t\t\tif (version === \"TP\") {\n\t\t\t\tshouldSet = end === \"TP\";\n\t\t\t} else if (version === \"all\") {\n\t\t\t\tshouldSet = true;\n\t\t\t} else {\n\t\t\t\tshouldSet = gte(coerceToString(browser, version), coerceToString(browser, start)) && lte(coerceToString(browser, version), coerceToString(browser, end));\n\t\t\t}\n\t\t}\n\n\t\tif (shouldSet) {\n\t\t\tcorrections.push({\n\t\t\t\tkind: supportKind,\n\t\t\t\tversion\n\t\t\t});\n\t\t}\n\t});\n\treturn corrections;\n}\n","export type CaniuseBrowser =\n\t| \"and_chr\"\n\t| \"and_ff\"\n\t| \"and_qq\"\n\t| \"and_uc\"\n\t| \"android\"\n\t| \"baidu\"\n\t| \"bb\"\n\t| \"chrome\"\n\t| \"edge\"\n\t| \"firefox\"\n\t| \"ie\"\n\t| \"ie_mob\"\n\t| \"ios_saf\"\n\t| \"op_mini\"\n\t| \"op_mob\"\n\t| \"opera\"\n\t| \"safari\"\n\t| \"samsung\";\n\nexport interface VersionedCaniuseBrowser {\n\tbrowser: CaniuseBrowser;\n\tversion: string;\n}\n\nexport const enum CaniuseSupportKind {\n\tAVAILABLE = \"AVAILABLE\",\n\tUNAVAILABLE = \"UNAVAILABLE\",\n\tPARTIAL_SUPPORT = \"PARTIAL_SUPPORT\",\n\tPREFIXED = \"PREFIXED\"\n}\n\nexport type CaniuseStats = {[Key in CaniuseBrowser]: {[key: string]: string}};\n\nexport type CaniuseStatsNormalized = {[Key in CaniuseBrowser]: {[key: string]: CaniuseSupportKind}};\n\nexport interface CaniuseFeature {\n\ttitle: string;\n\tstatus: string;\n\tstats: CaniuseStats;\n}\n\nexport interface CaniuseDataCorrection {\n\tkind: CaniuseSupportKind;\n\tversion: string;\n}\n\nexport type CaniuseBrowserCorrection = {[Key in CaniuseBrowser]?: CaniuseDataCorrection[]};\n","import {coerce} from \"semver\";\nimport {UAParser} from \"ua-parser-js\";\nimport isbot from \"isbot\";\nimport type {UseragentBrowser, UseragentDevice, UseragentEngine, UseragentOs} from \"./useragent/useragent-typed.js\";\n\nconst FIREFOX_MATCH = /Firefox\\/([\\d.]+)/i;\nconst IOS_REGEX_1 = /(iPhone)|(iPad)/i;\nconst IOS_REGEX_2 = /(iOS)\\s*([\\d._]+)/i;\nconst UNDERSCORED_VERSION_REGEX = /\\d+_/;\nconst FBSV_IOS_VERSION_REGEX = /FBSV\\/([\\d.]+)/i;\nconst IOS_14_5_UA_1 = /(CFNetwork\\/1237\\s+Darwin\\/20.4)/i;\nconst IOS_3_2_UA_1 = /(^Mobile\\/7B334b)/i;\n\n// Extend 'isbot' with more matches\nisbot.extend([\"bitdiscovery\", \"Dalvik/\", \"placid.app/v1\", \"WebsiteMetadataRetriever\", \"(compatible; aa/1.0)\"]);\n\n// These extension provide ua-parser-js with support for additional browsers\n// such as Sogou Explorer\nconst PARSER_EXTENSIONS = {\n\tengine: [[/(Chrome)\\/([\\d.]+)/i], [\"blink\", \"version\"]],\n\tbrowser: [\n\t\t[/(MetaSr)\\s*([\\d.]+)/i],\n\t\t[\"Sogou Explorer\", \"version\"],\n\t\t[/(HeyTapBrowser)\\/([\\d.]+)/i],\n\t\t[\"HeyTapBrowser\", \"version\"],\n\t\t[/(SamsungBrowser)\\/CrossApp/i],\n\t\t[\"Samsung Browser\"],\n\t\t[/(Nokia\\d+\\/[\\d.]+.*Profile\\/MIDP)/i],\n\t\t[\"WAP\"]\n\t]\n};\n\n/**\n * A class that wraps UAParser\n */\nexport class UaParserWrapper {\n\t/**\n\t * An instanceof UAParser\n\t */\n\tprivate readonly parser: InstanceType<typeof UAParser>;\n\n\tconstructor(private readonly userAgent: string) {\n\t\tthis.parser = new UAParser(userAgent, PARSER_EXTENSIONS);\n\t}\n\n\t/**\n\t * Gets the IUserAgentBrowser based on the UAParser\n\t */\n\tgetBrowser(): UseragentBrowser {\n\t\treturn this.extendGetBrowserResult(this.parser.getBrowser() as UseragentBrowser);\n\t}\n\n\t/**\n\t * Gets the IUserAgentOS based on the UAParser\n\t */\n\tgetOS(): UseragentOs {\n\t\treturn this.extendGetOsResult(this.parser.getOS() as UseragentOs);\n\t}\n\n\t/**\n\t * Gets the IUserAgentDevice based on the UAParser\n\t */\n\tgetDevice(): UseragentDevice {\n\t\treturn this.parser.getDevice() as UseragentDevice;\n\t}\n\n\t/**\n\t * Gets the IEngine based on the UAParser\n\t */\n\tgetEngine(): UseragentEngine {\n\t\treturn this.extendGetEngineResult(this.parser.getEngine() as UseragentEngine);\n\t}\n\n\t/**\n\t * Extends the result of calling 'getBrowser' on the UAParser and always takes bots into account\n\t */\n\tprivate extendGetBrowserResult(result: UseragentBrowser): UseragentBrowser {\n\t\t// Ensure that the EdgeHTML version is used\n\t\tif (result.name === \"Edge\") {\n\t\t\tconst engine = this.parser.getEngine() as UseragentEngine;\n\t\t\tif (engine.name === \"EdgeHTML\") {\n\t\t\t\tresult.version = engine.version;\n\t\t\t\t// noinspection JSDeprecatedSymbols\n\t\t\t\tresult.major = String(coerce(engine.version)?.major ?? result.version);\n\t\t\t}\n\t\t}\n\n\t\t// Check if it is a bot and match it if so\n\t\t// Also treat Dalvik/ as a bot\n\t\tif (result.name !== \"Chrome Headless\" && isbot(this.userAgent)) {\n\t\t\tif (this.userAgent.includes(\"http://www.google.com/bot.htm\") || this.userAgent.includes(\"http://www.google.com/adsbot.htm\")) {\n\t\t\t\t// As far as we know, the last reported update to Googlebot was the intent\n\t\t\t\t// to keep it evergreen, but so far it seems 74 is the latest official version\n\t\t\t\tresult.name = \"Chrome\";\n\t\t\t\tresult.version = \"74\";\n\t\t\t\t// noinspection JSDeprecatedSymbols\n\t\t\t\tresult.major = \"74\";\n\t\t\t}\n\n\t\t\t// Treat all other bots as IE 11\n\t\t\telse {\n\t\t\t\tresult.name = \"IE\";\n\t\t\t\tresult.version = \"11\";\n\t\t\t\t// noinspection JSDeprecatedSymbols\n\t\t\t\tresult.major = \"11\";\n\t\t\t}\n\t\t}\n\n\t\tif (result[\"Sogou Explorer\"] != null) {\n\t\t\tresult.name = \"Sogou Explorer\";\n\t\t\tdelete result[\"Sogou Explorer\"];\n\t\t} else if (result.HeyTapBrowser != null) {\n\t\t\tresult.name = \"HeyTapBrowser\";\n\t\t\tdelete result.HeyTapBrowser;\n\t\t} else if (result[\"Samsung Browser\"] != null) {\n\t\t\tresult.name = \"Samsung Browser\";\n\t\t\tdelete result[\"Samsung Browser\"];\n\t\t} else if (result.WAP != null) {\n\t\t\tresult.name = \"IE\";\n\t\t\tresult.version = \"8\";\n\t\t\tdelete result.WAP;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Extends the result of calling 'getEngine'\n\t */\n\tprivate extendGetEngineResult(result: UseragentEngine): UseragentEngine {\n\t\tif (result.blink != null) {\n\t\t\tresult.name = \"Blink\";\n\t\t\tdelete result.blink;\n\t\t}\n\n\t\t// The User Agent may hold additional information, such as the equivalent Firefox version\n\t\tif (result.name === \"Goanna\") {\n\t\t\tconst ffMatch = this.userAgent.match(FIREFOX_MATCH);\n\t\t\tif (ffMatch != null) {\n\t\t\t\tresult.name = \"Gecko\";\n\t\t\t\tresult.version = ffMatch[1];\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Extends the result of calling 'getOS'\n\t */\n\tprivate extendGetOsResult(result: UseragentOs): UseragentOs {\n\t\tif (result.version != null && UNDERSCORED_VERSION_REGEX.test(result.version)) {\n\t\t\tresult.version = result.version.replace(/_/g, \".\");\n\t\t}\n\n\t\tif ((result.name == null || result.name === \"iOS\") && (IOS_REGEX_1.test(this.userAgent) || IOS_REGEX_2.test(this.userAgent))) {\n\t\t\tresult.name = \"iOS\";\n\n\t\t\tif (result.version == null) {\n\t\t\t\t// If it is the Facebook browser, the iOS version may be reported\n\t\t\t\t// through its FBSV/{version} part\n\t\t\t\tconst fbsvMatch = this.userAgent.match(FBSV_IOS_VERSION_REGEX);\n\t\t\t\tif (fbsvMatch != null) {\n\t\t\t\t\tresult.version = fbsvMatch[1].replace(/_/g, \".\");\n\t\t\t\t} else {\n\t\t\t\t\tconst iosRegex2Match = this.userAgent.match(IOS_REGEX_2);\n\t\t\t\t\tif (iosRegex2Match != null) {\n\t\t\t\t\t\tresult.version = iosRegex2Match[2].replace(/_/g, \".\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ((result.name == null || result.name === \"iOS\") && IOS_14_5_UA_1.test(this.userAgent)) {\n\t\t\tresult.name = \"iOS\";\n\t\t\tresult.version = \"14.5\";\n\t\t}\n\n\t\tif ((result.name == null || result.name === \"iOS\") && IOS_3_2_UA_1.test(this.userAgent)) {\n\t\t\tresult.name = \"iOS\";\n\t\t\tresult.version = \"3.2\";\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","import Browserslist from \"browserslist\";\nimport { feature as caniuseFeature, features as caniuseFeatures } from \"caniuse-lite\";\nimport objectPath from \"object-path\";\nimport { gt, gte, lt, lte } from \"semver\";\nimport {\n\tgetClosestMatchingBrowserVersion,\n\tgetNextVersionOfBrowser,\n\tgetOldestVersionOfBrowser,\n\tgetPreviousVersionOfBrowser,\n\tgetSortedBrowserVersions,\n\tgetSortedBrowserVersionsWithLeadingVersion,\n\tnormalizeBrowserVersion\n} from \"./browser-version.js\";\nimport { UNKNOWN_CANIUSE_BROWSER } from \"./constant.js\";\nimport { ensureSemver, coerceToString } from \"./ensure-semver.js\";\nimport { compareVersions } from \"./compare-versions.js\";\nimport type { ComparisonOperator } from \"./comparison-operator.js\";\nimport type { EcmaVersion } from \"./ecma-version.js\";\nimport {\n\tES2015_FEATURES,\n\tES2016_FEATURES,\n\tES2017_FEATURES,\n\tES2018_FEATURES,\n\tES2019_FEATURES,\n\tES2020_FEATURES,\n\tES2021_FEATURES,\n\tES2022_FEATURES,\n\tES2023_FEATURES,\n\tES5_FEATURES\n} from \"./ecma-version.js\";\nimport { rangeCorrection } from \"./range-correction.js\";\nimport type { BrowserSupportForFeaturesCommonResult } from \"./browser-support-for-features-common-result.js\";\nimport type { CaniuseBrowser, CaniuseStats, CaniuseStatsNormalized, CaniuseBrowserCorrection, CaniuseFeature, VersionedCaniuseBrowser } from \"./i-caniuse.js\";\nimport { CaniuseSupportKind } from \"./i-caniuse.js\";\nimport type { Mdn, MdnBrowserName } from \"./mdn.js\";\nimport { NORMALIZE_BROWSER_VERSION_REGEXP } from \"./normalize-browser-version-regexp.js\";\nimport { UaParserWrapper } from \"./ua-parser-wrapper.js\";\nimport type { UseragentBrowser, UseragentEngine, UseragentOs } from \"./useragent/useragent-typed.js\";\n\n\nimport { createRequire } from 'module';\nconst require = createRequire(import.meta.url);\nconst compatData = require('@mdn/browser-compat-data');\n/**\n * A Cache between user agent names and generated Browserslists\n */\nconst userAgentToBrowserslistCache: Map<string, string[]> = new Map();\n\n/**\n * A Cache for retrieving browser support for some features\n */\nconst browserSupportForFeaturesCache: Map<string, BrowserSupportForFeaturesCommonResult> = new Map();\n\n/**\n * A Cache between feature names and their CaniuseStats\n */\nconst featureToCaniuseStatsCache: Map<string, CaniuseStatsNormalized> = new Map();\n\n/**\n * A Cache between user agents with any amount of features and whether or not they are supported by the user agent\n */\nconst userAgentWithFeaturesToSupportCache: Map<string, boolean> = new Map();\n\n/**\n * By and large, MDN has the best compat data, especially when looking into at which point older version of Android-based browsers\n * received support for a feature. Therefore we generally prioritize MDN compat data and will attempt to rewrite common caniuse queries to\n * their respective MDN feature names\n */\nconst CANIUSE_TO_MDN_FEATURE_MAP = {\n\tpointer: \"api.PointerEvent.PointerEvent\",\n\tshadowdomv1: \"api.ShadowRoot\",\n\t\"custom-elementsv1\": \"api.CustomElementRegistry\",\n\ttemplate: \"html.elements.template\",\n\tfetch: \"api.fetch\",\n\tpromises: \"javascript.builtins.Promise\",\n\t\"object-values\": \"javascript.builtins.Object.values\",\n\tmutationobserver: \"api.MutationObserver\",\n\t\"focusin-focusout-events\": \"api.Element.focusin_event\",\n\t\"high-resolution-time\": \"api.Performance.now\",\n\turl: \"api.URL\",\n\turlsearchparams: \"api.URLSearchParams\",\n\t\"object-fit\": \"css.properties.object-fit\",\n\t\"console-basic\": \"api.console.info\",\n\t\"console-time\": \"api.console.time\",\n\t\"atob-btoa\": \"api.atob\",\n\tblobbuilder: \"api.Blob.Blob\",\n\tbloburls: \"api.URL.createObjectURL\",\n\trequestidlecallback: \"api.Window.requestIdleCallback\",\n\trequestanimationframe: \"api.Window.requestAnimationFrame\",\n\tproxy: \"javascript.builtins.Proxy\"\n} as const;\n\n/**\n * A Map between features and browsers that has partial support for them but should be allowed anyway\n * @type {Map<string, string[]>}\n */\nconst PARTIAL_SUPPORT_ALLOWANCES = new Map([\n\t[\"shadowdomv1\", \"*\"],\n\t[\"custom-elementsv1\", \"*\"],\n\t[\"web-animation\", \"*\"]\n]) as Map<string, CaniuseBrowser[] | \"*\">;\n\nconst TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT: CaniuseBrowserCorrection = {\n\t/* eslint-disable @typescript-eslint/naming-convention */\n\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `4`),\n\tchrome: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `7`),\n\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `7`),\n\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE, \"12\"),\n\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.AVAILABLE, `4`),\n\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `12`),\n\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `12`),\n\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `4`),\n\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `4`),\n\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `6`),\n\tios_saf: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `5`),\n\tie: rangeCorrection(\"ie\", CaniuseSupportKind.AVAILABLE, `11`),\n\top_mini: rangeCorrection(\"op_mini\", CaniuseSupportKind.AVAILABLE, `all`),\n\tbb: rangeCorrection(\"bb\", CaniuseSupportKind.AVAILABLE, `10`),\n\tand_uc: rangeCorrection(\"and_uc\", CaniuseSupportKind.AVAILABLE, `11.8`),\n\tand_qq: rangeCorrection(\"and_qq\", CaniuseSupportKind.AVAILABLE, `1.2`),\n\tbaidu: rangeCorrection(\"baidu\", CaniuseSupportKind.AVAILABLE, `7.12`)\n\t/* eslint-enable @typescript-eslint/naming-convention */\n};\n\nconst TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT: CaniuseBrowserCorrection = {\n\t/* eslint-disable @typescript-eslint/naming-convention */\n\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `45`),\n\tchrome: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `45`),\n\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `45`),\n\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE, \"12\"),\n\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.AVAILABLE, `5`),\n\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `32`),\n\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `32`),\n\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `38`),\n\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `38`),\n\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`),\n\tios_saf: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`),\n\tie: rangeCorrection(\"ie\", CaniuseSupportKind.AVAILABLE, `11`),\n\tie_mob: rangeCorrection(\"ie\", CaniuseSupportKind.AVAILABLE, `11`)\n\t/* eslint-enable @typescript-eslint/naming-convention */\n};\n\nconst TYPED_ARRAY_ES2016_DATA_CORRECTIONS_INPUT: CaniuseBrowserCorrection = {\n\t/* eslint-disable @typescript-eslint/naming-convention */\n\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `47`),\n\tchrome: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `47`),\n\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `47`),\n\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE, \"14\"),\n\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.AVAILABLE, `5`),\n\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `34`),\n\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `34`),\n\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `43`),\n\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `43`),\n\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`),\n\tios_saf: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`)\n\t/* eslint-enable @typescript-eslint/naming-convention */\n};\n\nconst TYPED_ARRAY_KEYS_VALUES_ENTRIES_ITERATOR_DATA_CORRECTIONS_INPUT: CaniuseBrowserCorrection = {\n\t/* eslint-disable @typescript-eslint/naming-convention */\n\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `38`),\n\tchrome: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `38`),\n\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `38`),\n\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE, \"12\"),\n\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.AVAILABLE, `5`),\n\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `26`),\n\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `26`),\n\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `37`),\n\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `37`),\n\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`),\n\tios_saf: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`)\n\t/* eslint-enable @typescript-eslint/naming-convention */\n};\n\nconst TYPED_ARRAY_SPECIES_DATA_CORRECTIONS_INPUT: CaniuseBrowserCorrection = {\n\t/* eslint-disable @typescript-eslint/naming-convention */\n\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `51`),\n\tchrome: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `51`),\n\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `51`),\n\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE, \"13\"),\n\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.AVAILABLE, `5`),\n\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `38`),\n\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `38`),\n\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `48`),\n\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `48`),\n\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`),\n\tios_saf: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`)\n\t/* eslint-enable @typescript-eslint/naming-convention */\n};\n\n/**\n * Not all Caniuse data is entirely correct. For some features, the data on https://kangax.github.io/compat-table/es6/\n * is more correct. When a Browserslist is generated based on support for specific features, it is really important\n * that it is correct, especially if the browserslist will be used as an input to tools such as @babel/preset-env.\n * This table provides some corrections to the Caniuse data that makes it align better with actual availability\n * @type {[string, CaniuseBrowserCorrection][]}\n */\nconst FEATURE_TO_BROWSER_DATA_CORRECTIONS_INPUT: [string, CaniuseBrowserCorrection][] = [\n\t/* eslint-disable @typescript-eslint/naming-convention */\n\t[\n\t\t\"xhr2\",\n\t\t{\n\t\t\tie: [\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that XMLHttpRequest support is partial in Internet Explorer 11, but it is in fact properly supported\n\t\t\t\t\tkind: CaniuseSupportKind.AVAILABLE,\n\t\t\t\t\tversion: \"11\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\t[\n\t\t// Caniuse reports that Safari 12.1 and iOS Safari 12.2 has partial support for Web Animations,\n\t\t// but they do not - They require enabling it as an experimental feature\n\t\t\"web-animation\",\n\t\t{\n\t\t\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.UNAVAILABLE, `0`, \"13.4\"),\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", CaniuseSupportKind.UNAVAILABLE, `0`, \"13.4\")\n\t\t}\n\t],\n\t[\n\t\t\"es6-class\",\n\t\t{\n\t\t\tedge: [\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that Microsoft Edge has been supporting classes since v12, but it was prefixed until v13\n\t\t\t\t\tkind: CaniuseSupportKind.PREFIXED,\n\t\t\t\t\tversion: \"12\"\n\t\t\t\t}\n\t\t\t],\n\t\t\tios_saf: [\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that iOS Safari has been supporting classes since v9, but the implementation was only partial\n\t\t\t\t\tkind: CaniuseSupportKind.PARTIAL_SUPPORT,\n\t\t\t\t\tversion: \"9\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that iOS Safari has been supporting classes since v9, but the implementation was only partial\n\t\t\t\t\tkind: CaniuseSupportKind.PARTIAL_SUPPORT,\n\t\t\t\t\tversion: \"9.2\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that iOS Safari has been supporting classes since v9, but the implementation was only partial\n\t\t\t\t\tkind: CaniuseSupportKind.PARTIAL_SUPPORT,\n\t\t\t\t\tversion: \"9.3\"\n\t\t\t\t}\n\t\t\t],\n\t\t\tsafari: [\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that Safari has been supporting classes since v9, but the implementation was only partial\n\t\t\t\t\tkind: CaniuseSupportKind.PARTIAL_SUPPORT,\n\t\t\t\t\tversion: \"9\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that Safari has been supporting classes since v9, but the implementation was only partial\n\t\t\t\t\tkind: CaniuseSupportKind.PARTIAL_SUPPORT,\n\t\t\t\t\tversion: \"9.1\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\t[\n\t\t\"api.Element.classList\",\n\t\t{\n\t\t\tedge: [\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that Microsoft Edge v15 has only partial support for class-list since it doesn't support SVG elements,\n\t\t\t\t\t// but we don't want feature detections to return false for that browser\n\t\t\t\t\tkind: CaniuseSupportKind.AVAILABLE,\n\t\t\t\t\tversion: \"15\"\n\t\t\t\t}\n\t\t\t],\n\t\t\tie: [\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that IE 10 has only partial support for class-list since it doesn't support SVG elements,\n\t\t\t\t\t// but we don't want feature detections to return false for that browser\n\t\t\t\t\tkind: CaniuseSupportKind.AVAILABLE,\n\t\t\t\t\tversion: \"10\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that IE 11 has only partial support for class-list since it doesn't support SVG elements,\n\t\t\t\t\t// but we don't want feature detections to return false for that browser\n\t\t\t\t\tkind: CaniuseSupportKind.AVAILABLE,\n\t\t\t\t\tversion: \"11\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\t[\"javascript.builtins.TypedArray.from\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.of\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.subarray\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.copyWithin\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.every\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.fill\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.filter\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.find\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.findIndex\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.forEach\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.indexOf\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.join\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.lastIndexOf\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.map\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.reduce\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.reduceRight\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.reverse\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.some\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.sort\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.toLocaleString\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.toString\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.slice\", TYPED_ARRAY_ES2015_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.includes\", TYPED_ARRAY_ES2016_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.keys\", TYPED_ARRAY_KEYS_VALUES_ENTRIES_ITERATOR_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.values\", TYPED_ARRAY_KEYS_VALUES_ENTRIES_ITERATOR_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.entries\", TYPED_ARRAY_KEYS_VALUES_ENTRIES_ITERATOR_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.@@iterator\", TYPED_ARRAY_KEYS_VALUES_ENTRIES_ITERATOR_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray.@@species\", TYPED_ARRAY_SPECIES_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.TypedArray\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Int8Array\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Int16Array\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Int32Array\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Float32Array\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Float64Array\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Uint8Array\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Uint8ClampedArray\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Uint16ClampedArray\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\"javascript.builtins.Uint32ClampedArray\", TYPED_ARRAY_BASE_DATA_CORRECTIONS_INPUT],\n\t[\n\t\t\"javascript.builtins.String.@@iterator\",\n\t\t{\n\t\t\tandroid: rangeCorrection(\"chrome\", CaniuseSupportKind.AVAILABLE, `38`),\n\t\t\tchrome: rangeCorrection(\"chrome\", CaniuseSupportKind.AVAILABLE, `38`),\n\t\t\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `38`),\n\t\t\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE, `12`),\n\t\t\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `25`),\n\t\t\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `25`),\n\t\t\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `36`),\n\t\t\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `36`),\n\t\t\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `9`),\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", CaniuseSupportKind.AVAILABLE, `9`),\n\t\t\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.AVAILABLE, `3`)\n\t\t}\n\t],\n\t[\n\t\t\"javascript.builtins.Symbol.asyncIterator\",\n\t\t{\n\t\t\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `63`),\n\t\t\tchrome: rangeCorrection(\"chrome\", CaniuseSupportKind.AVAILABLE, `63`),\n\t\t\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `63`),\n\t\t\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `50`),\n\t\t\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `50`),\n\t\t\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `57`),\n\t\t\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `57`),\n\t\t\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `11.1`),\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", CaniuseSupportKind.AVAILABLE, `11.1`)\n\t\t}\n\t],\n\t[\n\t\t\"javascript.builtins.Array.@@species\",\n\t\t{\n\t\t\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `51`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Chrome v51\n\t\t\tchrome: rangeCorrection(\"chrome\", CaniuseSupportKind.AVAILABLE, `51`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Chrome for Android v51\n\t\t\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `51`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Edge v14\n\t\t\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE, `14`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Firefox v41\n\t\t\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `41`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Firefox for Android v41\n\t\t\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `41`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Opera v38\n\t\t\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `38`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Opera for Android v38\n\t\t\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `38`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Safari v10\n\t\t\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`),\n\t\t\t// MDN reports that it doesn't support Array.@@species, but it does and has done since Safari for iOS v10\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", CaniuseSupportKind.AVAILABLE, `10`)\n\t\t}\n\t],\n\t[\n\t\t\"javascript.builtins.Date.@@toPrimitive\",\n\t\t{\n\t\t\tandroid: rangeCorrection(\"android\", CaniuseSupportKind.AVAILABLE, `48`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Chrome v48\n\t\t\tchrome: rangeCorrection(\"chrome\", CaniuseSupportKind.AVAILABLE, `48`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Chrome for Android v48\n\t\t\tand_chr: rangeCorrection(\"and_chr\", CaniuseSupportKind.AVAILABLE, `48`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done in all Edge versions\n\t\t\tedge: rangeCorrection(\"edge\", CaniuseSupportKind.AVAILABLE),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Firefox v44\n\t\t\tfirefox: rangeCorrection(\"firefox\", CaniuseSupportKind.AVAILABLE, `44`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Firefox for Android v44\n\t\t\tand_ff: rangeCorrection(\"and_ff\", CaniuseSupportKind.AVAILABLE, `44`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Opera v35\n\t\t\topera: rangeCorrection(\"opera\", CaniuseSupportKind.AVAILABLE, `35`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Opera for Android v35\n\t\t\top_mob: rangeCorrection(\"op_mob\", CaniuseSupportKind.AVAILABLE, `35`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Safari v10\n\t\t\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.AVAILABLE, `10`),\n\t\t\t// MDN reports that it doesn't support Date.@@toPrimitive, but it does and has done since Safari for iOS v10\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", CaniuseSupportKind.AVAILABLE, `10`),\n\t\t\t// MDN reports that it doesn't support the Date.@@toPrimitive method, but it does and has done for all Samsung Internet versions\n\t\t\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.AVAILABLE)\n\t\t}\n\t],\n\t[\n\t\t\"fetch\",\n\t\t{\n\t\t\tedge: [\n\t\t\t\t{\n\t\t\t\t\t// Caniuse reports that Microsoft Edge has been supporting fetch since v14, but the implementation was quite unstable until v15\n\t\t\t\t\tkind: CaniuseSupportKind.UNAVAILABLE,\n\t\t\t\t\tversion: \"14\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\t[\n\t\t\"api.Window\",\n\t\t{\n\t\t\tchrome: rangeCorrection(\"chrome\", CaniuseSupportKind.UNAVAILABLE, `0`, `18`),\n\t\t\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.UNAVAILABLE, `0`, `5.1`),\n\t\t\tie: rangeCorrection(\"ie\", CaniuseSupportKind.UNAVAILABLE, `0`, `7`),\n\t\t\topera: rangeCorrection(\"safari\", CaniuseSupportKind.UNAVAILABLE, `0`, `11.1`)\n\t\t}\n\t],\n\t[\n\t\t\"javascript.builtins.String.matchAll\",\n\t\t{\n\t\t\tsamsung: rangeCorrection(\"samsung\", CaniuseSupportKind.UNAVAILABLE, `0`, `9.4`)\n\t\t}\n\t],\n\t[\n\t\t\"resizeobserver\",\n\t\t{\n\t\t\tsafari: rangeCorrection(\"safari\", CaniuseSupportKind.UNAVAILABLE, `0`)\n\t\t}\n\t]\n\t/* eslint-enable @typescript-eslint/naming-convention */\n];\n\n/**\n * A Map between caniuse features and corrections to apply (see above)\n * @type {Map<string, CaniuseBrowserCorrection>}\n */\nconst FEATURE_TO_BROWSER_DATA_CORRECTIONS_MAP: Map<string, CaniuseBrowserCorrection> = new Map(FEATURE_TO_BROWSER_DATA_CORRECTIONS_INPUT);\n\n/**\n * Returns the input query, but extended with the given options\n */\nfunction extendQueryWith(query: string[], extendWith: string | string[]): string[] {\n\tconst normalizedExtendWith = Array.isArray(extendWith) ? extendWith : [extendWith];\n\treturn [...new Set([...query, ...normalizedExtendWith])];\n}\n\n/**\n * Normalizes the given Browserslist\n */\nexport function normalizeBrowserslist(browserslist: string | string[]): string[] {\n\tconst result = Browserslist(browserslist);\n\n\t// Caniuse only tracks the latest Browser version for Android-based browsers,\n\t// so we'll need to add the relevant details back in after normalizing the Browserslist\n\t// to make sure comparsions won't fail\n\tconst inputBrowserslist = Array.isArray(browserslist) ? browserslist : [browserslist];\n\n\tfor (const browser of [\"and_ff\", \"and_chr\", \"and_uc\", \"and_qq\", \"baidu\", \"op_mini\"] as const) {\n\t\tconst versions = getSortedBrowserVersions(browser);\n\t\tfor (const entry of inputBrowserslist) {\n\t\t\tif (!entry.startsWith(browser)) continue;\n\t\t\tconst directMatch = entry.match(new RegExp(`${browser} (\\\\d+.*)`));\n\t\t\tif (directMatch != null) {\n\t\t\t\tconst candidate = `${browser} ${directMatch[1]}`;\n\t\t\t\tif (!result.includes(candidate)) {\n\t\t\t\t\tresult.push(candidate);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst greaterThanOrEqualsMatch = entry.match(new RegExp(`${browser} >= (\\\\d+)`));\n\n\t\t\t\tif (greaterThanOrEqualsMatch != null) {\n\t\t\t\t\tlet currentMajor = Number(greaterThanOrEqualsMatch[1]);\n\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tconst candidate = `${browser} ${currentMajor}`;\n\t\t\t\t\t\tif (!result.includes(candidate)) {\n\t\t\t\t\t\t\tresult.push(candidate);\n\t\t\t\t\t\t\tcurrentMajor++;\n\t\t\t\t\t\t\tif (Number(getClosestMatchingBrowserVersion(browser, String(currentMajor), versions)) <= currentMajor) break;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result.sort();\n}\n\n/**\n * Returns the input query, but extended with 'unreleased versions'\n */\nfunction extendQueryWithUnreleasedVersions(query: string[], browsers: Iterable<CaniuseBrowser>): string[] {\n\treturn extendQueryWith(\n\t\tquery,\n\t\tArray.from(browsers).map(browser => `unreleased ${browser} versions`)\n\t);\n}\n\n/**\n * Generates a Browserslist based on browser support for the given features\n */\nexport function browsersWithSupportForFeatures(...features: string[]): string[] {\n\tconst { query, browsers } = browserSupportForFeaturesCommon(\">=\", ...features);\n\treturn extendQueryWithUnreleasedVersions(query, browsers);\n}\n\n/**\n * Returns true if the given Browserslist supports the given EcmaVersion\n */\nexport function browserslistSupportsEcmaVersion(browserslist: string[], version: EcmaVersion): boolean {\n\tswitch (version) {\n\t\tcase \"es3\":\n\t\t\t// ES3 is the lowest possible target and will always be treated as supported\n\t\t\treturn true;\n\n\t\tcase \"es5\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES5_FEATURES);\n\n\t\tcase \"es2015\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2015_FEATURES);\n\n\t\tcase \"es2016\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2016_FEATURES);\n\n\t\tcase \"es2017\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2017_FEATURES);\n\n\t\tcase \"es2018\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2018_FEATURES);\n\n\t\tcase \"es2019\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2019_FEATURES);\n\n\t\tcase \"es2020\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2020_FEATURES);\n\t\tcase \"es2021\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2021_FEATURES);\n\t\tcase \"es2022\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2022_FEATURES);\n\t\tcase \"es2023\":\n\t\t\treturn browserslistSupportsFeatures(browserslist, ...ES2023_FEATURES);\n\t}\n}\n\n/**\n * Returns the appropriate Ecma version for the given Browserslist\n */\nexport function getAppropriateEcmaVersionForBrowserslist(browserslist: string[]): EcmaVersion {\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2023\")) return \"es2023\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2022\")) return \"es2022\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2021\")) return \"es2021\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2020\")) return \"es2020\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2019\")) return \"es2019\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2018\")) return \"es2018\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es2017\")) return \"es2017\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es2016\")) return \"es2016\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es2015\")) return \"es2015\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es5\")) return \"es5\";\n\telse return \"es3\";\n}\n\n/**\n * Generates a Browserslist based on browser support for the given ECMA version\n */\nexport function browsersWithSupportForEcmaVersion(version: EcmaVersion): string[] {\n\tswitch (version) {\n\t\tcase \"es3\":\n\t\t\treturn browsersWithoutSupportForFeatures(...ES5_FEATURES);\n\t\tcase \"es5\":\n\t\t\treturn browsersWithSupportForFeatures(...ES5_FEATURES);\n\t\tcase \"es2015\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2015_FEATURES);\n\t\tcase \"es2016\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2016_FEATURES);\n\t\tcase \"es2017\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2017_FEATURES);\n\t\tcase \"es2018\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2018_FEATURES);\n\t\tcase \"es2019\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2019_FEATURES);\n\t\tcase \"es2020\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2020_FEATURES);\n\t\tcase \"es2021\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2021_FEATURES);\n\t\tcase \"es2022\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2022_FEATURES);\n\t\tcase \"es2023\":\n\t\t\treturn browsersWithSupportForFeatures(...ES2023_FEATURES);\n\t}\n}\n\n/**\n * Returns true if the given browserslist support all of the given features\n */\nexport function browserslistSupportsFeatures(browserslist: string[], ...features: string[]): boolean {\n\t// First, generate an ideal browserslist that would target the given features exactly\n\tconst normalizedIdealBrowserslist: string[] = normalizeBrowserslist(browsersWithSupportForFeatures(...features));\n\n\t// Now, normalize the input browserslist\n\tconst normalizedInputBrowserslist: string[] = normalizeBrowserslist(browserslist);\n\n\t// Now, compare the two and see if they align. If they do, the input browserslist *does* support all of the given features.\n\t// They align if all members of the input browserslist are included in the ideal browserslist\n\treturn normalizedInputBrowserslist.every(option => normalizedIdealBrowserslist.includes(option));\n}\n\n/**\n * Generates a Browserslist based on browsers that *doesn't* support the given features\n */\nexport function browsersWithoutSupportForFeatures(...features: string[]): string[] {\n\treturn browserSupportForFeaturesCommon(\"<\", ...features).query;\n}\n\n/**\n * Returns true if the given browser should be ignored. The data reported from Caniuse is a bit lacking.\n * For example, only the latest version of and_ff, and_qq, and_uc and baidu is reported, and since\n * android went to use Chromium for the WebView, it has only reported the latest Chromium version\n */\nfunction shouldIgnoreBrowser(browser: CaniuseBrowser, version: string): boolean {\n\treturn (\n\t\t(browser === \"android\" && gt(coerceToString(browser, version), coerceToString(browser, \"4.4.4\"))) ||\n\t\t(browser === \"op_mob\" && gt(coerceToString(browser, version), coerceToString(browser, \"12.1\")))\n\t);\n}\n\n/**\n * Normalizes the given ICaniuseLiteFeature\n */\nfunction getCaniuseLiteFeatureNormalized(stats: CaniuseStats, featureName: string): CaniuseStatsNormalized {\n\t// Check if a correction exists for this browser\n\tconst featureCorrectionMatch = FEATURE_TO_BROWSER_DATA_CORRECTIONS_MAP.get(featureName);\n\n\tconst keys = Object.keys(stats) as (keyof CaniuseStats & string)[];\n\tkeys.forEach(browser => {\n\t\tconst browserDict = stats[browser];\n\t\tObject.entries(browserDict).forEach(([version, support]: [string, string]) => {\n\t\t\tconst versionMatch = version.match(NORMALIZE_BROWSER_VERSION_REGEXP);\n\t\t\tconst normalizedVersion = versionMatch == null ? version : versionMatch[1];\n\n\t\t\tlet supportKind: CaniuseSupportKind;\n\n\t\t\tif (\n\t\t\t\tsupport === CaniuseSupportKind.AVAILABLE ||\n\t\t\t\tsupport === CaniuseSupportKind.UNAVAILABLE ||\n\t\t\t\tsupport === CaniuseSupportKind.PARTIAL_SUPPORT ||\n\t\t\t\tsupport === CaniuseSupportKind.PREFIXED\n\t\t\t) {\n\t\t\t\tsupportKind = support;\n\t\t\t} else if (support.startsWith(\"y\")) {\n\t\t\t\tsupportKind = CaniuseSupportKind.AVAILABLE;\n\t\t\t} else if (support.startsWith(\"n\")) {\n\t\t\t\tsupportKind = CaniuseSupportKind.UNAVAILABLE;\n\t\t\t} else if (support.startsWith(\"a\")) {\n\t\t\t\tsupportKind = CaniuseSupportKind.PARTIAL_SUPPORT;\n\t\t\t} else {\n\t\t\t\tsupportKind = CaniuseSupportKind.PREFIXED;\n\t\t\t}\n\n\t\t\t// Delete the rewritten version\n\t\t\tif (version !== normalizedVersion) {\n\t\t\t\tdelete browserDict[version];\n\t\t\t}\n\t\t\tif (support !== supportKind) {\n\t\t\t\tbrowserDict[normalizedVersion] = supportKind;\n\t\t\t}\n\n\t\t\t// If a feature correction exists for this feature, apply applicable corrections\n\t\t\tif (featureCorrectionMatch != null) {\n\t\t\t\t// Check if the browser has some corrections\n\t\t\t\tconst browserMatch = featureCorrectionMatch[browser];\n\t\t\t\tif (browserMatch != null) {\n\t\t\t\t\t// Apply all corrections\n\t\t\t\t\tbrowserMatch.forEach(correction => {\n\t\t\t\t\t\tbrowserDict[correction.version] = correction.kind;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\n\treturn stats as CaniuseStatsNormalized;\n}\n\n/**\n * Gets the support from caniuse for the given feature\n */\nfunction getCaniuseFeatureSupport(feature: string): CaniuseStatsNormalized {\n\tconst rawStats = (caniuseFeature(caniuseFeatures[feature]) as CaniuseFeature).stats;\n\n\tfor (const browser of Object.keys(rawStats)) {\n\t\tconst browserDict = rawStats[browser as keyof CaniuseStatsNormalized];\n\t\tfor (const version of Object.keys(browserDict)) {\n\t\t\tif (shouldIgnoreBrowser(browser as keyof CaniuseStatsNormalized, version)) {\n\t\t\t\tdelete browserDict[version];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn getCaniuseLiteFeatureNormalized(rawStats, feature);\n}\n\n/**\n * Returns true if the given feature is a Caniuse feature\n */\nfunction isCaniuseFeature(feature: string): boolean {\n\treturn caniuseFeatures[feature] != null;\n}\n\n/**\n * Returns true if the given feature is a MDN feature\n */\nfunction isMdnFeature(feature: string): boolean {\n\treturn objectPath.get(compatData, feature) != null;\n}\n\n/**\n * Asserts that the given feature is a valid Caniuse or MDN feature name\n */\nfunction assertKnownFeature(feature: string): void {\n\tif (!isCaniuseFeature(feature) && !isMdnFeature(feature)) {\n\t\tthrow new TypeError(`The given feature: '${feature}' is unknown. It must be a valid Caniuse or MDN feature!`);\n\t}\n}\n\nfunction normalizeFeature(feature: string): string {\n\tif (feature in CANIUSE_TO_MDN_FEATURE_MAP) {\n\t\treturn CANIUSE_TO_MDN_FEATURE_MAP[feature as keyof typeof CANIUSE_TO_MDN_FEATURE_MAP];\n\t}\n\n\treturn feature;\n}\n\n/**\n * Gets the feature support for the given feature\n */\nfunction getFeatureSupport(feature: string): CaniuseStatsNormalized {\n\tconst normalizedFeature = normalizeFeature(feature);\n\t// First check if the cache has a match and return it if so\n\tconst cacheHit = featureToCaniuseStatsCache.get(normalizedFeature);\n\tif (cacheHit != null) return cacheHit;\n\n\t// Assert that the feature is in fact known\n\tassertKnownFeature(normalizedFeature);\n\n\tconst result = isMdnFeature(normalizedFeature) ? getMdnFeatureSupport(normalizedFeature) : getCaniuseFeatureSupport(normalizedFeature);\n\n\t// Store it in the cache before returning it\n\tfeatureToCaniuseStatsCache.set(normalizedFeature, result);\n\treturn result;\n}\n\n/**\n * Gets the support from caniuse for the given feature\n */\nfunction getMdnFeatureSupport(feature: string): CaniuseStatsNormalized {\n\tconst match: Mdn = objectPath.get(compatData, feature);\n\tconst supportMap = match.__compat.support;\n\n\tconst formatBrowser = (mdnBrowser: MdnBrowserName, caniuseBrowser: CaniuseBrowser): { [key: string]: CaniuseSupportKind } => {\n\t\tconst versionMap = supportMap[mdnBrowser];\n\t\tconst versionAdded =\n\t\t\tversionMap == null\n\t\t\t\t? false\n\t\t\t\t: Array.isArray(versionMap)\n\t\t\t\t\t? // If there are multiple entries, take the one that hasn't been removed yet, if any\n\t\t\t\t\t(() => {\n\t\t\t\t\t\tconst versionStillInBrowser = versionMap.filter(element => element.version_removed == null)[0];\n\t\t\t\t\t\treturn versionStillInBrowser == null || versionStillInBrowser.version_added == null ? false : (versionStillInBrowser.version_added as string | boolean);\n\t\t\t\t\t})()\n\t\t\t\t\t: versionMap.version_added;\n\n\t\tconst dict: { [key: string]: CaniuseSupportKind } = {};\n\t\tconst supportedSince: string | null = versionAdded === false ? null : versionAdded === true ? getOldestVersionOfBrowser(caniuseBrowser) : versionAdded;\n\n\t\tgetSortedBrowserVersionsWithLeadingVersion(caniuseBrowser, typeof versionAdded === \"string\" ? versionAdded : undefined).forEach(version => {\n\t\t\t// If the features has never been supported, mark the feature as unavailable\n\t\t\tif (supportedSince == null) {\n\t\t\t\tdict[version] = CaniuseSupportKind.UNAVAILABLE;\n\t\t\t} else {\n\t\t\t\tdict[version] =\n\t\t\t\t\tversion === \"TP\" || version === \"all\" || gte(coerceToString(caniuseBrowser, version), coerceToString(caniuseBrowser, supportedSince))\n\t\t\t\t\t\t? CaniuseSupportKind.AVAILABLE\n\t\t\t\t\t\t: CaniuseSupportKind.UNAVAILABLE;\n\t\t\t}\n\t\t});\n\t\treturn dict;\n\t};\n\n\tconst stats: CaniuseStatsNormalized = {\n\t\t/* eslint-disable @typescript-eslint/naming-convention */\n\t\tand_chr: formatBrowser(\"chrome_android\", \"and_chr\"),\n\t\tchrome: formatBrowser(\"chrome\", \"chrome\"),\n\t\tand_ff: formatBrowser(\"firefox_android\", \"and_ff\"),\n\t\tand_qq: {},\n\t\tand_uc: {},\n\t\tandroid: formatBrowser(\"webview_android\", \"android\"),\n\t\tbaidu: {},\n\t\tbb: {},\n\t\tedge: formatBrowser(\"edge\", \"edge\"),\n\t\tsamsung: formatBrowser(\"samsunginternet_android\", \"samsung\"),\n\t\tie: formatBrowser(\"ie\", \"ie\"),\n\t\tie_mob: formatBrowser(\"ie\", \"ie_mob\"),\n\t\tsafari: formatBrowser(\"safari\", \"safari\"),\n\t\tios_saf: formatBrowser(\"safari_ios\", \"ios_saf\"),\n\t\topera: formatBrowser(\"opera\", \"opera\"),\n\t\top_mini: {},\n\t\top_mob: {},\n\t\tfirefox: formatBrowser(\"firefox\", \"firefox\")\n\t\t/* eslint-enable @typescript-eslint/naming-convention */\n\t};\n\treturn getCaniuseLiteFeatureNormalized(stats, feature);\n}\n\n/**\n * Gets the first version that matches the given CaniuseSupportKind\n */\nfunction getFirstVersionWithSupportKind(kind: CaniuseSupportKind, stats: { [key: string]: CaniuseSupportKind }): string | undefined {\n\t// Sort all keys of the object\n\tconst sortedKeys = Object.keys(stats).sort(compareVersions);\n\n\tfor (const key of sortedKeys) {\n\t\tif (stats[key] === kind) {\n\t\t\treturn key;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Sorts the given browserslist. Ensures that 'not' expressions come last\n */\nfunction sortBrowserslist(a: string, b: string): number {\n\tif (a.startsWith(\"not\") && !b.startsWith(\"not\")) return 1;\n\tif (!a.startsWith(\"not\") && b.startsWith(\"not\")) return -1;\n\treturn 0;\n}\n\n/**\n * Gets a Map between browser names and the first version of them that supported the given feature\n */\nexport function getFirstVersionsWithFullSupport(feature: string): Map<CaniuseBrowser, string> {\n\tconst normalizedFeature = normalizeFeature(feature);\n\tconst support = getFeatureSupport(normalizedFeature);\n\t// A map between browser names and their required versions\n\tconst browserMap: Map<CaniuseBrowser, string> = new Map();\n\tconst entries = Object.entries(support) as [CaniuseBrowser, Record<string, CaniuseSupportKind>][];\n\tentries.forEach(([browser, stats]) => {\n\t\tconst fullSupportVersion = getFirstVersionWithSupportKind(CaniuseSupportKind.AVAILABLE, stats);\n\t\tif (fullSupportVersion != null) {\n\t\t\tbrowserMap.set(browser, fullSupportVersion);\n\t\t}\n\t});\n\treturn browserMap;\n}\n\n/**\n * Gets the Cache key for the given combination of a comparison operator and any amount of features\n */\nfunction getBrowserSupportForFeaturesCacheKey(comparisonOperator: ComparisonOperator, features: string[]): string {\n\treturn `${comparisonOperator}.${features.sort().join(\",\")}`;\n}\n\n/**\n * Common logic for the functions that generate browserslists based on feature support\n */\nfunction browserSupportForFeaturesCommon(comparisonOperator: ComparisonOperator, ...features: string[]): BrowserSupportForFeaturesCommonResult {\n\tconst normalizedFeatures = features.map(normalizeFeature);\n\tconst cacheKey = getBrowserSupportForFeaturesCacheKey(comparisonOperator, normalizedFeatures);\n\n\t// First check if the cache has a hit and return it if so\n\tconst cacheHit = browserSupportForFeaturesCache.get(cacheKey);\n\tif (cacheHit != null) {\n\t\treturn cacheHit;\n\t}\n\n\t// All of the generated browser maps\n\tconst browserMaps: Map<CaniuseBrowser, string>[] = [];\n\n\tfor (const normalizedFeature of normalizedFeatures) {\n\t\tconst support = getFeatureSupport(normalizedFeature);\n\n\t\t// A map between browser names and their required versions\n\t\tconst browserMap: Map<CaniuseBrowser, string> = new Map();\n\t\tconst entries = Object.entries(support) as [CaniuseBrowser, Record<string, CaniuseSupportKind>][];\n\t\tentries.forEach(([browser, stats]) => {\n\t\t\tconst fullSupportVersion = getFirstVersionWithSupportKind(CaniuseSupportKind.AVAILABLE, stats);\n\t\t\tconst partialSupportVersion = getFirstVersionWithSupportKind(CaniuseSupportKind.PARTIAL_SUPPORT, stats);\n\t\t\tlet versionToSet: string | undefined;\n\n\t\t\tif (fullSupportVersion != null) {\n\t\t\t\tversionToSet = fullSupportVersion;\n\t\t\t}\n\n\t\t\t// Otherwise, check if partial support exists and should be allowed\n\t\t\tif (partialSupportVersion != null) {\n\t\t\t\t// Get all partial support allowances for this specific feature\n\t\t\t\tconst partialSupportMatch = PARTIAL_SUPPORT_ALLOWANCES.get(normalizedFeature);\n\n\t\t\t\t// Check if partial support exists for the browser. // If no full supported version exists or if the partial supported version has a lower version number than the full supported one, use that one instead\n\t\t\t\tif (\n\t\t\t\t\tpartialSupportMatch != null &&\n\t\t\t\t\t(partialSupportMatch === \"*\" || partialSupportMatch.includes(browser)) &&\n\t\t\t\t\t(fullSupportVersion == null || compareVersions(partialSupportVersion, fullSupportVersion) < 0)\n\t\t\t\t) {\n\t\t\t\t\tversionToSet = partialSupportVersion;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (versionToSet == null) {\n\t\t\t\t// Apply additional checks depending on the comparison operator\n\t\t\t\tswitch (comparisonOperator) {\n\t\t\t\t\tcase \"<\":\n\t\t\t\t\tcase \"<=\":\n\t\t\t\t\t\t// Add all browsers with no support whatsoever, or those that require prefixing or flags\n\t\t\t\t\t\tversionToSet = \"-1\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (versionToSet != null) {\n\t\t\t\tbrowserMap.set(browser, versionToSet);\n\t\t\t}\n\t\t});\n\n\t\tbrowserMaps.push(browserMap);\n\t}\n\n\t// Now, remove all browsers that isn't part of all generated browser maps\n\tfor (const browserMap of browserMaps) {\n\t\tfor (const browser of browserMap.keys()) {\n\t\t\tif (!browserMaps.every(map => map.has(browser))) {\n\t\t\t\t// Delete the browser if it isn't included in all of the browser maps\n\t\t\t\tbrowserMap.delete(browser);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Now, prepare a combined browser map\n\tconst combinedBrowserMap: Map<CaniuseBrowser, string> = new Map();\n\n\tfor (const browserMap of browserMaps) {\n\t\tfor (const [browser, version] of browserMap.entries()) {\n\t\t\t// Take the existing entry from the combined map\n\t\t\tconst existingVersion = combinedBrowserMap.get(browser);\n\t\t\t// The browser should be set in the map if it has no entry already\n\t\t\tconst shouldSet = existingVersion !== \"-1\" && (existingVersion == null || version === \"-1\" || compareVersions(version, existingVersion) >= 0);\n\n\t\t\tif (shouldSet) {\n\t\t\t\t// Set the version in the map\n\t\t\t\tcombinedBrowserMap.set(browser, version);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Finally, generate a string array of the browsers\n\t// Make sure that 'not' expressions come last\n\tconst query: string[] = ([] as string[]).concat\n\t\t.apply(\n\t\t\t[],\n\t\t\tArray.from(combinedBrowserMap.entries()).map(([browser, version]) => {\n\t\t\t\t// The version is not a number, so we can't do comparisons on it.\n\t\t\t\tif (isNaN(parseFloat(version))) {\n\t\t\t\t\tswitch (comparisonOperator) {\n\t\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\tcase \"<=\": {\n\t\t\t\t\t\t\tconst previousVersion = getPreviousVersionOfBrowser(browser, version);\n\t\t\t\t\t\t\treturn [`not ${browser} ${version}`, ...(previousVersion == null ? [] : [`${browser} ${comparisonOperator} ${previousVersion}`])];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \">\":\n\t\t\t\t\t\tcase \">=\": {\n\t\t\t\t\t\t\tconst nextVersion = getNextVersionOfBrowser(browser, version);\n\t\t\t\t\t\t\treturn [`${browser} ${version}`, ...(nextVersion == null ? [] : [`${browser} ${comparisonOperator} ${nextVersion}`])];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn parseInt(version) === -1\n\t\t\t\t\t? [\n\t\t\t\t\t\t`${comparisonOperator === \">\" || comparisonOperator === \">=\" ? \"not \" : \"\"}${browser} ${browser === \"op_mini\" ? \"all\" : \"> 0\"}`,\n\t\t\t\t\t\t`${comparisonOperator === \">\" || comparisonOperator === \">=\" ? \"not \" : \"\"}unreleased ${browser} versions`\n\t\t\t\t\t]\n\t\t\t\t\t: [`${browser} ${comparisonOperator} ${version}`];\n\t\t\t})\n\t\t)\n\t\t.sort(sortBrowserslist);\n\tconst returnObject = {\n\t\tquery,\n\t\tbrowsers: new Set(combinedBrowserMap.keys())\n\t};\n\n\t// Store it in the cache before returning it\n\tbrowserSupportForFeaturesCache.set(cacheKey, returnObject);\n\treturn returnObject;\n}\n\n/**\n * Gets the matching CaniuseBrowser for the given UseragentBrowser. Not all are supported, so it may return undefined\n */\nfunction getCaniuseBrowserForUseragentBrowser(parser: UaParserWrapper): Partial<VersionedCaniuseBrowser> {\n\tconst browser = parser.getBrowser();\n\tconst device = parser.getDevice();\n\tconst os = parser.getOS();\n\tconst engine = parser.getEngine();\n\n\t// If the OS is iOS, it is actually Safari that drives the WebView\n\tif (os.name === \"iOS\") {\n\t\t// Opera Mini with the Presto runtime actually works around\n\t\t// the restrictions os the Safari WebView\n\t\tif (browser.name === \"Opera Mini\" && engine.name === \"Presto\") {\n\t\t\treturn {\n\t\t\t\tbrowser: \"op_mini\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\t\t}\n\n\t\t// In all other cases, it is always Safari driving the WebView\n\t\treturn {\n\t\t\tbrowser: \"ios_saf\",\n\t\t\tversion: os.version ?? browser.version\n\t\t};\n\t}\n\n\t// First, if it is a Blackberry device, it will always be the 'bb' browser\n\tif (device.vendor === \"BlackBerry\" || os.name === \"BlackBerry\") {\n\t\treturn {\n\t\t\tbrowser: \"bb\",\n\t\t\tversion: browser.version\n\t\t};\n\t}\n\n\t// For platforms where the HeyTapBrowser doesn't report which Chrome version\n\t// it is based on, we'll have to rely on knowledge from similar user agent strings.\n\t// as far as we know, HeyTapBrowser on non-iOS is always based on Chrome 70 or 77,\n\t// seemingly at random. So we'll have to assume Chrome 70 here.\n\tif (browser.name === \"HeyTapBrowser\" && engine.name === \"WebKit\") {\n\t\treturn {\n\t\t\tbrowser: \"chrome\",\n\t\t\tversion: \"70\"\n\t\t};\n\t}\n\n\t// Unfortunately, since Caniuse doesn't support PaleMoon,\n\t// we will have to remap it to its closest equivalent Firefox\n\t// version (which it is similar to and a fork of).\n\t// This is less than ideal, but unfortunately a requirement for the time being\n\tif (browser.name === \"PaleMoon\" && engine.name === \"Goanna\" && browser.version != null) {\n\t\tconst semver = ensureSemver(undefined, browser.version);\n\n\t\t// The data comes from this table: https://en.wikipedia.org/wiki/Pale_Moon_(web_browser)#Releases\n\t\tif (lte(semver, \"5.0.0\")) {\n\t\t\treturn {\n\t\t\t\tbrowser: \"firefox\",\n\t\t\t\tversion: \"2\"\n\t\t\t};\n\t\t}\n\n\t\t// Between these two versions, the version numbers followed Firefox/Gecko\n\t\telse if (lte(semver, \"24.0.0\")) {\n\t\t\treturn {\n\t\t\t\tbrowser: \"firefox\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\t\t}\n\n\t\t// It kept staying at Firefox 24 for all we know\n\t\telse if (lt(semver, \"27.0.0\")) {\n\t\t\treturn {\n\t\t\t\tbrowser: \"firefox\",\n\t\t\t\tversion: \"24.0.0\"\n\t\t\t};\n\t\t}\n\n\t\t// Then, from v27, it was based on a re-fork of Firefox 38.\n\t\t// Unfortunately, we don't have fresh data as for the versions\n\t\t// in between 27 and 29, so we'll have to stay at version 38 in\n\t\t// this range\n\t\telse if (lt(semver, \"29.0.0\")) {\n\t\t\treturn {\n\t\t\t\tbrowser: \"firefox\",\n\t\t\t\tversion: \"38\"\n\t\t\t};\n\t\t}\n\n\t\t// We know that v29 points to Firefox 68 in some of its user agents\n\t\telse {\n\t\t\treturn {\n\t\t\t\tbrowser: \"firefox\",\n\t\t\t\tversion: \"68\"\n\t\t\t};\n\t\t}\n\t}\n\n\t// For the MIUIBrowser, there are some rare instances for major versions 8 and 9 where they'll have no declared Chromium engine.\n\t// as part of the UA. Under these circumstances, we have to rely on knowledge gathered from scraping related User Agents\n\t// to determine the equivalent Chromium version\n\tif (browser.name === \"MIUI Browser\" && browser.version != null && os.name === \"Android\" && engine.name == null) {\n\t\tconst semver = ensureSemver(undefined, browser.version);\n\n\t\tif (semver.major === 8 || semver.major === 9) {\n\t\t\treturn {\n\t\t\t\tbrowser: \"chrome\",\n\t\t\t\tversion: \"53\"\n\t\t\t};\n\t\t}\n\t}\n\n\tswitch (browser.name) {\n\t\tcase \"Samsung Browser\":\n\t\t\tif (browser.version != null) {\n\t\t\t\treturn {\n\t\t\t\t\tbrowser: \"samsung\",\n\t\t\t\t\tversion: browser.version\n\t\t\t\t};\n\t\t\t} else if (engine.name === \"Blink\" && engine.version != null) {\n\t\t\t\treturn {\n\t\t\t\t\tbrowser: \"chrome\",\n\t\t\t\t\tversion: engine.version\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\tcase \"Android Browser\": {\n\t\t\t// If the vendor is Samsung, the default browser is Samsung Internet\n\t\t\tif (device.vendor === \"Samsung\") {\n\t\t\t\treturn {\n\t\t\t\t\tbrowser: \"samsung\",\n\t\t\t\t\tversion: browser.version\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Default to the stock android browser\n\t\t\treturn {\n\t\t\t\tbrowser: \"android\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\t\t}\n\n\t\tcase \"WebKit\":\n\t\t\t// This will be the case if we're in an iOS Safari WebView\n\t\t\tif (device.type === \"mobile\" || device.type === \"tablet\" || device.type === \"smarttv\" || device.type === \"wearable\" || device.type === \"embedded\") {\n\t\t\t\treturn {\n\t\t\t\t\tbrowser: \"ios_saf\",\n\t\t\t\t\tversion: os.version\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Otherwise, fall back to Safari\n\t\t\treturn {\n\t\t\t\tbrowser: \"safari\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Baidu\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"baidu\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Chrome Headless\":\n\t\tcase \"Chrome WebView\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"chrome\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Facebook\":\n\t\t\t// We've already asserted that this isn't iOS above, so we must be on Android and inside of a WebView\n\t\t\treturn {\n\t\t\t\tbrowser: \"chrome\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Chrome\": {\n\t\t\t// Check if the OS is Android, in which case this is actually Chrome for Android. Make it report as regular Chrome\n\t\t\tif (os.name === \"Android\") {\n\t\t\t\t// Handle a special case on Android where the Chrome version\n\t\t\t\t// is actually the WebKit version, and it is actually the stock\n\t\t\t\t// Android browser.\n\t\t\t\tif (os.version != null && browser.version != null) {\n\t\t\t\t\tconst browserSemver = ensureSemver(\"chrome\", browser.version);\n\t\t\t\t\tconst osSemver = ensureSemver(undefined, os.version);\n\t\t\t\t\tif (lte(osSemver, \"4.4.4\") && gte(browserSemver, \"400.0.0\")) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tbrowser: \"android\",\n\t\t\t\t\t\t\tversion: os.version\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Treat Android Chrome as Desktop Chrome, as these are functionally equivalent and always match each other from a feature support point of view\n\t\t\t\treturn {\n\t\t\t\t\tbrowser: \"chrome\",\n\t\t\t\t\tversion: browser.version\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Otherwise, fall back to chrome\n\t\t\treturn {\n\t\t\t\tbrowser: \"chrome\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\t\t}\n\n\t\tcase \"Edge\": {\n\t\t\t// If the Engine is Blink, it's Chrome-based\n\t\t\tif (engine.name === \"Blink\") {\n\t\t\t\t// If there is no browser version, fall back to Chrome\n\t\t\t\tif (browser.version == null) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"chrome\",\n\t\t\t\t\t\tversion: engine.version\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst semverVersion = ensureSemver(\"edge\", browser.version);\n\n\t\t\t\t// If the Major version is in between 18 and 79, this will be Edge Mobile on Android,\n\t\t\t\t// which is Chromium based but has no related Caniuse browser name. Treat it as Chrome\n\t\t\t\tif (semverVersion.major > 18 && semverVersion.major < 79) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"chrome\",\n\t\t\t\t\t\tversion: engine.version\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbrowser: \"edge\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\t\t}\n\n\t\tcase \"Firefox\":\n\t\t\t// Check if the OS is Android, in which case this is actually Firefox for Android.\n\t\t\tif (os.name === \"Android\") {\n\t\t\t\treturn {\n\t\t\t\t\tbrowser: \"and_ff\",\n\t\t\t\t\tversion: browser.version\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Default to Firefox\n\t\t\treturn {\n\t\t\t\tbrowser: \"firefox\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"IE\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"ie\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"IE Mobile\":\n\t\tcase \"IEMobile\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"ie_mob\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Safari\":\n\t\t\t// If no browser version is reported, and it is based on WebKit,\n\t\t\t// we will have to attempt to \"guess\" the Safari version with mapping the\n\t\t\t// WebKit version to an equivalent Safari version based on the data\n\t\t\t// here: https://en.wikipedia.org/wiki/Safari_version_history, even\n\t\t\t// though this doesn't seem to map correctly to real-world data\n\t\t\tif (browser.version == null && engine.name === \"WebKit\" && engine.version != null) {\n\t\t\t\tconst semver = ensureSemver(undefined, engine.version);\n\n\t\t\t\tif (lt(semver, \"412.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"1.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"522.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"2.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"526.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"3.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"533.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"4.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"536.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"5.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"537.71.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"6.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"600.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"7.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"601.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"8.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"602.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"9.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"604.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"10.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"606.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"11.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"608.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"12.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (lt(semver, \"610.0.0\")) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: \"13.0\"\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Else it is the current Safari version.\n\t\t\t\t// Keep this updated regularly\n\t\t\t\treturn {\n\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\tversion: \"14.0\"\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tbrowser: \"safari\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Mobile Safari\":\n\t\tcase \"MobileSafari\":\n\t\tcase \"Safari Mobile\":\n\t\tcase \"SafariMobile\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"ios_saf\",\n\t\t\t\tversion: os.version ?? browser.version\n\t\t\t};\n\n\t\tcase \"Opera\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"opera\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Opera Mini\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"op_mini\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"Opera Mobi\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"op_mob\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"QQBrowser\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"and_qq\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tcase \"UCBrowser\":\n\t\t\treturn {\n\t\t\t\tbrowser: \"and_uc\",\n\t\t\t\tversion: browser.version\n\t\t\t};\n\n\t\tdefault:\n\t\t\tswitch (engine.name) {\n\t\t\t\t// If the Engine is Blink, it's Chrome\n\t\t\t\tcase \"Blink\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"chrome\",\n\t\t\t\t\t\tversion: engine.version\n\t\t\t\t\t};\n\t\t\t\tcase \"WebKit\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"safari\",\n\t\t\t\t\t\tversion: browser.version\n\t\t\t\t\t};\n\t\t\t\tcase \"EdgeHTML\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"edge\",\n\t\t\t\t\t\tversion: browser.version\n\t\t\t\t\t};\n\t\t\t\tcase \"Gecko\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"firefox\",\n\t\t\t\t\t\tversion: engine.version\n\t\t\t\t\t};\n\t\t\t\tcase \"Presto\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\tbrowser: \"opera\",\n\t\t\t\t\t\tversion: browser.version\n\t\t\t\t\t};\n\t\t\t}\n\t}\n\n\t// Fall back to the unknown Caniuse browser when all\n\t// we received was the name of the OS\n\tif (browser.name == null && engine.name == null && device.type == null && os.name != null) {\n\t\treturn UNKNOWN_CANIUSE_BROWSER;\n\t}\n\n\treturn {};\n}\n\n/**\n * Normalizes the version of the browser such that it plays well with Caniuse\n */\nfunction getCaniuseVersionForUseragentVersion(\n\t{ browser, version }: VersionedCaniuseBrowser,\n\tuseragentBrowser: UseragentBrowser,\n\tuseragentOs: UseragentOs,\n\tuseragentEngine: UseragentEngine\n): string {\n\t// Always use 'all' with Opera Mini\n\tif (browser === \"op_mini\") {\n\t\treturn \"all\";\n\t} else if (browser === \"safari\") {\n\t\t// Check if there is a newer version of the browser\n\t\tconst nextBrowserVersion = getNextVersionOfBrowser(browser, version);\n\n\t\t// If there isn't we're in the Technology Preview\n\t\tif (nextBrowserVersion == null) {\n\t\t\treturn \"TP\";\n\t\t}\n\t}\n\n\tconst coerced = ensureSemver(browser, version);\n\n\t// Make sure that we have a proper Semver version to work with\n\tif (coerced == null) throw new TypeError(`Could not detect the version of: '${version}' for browser: ${browser}`);\n\n\t// Unpack the semver version\n\tconst { major, minor, patch } = coerced;\n\n\t// Generates a Semver version\n\tconst buildSemverVersion = (majorVersion: number, minorVersion?: number, patchVersion?: number): string =>\n\t\t`${majorVersion}${minorVersion == null || minorVersion === 0 ? \"\" : `.${minorVersion}`}${patchVersion == null || patchVersion === 0 ? \"\" : `.${patchVersion}`}`;\n\n\tswitch (browser) {\n\t\tcase \"chrome\":\n\t\t\tif (useragentEngine.name === \"Blink\") {\n\t\t\t\treturn buildSemverVersion(ensureSemver(browser, getClosestMatchingBrowserVersion(browser, useragentEngine.version ?? version)).major);\n\t\t\t}\n\t\t\treturn buildSemverVersion(major);\n\t\tcase \"ie\":\n\t\tcase \"ie_mob\":\n\t\tcase \"edge\":\n\t\tcase \"bb\":\n\t\tcase \"and_chr\":\n\t\tcase \"and_ff\":\n\t\t\t// Always use the major version of these browser\n\t\t\treturn buildSemverVersion(major);\n\n\t\tcase \"opera\":\n\t\tcase \"op_mob\":\n\t\t\t// Opera may have minor versions before it went to Chromium. After that, always use major versions\n\t\t\tif (major === 10 || major === 11 || major === 12) {\n\t\t\t\treturn buildSemverVersion(major, minor);\n\t\t\t}\n\n\t\t\t// For anything else, only use the major version\n\t\t\treturn buildSemverVersion(major);\n\n\t\tcase \"ios_saf\": {\n\t\t\t// For browsers that report as iOS safari, they may actually be other browsers using Safari's WebView.\n\t\t\t// We want them to report as iOS safari since they will support the same browsers, but we have to apply\n\t\t\t// some tricks in order to get the version number\n\n\t\t\t// If it is in fact mobile Safari, just use the reported version\n\t\t\tif (useragentBrowser.name === \"Safari\" || useragentBrowser.name === \"Mobile Safari\") {\n\t\t\t\t// iOS may have minor releases, but never patch releases, according to caniuse\n\t\t\t\treturn buildSemverVersion(major, minor);\n\t\t\t}\n\n\t\t\t// Otherwise, try to get the assumed Safari version from the OS version\n\t\t\telse {\n\t\t\t\tif (useragentOs.version == null) throw new ReferenceError(`Could not detect OS version of iOS for ${useragentBrowser.name} on iOS`);\n\t\t\t\t// Decide the Semver version\n\t\t\t\tconst osSemver = ensureSemver(undefined, getClosestMatchingBrowserVersion(browser, useragentOs.version));\n\n\t\t\t\t// iOS may have minor releases, but never patch releases, according to caniuse\n\t\t\t\treturn buildSemverVersion(osSemver.major, osSemver.minor);\n\t\t\t}\n\t\t}\n\n\t\tcase \"safari\":\n\t\tcase \"firefox\": {\n\t\t\t// These may have minor releases, but never patch releases, according to caniuse\n\t\t\treturn buildSemverVersion(major, minor);\n\t\t}\n\n\t\tcase \"android\":\n\t\t\t// Up to version 4.4.4, these could include patch releases. After that, only use major versions\n\t\t\tif (major < 4) {\n\t\t\t\treturn buildSemverVersion(major, minor);\n\t\t\t} else if (major === 4) {\n\t\t\t\treturn buildSemverVersion(major, minor, patch);\n\t\t\t} else {\n\t\t\t\treturn buildSemverVersion(major);\n\t\t\t}\n\n\t\tcase \"and_uc\":\n\t\tcase \"samsung\":\n\t\tcase \"and_qq\":\n\t\tcase \"baidu\":\n\t\t\t// These may always contain minor versions\n\t\t\treturn buildSemverVersion(major, minor);\n\n\t\tdefault:\n\t\t\t// For anything else, just use the major version\n\t\t\treturn buildSemverVersion(major);\n\t}\n}\n\n/**\n * Generates a browserslist from the provided useragent string\n */\nexport function generateBrowserslistFromUseragent(useragent: string): string[] {\n\t// Check if a user agent has been generated previously for this specific user agent\n\tconst cacheHit = userAgentToBrowserslistCache.get(useragent);\n\tif (cacheHit != null) return cacheHit;\n\n\t// Otherwise, generate a new one\n\tconst parser = new UaParserWrapper(useragent);\n\tconst browser = parser.getBrowser();\n\tconst os = parser.getOS();\n\tconst engine = parser.getEngine();\n\n\t// Prepare a CaniuseBrowser name from the useragent string\n\tconst { browser: caniuseBrowserName, version: caniuseBrowserVersion } = getCaniuseBrowserForUseragentBrowser(parser);\n\n\t// console.log({browser, os, engine, caniuseBrowserName, caniuseBrowserVersion});\n\n\t// If the browser name or version couldn't be determined, return false immediately\n\tif (caniuseBrowserName == null || caniuseBrowserVersion == null) {\n\t\tthrow new TypeError(`No caniuse browser and/or version could be determined for User Agent: ${useragent}`);\n\t}\n\n\tconst closestMatchingCaniuseBrowserVersionOrSmaller = normalizeBrowserVersion(caniuseBrowserName, caniuseBrowserVersion, undefined, true);\n\n\tconst closestMatchingCaniuseBrowserVersion = normalizeBrowserVersion(caniuseBrowserName, caniuseBrowserVersion, undefined);\n\n\tconst caniuseBrowser = { browser: caniuseBrowserName, version: closestMatchingCaniuseBrowserVersionOrSmaller };\n\n\t// Prepare a version from the useragent that plays well with caniuse\n\tconst finalVersion = getCaniuseVersionForUseragentVersion(caniuseBrowser, browser, os, engine);\n\n\t// Prepare a browserslist from the useragent itself\n\tconst normalizedBrowserslist = normalizeBrowserslist([`${caniuseBrowserName} ${finalVersion}`]);\n\n\tconst finalVersionCoerced = ensureSemver(caniuseBrowserName, finalVersion);\n\tconst closestMatchingCaniuseBrowserVersionCoerced = ensureSemver(caniuseBrowserName, closestMatchingCaniuseBrowserVersion);\n\tif (\n\t\tlt(finalVersionCoerced, closestMatchingCaniuseBrowserVersionCoerced, { loose: true }) &&\n\t\tnormalizedBrowserslist[0] === `${caniuseBrowserName} ${closestMatchingCaniuseBrowserVersion}`\n\t) {\n\t\tnormalizedBrowserslist[0] = `${caniuseBrowserName} ${finalVersion}`;\n\t}\n\n\t// Store it in the cache before returning it\n\tuserAgentToBrowserslistCache.set(useragent, normalizedBrowserslist);\n\treturn normalizedBrowserslist;\n}\n\n/**\n * Generates a browserslist from the provided useragent string and checks if it matches\n * the given browserslist\n */\nexport function matchBrowserslistOnUserAgent(useragent: string, browserslist: string[]): boolean {\n\tconst useragentBrowserslist = generateBrowserslistFromUseragent(useragent);\n\n\t// Pipe the input browserslist through Browserslist to normalize it\n\tconst normalizedInputBrowserslist: string[] = normalizeBrowserslist(browserslist);\n\n\t// Now, compare the two, and if the normalized input browserslist includes every option from the user agent, it is matched\n\treturn useragentBrowserslist.every(option => normalizedInputBrowserslist.includes(option));\n}\n\n/**\n * Returns a key to use for the cache between user agents with feature names and whether or not the user agent supports them\n */\nfunction userAgentWithFeaturesCacheKey(useragent: string, features: string[]): string {\n\treturn `${useragent}.${features.join(\",\")}`;\n}\n\n/**\n * Returns true if the given user agent supports the given features\n */\nexport function userAgentSupportsFeatures(useragent: string, ...features: string[]): boolean {\n\tconst normalizedFeatures = features.map(normalizeFeature);\n\n\t// Check if these features has been computed previously for the given user agent\n\tconst cacheKey = userAgentWithFeaturesCacheKey(useragent, normalizedFeatures);\n\tconst cacheHit = userAgentWithFeaturesToSupportCache.get(cacheKey);\n\t// If so, return the cache hit\n\tif (cacheHit != null) return cacheHit;\n\n\t// Prepare a browserslist from the useragent itself\n\tconst useragentBrowserslist = generateBrowserslistFromUseragent(useragent);\n\n\t// Prepare a browserslist for browsers that support the given features\n\tconst supportedBrowserslist = normalizeBrowserslist(browsersWithSupportForFeatures(...normalizedFeatures));\n\n\t// Now, compare the two, and if the browserslist with supported browsers includes every option from the user agent, the user agent supports all of the given features\n\tconst support = useragentBrowserslist.every(option => supportedBrowserslist.includes(option));\n\n\t// Set it in the cache and return it\n\tuserAgentWithFeaturesToSupportCache.set(cacheKey, support);\n\treturn support;\n}\n"],"names":["_coerce","lt","gt","gte","lte","UAParser","coerce","require","createRequire","caniuseFeature","caniuseFeatures","semver"],"mappings":"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"}