aboutsummaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/browsers.js
blob: f2166f1798fb185c3e4b43518fb78c9eba153f12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
"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;