| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | 'use strict';function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }var browserslist = require('browserslist');var utils = require('./utils');var Browsers = function () {    /**     * Return all prefixes for default browser data     */    Browsers.prefixes = function prefixes() {        if (this.prefixesCache) {            return this.prefixesCache;        }        var data = require('caniuse-lite').agents;        this.prefixesCache = [];        for (var name in data) {            this.prefixesCache.push('-' + data[name].prefix + '-');        }        this.prefixesCache = utils.uniq(this.prefixesCache).sort(function (a, b) {            return b.length - a.length;        });        return this.prefixesCache;    };    /**     * Check is value contain any possibe prefix     */    Browsers.withPrefix = function withPrefix(value) {        if (!this.prefixesRegexp) {            this.prefixesRegexp = new RegExp(this.prefixes().join('|'));        }        return this.prefixesRegexp.test(value);    };    function Browsers(data, requirements, options, stats) {        _classCallCheck(this, Browsers);        this.data = data;        this.options = options || {};        this.stats = stats;        this.selected = this.parse(requirements);    }    /**     * Return browsers selected by requirements     */    Browsers.prototype.parse = function parse(requirements) {        return browserslist(requirements, {            stats: this.stats,            path: this.options.from,            env: this.options.env        });    };    /**     * Return prefix for selected browser     */    Browsers.prototype.prefix = function prefix(browser) {        var _browser$split = browser.split(' '),            name = _browser$split[0],            version = _browser$split[1];        var data = this.data[name];        var prefix = data.prefix_exceptions && data.prefix_exceptions[version];        if (!prefix) {            prefix = data.prefix;        }        return '-' + prefix + '-';    };    /**     * Is browser is selected by requirements     */    Browsers.prototype.isSelected = function isSelected(browser) {        return this.selected.indexOf(browser) !== -1;    };    return Browsers;}();module.exports = Browsers;
 |