stylehacks 4.0.0-rc.2 → 4.0.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.
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var FF_2 = exports.FF_2 = 'firefox 2';
7
- var IE_5_5 = exports.IE_5_5 = 'ie 5.5';
8
- var IE_6 = exports.IE_6 = 'ie 6';
9
- var IE_7 = exports.IE_7 = 'ie 7';
10
- var IE_8 = exports.IE_8 = 'ie 8';
11
- var OP_9 = exports.OP_9 = 'opera 9';
6
+ const FF_2 = exports.FF_2 = 'firefox 2';
7
+ const IE_5_5 = exports.IE_5_5 = 'ie 5.5';
8
+ const IE_6 = exports.IE_6 = 'ie 6';
9
+ const IE_7 = exports.IE_7 = 'ie 7';
10
+ const IE_8 = exports.IE_8 = 'ie 8';
11
+ const OP_9 = exports.OP_9 = 'opera 9';
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var MEDIA_QUERY = exports.MEDIA_QUERY = 'media query';
7
- var PROPERTY = exports.PROPERTY = 'property';
8
- var SELECTOR = exports.SELECTOR = 'selector';
9
- var VALUE = exports.VALUE = 'value';
6
+ const MEDIA_QUERY = exports.MEDIA_QUERY = 'media query';
7
+ const PROPERTY = exports.PROPERTY = 'property';
8
+ const SELECTOR = exports.SELECTOR = 'selector';
9
+ const VALUE = exports.VALUE = 'value';
@@ -3,6 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var ATRULE = exports.ATRULE = 'atrule';
7
- var DECL = exports.DECL = 'decl';
8
- var RULE = exports.RULE = 'rule';
6
+ const ATRULE = exports.ATRULE = 'atrule';
7
+ const DECL = exports.DECL = 'decl';
8
+ const RULE = exports.RULE = 'rule';
@@ -3,5 +3,5 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- var BODY = exports.BODY = 'body';
7
- var HTML = exports.HTML = 'html';
6
+ const BODY = exports.BODY = 'body';
7
+ const HTML = exports.HTML = 'html';
package/dist/exists.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = exists;
7
7
  function exists(selector, index, value) {
8
- var node = selector.at(index);
8
+ const node = selector.at(index);
9
9
  return node && node.value === value;
10
10
  }
11
11
  module.exports = exports["default"];
package/dist/index.js CHANGED
@@ -18,32 +18,26 @@ var _plugins2 = _interopRequireDefault(_plugins);
18
18
 
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
 
