| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 'use strict';const browserslist = require('browserslist');const { compare, has } = require('./helpers');const external = require('./external');const aliases = new Map([  ['and_chr', 'chrome'],  ['and_ff', 'firefox'],  ['ie_mob', 'ie'],  ['ios_saf', 'ios'],  ['op_mob', 'opera_mobile'],]);const validTargets = new Set([  'android',  'bun',  'chrome',  'deno',  'edge',  'electron',  'firefox',  'hermes',  'ie',  'ios',  'node',  'oculus',  'opera',  'opera_mobile',  'phantom',  '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);  if (browsers) {    if (typeof browsers == 'string' || Array.isArray(browsers)) {      list.push(...browserslist(browsers).map(it => it.split(' ')));    } else {      list.push(...Object.entries(browsers));    }  }  if (esmodules) {    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 reducedByMinVersion = new Map();  for (const [engine, version] of normalized) {    if (!reducedByMinVersion.has(engine) || compare(version, '<=', reducedByMinVersion.get(engine))) {      reducedByMinVersion.set(engine, version);    }  }  return reducedByMinVersion;};
 |