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.
Files changed (66) hide show
  1. package/AUTHORS +1 -0
  2. package/CHANGELOG.md +23 -0
  3. package/README.md +10 -16
  4. package/data/prefixes.js +551 -517
  5. package/lib/at-rule.js +55 -38
  6. package/lib/autoprefixer.js +89 -63
  7. package/lib/brackets.js +59 -39
  8. package/lib/browsers.js +102 -65
  9. package/lib/declaration.js +212 -121
  10. package/lib/hacks/align-content.js +65 -38
  11. package/lib/hacks/align-items.js +62 -38
  12. package/lib/hacks/align-self.js +63 -36
  13. package/lib/hacks/appearance.js +42 -0
  14. package/lib/hacks/background-size.js +29 -20
  15. package/lib/hacks/block-logical.js +36 -21
  16. package/lib/hacks/border-image.js +26 -16
  17. package/lib/hacks/border-radius.js +60 -39
  18. package/lib/hacks/break-props.js +69 -44
  19. package/lib/hacks/cross-fade.js +40 -37
  20. package/lib/hacks/display-flex.js +81 -31
  21. package/lib/hacks/display-grid.js +29 -19
  22. package/lib/hacks/filter-value.js +66 -45
  23. package/lib/hacks/filter.js +26 -17
  24. package/lib/hacks/flex-basis.js +60 -30
  25. package/lib/hacks/flex-direction.js +85 -53
  26. package/lib/hacks/flex-flow.js +67 -49
  27. package/lib/hacks/flex-grow.js +45 -26
  28. package/lib/hacks/flex-shrink.js +60 -30
  29. package/lib/hacks/flex-spec.js +18 -8
  30. package/lib/hacks/flex-values.js +39 -20
  31. package/lib/hacks/flex-wrap.js +29 -20
  32. package/lib/hacks/flex.js +68 -43
  33. package/lib/hacks/fullscreen.js +31 -21
  34. package/lib/hacks/gradient.js +462 -302
  35. package/lib/hacks/grid-column-align.js +55 -0
  36. package/lib/hacks/grid-end.js +53 -28
  37. package/lib/hacks/grid-row-align.js +39 -19
  38. package/lib/hacks/grid-start.js +80 -48
  39. package/lib/hacks/grid-template.js +91 -55
  40. package/lib/hacks/image-rendering.js +63 -33
  41. package/lib/hacks/image-set.js +28 -20
  42. package/lib/hacks/inline-logical.js +32 -17
  43. package/lib/hacks/intrinsic.js +66 -0
  44. package/lib/hacks/justify-content.js +69 -42
  45. package/lib/hacks/mask-border.js +36 -21
  46. package/lib/hacks/order.js +58 -35
  47. package/lib/hacks/pixelated.js +44 -30
  48. package/lib/hacks/placeholder.js +40 -25
  49. package/lib/hacks/text-emphasis-position.js +27 -20
  50. package/lib/hacks/transform-decl.js +94 -52
  51. package/lib/hacks/writing-mode.js +37 -27
  52. package/lib/info.js +117 -78
  53. package/lib/old-selector.js +84 -58
  54. package/lib/old-value.js +22 -20
  55. package/lib/prefixer.js +164 -95
  56. package/lib/prefixes.js +446 -351
  57. package/lib/processor.js +394 -278
  58. package/lib/resolution.js +135 -75
  59. package/lib/selector.js +145 -84
  60. package/lib/supports.js +330 -210
  61. package/lib/transition.js +396 -243
  62. package/lib/utils.js +84 -48
  63. package/lib/value.js +118 -80
  64. package/package.json +54 -14
  65. package/lib/hacks/justify-items.js +0 -31
  66. package/lib/hacks/stretch.js +0 -45
