{"version":3,"sources":["../src/index.ts","../src/browserslist-generator/browserslist-generator.ts","../src/browserslist-generator/browser-version.ts","../src/browserslist-generator/ensure-semver.ts","../src/browserslist-generator/compare-versions.ts","../src/browserslist-generator/normalize-browser-version-regexp.ts","../src/browserslist-generator/util.ts","../src/browserslist-generator/constant.ts","../src/browserslist-generator/ecma-version.ts","../src/browserslist-generator/range-correction.ts","../src/browserslist-generator/ua-parser-wrapper.ts"],"sourcesContent":["export * from \"./browserslist-generator/browserslist-generator.js\";\n","import Browserslist from \"browserslist\";\nimport {feature as caniuseFeature, features as caniuseFeatures, type StatsByAgentID} from \"caniuse-lite\";\nimport * as compatData from \"@mdn/browser-compat-data\" with {type: \"json\"};\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\tES2024_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, CaniuseStatsNormalized, CaniuseBrowserCorrection, VersionedCaniuseBrowser, CaniuseSupportKind} from \"./i-caniuse.js\";\nimport type {Mdn, MdnBrowserName, MdnSupportDict} 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\";\nimport type {MaybeArray, Mutable} from \"helpertypes\";\n\n/**\n * A Cache between user agent names and generated Browserslists\n */\nconst userAgentToBrowserslistCache = new Map<string, string[]>();\n\n/**\n * A Cache for retrieving browser support for some features\n */\nconst browserSupportForFeaturesCache = new Map<string, BrowserSupportForFeaturesCommonResult>();\n\n/**\n * A Cache between feature names and their CaniuseStats\n */\nconst featureToCaniuseStatsCache = new Map<string, CaniuseStatsNormalized>();\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 = new Map<string, boolean>();\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\", \"available\", `4`),\n\tchrome: rangeCorrection(\"and_chr\", \"available\", `7`),\n\tand_chr: rangeCorrection(\"and_chr\", \"available\", `7`),\n\tedge: rangeCorrection(\"edge\", \"available\", \"12\"),\n\tsamsung: rangeCorrection(\"samsung\", \"available\", `4`),\n\topera: rangeCorrection(\"opera\", \"available\", `12`),\n\top_mob: rangeCorrection(\"op_mob\", \"available\", `12`),\n\tfirefox: rangeCorrection(\"firefox\", \"available\", `4`),\n\tand_ff: rangeCorrection(\"and_ff\", \"available\", `4`),\n\tsafari: rangeCorrection(\"safari\", \"available\", `6`),\n\tios_saf: rangeCorrection(\"safari\", \"available\", `5`),\n\tie: rangeCorrection(\"ie\", \"available\", `11`),\n\top_mini: rangeCorrection(\"op_mini\", \"available\", `all`),\n\tbb: rangeCorrection(\"bb\", \"available\", `10`)\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\", \"available\", `45`),\n\tchrome: rangeCorrection(\"and_chr\", \"available\", `45`),\n\tand_chr: rangeCorrection(\"and_chr\", \"available\", `45`),\n\tedge: rangeCorrection(\"edge\", \"available\", \"12\"),\n\tsamsung: rangeCorrection(\"samsung\", \"available\", `5`),\n\topera: rangeCorrection(\"opera\", \"available\", `32`),\n\top_mob: rangeCorrection(\"op_mob\", \"available\", `32`),\n\tfirefox: rangeCorrection(\"firefox\", \"available\", `38`),\n\tand_ff: rangeCorrection(\"and_ff\", \"available\", `38`),\n\tsafari: rangeCorrection(\"safari\", \"available\", `10`),\n\tios_saf: rangeCorrection(\"safari\", \"available\", `10`),\n\tie: rangeCorrection(\"ie\", \"available\", `11`),\n\tie_mob: rangeCorrection(\"ie\", \"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\", \"available\", `47`),\n\tchrome: rangeCorrection(\"and_chr\", \"available\", `47`),\n\tand_chr: rangeCorrection(\"and_chr\", \"available\", `47`),\n\tedge: rangeCorrection(\"edge\", \"available\", \"14\"),\n\tsamsung: rangeCorrection(\"samsung\", \"available\", `5`),\n\topera: rangeCorrection(\"opera\", \"available\", `34`),\n\top_mob: rangeCorrection(\"op_mob\", \"available\", `34`),\n\tfirefox: rangeCorrection(\"firefox\", \"available\", `43`),\n\tand_ff: rangeCorrection(\"and_ff\", \"available\", `43`),\n\tsafari: rangeCorrection(\"safari\", \"available\", `10`),\n\tios_saf: rangeCorrection(\"safari\", \"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\", \"available\", `38`),\n\tchrome: rangeCorrection(\"and_chr\", \"available\", `38`),\n\tand_chr: rangeCorrection(\"and_chr\", \"available\", `38`),\n\tedge: rangeCorrection(\"edge\", \"available\", \"12\"),\n\tsamsung: rangeCorrection(\"samsung\", \"available\", `5`),\n\topera: rangeCorrection(\"opera\", \"available\", `26`),\n\top_mob: rangeCorrection(\"op_mob\", \"available\", `26`),\n\tfirefox: rangeCorrection(\"firefox\", \"available\", `37`),\n\tand_ff: rangeCorrection(\"and_ff\", \"available\", `37`),\n\tsafari: rangeCorrection(\"safari\", \"available\", `10`),\n\tios_saf: rangeCorrection(\"safari\", \"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\", \"available\", `51`),\n\tchrome: rangeCorrection(\"and_chr\", \"available\", `51`),\n\tand_chr: rangeCorrection(\"and_chr\", \"available\", `51`),\n\tedge: rangeCorrection(\"edge\", \"available\", \"13\"),\n\tsamsung: rangeCorrection(\"samsung\", \"available\", `5`),\n\topera: rangeCorrection(\"opera\", \"available\", `38`),\n\top_mob: rangeCorrection(\"op_mob\", \"available\", `38`),\n\tfirefox: rangeCorrection(\"firefox\", \"available\", `48`),\n\tand_ff: rangeCorrection(\"and_ff\", \"available\", `48`),\n\tsafari: rangeCorrection(\"safari\", \"available\", `10`),\n\tios_saf: rangeCorrection(\"safari\", \"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: \"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\", \"unavailable\", `0`, \"13.4\"),\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", \"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: \"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: \"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: \"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: \"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: \"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: \"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: \"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: \"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: \"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\", \"available\", `38`),\n\t\t\tchrome: rangeCorrection(\"chrome\", \"available\", `38`),\n\t\t\tand_chr: rangeCorrection(\"and_chr\", \"available\", `38`),\n\t\t\tedge: rangeCorrection(\"edge\", \"available\", `12`),\n\t\t\topera: rangeCorrection(\"opera\", \"available\", `25`),\n\t\t\top_mob: rangeCorrection(\"op_mob\", \"available\", `25`),\n\t\t\tfirefox: rangeCorrection(\"firefox\", \"available\", `36`),\n\t\t\tand_ff: rangeCorrection(\"and_ff\", \"available\", `36`),\n\t\t\tsafari: rangeCorrection(\"safari\", \"available\", `9`),\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", \"available\", `9`),\n\t\t\tsamsung: rangeCorrection(\"samsung\", \"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\", \"available\", `63`),\n\t\t\tchrome: rangeCorrection(\"chrome\", \"available\", `63`),\n\t\t\tand_chr: rangeCorrection(\"and_chr\", \"available\", `63`),\n\t\t\topera: rangeCorrection(\"opera\", \"available\", `50`),\n\t\t\top_mob: rangeCorrection(\"op_mob\", \"available\", `50`),\n\t\t\tfirefox: rangeCorrection(\"firefox\", \"available\", `57`),\n\t\t\tand_ff: rangeCorrection(\"and_ff\", \"available\", `57`),\n\t\t\tsafari: rangeCorrection(\"safari\", \"available\", `11.1`),\n\t\t\tios_saf: rangeCorrection(\"ios_saf\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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\", \"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: \"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\", \"unavailable\", `0`, `18`),\n\t\t\tsafari: rangeCorrection(\"safari\", \"unavailable\", `0`, `5.1`),\n\t\t\tie: rangeCorrection(\"ie\", \"unavailable\", `0`, `7`),\n\t\t\topera: rangeCorrection(\"safari\", \"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\", \"unavailable\", `0`, `9.4`)\n\t\t}\n\t],\n\t[\n\t\t\"resizeobserver\",\n\t\t{\n\t\t\tsafari: rangeCorrection(\"safari\", \"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 */\nconst FEATURE_TO_BROWSER_DATA_CORRECTIONS_MAP = new Map<string, CaniuseBrowserCorrection>(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\", \"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\ninterface EcmaFeatureFilteringOptions {\n\tsyntaxOnly: boolean;\n\tfeatureFilter?(feature: string): boolean;\n}\n\ninterface BrowsersWithSupportOptions {\n\tfeatures: string[];\n}\n\n/**\n * Generates a Browserslist based on browser support for the given features\n */\nexport function browsersWithSupportForFeatures(...features: string[]): string[];\nexport function browsersWithSupportForFeatures(options: BrowsersWithSupportOptions): string[];\nexport function browsersWithSupportForFeatures(...args: [BrowsersWithSupportOptions] | string[]): string[] {\n\tconst [firstArg] = args;\n\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\tconst {features} = firstArg != null && typeof firstArg === \"object\" ? firstArg : {features: args as string[]};\n\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, options?: Partial<EcmaFeatureFilteringOptions>): boolean {\n\tconst features = getFeaturesForEcmaVersion(version, options);\n\tif (features.length === 0) return true;\n\n\treturn browserslistSupportsFeatures(browserslist, ...features);\n}\n\nexport function getFeaturesForEcmaVersion(version: EcmaVersion, options?: Partial<EcmaFeatureFilteringOptions>): string[] {\n\tconst features = getFeaturesForEcmaVersionInner(version);\n\tconst filteredFirstPass = Boolean(options?.syntaxOnly) ? features.filter(feature => !feature.startsWith(\"javascript.builtins.\")) : features;\n\treturn typeof options?.featureFilter === \"function\" ? filteredFirstPass.filter(options.featureFilter) : filteredFirstPass;\n}\n\nfunction getFeaturesForEcmaVersionInner(version: EcmaVersion): string[] {\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 [];\n\n\t\tcase \"es5\":\n\t\t\treturn ES5_FEATURES;\n\n\t\tcase \"es2015\":\n\t\t\treturn ES2015_FEATURES;\n\n\t\tcase \"es2016\":\n\t\t\treturn ES2016_FEATURES;\n\n\t\tcase \"es2017\":\n\t\t\treturn ES2017_FEATURES;\n\n\t\tcase \"es2018\":\n\t\t\treturn ES2018_FEATURES;\n\n\t\tcase \"es2019\":\n\t\t\treturn ES2019_FEATURES;\n\n\t\tcase \"es2020\":\n\t\t\treturn ES2020_FEATURES;\n\n\t\tcase \"es2021\":\n\t\t\treturn ES2021_FEATURES;\n\n\t\tcase \"es2022\":\n\t\t\treturn ES2022_FEATURES;\n\n\t\tcase \"es2023\":\n\t\t\treturn ES2023_FEATURES;\n\n\t\tcase \"es2024\":\n\t\t\treturn ES2024_FEATURES;\n\t}\n}\n\n/**\n * Returns the appropriate Ecma version for the given Browserslist\n */\nexport function getAppropriateEcmaVersionForBrowserslist(browserslist: string[], options?: Partial<EcmaFeatureFilteringOptions>): EcmaVersion {\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2024\", options)) return \"es2024\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2023\", options)) return \"es2023\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2022\", options)) return \"es2022\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2021\", options)) return \"es2021\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2020\", options)) return \"es2020\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2019\", options)) return \"es2019\";\n\tif (browserslistSupportsEcmaVersion(browserslist, \"es2018\", options)) return \"es2018\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es2017\", options)) return \"es2017\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es2016\", options)) return \"es2016\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es2015\", options)) return \"es2015\";\n\telse if (browserslistSupportsEcmaVersion(browserslist, \"es5\", options)) 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, options?: Partial<EcmaFeatureFilteringOptions>): string[] {\n\tswitch (version) {\n\t\tcase \"es3\":\n\t\t\treturn browsersWithoutSupportForFeatures(...getFeaturesForEcmaVersion(\"es5\", options));\n\t\tdefault:\n\t\t\treturn browsersWithSupportForFeatures(...getFeaturesForEcmaVersion(version, options));\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[];\nexport function browsersWithoutSupportForFeatures(options: BrowsersWithSupportOptions): string[];\nexport function browsersWithoutSupportForFeatures(...args: [BrowsersWithSupportOptions] | string[]): string[] {\n\tconst [firstArg] = args;\n\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\tconst {features} = firstArg != null && typeof firstArg === \"object\" ? firstArg : {features: args as string[]};\n\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 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// The data for the QQ browser is severely lacking and unreliable\n\t\tbrowser === \"and_qq\" ||\n\t\t// The data for the UC browser is severely lacking and unreliable\n\t\tbrowser === \"and_uc\" ||\n\t\t// The data for the Baidu browser is severely lacking and unreliable\n\t\tbrowser === \"baidu\" ||\n\t\t// The data for the KaiOS browser is severely lacking and unreliable\n\t\tbrowser === \"kaios\" ||\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: StatsByAgentID, 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 StatsByAgentID)[];\n\tkeys.forEach(browser => {\n\t\tconst browserDict = stats[browser] as Mutable<(typeof stats)[typeof browser]> | undefined;\n\t\tif (browserDict == null) return;\n\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] ?? version);\n\n\t\t\tlet supportKind: CaniuseSupportKind;\n\n\t\t\tif (support === \"available\" || support === \"unavailable\" || support === \"partial_support\" || support === \"prefixed\") {\n\t\t\t\tsupportKind = support;\n\t\t\t} else if (support.startsWith(\"y\")) {\n\t\t\t\tsupportKind = \"available\";\n\t\t\t} else if (support.startsWith(\"n\")) {\n\t\t\t\tsupportKind = \"unavailable\";\n\t\t\t} else if (support.startsWith(\"a\")) {\n\t\t\t\tsupportKind = \"partial_support\";\n\t\t\t} else {\n\t\t\t\tsupportKind = \"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 as keyof CaniuseStatsNormalized];\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 packedFeature = caniuseFeatures[feature];\n\tif (packedFeature == null) {\n\t\tthrow new TypeError(`The given feature: '${feature}' is unknown. It must be a valid Caniuse or MDN feature!`);\n\t}\n\n\tconst rawStats = caniuseFeature(packedFeature).stats;\n\n\tfor (const browser of Object.keys(rawStats)) {\n\t\tconst browserDict = rawStats[browser] as Mutable<(typeof rawStats)[typeof browser]> | undefined;\n\t\tif (browserDict == null) continue;\n\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 = objectPath.get(compatData, feature) as Mdn;\n\tconst supportMap = match.__compat.support;\n\n\tconst formatBrowser = (mdnBrowser: MdnBrowserName, caniuseBrowser: CaniuseBrowser): Record<string, CaniuseSupportKind> => {\n\t\tconst versionMap = supportMap[mdnBrowser] as MaybeArray<MdnSupportDict> | undefined;\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\t(() => {\n\t\t\t\t\t\t\tconst versionStillInBrowser = versionMap.find(element => element.version_removed == null);\n\t\t\t\t\t\t\treturn versionStillInBrowser?.version_added == null ? false : versionStillInBrowser.version_added;\n\t\t\t\t\t\t})()\n\t\t\t\t\t: versionMap.version_added;\n\n\t\tconst dict: Record<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] = \"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)) ? \"available\" : \"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\tandroid: formatBrowser(\"webview_android\", \"android\"),\n\t\tbb: {},\n\t\tand_qq: {},\n\t\tand_uc: {},\n\t\tkaios: {},\n\t\tbaidu: {},\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: Record<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 = new Map<CaniuseBrowser, string>();\n\tconst entries = Object.entries(support) as [CaniuseBrowser, Record<string, CaniuseSupportKind>][];\n\tentries.forEach(([browser, stats]) => {\n\t\tconst fullSupportVersion = getFirstVersionWithSupportKind(\"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 = new Map<CaniuseBrowser, string>();\n\t\tconst entries = Object.entries(support) as [CaniuseBrowser, Record<string, CaniuseSupportKind>][];\n\t\tentries.forEach(([browser, stats]) => {\n\t\t\tconst fullSupportVersion = getFirstVersionWithSupportKind(\"available\", stats);\n\t\t\tconst partialSupportVersion = getFirstVersionWithSupportKind(\"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 = new Map<CaniuseBrowser, string>();\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\t`${comparisonOperator === \">\" || comparisonOperator === \">=\" ? \"not \" : \"\"}${browser} ${browser === \"op_mini\" ? \"all\" : \"> 0\"}`,\n\t\t\t\t\t\t\t`${comparisonOperator === \">\" || comparisonOperator === \">=\" ? \"not \" : \"\"}unreleased ${browser} versions`\n\t\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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 != null && (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\tcase \"Samsung Internet\":\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 (browserSemver != null && osSemver != null && 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 != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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 (semver != null && 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\tconst semver = ensureSemver(browser, getClosestMatchingBrowserVersion(browser, useragentEngine.version ?? version));\n\t\t\t\treturn semver == null ? buildSemverVersion(major) : buildSemverVersion(semver.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 osSemver == null ? buildSemverVersion(major) : 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\tcase \"kaios\":\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// 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\tfinalVersionCoerced != null &&\n\t\tclosestMatchingCaniuseBrowserVersionCoerced != null &&\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","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\";\nimport {assertNonEmptyArray} from \"./util.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\tconst semverClosestMatch = ensureSemver(browser, closestMatch);\n\n\t// Allow smaller, but not larger browser versions than the known ones\n\tif (allowSmaller && semverClosestMatch != null && lt(givenVersionCoerced, semverClosestMatch, {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\tassertNonEmptyArray(versions, `Could not find any versions for browser: ${browser}`);\n\n\tconst coerced = ensureSemver(browser, version);\n\n\tif (browser === \"op_mini\" && version === \"all\") return \"all\";\n\tif (browser === \"safari\") {\n\t\tconst browserMajorMinorSemver = coerced == null ? undefined : ensureSemver(browser, `${coerced.major}.${coerced.minor}`);\n\t\tconst browserLatestNonTpSemver = coerced == null ? undefined : ensureSemver(browser, versions.slice(-2)[0]!);\n\n\t\tif (version === \"TP\") {\n\t\t\treturn \"TP\";\n\t\t}\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 (browserMajorMinorSemver != null && browserLatestNonTpSemver != null && gt(browserMajorMinorSemver, browserLatestNonTpSemver)) {\n\t\t\treturn \"TP\";\n\t\t}\n\t}\n\n\tlet [candidate] = versions;\n\n\tversions.forEach(currentVersion => {\n\t\tconst currentCoerced = ensureSemver(browser, currentVersion);\n\t\tif (currentCoerced != null && coerced != null && 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 = 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 (firstVersionSemver != null && nextInputSemver != null && 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\tif (normalizedVersion != null) {\n\t\t\tversions.push(normalizedVersion);\n\t\t}\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\tassertNonEmptyArray(versions);\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\tassertNonEmptyArray(versions);\n\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","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 | undefined {\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}) ?? undefined;\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","export function assertNonEmptyArray<T>(array: T[], message = \"Array is empty\"): asserts array is [first: T, ...rest: T[]] {\n\tif (array.length === 0) {\n\t\tthrow new Error(message);\n\t}\n\n\treturn;\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\" | \"es2024\";\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\nexport const ES2024_FEATURES: string[] = [\n\t...ES2023_FEATURES,\n\t\"javascript.builtins.String.isWellFormed\",\n\t\"javascript.builtins.String.toWellFormed\",\n\t\"javascript.builtins.Atomics.waitAsync\",\n\t\"javascript.builtins.ArrayBuffer.resize\",\n\t\"javascript.builtins.Object.groupBy\",\n\t\"javascript.builtins.Map.groupBy\",\n\t\"javascript.builtins.Promise.withResolvers\",\n\t\"javascript.builtins.ArrayBuffer.transfer\"\n];\n","import {gte, lte} from \"semver\";\nimport {getSortedBrowserVersions} from \"./browser-version.js\";\nimport {coerceToString} from \"./ensure-semver.js\";\nimport type {CaniuseBrowser, CaniuseDataCorrection, CaniuseSupportKind} 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","import {coerce} from \"semver\";\nimport {UAParser} from \"ua-parser-js\";\nimport {createIsbotFromList, list} 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\nconst isbot = createIsbotFromList([...list, \"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\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\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\" && Boolean(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\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\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\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\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"],"mappings":"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","names":["import_browserslist","import_semver","import_semver","_coerce","_coerce","Browserslist","import_semver","import_semver","Browserslist","caniuseFeatures","caniuseFeature","objectPath"]}