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.
Files changed (74) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -1
  3. package/bin/autoprefixer +16 -16
  4. package/data/prefixes.js +435 -427
  5. package/lib/at-rule.js +38 -38
  6. package/lib/autoprefixer.js +92 -92
  7. package/lib/brackets.js +46 -46
  8. package/lib/browsers.js +56 -58
  9. package/lib/declaration.js +161 -161
  10. package/lib/hacks/align-content.js +49 -50
  11. package/lib/hacks/align-items.js +46 -47
  12. package/lib/hacks/align-self.js +47 -48
  13. package/lib/hacks/animation.js +18 -18
  14. package/lib/hacks/appearance.js +17 -17
  15. package/lib/hacks/background-clip.js +48 -0
  16. package/lib/hacks/background-size.js +19 -19
  17. package/lib/hacks/block-logical.js +31 -27
  18. package/lib/hacks/border-image.js +16 -16
  19. package/lib/hacks/border-radius.js +43 -43
  20. package/lib/hacks/break-props.js +57 -57
  21. package/lib/hacks/color-adjust.js +21 -21
  22. package/lib/hacks/cross-fade.js +37 -37
  23. package/lib/hacks/display-flex.js +58 -58
  24. package/lib/hacks/display-grid.js +18 -18
  25. package/lib/hacks/filter-value.js +12 -12
  26. package/lib/hacks/filter.js +16 -16
  27. package/lib/hacks/flex-basis.js +42 -42
  28. package/lib/hacks/flex-direction.js +87 -87
  29. package/lib/hacks/flex-flow.js +60 -60
  30. package/lib/hacks/flex-grow.js +31 -31
  31. package/lib/hacks/flex-shrink.js +42 -42
  32. package/lib/hacks/flex-spec.js +12 -12
  33. package/lib/hacks/flex-wrap.js +19 -19
  34. package/lib/hacks/flex.js +61 -62
  35. package/lib/hacks/fullscreen.js +23 -23
  36. package/lib/hacks/gradient.js +490 -490
  37. package/lib/hacks/grid-area.js +28 -28
  38. package/lib/hacks/grid-column-align.js +27 -27
  39. package/lib/hacks/grid-end.js +47 -47
  40. package/lib/hacks/grid-row-align.js +27 -27
  41. package/lib/hacks/grid-row-column.js +25 -25
  42. package/lib/hacks/grid-rows-columns.js +36 -36
  43. package/lib/hacks/grid-start.js +32 -32
  44. package/lib/hacks/grid-template-areas.js +82 -78
  45. package/lib/hacks/grid-template.js +69 -65
  46. package/lib/hacks/grid-utils.js +450 -308
  47. package/lib/hacks/image-rendering.js +46 -46
  48. package/lib/hacks/image-set.js +19 -19
  49. package/lib/hacks/inline-logical.js +21 -21
  50. package/lib/hacks/intrinsic.js +48 -48
  51. package/lib/hacks/justify-content.js +63 -64
  52. package/lib/hacks/mask-border.js +25 -25
  53. package/lib/hacks/order.js +43 -43
  54. package/lib/hacks/overscroll-behavior.js +32 -32
  55. package/lib/hacks/pixelated.js +36 -36
  56. package/lib/hacks/placeholder.js +36 -36
  57. package/lib/hacks/text-decoration.js +17 -17
  58. package/lib/hacks/text-emphasis-position.js +15 -15
  59. package/lib/hacks/transform-decl.js +92 -92
  60. package/lib/hacks/writing-mode.js +24 -24
  61. package/lib/info.js +135 -135
  62. package/lib/old-selector.js +69 -69
  63. package/lib/old-value.js +15 -15
  64. package/lib/prefixer.js +125 -126
  65. package/lib/prefixes.js +351 -351
  66. package/lib/processor.js +396 -396
  67. package/lib/resolution.js +110 -107
  68. package/lib/selector.js +101 -101
  69. package/lib/supports.js +245 -246
  70. package/lib/transition.js +394 -393
  71. package/lib/utils.js +61 -61
  72. package/lib/value.js +94 -94
  73. package/package.json +7 -4
  74. 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
