(function() { var Browsers, browserslist, utils; browserslist = require('browserslist'); utils = require('./utils'); Browsers = (function() { Browsers.prefixes = function() { var data, i, name; if (this.prefixesCache) { return this.prefixesCache; } data = require('caniuse-db/data').agents; return this.prefixesCache = utils.uniq((function() { var _results; _results = []; for (name in data) { i = data[name]; _results.push("-" + i.prefix + "-"); } return _results; })()).sort(function(a, b) { return b.length - a.length; }); }; Browsers.withPrefix = function(value) { if (!this.prefixesRegexp) { this.prefixesRegexp = RegExp("" + (this.prefixes().join('|'))); } return this.prefixesRegexp.test(value); }; function Browsers(_at_data, requirements, _at_options) { this.data = _at_data; this.options = _at_options; this.selected = this.parse(requirements); } Browsers.prototype.parse = function(requirements) { var _ref; return browserslist(requirements, { path: (_ref = this.options) != null ? _ref.from : void 0 }); }; Browsers.prototype.browsers = function(criteria) { var browser, data, selected, versions, _ref; selected = []; _ref = this.data; for (browser in _ref) { data = _ref[browser]; versions = criteria(data).map(function(version) { return browser + " " + version; }); selected = selected.concat(versions); } return selected; }; Browsers.prototype.prefix = function(browser) { var data, name, prefix, version, _ref; _ref = browser.split(' '), name = _ref[0], version = _ref[1]; data = this.data[name]; if (data.prefix_exceptions) { prefix = data.prefix_exceptions[version]; } prefix || (prefix = data.prefix); return '-' + prefix + '-'; }; Browsers.prototype.isSelected = function(browser) { return this.selected.indexOf(browser) !== -1; }; return Browsers; })(); module.exports = Browsers; }).call(this);