| "use strict"; | 
|   | 
| var browserslist = require('browserslist'); | 
|   | 
| var agents = require('caniuse-lite').agents; | 
|   | 
| var utils = require('./utils'); | 
|   | 
| var Browsers = /*#__PURE__*/function () { | 
|   /** | 
|      * Return all prefixes for default browser data | 
|      */ | 
|   Browsers.prefixes = function prefixes() { | 
|     if (this.prefixesCache) { | 
|       return this.prefixesCache; | 
|     } | 
|   | 
|     this.prefixesCache = []; | 
|   | 
|     for (var name in agents) { | 
|       this.prefixesCache.push("-" + agents[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 possible 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, browserslistOpts) { | 
|     this.data = data; | 
|     this.options = options || {}; | 
|     this.browserslistOpts = browserslistOpts || {}; | 
|     this.selected = this.parse(requirements); | 
|   } | 
|   /** | 
|      * Return browsers selected by requirements | 
|      */ | 
|   | 
|   | 
|   var _proto = Browsers.prototype; | 
|   | 
|   _proto.parse = function parse(requirements) { | 
|     var opts = {}; | 
|   | 
|     for (var i in this.browserslistOpts) { | 
|       opts[i] = this.browserslistOpts[i]; | 
|     } | 
|   | 
|     opts.path = this.options.from; | 
|     return browserslist(requirements, opts); | 
|   } | 
|   /** | 
|      * Return prefix for selected browser | 
|      */ | 
|   ; | 
|   | 
|   _proto.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 | 
|      */ | 
|   ; | 
|   | 
|   _proto.isSelected = function isSelected(browser) { | 
|     return this.selected.includes(browser); | 
|   }; | 
|   | 
|   return Browsers; | 
| }(); | 
|   | 
| module.exports = Browsers; |