.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / autoprefixer / lib / browsers.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/autoprefixer/lib/browsers.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/autoprefixer/lib/browsers.js
new file mode 100644 (file)
index 0000000..c96a72d
--- /dev/null
@@ -0,0 +1,99 @@
+'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;
\ No newline at end of file