123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- '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;
|