- _inherits(AtRule, _Prefixer);
14
+ _inherits(AtRule, _Prefixer);
15
15
 
16
- function AtRule() {
17
- _classCallCheck(this, AtRule);
16
+ function AtRule() {
17
+ _classCallCheck(this, AtRule);
18
18
 
19
- return _possibleConstructorReturn(this, _Prefixer.apply(this, arguments));
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
- 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
- }
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
- var cloned = this.clone(rule, { name: prefixed });
36
- return rule.parent.insertBefore(rule, cloned);
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
- AtRule.prototype.process = function process(node) {
45
- var parent = this.parentPrefix(node);
44
+ AtRule.prototype.process = function process(node) {
45
+ var parent = this.parentPrefix(node);
46
46
 
47
- for (var _iterator = this.prefixes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
48
- var _ref;
47
+ for (var _iterator = this.prefixes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
48
+ var _ref;
49
49
 
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
- }
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
- var prefix = _ref;
59
+ var prefix = _ref;
60
60
 
61
- if (!parent || parent === prefix) {
62
- this.add(node, prefix);
63
- }
64
- }
65
- };
61
+ if (!parent || parent === prefix) {
62
+ this.add(node, prefix);
63
+ }
64
+ }
65
+ };
66
66
 
67
- return AtRule;
67
+ return AtRule;
68
68
  }(Prefixer);
69
69
 
70
70
  module.exports = AtRule;
