| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 'use strict';const browserslist = require('browserslist');const { compare, has } = require('./helpers');const external = require('./external');const aliases = new Map([  ['and_chr', 'chrome-android'],  ['and_ff', 'firefox-android'],  ['ie_mob', 'ie'],  ['ios_saf', 'ios'],  ['oculus', 'quest'],  ['op_mob', 'opera-android'],  // TODO: Remove from `core-js@4`  ['opera_mobile', 'opera-android'],  ['react', 'react-native'],  ['reactnative', 'react-native'],]);const validTargets = new Set([  'android',  'bun',  'chrome',  'chrome-android',  'deno',  'edge',  'electron',  'firefox',  'firefox-android',  'hermes',  'ie',  'ios',  'node',  'opera',  'opera-android',  'phantom',  'quest',  'react-native',  'rhino',  'safari',  'samsung',]);const toLowerKeys = function (object) {  return Object.entries(object).reduce((accumulator, [key, value]) => {    accumulator[key.toLowerCase()] = value;    return accumulator;  }, {});};module.exports = function (targets) {  const { browsers, esmodules, node, ...rest } = (typeof targets != 'object' || Array.isArray(targets))    ? { browsers: targets } : toLowerKeys(targets);  const list = Object.entries(rest);  const normalizedESModules = esmodules === 'intersect' ? 'intersect' : !!esmodules;  if (browsers && normalizedESModules !== true) {    if (typeof browsers == 'string' || Array.isArray(browsers)) {      list.push(...browserslist(browsers).map(it => it.split(' ')));    } else {      list.push(...Object.entries(browsers));    }  }  if (normalizedESModules === true) {    list.push(...Object.entries(external.modules));  }  if (node) {    list.push(['node', node === 'current' ? process.versions.node : node]);  }  const normalized = list.map(([engine, version]) => {    if (has(browserslist.aliases, engine)) {      engine = browserslist.aliases[engine];    }    if (aliases.has(engine)) {      engine = aliases.get(engine);    }    return [engine, String(version)];  }).filter(([engine]) => {    return validTargets.has(engine);  }).sort(([a], [b]) => {    return a < b ? -1 : a > b ? 1 : 0;  });  const reduced = new Map();  const operator = normalizedESModules === 'intersect' ? '>' : '<=';  for (const [engine, version] of normalized) {    if (!reduced.has(engine) || compare(version, operator, reduced.get(engine))) {      reduced.set(engine, version);    }  }  return reduced;};
 |