| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 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;
|