@@ -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
- return Object.prototype.toString.apply(obj) === '[object Object]';
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
- if (prefixes.browsers.selected.length === 0) {
19
- return;
20
- }
21
- if (prefixes.add.selectors.length > 0) {
22
- return;
23
- }
24
- if (Object.keys(prefixes.add).length > 2) {
25
- return;
26
- }
27
-
28
- /* istanbul ignore next */
29
- result.warn('Greetings, time traveller. ' + 'We are in the golden age of prefix-less CSS, ' + 'where Autoprefixer is no longer needed for your stylesheet.');
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
- for (var _len = arguments.length, reqs = Array(_len), _key = 0; _key < _len; _key++) {
34
- reqs[_key] = arguments[_key];
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
- var options = void 0;
38
- if (reqs.length === 1 && isPlainObject(reqs[0])) {
39
- options = reqs[0];
40
- reqs = undefined;
41
- } else if (reqs.length === 0 || reqs.length === 1 && !reqs[0]) {
42
- reqs = undefined;
43
- } else if (reqs.length <= 2 && (reqs[0] instanceof Array || !reqs[0])) {
44
- options = reqs[1];
45
- reqs = reqs[0];
46
- } else if (_typeof(reqs[reqs.length - 1]) === 'object') {
47
- options = reqs.pop();
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
- if (!options) {
51
- options = {};
97
+ if (options.add !== false) {
98
+ prefixes.processor.add(css, result);
52
99
  }
100
+ }
53
101
 
54
- if (options.browser) {
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
- if (options.browsers) {
61
- reqs = options.browsers;
62
- }
104
+ plugin.browsers = reqs;
63
105
 
64
- if (typeof options.grid === 'undefined') {
65
- options.grid = false;
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
- var brwlstOpts = {
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
- * Autoprefixer default browsers
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
- return module.exports().info();
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
- var last = function last(array) {
6
- return array[array.length - 1];
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
- parse: function parse(str) {
15
- var current = [''];
16
- var stack = [current];
14
+ parse: function parse(str) {
15
+ var current = [''];
16
+ var stack = [current];
17
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
- continue;
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
- if (sym === ')') {
28
- stack.pop();
29
- current = last(stack);
30
- current.push('');
31
- continue;
32
- }
27
+ if (sym === ')') {
28
+ stack.pop();
29
+ current = last(stack);
30
+ current.push('');
31
+ continue;
32
+ }
33
33
 
34
- current[current.length - 1] += sym;
35
- }
34
+ current[current.length - 1] += sym;
35
+ }
36
36
 
37
- return stack[0];
38
- },
37
+ return stack[0];
38
+ },
39
39
 
40
40
 
41
- /**
41
+ /**
42
42
  * Generate output string by nodes tree
43
43
  */
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;
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
- 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
- }
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
- var i = _ref;
58
+ var i = _ref;
59
59
 
60
- if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object') {
61
- result += '(' + brackets.stringify(i) + ')';
62
- continue;
63
- }
60
+ if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object') {
61
+ result += '(' + brackets.stringify(i) + ')';
62
+ continue;
63
+ }
64
64
 
65
- result += i;
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
- Browsers.prefixes = function prefixes() {
15
- if (this.prefixesCache) {
16
- return this.prefixesCache;
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
- this.prefixesCache = [];
22
- for (var name in data) {
23
- this.prefixesCache.push('-' + data[name].prefix + '-');
24
- }
19
+ this.prefixesCache = [];
20
+ for (var name in agents) {
21
+ this.prefixesCache.push('-' + agents[name].prefix + '-');
22
+ }
25
23
 
26
- this.prefixesCache = utils.uniq(this.prefixesCache).sort(function (a, b) {
27
- return b.length - a.length;
28
- });
24
+ this.prefixesCache = utils.uniq(this.prefixesCache).sort(function (a, b) {
25
+ return b.length - a.length;
26
+ });
29
27
 
30
- return this.prefixesCache;
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
- Browsers.withPrefix = function withPrefix(value) {
39
- if (!this.prefixesRegexp) {
40
- this.prefixesRegexp = new RegExp(this.prefixes().join('|'));
41
- }
36
+ Browsers.withPrefix = function withPrefix(value) {
37
+ if (!this.prefixesRegexp) {
38
+ this.prefixesRegexp = new RegExp(this.prefixes().join('|'));
39
+ }
42
40
 
43
- return this.prefixesRegexp.test(value);
44
- };
41
+ return this.prefixesRegexp.test(value);
42
+ };
45
43
 
46
- function Browsers(data, requirements, options, browserslistOpts) {
47
- _classCallCheck(this, Browsers);
44
+ function Browsers(data, requirements, options, browserslistOpts) {
45
+ _classCallCheck(this, Browsers);
48
46
 
49
- this.data = data;
50
- this.options = options || {};
51
- this.browserslistOpts = browserslistOpts || {};
52
- this.selected = this.parse(requirements);
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
- Browsers.prototype.parse = function parse(requirements) {
61
- var opts = {};
62
- for (var i in this.browserslistOpts) {
63
- opts[i] = this.browserslistOpts[i];
64
- }
65
- opts.path = this.options.from;
66
- opts.env = this.options.env;
67
- return browserslist(requirements, opts);
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
- Browsers.prototype.prefix = function prefix(browser) {
76
- var _browser$split = browser.split(' '),
77
- name = _browser$split[0],
78
- version = _browser$split[1];
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
- var data = this.data[name];
78
+ var data = this.data[name];
81
79
 
82
- var prefix = data.prefix_exceptions && data.prefix_exceptions[version];
83
- if (!prefix) {
84
- prefix = data.prefix;
85
- }
86
- return '-' + prefix + '-';
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
- Browsers.prototype.isSelected = function isSelected(browser) {
95
- return this.selected.indexOf(browser) !== -1;
96
- };
92
+ Browsers.prototype.isSelected = function isSelected(browser) {
93
+ return this.selected.indexOf(browser) !== -1;
94
+ };
97
95
 
98
- return Browsers;
96
+ return Browsers;
99
97
  }();
100
98
 
101
99
  module.exports = Browsers;