21
- function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
22
-
23
- var stylehacks = _postcss2.default.plugin('stylehacks', function () {
24
- var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25
-
26
- return function (css, result) {
27
- var resultOpts = result.opts || {};
28
- var browsers = (0, _browserslist2.default)(null, {
21
+ const stylehacks = _postcss2.default.plugin('stylehacks', (opts = {}) => {
22
+ return (css, result) => {
23
+ const resultOpts = result.opts || {};
24
+ const browsers = (0, _browserslist2.default)(null, {
29
25
  stats: resultOpts.stats,
30
26
  path: __dirname,
31
27
  env: resultOpts.env
32
28
  });
33
- var processors = _plugins2.default.reduce(function (list, Plugin) {
34
- var hack = new Plugin(result);
35
- var applied = browsers.some(function (browser) {
36
- return hack.targets.some(function (target) {
37
- return browser === target;
38
- });
29
+ const processors = _plugins2.default.reduce((list, Plugin) => {
30
+ const hack = new Plugin(result);
31
+ const applied = browsers.some(browser => {
32
+ return hack.targets.some(target => browser === target);
39
33
  });
40
34
  if (applied) {
41
35
  return list;
42
36
  }
43
- return [].concat(_toConsumableArray(list), [hack]);
37
+ return [...list, hack];
44
38
  }, []);
45
- css.walk(function (node) {
46
- processors.forEach(function (proc) {
39
+ css.walk(node => {
40
+ processors.forEach(proc => {
47
41
  if (!~proc.nodeTypes.indexOf(node.type)) {
48
42
  return;
49
43
  }
@@ -56,9 +50,9 @@ var stylehacks = _postcss2.default.plugin('stylehacks', function () {
56
50
  };
57
51
  });
58
52
 
59
- stylehacks.detect = function (node) {
60
- return _plugins2.default.some(function (Plugin) {
61
- var hack = new Plugin();
53
+ stylehacks.detect = node => {
54
+ return _plugins2.default.some(Plugin => {
55
+ const hack = new Plugin();
62
56
  return hack.any(node);
63
57
  });
64
58
  };
package/dist/isMixin.js CHANGED
@@ -5,9 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = isMixin;
7
7
  function isMixin(node) {
8
- var selector = node.selector;
8
+ const { selector } = node;
9
9
  // If the selector ends with a ':' it is likely a part of a custom mixin.
10
-
11
10
  if (!selector || selector[selector.length - 1] === ':') {
12
11
  return true;
13
12
  }
package/dist/plugin.js CHANGED
@@ -3,92 +3,55 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
8
-
9
6
  exports.default = plugin;
10
-
11
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
-
13
7
  function plugin(targets, nodeTypes, detect) {
14
- var Plugin = function () {
15
- function Plugin(result) {
16
- _classCallCheck(this, Plugin);
17
-
8
+ class Plugin {
9
+ constructor(result) {
18
10
  this.nodes = [];
19
11
  this.result = result;
20
12
  this.targets = targets;
21
13
  this.nodeTypes = nodeTypes;
22
14
  }
23
15
 
24
- _createClass(Plugin, [{
25
- key: "push",
26
- value: function push(node, metadata) {
27
- node._stylehacks = Object.assign({}, metadata, {
28
- message: `Bad ${metadata.identifier}: ${metadata.hack}`,
29
- browsers: this.targets
30
- });
31
- this.nodes.push(node);
32
- }
33
- }, {
34
- key: "any",
35
- value: function any(node) {
36
- if (~this.nodeTypes.indexOf(node.type)) {
37
- detect.apply(this, arguments);
38
- return !!node._stylehacks;
39
- }
40
- return false;
41
- }
42
- }, {
43
- key: "detectAndResolve",
44
- value: function detectAndResolve() {
45
- this.nodes = [];
46
-
47
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
48
- args[_key] = arguments[_key];
49
- }
16
+ push(node, metadata) {
17
+ node._stylehacks = Object.assign({}, metadata, {
18
+ message: `Bad ${metadata.identifier}: ${metadata.hack}`,
19
+ browsers: this.targets
20
+ });
21
+ this.nodes.push(node);
22
+ }
50
23
 
51
- detect.apply(this, args);
52
- return this.resolve();
24
+ any(node) {
25
+ if (~this.nodeTypes.indexOf(node.type)) {
26
+ detect.apply(this, arguments);
27
+ return !!node._stylehacks;
53
28
  }
54
- }, {
55
- key: "detectAndWarn",
56
- value: function detectAndWarn() {
57
- this.nodes = [];
58
-
59
- for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
60
- args[_key2] = arguments[_key2];
61
- }
29
+ return false;
30
+ }
62
31
 
63
- detect.apply(this, args);
64
- return this.warn();
65
- }
66
- }, {
67
- key: "resolve",
68
- value: function resolve() {
69
- return this.nodes.forEach(function (node) {
70
- return node.remove();
71
- });
72
- }
73
- }, {
74
- key: "warn",
75
- value: function warn() {
76
- var _this = this;
32
+ detectAndResolve(...args) {
33
+ this.nodes = [];
34
+ detect.apply(this, args);
35
+ return this.resolve();
36
+ }
77
37
 
78
- return this.nodes.forEach(function (node) {
79
- var _node$_stylehacks = node._stylehacks,
80
- message = _node$_stylehacks.message,
81
- browsers = _node$_stylehacks.browsers,
82
- identifier = _node$_stylehacks.identifier,
83
- hack = _node$_stylehacks.hack;
38
+ detectAndWarn(...args) {
39
+ this.nodes = [];
40
+ detect.apply(this, args);
41
+ return this.warn();
42
+ }
84
43
 
85
- return node.warn(_this.result, message, { browsers, identifier, hack });
86
- });
87
- }
88
- }]);
44
+ resolve() {
45
+ return this.nodes.forEach(node => node.remove());
46
+ }
89
47
 
90
- return Plugin;
91
- }();
48
+ warn() {
49
+ return this.nodes.forEach(node => {
50
+ const { message, browsers, identifier, hack } = node._stylehacks;
51
+ return node.warn(this.result, message, { browsers, identifier, hack });
52
+ });
53
+ }
54
+ }
92
55
 
93
56
  return Plugin;
94
57
  }
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
31
31
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
32
 
33
33
  function analyse(ctx, rule) {
34
- return function (selectors) {
35
- selectors.each(function (selector) {
34
+ return selectors => {
35
+ selectors.each(selector => {
36
36
  if ((0, _exists2.default)(selector, 0, _tags.BODY) && (0, _exists2.default)(selector, 1, ':empty') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {
37
37
  ctx.push(rule, {
38
38
  identifier: _identifiers.SELECTOR,
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
31
31
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
32
 
33
33
  function analyse(ctx, rule) {
34
- return function (selectors) {
35
- selectors.each(function (selector) {
34
+ return selectors => {
35
+ selectors.each(selector => {
36
36
  if ((0, _exists2.default)(selector, 0, _tags.HTML) && ((0, _exists2.default)(selector, 1, '>') || (0, _exists2.default)(selector, 1, '~')) && selector.at(2) && selector.at(2).type === 'comment' && (0, _exists2.default)(selector, 3, ' ') && (0, _exists2.default)(selector, 4, _tags.BODY) && (0, _exists2.default)(selector, 5, ' ') && selector.at(6)) {
37
37
  ctx.push(rule, {
38
38
  identifier: _identifiers.SELECTOR,
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
31
31
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
32
 
33
33
  function analyse(ctx, rule) {
34
- return function (selectors) {
35
- selectors.each(function (selector) {
34
+ return selectors => {
35
+ selectors.each(selector => {
36
36
  if ((0, _exists2.default)(selector, 0, _tags.HTML) && (0, _exists2.default)(selector, 1, ':first-child') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {
37
37
  ctx.push(rule, {
38
38
  identifier: _identifiers.SELECTOR,
@@ -15,9 +15,9 @@ var _postcss = require('../dictionary/postcss');
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
16
 
17
17
  exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.DECL], function (decl) {
18
- var match = decl.value.match(/!\w/);
18
+ const match = decl.value.match(/!\w/);
19
19
  if (match) {
20
- var hack = decl.value.substr(match.index, decl.value.length - 1);
20
+ const hack = decl.value.substr(match.index, decl.value.length - 1);
21
21
  this.push(decl, {
22
22
  identifier: '!important',
23
23
  hack
@@ -16,31 +16,28 @@ var _postcss = require('../dictionary/postcss');
16
16
 
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
- var hacks = '!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|'.split('_');
19
+ const hacks = '!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|'.split('_');
20
20
 
21
21
  exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE, _postcss.DECL], function (node) {
22
- var _this = this;
23
-
24
22
  if (node.type === _postcss.DECL) {
25
23
  // some values are not picked up by before, so ensure they are
26
24
  // at the beginning of the value
27
- hacks.some(function (hack) {
25
+ hacks.some(hack => {
28
26
  if (!node.prop.indexOf(hack)) {
29
- _this.push(node, {
27
+ this.push(node, {
30
28
  identifier: _identifiers.PROPERTY,
31
29
  hack: node.prop
32
30
  });
33
31
  return true;
34
32
  }
35
33
  });
36
- var before = node.raws.before;
37
-
34
+ let { before } = node.raws;
38
35
  if (!before) {
39
36
  return;
40
37
  }
41
- hacks.some(function (hack) {
38
+ hacks.some(hack => {
42
39
  if (~before.indexOf(hack)) {
43
- _this.push(node, {
40
+ this.push(node, {
44
41
  identifier: _identifiers.PROPERTY,
45
42
  hack: `${before.trim()}${node.prop}`
46
43
  });
@@ -49,9 +46,8 @@ exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _brow
49
46
  });
50
47
  } else {
51
48
  // test for the @property: value; hack
52
- var name = node.name;
53
-
54
- var len = name.length - 1;
49
+ let { name } = node;
50
+ let len = name.length - 1;
55
51
  if (name.lastIndexOf(':') === len) {
56
52
  this.push(node, {
57
53
  identifier: _identifiers.PROPERTY,
@@ -21,8 +21,7 @@ var _postcss3 = require('../dictionary/postcss');
21
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
22
 
23
23
  exports.default = (0, _plugin2.default)([_browsers.IE_6], [_postcss3.DECL], function (decl) {
24
- var before = decl.raws.before;
25
-
24
+ const { before } = decl.raws;
26
25
  if (before && ~before.indexOf('_')) {
27
26
  this.push(decl, {
28
27
  identifier: _identifiers.PROPERTY,
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
19
  exports.default = (0, _plugin2.default)([_browsers.IE_8], [_postcss.ATRULE], function (rule) {
20
- var params = rule.params.trim();
20
+ const params = rule.params.trim();
21
21
  if (params === '\\0screen') {
22
22
  this.push(rule, {
23
23
  identifier: _identifiers.MEDIA_QUERY,
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
19
  exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7, _browsers.IE_8], [_postcss.ATRULE], function (rule) {
20
- var params = rule.params.trim();
20
+ const params = rule.params.trim();
21
21
  if (params === '\\0screen\\,screen\\9') {
22
22
  this.push(rule, {
23
23
  identifier: _identifiers.MEDIA_QUERY,
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
19
  exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE], function (rule) {
20
- var params = rule.params.trim();
20
+ const params = rule.params.trim();
21
21
  if (params === 'screen\\9') {
22
22
  this.push(rule, {
23
23
  identifier: _identifiers.MEDIA_QUERY,
@@ -17,7 +17,7 @@ var _postcss = require('../dictionary/postcss');
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
19
  exports.default = (0, _plugin2.default)([_browsers.IE_6, _browsers.IE_7, _browsers.IE_8], [_postcss.DECL], function (decl) {
20
- var v = decl.value;
20
+ let v = decl.value;
21
21
  if (v && v.length > 2 && v.indexOf('\\9') === v.length - 2) {
22
22
  this.push(decl, {
23
23
  identifier: _identifiers.VALUE,
@@ -31,8 +31,8 @@ var _tags = require('../dictionary/tags');
31
31
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
32
 
33
33
  function analyse(ctx, rule) {
34
- return function (selectors) {
35
- selectors.each(function (selector) {
34
+ return selectors => {
35
+ selectors.each(selector => {
36
36
  if ((0, _exists2.default)(selector, 0, '*') && (0, _exists2.default)(selector, 1, ' ') && (0, _exists2.default)(selector, 2, _tags.HTML) && (0, _exists2.default)(selector, 3, ' ') && selector.at(4)) {
37
37
  ctx.push(rule, {
38
38
  identifier: _identifiers.SELECTOR,
@@ -24,9 +24,8 @@ exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _brow
24
24
  if ((0, _isMixin2.default)(rule)) {
25
25
  return;
26
26
  }
27
- var selector = rule.selector;
28
-
29
- var trim = selector.trim();
27
+ const { selector } = rule;
28
+ const trim = selector.trim();
30
29
  if (trim.lastIndexOf(',') === selector.length - 1 || trim.lastIndexOf('\\') === selector.length - 1) {
31
30
  this.push(rule, {
32
31
  identifier: _identifiers.SELECTOR,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stylehacks",
3
- "version": "4.0.0-rc.2",
3
+ "version": "4.0.0",
4
4
  "description": "Detect/remove browser hacks from CSS files.",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -23,24 +23,24 @@
23
23
  "license": "MIT",
24
24
  "devDependencies": {
25
25
  "babel-cli": "^6.0.0",
26
- "cross-env": "^3.0.0"
26
+ "cross-env": "^5.0.0"
27
27
  },
28
- "homepage": "https://github.com/ben-eb/cssnano",
28
+ "homepage": "https://github.com/cssnano/cssnano",
29
29
  "author": {
30
30
  "name": "Ben Briggs",
31
31
  "email": "beneb.info@gmail.com",
32
32
  "url": "http://beneb.info"
33
33
  },
34
- "repository": "ben-eb/cssnano",
34
+ "repository": "cssnano/cssnano",
35
35
  "dependencies": {
36
- "browserslist": "^2.0.0",
36
+ "browserslist": "^4.0.0",
37
37
  "postcss": "^6.0.0",
38
- "postcss-selector-parser": "^3.0.0-rc.0"
38
+ "postcss-selector-parser": "^3.0.0"
39
39
  },
40
40
  "bugs": {
41
- "url": "https://github.com/ben-eb/cssnano/issues"
41
+ "url": "https://github.com/cssnano/cssnano/issues"
42
42
  },
43
43
  "engines": {
44
- "node": ">=4"
44
+ "node": ">=6.9.0"
45
45
  }
46
46
  }