package/lib/info.js CHANGED
@@ -1,13 +1,12 @@
1
- (function() {
2
- var browserslist, capitalize, names, prefix;
1
+ 'use strict';
3
2
 
4
- browserslist = require('browserslist');
3
+ var browserslist = require('browserslist');
5
4
 
6
- capitalize = function(str) {
5
+ function capitalize(str) {
7
6
  return str.slice(0, 1).toUpperCase() + str.slice(1);
8
- };
7
+ }
9
8
 
10
- names = {
9
+ var names = {
11
10
  ie: 'IE',
12
11
  ie_mob: 'IE Mobile',
13
12
  ios_saf: 'iOS',
@@ -16,98 +15,138 @@
16
15
  and_chr: 'Chrome for Android',
17
16
  and_ff: 'Firefox for Android',
18
17
  and_uc: 'UC for Android'
19
- };
18
+ };
20
19
 
21
- prefix = function(name, prefixes) {
22
- var out;
23
- out = ' ' + name + ': ';
24
- out += prefixes.map(function(i) {
25
- return i.replace(/^-(.*)-$/g, '$1');
20
+ var prefix = function prefix(name, prefixes) {
21
+ var out = ' ' + name + ': ';
22
+ out += prefixes.map(function (i) {
23
+ return i.replace(/^-(.*)-$/g, '$1');
26
24
  }).join(', ');
27
- out += "\n";
25
+ out += '\n';
28
26
  return out;
29
- };
27
+ };
30
28
 
31
- module.exports = function(prefixes) {
32
- var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round, selector, selectors, string, value, values, version, versions;
29
+ module.exports = function (prefixes) {
33
30
  if (prefixes.browsers.selected.length === 0) {
34
- return "No browsers selected";
31
+ return 'No browsers selected';
35
32
  }
36
- versions = [];
37
- ref = prefixes.browsers.selected;
38
- for (j = 0, len = ref.length; j < len; j++) {
39
- browser = ref[j];
40
- ref1 = browser.split(' '), name = ref1[0], version = ref1[1];
41
- name = names[name] || capitalize(name);
42
- if (versions[name]) {
43
- versions[name].push(version);
44
- } else {
45
- versions[name] = [version];
46
- }
33
+
34
+ var versions = {};
35
+ for (var _iterator = prefixes.browsers.selected, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
36
+ var _ref;
37
+
38
+ if (_isArray) {
39
+ if (_i >= _iterator.length) break;
40
+ _ref = _iterator[_i++];
41
+ } else {
42
+ _i = _iterator.next();
43
+ if (_i.done) break;
44
+ _ref = _i.value;
45
+ }
46
+
47
+ var browser = _ref;
48
+
49
+ var _browser$split = browser.split(' '),
50
+ name = _browser$split[0],
51
+ version = _browser$split[1];
52
+
53
+ name = names[name] || capitalize(name);
54
+ if (versions[name]) {
55
+ versions[name].push(version);
56
+ } else {
57
+ versions[name] = [version];
58
+ }
47
59
  }
48
- out = "Browsers:\n";
49
- for (browser in versions) {
50
- list = versions[browser];
51
- list = list.sort(function(a, b) {
52
- return parseFloat(b) - parseFloat(a);
53
- });
54
- out += ' ' + browser + ': ' + list.join(', ') + "\n";
60
+
61
+ var out = 'Browsers:\n';
62
+ for (var _browser in versions) {
63
+ var list = versions[_browser];
64
+ list = list.sort(function (a, b) {
65
+ return parseFloat(b) - parseFloat(a);
66
+ });
67
+ out += ' ' + _browser + ': ' + list.join(', ') + '\n';
55
68
  }
56
- coverage = browserslist.coverage(prefixes.browsers.selected);
57
- round = Math.round(coverage * 100) / 100.0;
58
- out += "\nThese browsers account for " + round + "% of all users globally\n";
59
- atrules = '';
60
- ref2 = prefixes.add;
61
- for (name in ref2) {
62
- data = ref2[name];
63
- if (name[0] === '@' && data.prefixes) {
64
- atrules += prefix(name, data.prefixes);
65
- }
69
+
70
+ var coverage = browserslist.coverage(prefixes.browsers.selected);
71
+ var round = Math.round(coverage * 100) / 100.0;
72
+ out += '\nThese browsers account for ' + round + '% of all users globally\n';
73
+
74
+ var atrules = '';
75
+ for (var name in prefixes.add) {
76
+ var data = prefixes.add[name];
77
+ if (name[0] === '@' && data.prefixes) {
78
+ atrules += prefix(name, data.prefixes);
79
+ }
66
80
  }
67
81
  if (atrules !== '') {
68
- out += "\nAt-Rules:\n" + atrules;
82
+ out += '\nAt-Rules:\n' + atrules;
69
83
  }
70
- selectors = '';
71
- ref3 = prefixes.add.selectors;
72
- for (k = 0, len1 = ref3.length; k < len1; k++) {
73
- selector = ref3[k];
74
- if (selector.prefixes) {
75
- selectors += prefix(selector.name, selector.prefixes);
76
- }
84
+
85
+ var selectors = '';
86
+ for (var _iterator2 = prefixes.add.selectors, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
87
+ var _ref2;
88
+
89
+ if (_isArray2) {
90
+ if (_i2 >= _iterator2.length) break;
91
+ _ref2 = _iterator2[_i2++];
92
+ } else {
93
+ _i2 = _iterator2.next();
94
+ if (_i2.done) break;
95
+ _ref2 = _i2.value;
96
+ }
97
+
98
+ var selector = _ref2;
99
+
100
+ if (selector.prefixes) {
101
+ selectors += prefix(selector.name, selector.prefixes);
102
+ }
77
103
  }
78
104
  if (selectors !== '') {
79
- out += "\nSelectors:\n" + selectors;
105
+ out += '\nSelectors:\n' + selectors;
80
106
  }
81
- values = '';
82
- props = '';
83
- ref4 = prefixes.add;
84
- for (name in ref4) {
85
- data = ref4[name];
86
- if (name[0] !== '@' && data.prefixes) {
87
- props += prefix(name, data.prefixes);
88
- }
89
- if (!data.values) {
90
- continue;
91
- }
92
- ref5 = data.values;
93
- for (l = 0, len2 = ref5.length; l < len2; l++) {
94
- value = ref5[l];
95
- string = prefix(value.name, value.prefixes);
96
- if (values.indexOf(string) === -1) {
97
- values += string;
107
+
108
+ var values = '';
109
+ var props = '';
110
+ for (var _name in prefixes.add) {
111
+ var _data = prefixes.add[_name];
112
+ if (_name[0] !== '@' && _data.prefixes) {
113
+ props += prefix(_name, _data.prefixes);
114
+ }
115
+
116
+ if (!_data.values) {
117
+ continue;
118
+ }
119
+ for (var _iterator3 = _data.values, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
120
+ var _ref3;
121
+
122
+ if (_isArray3) {
123
+ if (_i3 >= _iterator3.length) break;
124
+ _ref3 = _iterator3[_i3++];
125
+ } else {
126
+ _i3 = _iterator3.next();
127
+ if (_i3.done) break;
128
+ _ref3 = _i3.value;
129
+ }
130
+
131
+ var value = _ref3;
132
+
133
+ var string = prefix(value.name, value.prefixes);
134
+ if (values.indexOf(string) === -1) {
135
+ values += string;
136
+ }
98
137
  }
99
- }
100
138
  }
139
+
101
140
  if (props !== '') {
102
- out += "\nProperties:\n" + props;
141
+ out += '\nProperties:\n' + props;
103
142
  }
104
143
  if (values !== '') {
105
- out += "\nValues:\n" + values;
144
+ out += '\nValues:\n' + values;
106
145
  }
146
+
107
147
  if (atrules === '' && selectors === '' && props === '' && values === '') {
108
- out += '\nAwesome! Your browsers don\'t require any vendor prefixes.' + '\nNow you can remove Autoprefixer from build steps.';
148
+ out += '\nAwesome! Your browsers don\'t require any vendor prefixes.' + '\nNow you can remove Autoprefixer from build steps.';
109
149
  }
110
- return out;
111
- };
112
150
 
113
- }).call(this);
151
+ return out;
152
+ };
@@ -1,68 +1,94 @@
1
- (function() {
2
- var OldSelector;
3
-
4
- OldSelector = (function() {
5
- function OldSelector(selector, prefix1) {
6
- var i, len, prefix, ref;
7
- this.prefix = prefix1;
8
- this.prefixed = selector.prefixed(this.prefix);
9
- this.regexp = selector.regexp(this.prefix);
10
- this.prefixeds = [];
11
- ref = selector.possible();
12
- for (i = 0, len = ref.length; i < len; i++) {
13
- prefix = ref[i];
14
- this.prefixeds.push([selector.prefixed(prefix), selector.regexp(prefix)]);
15
- }
16
- this.unprefixed = selector.name;
17
- this.nameRegexp = selector.regexp();
1
+ "use strict";
2
+
3
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
+
5
+ var OldSelector = function () {
6
+ function OldSelector(selector, prefix) {
7
+ _classCallCheck(this, OldSelector);
8
+
9
+ this.prefix = prefix;
10
+ this.prefixed = selector.prefixed(this.prefix);
11
+ this.regexp = selector.regexp(this.prefix);
12
+
13
+ this.prefixeds = selector.possible().map(function (x) {
14
+ return [selector.prefixed(x), selector.regexp(x)];
15
+ });
16
+
17
+ this.unprefixed = selector.name;
18
+ this.nameRegexp = selector.regexp();
18
19
  }
19
20
 
20
- OldSelector.prototype.isHack = function(rule) {
21
- var before, i, index, len, ref, ref1, regexp, rules, some, string;
22
- index = rule.parent.index(rule) + 1;
23
- rules = rule.parent.nodes;
24
- while (index < rules.length) {
25
- before = rules[index].selector;
26
- if (!before) {
27
- return true;
21
+ /**
22
+ * Is rule a hack without unprefixed version bottom
23
+ */
24
+
25
+
26
+ OldSelector.prototype.isHack = function isHack(rule) {
27
+ var index = rule.parent.index(rule) + 1;
28
+ var rules = rule.parent.nodes;
29
+
30
+ while (index < rules.length) {
31
+ var before = rules[index].selector;
32
+ if (!before) {
33
+ return true;
34
+ }
35
+
36
+ if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) {
37
+ return false;
38
+ }
39
+
40
+ var some = false;
41
+ for (var _iterator = this.prefixeds, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
42
+ var _ref2;
43
+
44
+ if (_isArray) {
45
+ if (_i >= _iterator.length) break;
46
+ _ref2 = _iterator[_i++];
47
+ } else {
48
+ _i = _iterator.next();
49
+ if (_i.done) break;
50
+ _ref2 = _i.value;
51
+ }
52
+
53
+ var _ref = _ref2;
54
+ var string = _ref[0];
55
+ var regexp = _ref[1];
56
+
57
+ if (before.indexOf(string) !== -1 && before.match(regexp)) {
58
+ some = true;
59
+ break;
60
+ }
61
+ }
62
+
63
+ if (!some) {
64
+ return true;
65
+ }
66
+
67
+ index += 1;
28
68
  }
29
- if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) {
30
- return false;
69
+
70
+ return true;
71
+ };
72
+
73
+ /**
74
+ * Does rule contain an unnecessary prefixed selector
75
+ */
76
+
77
+
78
+ OldSelector.prototype.check = function check(rule) {
79
+ if (rule.selector.indexOf(this.prefixed) === -1) {
80
+ return false;
31
81
  }
32
- some = false;
33
- ref = this.prefixeds;
34
- for (i = 0, len = ref.length; i < len; i++) {
35
- ref1 = ref[i], string = ref1[0], regexp = ref1[1];
36
- if (before.indexOf(string) !== -1 && before.match(regexp)) {
37
- some = true;
38
- break;
39
- }
82
+ if (!rule.selector.match(this.regexp)) {
83
+ return false;
40
84
  }
41
- if (!some) {
42
- return true;
85
+ if (this.isHack(rule)) {
86
+ return false;
43
87
  }
44
- index += 1;
45
- }
46
- return true;
47
- };
48
-
49
- OldSelector.prototype.check = function(rule) {
50
- if (rule.selector.indexOf(this.prefixed) === -1) {
51
- return false;
52
- }
53
- if (!rule.selector.match(this.regexp)) {
54
- return false;
55
- }
56
- if (this.isHack(rule)) {
57
- return false;
58
- }
59
- return true;
88
+ return true;
60
89
  };
61
90
 
62
91
  return OldSelector;
92
+ }();
63
93
 
64
- })();
65
-
66
- module.exports = OldSelector;
67
-
68
- }).call(this);
94
+ module.exports = OldSelector;
package/lib/old-value.js CHANGED
@@ -1,30 +1,32 @@
1
- (function() {
2
- var OldValue, utils;
1
+ 'use strict';
3
2
 
4
- utils = require('./utils');
3
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
4
 
6
- OldValue = (function() {
5
+ var utils = require('./utils');
6
+
7
+ var OldValue = function () {
7
8
  function OldValue(unprefixed, prefixed, string, regexp) {
8
- this.unprefixed = unprefixed;
9
- this.prefixed = prefixed;
10
- this.string = string;
11
- this.regexp = regexp;
12
- this.regexp || (this.regexp = utils.regexp(this.prefixed));
13
- this.string || (this.string = this.prefixed);
9
+ _classCallCheck(this, OldValue);
10
+
11
+ this.unprefixed = unprefixed;
12
+ this.prefixed = prefixed;
13
+ this.string = string || prefixed;
14
+ this.regexp = regexp || utils.regexp(prefixed);
14
15
  }
15
16
 
16
- OldValue.prototype.check = function(value) {
17
- if (value.indexOf(this.string) !== -1) {
18
- return !!value.match(this.regexp);
19
- } else {
17
+ /**
18
+ * Check, that value contain old value
19
+ */
20
+
21
+
22
+ OldValue.prototype.check = function check(value) {
23
+ if (value.indexOf(this.string) !== -1) {
24
+ return !!value.match(this.regexp);
25
+ }
20
26
  return false;
21
- }
22
27
  };
23
28
 
24
29
  return OldValue;
30
+ }();
25
31
 
26
- })();
27
-
28
- module.exports = OldValue;
29
-
30
- }).call(this);
32
+ module.exports = OldValue;