autoprefixer 8.6.5 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +1 -1
- package/bin/autoprefixer +16 -16
- package/data/prefixes.js +435 -427
- package/lib/at-rule.js +38 -38
- package/lib/autoprefixer.js +92 -92
- package/lib/brackets.js +46 -46
- package/lib/browsers.js +56 -58
- package/lib/declaration.js +161 -161
- package/lib/hacks/align-content.js +49 -50
- package/lib/hacks/align-items.js +46 -47
- package/lib/hacks/align-self.js +47 -48
- package/lib/hacks/animation.js +18 -18
- package/lib/hacks/appearance.js +17 -17
- package/lib/hacks/background-clip.js +48 -0
- package/lib/hacks/background-size.js +19 -19
- package/lib/hacks/block-logical.js +31 -27
- package/lib/hacks/border-image.js +16 -16
- package/lib/hacks/border-radius.js +43 -43
- package/lib/hacks/break-props.js +57 -57
- package/lib/hacks/color-adjust.js +21 -21
- package/lib/hacks/cross-fade.js +37 -37
- package/lib/hacks/display-flex.js +58 -58
- package/lib/hacks/display-grid.js +18 -18
- package/lib/hacks/filter-value.js +12 -12
- package/lib/hacks/filter.js +16 -16
- package/lib/hacks/flex-basis.js +42 -42
- package/lib/hacks/flex-direction.js +87 -87
- package/lib/hacks/flex-flow.js +60 -60
- package/lib/hacks/flex-grow.js +31 -31
- package/lib/hacks/flex-shrink.js +42 -42
- package/lib/hacks/flex-spec.js +12 -12
- package/lib/hacks/flex-wrap.js +19 -19
- package/lib/hacks/flex.js +61 -62
- package/lib/hacks/fullscreen.js +23 -23
- package/lib/hacks/gradient.js +490 -490
- package/lib/hacks/grid-area.js +28 -28
- package/lib/hacks/grid-column-align.js +27 -27
- package/lib/hacks/grid-end.js +47 -47
- package/lib/hacks/grid-row-align.js +27 -27
- package/lib/hacks/grid-row-column.js +25 -25
- package/lib/hacks/grid-rows-columns.js +36 -36
- package/lib/hacks/grid-start.js +32 -32
- package/lib/hacks/grid-template-areas.js +82 -78
- package/lib/hacks/grid-template.js +69 -65
- package/lib/hacks/grid-utils.js +450 -308
- package/lib/hacks/image-rendering.js +46 -46
- package/lib/hacks/image-set.js +19 -19
- package/lib/hacks/inline-logical.js +21 -21
- package/lib/hacks/intrinsic.js +48 -48
- package/lib/hacks/justify-content.js +63 -64
- package/lib/hacks/mask-border.js +25 -25
- package/lib/hacks/order.js +43 -43
- package/lib/hacks/overscroll-behavior.js +32 -32
- package/lib/hacks/pixelated.js +36 -36
- package/lib/hacks/placeholder.js +36 -36
- package/lib/hacks/text-decoration.js +17 -17
- package/lib/hacks/text-emphasis-position.js +15 -15
- package/lib/hacks/transform-decl.js +92 -92
- package/lib/hacks/writing-mode.js +24 -24
- package/lib/info.js +135 -135
- package/lib/old-selector.js +69 -69
- package/lib/old-value.js +15 -15
- package/lib/prefixer.js +125 -126
- package/lib/prefixes.js +351 -351
- package/lib/processor.js +396 -396
- package/lib/resolution.js +110 -107
- package/lib/selector.js +101 -101
- package/lib/supports.js +245 -246
- package/lib/transition.js +394 -393
- package/lib/utils.js +61 -61
- package/lib/value.js +94 -94
- package/package.json +7 -4
- package/AUTHORS +0 -160
package/lib/at-rule.js
CHANGED
|
@@ -11,60 +11,60 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
|
11
11
|
var Prefixer = require('./prefixer');
|
|
12
12
|
|
|
13
13
|
var AtRule = function (_Prefixer) {
|
|
14
|
-
|
|
14
|
+
_inherits(AtRule, _Prefixer);
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
function AtRule() {
|
|
17
|
+
_classCallCheck(this, AtRule);
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
return _possibleConstructorReturn(this, _Prefixer.apply(this, arguments));
|
|
20
|
+
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
23
|
* Clone and add prefixes for at-rule
|
|
24
24
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
AtRule.prototype.add = function add(rule, prefix) {
|
|
26
|
+
var prefixed = prefix + rule.name;
|
|
27
|
+
|
|
28
|
+
var already = rule.parent.some(function (i) {
|
|
29
|
+
return i.name === prefixed && i.params === rule.params;
|
|
30
|
+
});
|
|
31
|
+
if (already) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
var cloned = this.clone(rule, { name: prefixed });
|
|
36
|
+
return rule.parent.insertBefore(rule, cloned);
|
|
37
|
+
};
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
/**
|
|
40
40
|
* Clone node with prefixes
|
|
41
41
|
*/
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
AtRule.prototype.process = function process(node) {
|
|
45
|
+
var parent = this.parentPrefix(node);
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
for (var _iterator = this.prefixes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
48
|
+
var _ref;
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
if (_isArray) {
|
|
51
|
+
if (_i >= _iterator.length) break;
|
|
52
|
+
_ref = _iterator[_i++];
|
|
53
|
+
} else {
|
|
54
|
+
_i = _iterator.next();
|
|
55
|
+
if (_i.done) break;
|
|
56
|
+
_ref = _i.value;
|
|
57
|
+
}
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
var prefix = _ref;
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
if (!parent || parent === prefix) {
|
|
62
|
+
this.add(node, prefix);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
return AtRule;
|
|
68
68
|
}(Prefixer);
|
|
69
69
|
|
|
70
70
|
module.exports = AtRule;
|
package/lib/autoprefixer.js
CHANGED
|
@@ -4,128 +4,128 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
|
|
|
4
4
|
|
|
5
5
|
var browserslist = require('browserslist');
|
|
6
6
|
var postcss = require('postcss');
|
|
7
|
+
var agents = require('caniuse-lite').agents;
|
|
7
8
|
|
|
8
9
|
var Browsers = require('./browsers');
|
|
9
10
|
var Prefixes = require('./prefixes');
|
|
11
|
+
var data = require('../data/prefixes');
|
|
12
|
+
var info = require('./info');
|
|
10
13
|
|
|
11
14
|
function isPlainObject(obj) {
|
|
12
|
-
|
|
15
|
+
return Object.prototype.toString.apply(obj) === '[object Object]';
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
var cache = {};
|
|
16
19
|
|
|
17
20
|
function timeCapsule(result, prefixes) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
if (prefixes.browsers.selected.length === 0) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (prefixes.add.selectors.length > 0) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (Object.keys(prefixes.add).length > 2) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* istanbul ignore next */
|
|
32
|
+
result.warn('Greetings, time traveller. ' + 'We are in the golden age of prefix-less CSS, ' + 'where Autoprefixer is no longer needed for your stylesheet.');
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
module.exports = postcss.plugin('autoprefixer', function () {
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
for (var _len = arguments.length, reqs = Array(_len), _key = 0; _key < _len; _key++) {
|
|
37
|
+
reqs[_key] = arguments[_key];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var options = void 0;
|
|
41
|
+
if (reqs.length === 1 && isPlainObject(reqs[0])) {
|
|
42
|
+
options = reqs[0];
|
|
43
|
+
reqs = undefined;
|
|
44
|
+
} else if (reqs.length === 0 || reqs.length === 1 && !reqs[0]) {
|
|
45
|
+
reqs = undefined;
|
|
46
|
+
} else if (reqs.length <= 2 && (reqs[0] instanceof Array || !reqs[0])) {
|
|
47
|
+
options = reqs[1];
|
|
48
|
+
reqs = reqs[0];
|
|
49
|
+
} else if (_typeof(reqs[reqs.length - 1]) === 'object') {
|
|
50
|
+
options = reqs.pop();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (!options) {
|
|
54
|
+
options = {};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (options.browser) {
|
|
58
|
+
throw new Error('Change `browser` option to `browsers` in Autoprefixer');
|
|
59
|
+
} else if (options.browserslist) {
|
|
60
|
+
throw new Error('Change `browserslist` option to `browsers` in Autoprefixer');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (options.browsers) {
|
|
64
|
+
reqs = options.browsers;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (typeof options.grid === 'undefined') {
|
|
68
|
+
options.grid = false;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var brwlstOpts = {
|
|
72
|
+
ignoreUnknownVersions: options.ignoreUnknownVersions,
|
|
73
|
+
stats: options.stats
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
function loadPrefixes(opts) {
|
|
77
|
+
var d = module.exports.data;
|
|
78
|
+
var browsers = new Browsers(d.browsers, reqs, opts, brwlstOpts);
|
|
79
|
+
var key = browsers.selected.join(', ') + JSON.stringify(options);
|
|
80
|
+
|
|
81
|
+
if (!cache[key]) {
|
|
82
|
+
cache[key] = new Prefixes(d.prefixes, browsers, options);
|
|
35
83
|
}
|
|
36
84
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
85
|
+
return cache[key];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function plugin(css, result) {
|
|
89
|
+
var prefixes = loadPrefixes({
|
|
90
|
+
from: css.source && css.source.input.file,
|
|
91
|
+
env: options.env
|
|
92
|
+
});
|
|
93
|
+
timeCapsule(result, prefixes);
|
|
94
|
+
if (options.remove !== false) {
|
|
95
|
+
prefixes.processor.remove(css, result);
|
|
48
96
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
options = {};
|
|
97
|
+
if (options.add !== false) {
|
|
98
|
+
prefixes.processor.add(css, result);
|
|
52
99
|
}
|
|
100
|
+
}
|
|
53
101
|
|
|
54
|
-
|
|
55
|
-
throw new Error('Change `browser` option to `browsers` in Autoprefixer');
|
|
56
|
-
} else if (options.browserslist) {
|
|
57
|
-
throw new Error('Change `browserslist` option to `browsers` in Autoprefixer');
|
|
58
|
-
}
|
|
102
|
+
plugin.options = options;
|
|
59
103
|
|
|
60
|
-
|
|
61
|
-
reqs = options.browsers;
|
|
62
|
-
}
|
|
104
|
+
plugin.browsers = reqs;
|
|
63
105
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
106
|
+
plugin.info = function (opts) {
|
|
107
|
+
opts = opts || {};
|
|
108
|
+
opts.from = opts.from || process.cwd();
|
|
109
|
+
|
|
110
|
+
return info(loadPrefixes(opts));
|
|
111
|
+
};
|
|
67
112
|
|
|
68
|
-
|
|
69
|
-
ignoreUnknownVersions: options.ignoreUnknownVersions,
|
|
70
|
-
stats: options.stats
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
var loadPrefixes = function loadPrefixes(opts) {
|
|
74
|
-
var data = module.exports.data;
|
|
75
|
-
var browsers = new Browsers(data.browsers, reqs, opts, brwlstOpts);
|
|
76
|
-
var key = browsers.selected.join(', ') + JSON.stringify(options);
|
|
77
|
-
|
|
78
|
-
if (!cache[key]) {
|
|
79
|
-
cache[key] = new Prefixes(data.prefixes, browsers, options);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return cache[key];
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
var plugin = function plugin(css, result) {
|
|
86
|
-
var prefixes = loadPrefixes({
|
|
87
|
-
from: css.source && css.source.input.file,
|
|
88
|
-
env: options.env
|
|
89
|
-
});
|
|
90
|
-
timeCapsule(result, prefixes);
|
|
91
|
-
if (options.remove !== false) {
|
|
92
|
-
prefixes.processor.remove(css, result);
|
|
93
|
-
}
|
|
94
|
-
if (options.add !== false) {
|
|
95
|
-
prefixes.processor.add(css, result);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
plugin.options = options;
|
|
100
|
-
|
|
101
|
-
plugin.browsers = reqs;
|
|
102
|
-
|
|
103
|
-
plugin.info = function (opts) {
|
|
104
|
-
opts = opts || {};
|
|
105
|
-
opts.from = opts.from || process.cwd();
|
|
106
|
-
|
|
107
|
-
return require('./info')(loadPrefixes(opts));
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
return plugin;
|
|
113
|
+
return plugin;
|
|
111
114
|
});
|
|
112
115
|
|
|
113
116
|
/**
|
|
114
117
|
* Autoprefixer data
|
|
115
118
|
*/
|
|
116
|
-
module.exports.data = {
|
|
117
|
-
browsers: require('caniuse-lite').agents,
|
|
118
|
-
prefixes: require('../data/prefixes')
|
|
119
|
-
};
|
|
119
|
+
module.exports.data = { browsers: agents, prefixes: data
|
|
120
120
|
|
|
121
|
-
/**
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
module.exports.defaults = browserslist.defaults;
|
|
121
|
+
/**
|
|
122
|
+
* Autoprefixer default browsers
|
|
123
|
+
*/
|
|
124
|
+
};module.exports.defaults = browserslist.defaults;
|
|
125
125
|
|
|
126
126
|
/**
|
|
127
127
|
* Inspect with default Autoprefixer
|
|
128
128
|
*/
|
|
129
129
|
module.exports.info = function () {
|
|
130
|
-
|
|
130
|
+
return module.exports().info();
|
|
131
131
|
};
|
package/lib/brackets.js
CHANGED
|
@@ -2,70 +2,70 @@
|
|
|
2
2
|
|
|
3
3
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
5
|
+
function last(array) {
|
|
6
|
+
return array[array.length - 1];
|
|
7
|
+
}
|
|
8
8
|
|
|
9
9
|
var brackets = {
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
12
|
* Parse string to nodes tree
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
parse: function parse(str) {
|
|
15
|
+
var current = [''];
|
|
16
|
+
var stack = [current];
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
for (var i = 0; i < str.length; i++) {
|
|
19
|
+
var sym = str[i];
|
|
20
|
+
if (sym === '(') {
|
|
21
|
+
current = [''];
|
|
22
|
+
last(stack).push(current);
|
|
23
|
+
stack.push(current);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
if (sym === ')') {
|
|
28
|
+
stack.pop();
|
|
29
|
+
current = last(stack);
|
|
30
|
+
current.push('');
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
current[current.length - 1] += sym;
|
|
35
|
+
}
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
return stack[0];
|
|
38
|
+
},
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
/**
|
|
42
42
|
* Generate output string by nodes tree
|
|
43
43
|
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
stringify: function stringify(ast) {
|
|
45
|
+
var result = '';
|
|
46
|
+
for (var _iterator = ast, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
47
|
+
var _ref;
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
if (_isArray) {
|
|
50
|
+
if (_i >= _iterator.length) break;
|
|
51
|
+
_ref = _iterator[_i++];
|
|
52
|
+
} else {
|
|
53
|
+
_i = _iterator.next();
|
|
54
|
+
if (_i.done) break;
|
|
55
|
+
_ref = _i.value;
|
|
56
|
+
}
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
var i = _ref;
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object') {
|
|
61
|
+
result += '(' + brackets.stringify(i) + ')';
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
return result;
|
|
65
|
+
result += i;
|
|
68
66
|
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
module.exports = brackets;
|
package/lib/browsers.js
CHANGED
|
@@ -3,99 +3,97 @@
|
|
|
3
3
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
4
4
|
|
|
5
5
|
var browserslist = require('browserslist');
|
|
6
|
+
var agents = require('caniuse-lite').agents;
|
|
6
7
|
|
|
7
8
|
var utils = require('./utils');
|
|
8
9
|
|
|
9
10
|
var Browsers = function () {
|
|
10
|
-
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
12
|
* Return all prefixes for default browser data
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var data = require('caniuse-lite').agents;
|
|
14
|
+
Browsers.prefixes = function prefixes() {
|
|
15
|
+
if (this.prefixesCache) {
|
|
16
|
+
return this.prefixesCache;
|
|
17
|
+
}
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
this.prefixesCache = [];
|
|
20
|
+
for (var name in agents) {
|
|
21
|
+
this.prefixesCache.push('-' + agents[name].prefix + '-');
|
|
22
|
+
}
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
this.prefixesCache = utils.uniq(this.prefixesCache).sort(function (a, b) {
|
|
25
|
+
return b.length - a.length;
|
|
26
|
+
});
|
|
29
27
|
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
return this.prefixesCache;
|
|
29
|
+
};
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
/**
|
|
34
32
|
* Check is value contain any possibe prefix
|
|
35
33
|
*/
|
|
36
34
|
|
|
37
35
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
Browsers.withPrefix = function withPrefix(value) {
|
|
37
|
+
if (!this.prefixesRegexp) {
|
|
38
|
+
this.prefixesRegexp = new RegExp(this.prefixes().join('|'));
|
|
39
|
+
}
|
|
42
40
|
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
return this.prefixesRegexp.test(value);
|
|
42
|
+
};
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
function Browsers(data, requirements, options, browserslistOpts) {
|
|
45
|
+
_classCallCheck(this, Browsers);
|
|
48
46
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
this.data = data;
|
|
48
|
+
this.options = options || {};
|
|
49
|
+
this.browserslistOpts = browserslistOpts || {};
|
|
50
|
+
this.selected = this.parse(requirements);
|
|
51
|
+
}
|
|
54
52
|
|
|
55
|
-
|
|
53
|
+
/**
|
|
56
54
|
* Return browsers selected by requirements
|
|
57
55
|
*/
|
|
58
56
|
|
|
59
57
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
58
|
+
Browsers.prototype.parse = function parse(requirements) {
|
|
59
|
+
var opts = {};
|
|
60
|
+
for (var i in this.browserslistOpts) {
|
|
61
|
+
opts[i] = this.browserslistOpts[i];
|
|
62
|
+
}
|
|
63
|
+
opts.path = this.options.from;
|
|
64
|
+
opts.env = this.options.env;
|
|
65
|
+
return browserslist(requirements, opts);
|
|
66
|
+
};
|
|
69
67
|
|
|
70
|
-
|
|
68
|
+
/**
|
|
71
69
|
* Return prefix for selected browser
|
|
72
70
|
*/
|
|
73
71
|
|
|
74
72
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
73
|
+
Browsers.prototype.prefix = function prefix(browser) {
|
|
74
|
+
var _browser$split = browser.split(' '),
|
|
75
|
+
name = _browser$split[0],
|
|
76
|
+
version = _browser$split[1];
|
|
79
77
|
|
|
80
|
-
|
|
78
|
+
var data = this.data[name];
|
|
81
79
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
var prefix = data.prefix_exceptions && data.prefix_exceptions[version];
|
|
81
|
+
if (!prefix) {
|
|
82
|
+
prefix = data.prefix;
|
|
83
|
+
}
|
|
84
|
+
return '-' + prefix + '-';
|
|
85
|
+
};
|
|
88
86
|
|
|
89
|
-
|
|
87
|
+
/**
|
|
90
88
|
* Is browser is selected by requirements
|
|
91
89
|
*/
|
|
92
90
|
|
|
93
91
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
92
|
+
Browsers.prototype.isSelected = function isSelected(browser) {
|
|
93
|
+
return this.selected.indexOf(browser) !== -1;
|
|
94
|
+
};
|
|
97
95
|
|
|
98
|
-
|
|
96
|
+
return Browsers;
|
|
99
97
|
}();
|
|
100
98
|
|
|
101
99
|
module.exports = Browsers;
|