stylehacks 4.0.3 → 5.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,73 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ # [5.0.0](https://github.com/cssnano/cssnano/compare/stylehacks@5.0.0-rc.2...stylehacks@5.0.0) (2021-04-06)
7
+
8
+ **Note:** Version bump only for package stylehacks
9
+
10
+
11
+
12
+
13
+
14
+ # [5.0.0-rc.2](https://github.com/cssnano/cssnano/compare/stylehacks@5.0.0-rc.1...stylehacks@5.0.0-rc.2) (2021-03-15)
15
+
16
+ **Note:** Version bump only for package stylehacks
17
+
18
+
19
+
20
+
21
+
22
+ # [5.0.0-rc.1](https://github.com/cssnano/cssnano/compare/stylehacks@5.0.0-rc.0...stylehacks@5.0.0-rc.1) (2021-03-04)
23
+
24
+ **Note:** Version bump only for package stylehacks
25
+
26
+
27
+
28
+
29
+
30
+ # 5.0.0-rc.0 (2021-02-19)
31
+
32
+
33
+ ### chore
34
+
35
+ * minimum require version of node is 10.13 ([#871](https://github.com/cssnano/cssnano/issues/871)) ([28bda24](https://github.com/cssnano/cssnano/commit/28bda243e32ce3ba89b3c358a5f78727b3732f11))
36
+
37
+
38
+ ### Features
39
+
40
+ * migarete to PostCSS 8 ([#975](https://github.com/cssnano/cssnano/issues/975)) ([40b82dc](https://github.com/cssnano/cssnano/commit/40b82dca7f53ac02cd4fe62846dec79b898ccb49))
41
+
42
+
43
+ ### BREAKING CHANGES
44
+
45
+ * minimum supported `postcss` version is `8.2.1`
46
+ * minimum require version of node is 10.13
47
+
48
+
49
+
50
+ ## 4.1.10 (2019-02-14)
51
+
52
+
53
+ ### Bug Fixes
54
+
55
+ * **stylehacks:** doesn't throw error on `[attr]` selector ([#711](https://github.com/cssnano/cssnano/issues/711)) ([a4a43c3](https://github.com/cssnano/cssnano/commit/a4a43c37c58eb9dec3123072485f12e20f627bd1))
56
+
57
+
58
+
59
+ ## 4.1.9 (2019-02-12)
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * **stylehacks:** better handle uppercase ([#704](https://github.com/cssnano/cssnano/issues/704)) ([8d48058](https://github.com/cssnano/cssnano/commit/8d48058b0f5be6943c443e4ce653fb156794f6b7))
65
+
66
+
67
+
68
+ ## 4.1.1 (2018-09-24)
69
+
70
+
71
+ ### Bug Fixes
72
+
73
+ * **postcss-merge-longhand:** not mangle border output ([#555](https://github.com/cssnano/cssnano/issues/555)) ([9a70605](https://github.com/cssnano/cssnano/commit/9a706050b621e7795a9bf74eb7110b5c81804ffe)), closes [#553](https://github.com/cssnano/cssnano/issues/553) [#554](https://github.com/cssnano/cssnano/issues/554)
@@ -1,11 +1,18 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
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';
6
+ exports.OP_9 = exports.IE_8 = exports.IE_7 = exports.IE_6 = exports.IE_5_5 = exports.FF_2 = void 0;
7
+ const FF_2 = 'firefox 2';
8
+ exports.FF_2 = FF_2;
9
+ const IE_5_5 = 'ie 5.5';
10
+ exports.IE_5_5 = IE_5_5;
11
+ const IE_6 = 'ie 6';
12
+ exports.IE_6 = IE_6;
13
+ const IE_7 = 'ie 7';
14
+ exports.IE_7 = IE_7;
15
+ const IE_8 = 'ie 8';
16
+ exports.IE_8 = IE_8;
17
+ const OP_9 = 'opera 9';
18
+ exports.OP_9 = OP_9;
@@ -1,9 +1,14 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
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';
6
+ exports.VALUE = exports.SELECTOR = exports.PROPERTY = exports.MEDIA_QUERY = void 0;
7
+ const MEDIA_QUERY = 'media query';
8
+ exports.MEDIA_QUERY = MEDIA_QUERY;
9
+ const PROPERTY = 'property';
10
+ exports.PROPERTY = PROPERTY;
11
+ const SELECTOR = 'selector';
12
+ exports.SELECTOR = SELECTOR;
13
+ const VALUE = 'value';
14
+ exports.VALUE = VALUE;
@@ -1,8 +1,12 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- const ATRULE = exports.ATRULE = 'atrule';
7
- const DECL = exports.DECL = 'decl';
8
- const RULE = exports.RULE = 'rule';
6
+ exports.RULE = exports.DECL = exports.ATRULE = void 0;
7
+ const ATRULE = 'atrule';
8
+ exports.ATRULE = ATRULE;
9
+ const DECL = 'decl';
10
+ exports.DECL = DECL;
11
+ const RULE = 'rule';
12
+ exports.RULE = RULE;
@@ -1,7 +1,10 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- const BODY = exports.BODY = 'body';
7
- const HTML = exports.HTML = 'html';
6
+ exports.HTML = exports.BODY = void 0;
7
+ const BODY = 'body';
8
+ exports.BODY = BODY;
9
+ const HTML = 'html';
10
+ exports.HTML = HTML;
package/dist/exists.js CHANGED
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
  exports.default = exists;
7
- function exists(selector, index, value) {
8
- const node = selector.at(index);
9
7
 
10
- return node && node.value && node.value.toLowerCase() === value;
8
+ function exists(selector, index, value) {
9
+ const node = selector.at(index);
10
+ return node && node.value && node.value.toLowerCase() === value;
11
11
  }
12
- module.exports = exports["default"];
12
+
13
+ module.exports = exports.default;
package/dist/index.js CHANGED
@@ -1,67 +1,69 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _postcss = require('postcss');
8
+ var _browserslist = _interopRequireDefault(require("browserslist"));
8
9
 
9
- var _postcss2 = _interopRequireDefault(_postcss);
10
-
11
- var _browserslist = require('browserslist');
12
-
13
- var _browserslist2 = _interopRequireDefault(_browserslist);
14
-
15
- var _plugins = require('./plugins');
16
-
17
- var _plugins2 = _interopRequireDefault(_plugins);
10
+ var _plugins = _interopRequireDefault(require("./plugins"));
18
11
 
19
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
13
 
21
- const stylehacks = _postcss2.default.plugin('stylehacks', (opts = {}) => {
22
- return (css, result) => {
23
- const resultOpts = result.opts || {};
24
- const browsers = (0, _browserslist2.default)(null, {
25
- stats: resultOpts.stats,
26
- path: __dirname,
27
- env: resultOpts.env
14
+ function pluginCreator(opts = {}) {
15
+ return {
16
+ postcssPlugin: 'stylehacks',
17
+
18
+ OnceExit(css, {
19
+ result
20
+ }) {
21
+ const resultOpts = result.opts || {};
22
+ const browsers = (0, _browserslist.default)(null, {
23
+ stats: resultOpts.stats,
24
+ path: __dirname,
25
+ env: resultOpts.env
26
+ });
27
+
28
+ const processors = _plugins.default.reduce((list, Plugin) => {
29
+ const hack = new Plugin(result);
30
+ const applied = browsers.some(browser => {
31
+ return hack.targets.some(target => browser === target);
28
32
  });
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);
33
- });
34
33
 
35
- if (applied) {
36
- return list;
37
- }
34
+ if (applied) {
35
+ return list;
36
+ }
38
37
 
39
- return [...list, hack];
40
- }, []);
38
+ return [...list, hack];
39
+ }, []);
41
40
 
42
- css.walk(node => {
43
- processors.forEach(proc => {
44
- if (!~proc.nodeTypes.indexOf(node.type)) {
45
- return;
46
- }
41
+ css.walk(node => {
42
+ processors.forEach(proc => {
43
+ if (!~proc.nodeTypes.indexOf(node.type)) {
44
+ return;
45
+ }
47
46
 
48
- if (opts.lint) {
49
- return proc.detectAndWarn(node);
50
- }
47
+ if (opts.lint) {
48
+ return proc.detectAndWarn(node);
49
+ }
51
50
 
52
- return proc.detectAndResolve(node);
53
- });
51
+ return proc.detectAndResolve(node);
54
52
  });
55
- };
56
- });
53
+ });
54
+ }
57
55
 
58
- stylehacks.detect = node => {
59
- return _plugins2.default.some(Plugin => {
60
- const hack = new Plugin();
56
+ };
57
+ }
61
58
 
62
- return hack.any(node);
63
- });
59
+ pluginCreator.detect = node => {
60
+ return _plugins.default.some(Plugin => {
61
+ const hack = new Plugin();
62
+ return hack.any(node);
63
+ });
64
64
  };
65
65
 
66
- exports.default = stylehacks;
67
- module.exports = exports['default'];
66
+ pluginCreator.postcss = true;
67
+ var _default = pluginCreator;
68
+ exports.default = _default;
69
+ module.exports = exports.default;
package/dist/isMixin.js CHANGED
@@ -1,17 +1,20 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
  exports.default = isMixin;
7
+
7
8
  function isMixin(node) {
8
- const { selector } = node;
9
+ const {
10
+ selector
11
+ } = node; // If the selector ends with a ':' it is likely a part of a custom mixin.
9
12
 
10
- // If the selector ends with a ':' it is likely a part of a custom mixin.
11
- if (!selector || selector[selector.length - 1] === ':') {
12
- return true;
13
- }
13
+ if (!selector || selector[selector.length - 1] === ':') {
14
+ return true;
15
+ }
14
16
 
15
- return false;
17
+ return false;
16
18
  }
17
- module.exports = exports['default'];
19
+
20
+ module.exports = exports.default;
package/dist/plugin.js CHANGED
@@ -1,66 +1,71 @@
1
1
  "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
  exports.default = plugin;
7
- function plugin(targets, nodeTypes, detect) {
8
- class Plugin {
9
- constructor(result) {
10
- this.nodes = [];
11
- this.result = result;
12
- this.targets = targets;
13
- this.nodeTypes = nodeTypes;
14
- }
15
-
16
- push(node, metadata) {
17
- node._stylehacks = Object.assign({}, metadata, {
18
- message: `Bad ${metadata.identifier}: ${metadata.hack}`,
19
- browsers: this.targets
20
- });
21
-
22
- this.nodes.push(node);
23
- }
24
-
25
- any(node) {
26
- if (~this.nodeTypes.indexOf(node.type)) {
27
- detect.apply(this, arguments);
28
7
 
29
- return !!node._stylehacks;
30
- }
31
-
32
- return false;
33
- }
34
-
35
- detectAndResolve(...args) {
36
- this.nodes = [];
37
-
38
- detect.apply(this, args);
8
+ function plugin(targets, nodeTypes, detect) {
9
+ class Plugin {
10
+ constructor(result) {
11
+ this.nodes = [];
12
+ this.result = result;
13
+ this.targets = targets;
14
+ this.nodeTypes = nodeTypes;
15
+ }
39
16
 
40
- return this.resolve();
41
- }
17
+ push(node, metadata) {
18
+ node._stylehacks = Object.assign({}, metadata, {
19
+ message: `Bad ${metadata.identifier}: ${metadata.hack}`,
20
+ browsers: this.targets
21
+ });
22
+ this.nodes.push(node);
23
+ }
42
24
 
43
- detectAndWarn(...args) {
44
- this.nodes = [];
25
+ any(node) {
26
+ if (~this.nodeTypes.indexOf(node.type)) {
27
+ detect.apply(this, arguments);
28
+ return !!node._stylehacks;
29
+ }
45
30
 
46
- detect.apply(this, args);
31
+ return false;
32
+ }
47
33
 
48
- return this.warn();
49
- }
34
+ detectAndResolve(...args) {
35
+ this.nodes = [];
36
+ detect.apply(this, args);
37
+ return this.resolve();
38
+ }
50
39
 
51
- resolve() {
52
- return this.nodes.forEach(node => node.remove());
53
- }
40
+ detectAndWarn(...args) {
41
+ this.nodes = [];
42
+ detect.apply(this, args);
43
+ return this.warn();
44
+ }
54
45
 
55
- warn() {
56
- return this.nodes.forEach(node => {
57
- const { message, browsers, identifier, hack } = node._stylehacks;
46
+ resolve() {
47
+ return this.nodes.forEach(node => node.remove());
48
+ }
58
49
 
59
- return node.warn(this.result, message, { browsers, identifier, hack });
60
- });
61
- }
50
+ warn() {
51
+ return this.nodes.forEach(node => {
52
+ const {
53
+ message,
54
+ browsers,
55
+ identifier,
56
+ hack
57
+ } = node._stylehacks;
58
+ return node.warn(this.result, message, {
59
+ browsers,
60
+ identifier,
61
+ hack
62
+ });
63
+ });
62
64
  }
63
65
 
64
- return Plugin;
66
+ }
67
+
68
+ return Plugin;
65
69
  }
66
- module.exports = exports["default"];
70
+
71
+ module.exports = exports.default;
@@ -1,52 +1,48 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _postcssSelectorParser = require('postcss-selector-parser');
8
+ var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser"));
8
9
 
9
- var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
10
+ var _exists = _interopRequireDefault(require("../exists"));
10
11
 
11
- var _exists = require('../exists');
12
+ var _isMixin = _interopRequireDefault(require("../isMixin"));
12
13
 
13
- var _exists2 = _interopRequireDefault(_exists);
14
+ var _plugin = _interopRequireDefault(require("../plugin"));
14
15
 
15
- var _isMixin = require('../isMixin');
16
+ var _browsers = require("../dictionary/browsers");
16
17
 
17
- var _isMixin2 = _interopRequireDefault(_isMixin);
18
+ var _identifiers = require("../dictionary/identifiers");
18
19
 
19
- var _plugin = require('../plugin');
20
+ var _postcss = require("../dictionary/postcss");
20
21
 
21
- var _plugin2 = _interopRequireDefault(_plugin);
22
-
23
- var _browsers = require('../dictionary/browsers');
24
-
25
- var _identifiers = require('../dictionary/identifiers');
26
-
27
- var _postcss = require('../dictionary/postcss');
28
-
29
- var _tags = require('../dictionary/tags');
22
+ var _tags = require("../dictionary/tags");
30
23
 
31
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
25
 
33
26
  function analyse(ctx, rule) {
34
- return selectors => {
35
- selectors.each(selector => {
36
- if ((0, _exists2.default)(selector, 0, _tags.BODY) && (0, _exists2.default)(selector, 1, ':empty') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {
37
- ctx.push(rule, {
38
- identifier: _identifiers.SELECTOR,
39
- hack: selector.toString()
40
- });
41
- }
27
+ return selectors => {
28
+ selectors.each(selector => {
29
+ if ((0, _exists.default)(selector, 0, _tags.BODY) && (0, _exists.default)(selector, 1, ':empty') && (0, _exists.default)(selector, 2, ' ') && selector.at(3)) {
30
+ ctx.push(rule, {
31
+ identifier: _identifiers.SELECTOR,
32
+ hack: selector.toString()
42
33
  });
43
- };
34
+ }
35
+ });
36
+ };
44
37
  }
45
38
 
46
- exports.default = (0, _plugin2.default)([_browsers.FF_2], [_postcss.RULE], function (rule) {
47
- if ((0, _isMixin2.default)(rule)) {
48
- return;
49
- }
50
- (0, _postcssSelectorParser2.default)(analyse(this, rule)).processSync(rule.selector);
39
+ var _default = (0, _plugin.default)([_browsers.FF_2], [_postcss.RULE], function (rule) {
40
+ if ((0, _isMixin.default)(rule)) {
41
+ return;
42
+ }
43
+
44
+ (0, _postcssSelectorParser.default)(analyse(this, rule)).processSync(rule.selector);
51
45
  });
52
- module.exports = exports['default'];
46
+
47
+ exports.default = _default;
48
+ module.exports = exports.default;
@@ -1,54 +1,50 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _postcssSelectorParser = require('postcss-selector-parser');
8
+ var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser"));
8
9
 
9
- var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
10
+ var _exists = _interopRequireDefault(require("../exists"));
10
11
 
11
- var _exists = require('../exists');
12
+ var _isMixin = _interopRequireDefault(require("../isMixin"));
12
13
 
13
- var _exists2 = _interopRequireDefault(_exists);
14
+ var _plugin = _interopRequireDefault(require("../plugin"));
14
15
 
15
- var _isMixin = require('../isMixin');
16
+ var _browsers = require("../dictionary/browsers");
16
17
 
17
- var _isMixin2 = _interopRequireDefault(_isMixin);
18
+ var _identifiers = require("../dictionary/identifiers");
18
19
 
19
- var _plugin = require('../plugin');
20
+ var _postcss = require("../dictionary/postcss");
20
21
 
21
- var _plugin2 = _interopRequireDefault(_plugin);
22
-
23
- var _browsers = require('../dictionary/browsers');
24
-
25
- var _identifiers = require('../dictionary/identifiers');
26
-
27
- var _postcss = require('../dictionary/postcss');
28
-
29
- var _tags = require('../dictionary/tags');
22
+ var _tags = require("../dictionary/tags");
30
23
 
31
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
32
25
 
33
26
  function analyse(ctx, rule) {
34
- return selectors => {
35
- selectors.each(selector => {
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
- ctx.push(rule, {
38
- identifier: _identifiers.SELECTOR,
39
- hack: selector.toString()
40
- });
41
- }
27
+ return selectors => {
28
+ selectors.each(selector => {
29
+ if ((0, _exists.default)(selector, 0, _tags.HTML) && ((0, _exists.default)(selector, 1, '>') || (0, _exists.default)(selector, 1, '~')) && selector.at(2) && selector.at(2).type === 'comment' && (0, _exists.default)(selector, 3, ' ') && (0, _exists.default)(selector, 4, _tags.BODY) && (0, _exists.default)(selector, 5, ' ') && selector.at(6)) {
30
+ ctx.push(rule, {
31
+ identifier: _identifiers.SELECTOR,
32
+ hack: selector.toString()
42
33
  });
43
- };
34
+ }
35
+ });
36
+ };
44
37
  }
45
38
 
46
- exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.RULE], function (rule) {
47
- if ((0, _isMixin2.default)(rule)) {
48
- return;
49
- }
50
- if (rule.raws.selector && rule.raws.selector.raw) {
51
- (0, _postcssSelectorParser2.default)(analyse(this, rule)).processSync(rule.raws.selector.raw);
52
- }
39
+ var _default = (0, _plugin.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.RULE], function (rule) {
40
+ if ((0, _isMixin.default)(rule)) {
41
+ return;
42
+ }
43
+
44
+ if (rule.raws.selector && rule.raws.selector.raw) {
45
+ (0, _postcssSelectorParser.default)(analyse(this, rule)).processSync(rule.raws.selector.raw);
46
+ }
53
47
  });
54
- module.exports = exports['default'];
48
+
49
+ exports.default = _default;
50
+ module.exports = exports.default;