autoprefixer 6.7.6 → 7.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/AUTHORS +1 -0
- package/CHANGELOG.md +23 -0
- package/README.md +10 -16
- package/data/prefixes.js +551 -517
- package/lib/at-rule.js +55 -38
- package/lib/autoprefixer.js +89 -63
- package/lib/brackets.js +59 -39
- package/lib/browsers.js +102 -65
- package/lib/declaration.js +212 -121
- package/lib/hacks/align-content.js +65 -38
- package/lib/hacks/align-items.js +62 -38
- package/lib/hacks/align-self.js +63 -36
- package/lib/hacks/appearance.js +42 -0
- package/lib/hacks/background-size.js +29 -20
- package/lib/hacks/block-logical.js +36 -21
- package/lib/hacks/border-image.js +26 -16
- package/lib/hacks/border-radius.js +60 -39
- package/lib/hacks/break-props.js +69 -44
- package/lib/hacks/cross-fade.js +40 -37
- package/lib/hacks/display-flex.js +81 -31
- package/lib/hacks/display-grid.js +29 -19
- package/lib/hacks/filter-value.js +66 -45
- package/lib/hacks/filter.js +26 -17
- package/lib/hacks/flex-basis.js +60 -30
- package/lib/hacks/flex-direction.js +85 -53
- package/lib/hacks/flex-flow.js +67 -49
- package/lib/hacks/flex-grow.js +45 -26
- package/lib/hacks/flex-shrink.js +60 -30
- package/lib/hacks/flex-spec.js +18 -8
- package/lib/hacks/flex-values.js +39 -20
- package/lib/hacks/flex-wrap.js +29 -20
- package/lib/hacks/flex.js +68 -43
- package/lib/hacks/fullscreen.js +31 -21
- package/lib/hacks/gradient.js +462 -302
- package/lib/hacks/grid-column-align.js +55 -0
- package/lib/hacks/grid-end.js +53 -28
- package/lib/hacks/grid-row-align.js +39 -19
- package/lib/hacks/grid-start.js +80 -48
- package/lib/hacks/grid-template.js +91 -55
- package/lib/hacks/image-rendering.js +63 -33
- package/lib/hacks/image-set.js +28 -20
- package/lib/hacks/inline-logical.js +32 -17
- package/lib/hacks/intrinsic.js +66 -0
- package/lib/hacks/justify-content.js +69 -42
- package/lib/hacks/mask-border.js +36 -21
- package/lib/hacks/order.js +58 -35
- package/lib/hacks/pixelated.js +44 -30
- package/lib/hacks/placeholder.js +40 -25
- package/lib/hacks/text-emphasis-position.js +27 -20
- package/lib/hacks/transform-decl.js +94 -52
- package/lib/hacks/writing-mode.js +37 -27
- package/lib/info.js +117 -78
- package/lib/old-selector.js +84 -58
- package/lib/old-value.js +22 -20
- package/lib/prefixer.js +164 -95
- package/lib/prefixes.js +446 -351
- package/lib/processor.js +394 -278
- package/lib/resolution.js +135 -75
- package/lib/selector.js +145 -84
- package/lib/supports.js +330 -210
- package/lib/transition.js +396 -243
- package/lib/utils.js +84 -48
- package/lib/value.js +118 -80
- package/package.json +54 -14
- package/lib/hacks/justify-items.js +0 -31
- package/lib/hacks/stretch.js +0 -45
package/lib/at-rule.js
CHANGED
|
@@ -1,51 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
var AtRule, Prefixer,
|
|
3
|
-
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
|
4
|
-
hasProp = {}.hasOwnProperty;
|
|
1
|
+
'use strict';
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
6
|
+
|
|
7
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
8
|
+
|
|
9
|
+
var Prefixer = require('./prefixer');
|
|
10
|
+
|
|
11
|
+
var AtRule = function (_Prefixer) {
|
|
12
|
+
_inherits(AtRule, _Prefixer);
|
|
10
13
|
|
|
11
14
|
function AtRule() {
|
|
12
|
-
|
|
15
|
+
_classCallCheck(this, AtRule);
|
|
16
|
+
|
|
17
|
+
return _possibleConstructorReturn(this, _Prefixer.apply(this, arguments));
|
|
13
18
|
}
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
21
|
-
if (already) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
cloned = this.clone(rule, {
|
|
25
|
-
name: prefixed
|
|
26
|
-
});
|
|
27
|
-
return rule.parent.insertBefore(rule, cloned);
|
|
28
|
-
};
|
|
20
|
+
/**
|
|
21
|
+
* Clone and add prefixes for at-rule
|
|
22
|
+
*/
|
|
23
|
+
AtRule.prototype.add = function add(rule, prefix) {
|
|
24
|
+
var prefixed = prefix + rule.name;
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
for (j = 0, len = ref.length; j < len; j++) {
|
|
36
|
-
prefix = ref[j];
|
|
37
|
-
if (parent && parent !== prefix) {
|
|
38
|
-
continue;
|
|
26
|
+
var already = rule.parent.some(function (i) {
|
|
27
|
+
return i.name === prefixed && i.params === rule.params;
|
|
28
|
+
});
|
|
29
|
+
if (already) {
|
|
30
|
+
return undefined;
|
|
39
31
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
|
|
33
|
+
var cloned = this.clone(rule, { name: prefixed });
|
|
34
|
+
return rule.parent.insertBefore(rule, cloned);
|
|
43
35
|
};
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Clone node with prefixes
|
|
39
|
+
*/
|
|
40
|
+
|
|
46
41
|
|
|
47
|
-
|
|
42
|
+
AtRule.prototype.process = function process(node) {
|
|
43
|
+
var parent = this.parentPrefix(node);
|
|
48
44
|
|
|
49
|
-
|
|
45
|
+
for (var _iterator = this.prefixes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
46
|
+
var _ref;
|
|
47
|
+
|
|
48
|
+
if (_isArray) {
|
|
49
|
+
if (_i >= _iterator.length) break;
|
|
50
|
+
_ref = _iterator[_i++];
|
|
51
|
+
} else {
|
|
52
|
+
_i = _iterator.next();
|
|
53
|
+
if (_i.done) break;
|
|
54
|
+
_ref = _i.value;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
var prefix = _ref;
|
|
58
|
+
|
|
59
|
+
if (!parent || parent === prefix) {
|
|
60
|
+
this.add(node, prefix);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
return AtRule;
|
|
66
|
+
}(Prefixer);
|
|
50
67
|
|
|
51
|
-
|
|
68
|
+
module.exports = AtRule;
|
package/lib/autoprefixer.js
CHANGED
|
@@ -1,92 +1,118 @@
|
|
|
1
|
-
|
|
2
|
-
var Browsers, Prefixes, browserslist, cache, isPlainObject, postcss, timeCapsule,
|
|
3
|
-
slice = [].slice;
|
|
1
|
+
'use strict';
|
|
4
2
|
|
|
5
|
-
|
|
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; };
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
var browserslist = require('browserslist');
|
|
6
|
+
var postcss = require('postcss');
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
var Browsers = require('./browsers');
|
|
9
|
+
var Prefixes = require('./prefixes');
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
isPlainObject = function(obj) {
|
|
11
|
+
function isPlainObject(obj) {
|
|
14
12
|
return Object.prototype.toString.apply(obj) === '[object Object]';
|
|
15
|
-
|
|
13
|
+
}
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
var cache = {};
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
function timeCapsule(result, prefixes) {
|
|
20
18
|
if (prefixes.browsers.selected.length === 0) {
|
|
21
|
-
|
|
19
|
+
return;
|
|
22
20
|
}
|
|
23
21
|
if (prefixes.add.selectors.length > 0) {
|
|
24
|
-
|
|
22
|
+
return;
|
|
25
23
|
}
|
|
26
24
|
if (Object.keys(prefixes.add).length > 2) {
|
|
27
|
-
|
|
25
|
+
return;
|
|
28
26
|
}
|
|
29
|
-
return 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
|
-
};
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
result.warn('Greetings, time traveller. ' + 'We are in the golden age of prefix-less CSS, ' + 'where Autoprefixer is no longer needed for your stylesheet.');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = postcss.plugin('autoprefixer', function () {
|
|
32
|
+
for (var _len = arguments.length, reqs = Array(_len), _key = 0; _key < _len; _key++) {
|
|
33
|
+
reqs[_key] = arguments[_key];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var options = void 0;
|
|
35
37
|
if (reqs.length === 1 && isPlainObject(reqs[0])) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} else if (reqs.length === 0 ||
|
|
39
|
-
|
|
40
|
-
} else if (reqs.length <= 2 && (reqs[0] instanceof Array ||
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
} else if (
|
|
44
|
-
|
|
38
|
+
options = reqs[0];
|
|
39
|
+
reqs = undefined;
|
|
40
|
+
} else if (reqs.length === 0 || reqs.length === 1 && !reqs[0]) {
|
|
41
|
+
reqs = undefined;
|
|
42
|
+
} else if (reqs.length <= 2 && (reqs[0] instanceof Array || !reqs[0])) {
|
|
43
|
+
options = reqs[1];
|
|
44
|
+
reqs = reqs[0];
|
|
45
|
+
} else if (_typeof(reqs[reqs.length - 1]) === 'object') {
|
|
46
|
+
options = reqs.pop();
|
|
45
47
|
}
|
|
46
|
-
|
|
48
|
+
|
|
49
|
+
if (!options) {
|
|
50
|
+
options = {};
|
|
51
|
+
}
|
|
52
|
+
|
|
47
53
|
if (options.browser) {
|
|
48
|
-
|
|
54
|
+
throw new Error('Change `browser` option to `browsers` in Autoprefixer');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (options.browsers) {
|
|
58
|
+
reqs = options.browsers;
|
|
49
59
|
}
|
|
50
|
-
|
|
51
|
-
|
|
60
|
+
|
|
61
|
+
if (typeof options.grid === 'undefined') {
|
|
62
|
+
options.grid = false;
|
|
52
63
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
|
|
65
|
+
var loadPrefixes = function loadPrefixes(opts) {
|
|
66
|
+
var data = module.exports.data;
|
|
67
|
+
var browsers = new Browsers(data.browsers, reqs, opts, options.stats);
|
|
68
|
+
var key = browsers.selected.join(', ') + JSON.stringify(options);
|
|
69
|
+
|
|
70
|
+
if (!cache[key]) {
|
|
71
|
+
cache[key] = new Prefixes(data.prefixes, browsers, options);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return cache[key];
|
|
59
75
|
};
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
|
|
77
|
+
var plugin = function plugin(css, result) {
|
|
78
|
+
var prefixes = loadPrefixes({
|
|
79
|
+
from: css.source && css.source.input.file,
|
|
80
|
+
env: options.env
|
|
81
|
+
});
|
|
82
|
+
timeCapsule(result, prefixes);
|
|
83
|
+
if (options.remove !== false) {
|
|
84
|
+
prefixes.processor.remove(css);
|
|
85
|
+
}
|
|
86
|
+
if (options.add !== false) {
|
|
87
|
+
prefixes.processor.add(css, result);
|
|
88
|
+
}
|
|
73
89
|
};
|
|
90
|
+
|
|
74
91
|
plugin.options = options;
|
|
75
|
-
|
|
76
|
-
|
|
92
|
+
|
|
93
|
+
plugin.info = function (opts) {
|
|
94
|
+
return require('./info')(loadPrefixes(opts));
|
|
77
95
|
};
|
|
96
|
+
|
|
78
97
|
return plugin;
|
|
79
|
-
|
|
98
|
+
});
|
|
80
99
|
|
|
81
|
-
|
|
82
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Autoprefixer data
|
|
102
|
+
*/
|
|
103
|
+
module.exports.data = {
|
|
104
|
+
browsers: require('caniuse-lite').agents,
|
|
83
105
|
prefixes: require('../data/prefixes')
|
|
84
|
-
|
|
106
|
+
};
|
|
85
107
|
|
|
86
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Autoprefixer default browsers
|
|
110
|
+
*/
|
|
111
|
+
module.exports.defaults = browserslist.defaults;
|
|
87
112
|
|
|
88
|
-
|
|
113
|
+
/**
|
|
114
|
+
* Inspect with default Autoprefixer
|
|
115
|
+
*/
|
|
116
|
+
module.exports.info = function () {
|
|
89
117
|
return module.exports().info();
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}).call(this);
|
|
118
|
+
};
|
package/lib/brackets.js
CHANGED
|
@@ -1,46 +1,66 @@
|
|
|
1
|
-
|
|
2
|
-
var brackets, last;
|
|
1
|
+
'use strict';
|
|
3
2
|
|
|
4
|
-
|
|
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
|
+
|
|
5
|
+
var last = function last(array) {
|
|
5
6
|
return array[array.length - 1];
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
var brackets = {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Parse string to nodes tree
|
|
13
|
+
*/
|
|
14
|
+
parse: function parse(str) {
|
|
15
|
+
var current = [''];
|
|
16
|
+
var stack = [current];
|
|
17
|
+
|
|
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
|
+
} else if (sym === ')') {
|
|
25
|
+
stack.pop();
|
|
26
|
+
current = last(stack);
|
|
27
|
+
current.push('');
|
|
28
|
+
} else {
|
|
29
|
+
current[current.length - 1] += sym;
|
|
30
|
+
}
|
|
25
31
|
}
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
|
|
33
|
+
return stack[0];
|
|
28
34
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Generate output string by nodes tree
|
|
39
|
+
*/
|
|
40
|
+
stringify: function stringify(ast) {
|
|
41
|
+
var result = '';
|
|
42
|
+
for (var _iterator = ast, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
|
|
43
|
+
var _ref;
|
|
44
|
+
|
|
45
|
+
if (_isArray) {
|
|
46
|
+
if (_i >= _iterator.length) break;
|
|
47
|
+
_ref = _iterator[_i++];
|
|
48
|
+
} else {
|
|
49
|
+
_i = _iterator.next();
|
|
50
|
+
if (_i.done) break;
|
|
51
|
+
_ref = _i.value;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var i = _ref;
|
|
55
|
+
|
|
56
|
+
if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object') {
|
|
57
|
+
result += '(' + brackets.stringify(i) + ')';
|
|
58
|
+
} else {
|
|
59
|
+
result += i;
|
|
60
|
+
}
|
|
38
61
|
}
|
|
39
|
-
|
|
40
|
-
return result;
|
|
62
|
+
return result;
|
|
41
63
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
module.exports = brackets;
|
|
64
|
+
};
|
|
45
65
|
|
|
46
|
-
|
|
66
|
+
module.exports = brackets;
|
package/lib/browsers.js
CHANGED
|
@@ -1,86 +1,123 @@
|
|
|
1
|
-
|
|
2
|
-
var Browsers, browserslist, utils;
|
|
1
|
+
'use strict';
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
var browserslist = require('browserslist');
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
7
|
+
var utils = require('./utils');
|
|
8
|
+
|
|
9
|
+
var Browsers = function () {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Return all prefixes for default browser data
|
|
13
|
+
*/
|
|
14
|
+
Browsers.prefixes = function prefixes() {
|
|
15
|
+
if (this.prefixesCache) {
|
|
16
|
+
return this.prefixesCache;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var data = require('caniuse-lite').agents;
|
|
20
|
+
|
|
21
|
+
this.prefixesCache = [];
|
|
22
|
+
for (var name in data) {
|
|
23
|
+
this.prefixesCache.push('-' + data[name].prefix + '-');
|
|
21
24
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
this.prefixesCache = utils.uniq(this.prefixesCache).sort(function (a, b) {
|
|
27
|
+
return b.length - a.length;
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
return this.prefixesCache;
|
|
26
31
|
};
|
|
27
32
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Check is value contain any possibe prefix
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
Browsers.withPrefix = function withPrefix(value) {
|
|
39
|
+
if (!this.prefixesRegexp) {
|
|
40
|
+
this.prefixesRegexp = new RegExp(this.prefixes().join('|'));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return this.prefixesRegexp.test(value);
|
|
33
44
|
};
|
|
34
45
|
|
|
35
|
-
function Browsers(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
function Browsers(data, requirements, options, stats) {
|
|
47
|
+
_classCallCheck(this, Browsers);
|
|
48
|
+
|
|
49
|
+
this.data = data;
|
|
50
|
+
this.options = options || {};
|
|
51
|
+
this.stats = stats;
|
|
52
|
+
this.selected = this.parse(requirements);
|
|
40
53
|
}
|
|
41
54
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
stats: this.stats,
|
|
46
|
-
path: (ref = this.options) != null ? ref.from : void 0,
|
|
47
|
-
env: (ref1 = this.options) != null ? ref1.env : void 0
|
|
48
|
-
});
|
|
49
|
-
};
|
|
55
|
+
/**
|
|
56
|
+
* Return browsers selected by requirements
|
|
57
|
+
*/
|
|
50
58
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
versions = criteria(data).map(function(version) {
|
|
58
|
-
return browser + " " + version;
|
|
59
|
+
|
|
60
|
+
Browsers.prototype.parse = function parse(requirements) {
|
|
61
|
+
return browserslist(requirements, {
|
|
62
|
+
stats: this.stats,
|
|
63
|
+
path: this.options.from,
|
|
64
|
+
env: this.options.env
|
|
59
65
|
});
|
|
60
|
-
selected = selected.concat(versions);
|
|
61
|
-
}
|
|
62
|
-
return selected;
|
|
63
66
|
};
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Select major browsers versions by criteria
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
Browsers.prototype.browsers = function browsers(criteria) {
|
|
74
|
+
var _this = this;
|
|
75
|
+
|
|
76
|
+
var selected = [];
|
|
77
|
+
|
|
78
|
+
var _loop = function _loop(browser) {
|
|
79
|
+
var data = _this.data[browser];
|
|
80
|
+
var versions = criteria(data).map(function (version) {
|
|
81
|
+
return browser + ' ' + version;
|
|
82
|
+
});
|
|
83
|
+
selected = selected.concat(versions);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
for (var browser in this.data) {
|
|
87
|
+
_loop(browser);
|
|
88
|
+
}
|
|
89
|
+
return selected;
|
|
74
90
|
};
|
|
75
91
|
|
|
76
|
-
|
|
77
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Return prefix for selected browser
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
Browsers.prototype.prefix = function prefix(browser) {
|
|
98
|
+
var _browser$split = browser.split(' '),
|
|
99
|
+
name = _browser$split[0],
|
|
100
|
+
version = _browser$split[1];
|
|
101
|
+
|
|
102
|
+
var data = this.data[name];
|
|
103
|
+
|
|
104
|
+
var prefix = data.prefix_exceptions && data.prefix_exceptions[version];
|
|
105
|
+
if (!prefix) {
|
|
106
|
+
prefix = data.prefix;
|
|
107
|
+
}
|
|
108
|
+
return '-' + prefix + '-';
|
|
78
109
|
};
|
|
79
110
|
|
|
80
|
-
|
|
111
|
+
/**
|
|
112
|
+
* Is browser is selected by requirements
|
|
113
|
+
*/
|
|
114
|
+
|
|
81
115
|
|
|
82
|
-
|
|
116
|
+
Browsers.prototype.isSelected = function isSelected(browser) {
|
|
117
|
+
return this.selected.indexOf(browser) !== -1;
|
|
118
|
+
};
|
|
83
119
|
|
|
84
|
-
|
|
120
|
+
return Browsers;
|
|
121
|
+
}();
|
|
85
122
|
|
|
86
|
-
|
|
123
|
+
module.exports = Browsers;
|