|
|
- "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;
- opts.env = this.options.env;
- 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;
|