const BROWSER_MAPPING = { and_chr: 'chrome', and_ff: 'firefox', ie_mob: 'ie', op_mob: 'opera', and_qq: null, and_uc: null, baidu: null, bb: null, kaios: null, op_mini: null, }; function browserslistToTargets(browserslist) { let targets = {}; for (let browser of browserslist) { let [name, v] = browser.split(' '); if (BROWSER_MAPPING[name] === null) { continue; } let version = parseVersion(v); if (version == null) { continue; } if (targets[name] == null || version < targets[name]) { targets[name] = version; } } return targets; } function parseVersion(version) { let [major, minor = 0, patch = 0] = version .split('-')[0] .split('.') .map(v => parseInt(v, 10)); if (isNaN(major) || isNaN(minor) || isNaN(patch)) { return null; } return (major << 16) | (minor << 8) | patch; } module.exports = browserslistToTargets;