stylehacks 2.3.1 → 2.3.2
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 +4 -0
- package/dist/cli.js +26 -28
- package/dist/dictionary/browsers.js +9 -0
- package/dist/dictionary/identifiers.js +7 -0
- package/dist/dictionary/postcss.js +6 -0
- package/dist/dictionary/tags.js +5 -0
- package/dist/exists.js +1 -1
- package/dist/formatter.js +4 -4
- package/dist/index.js +17 -9
- package/dist/isMixin.js +14 -0
- package/dist/plugin.js +33 -29
- package/dist/plugins/bodyEmpty.js +20 -9
- package/dist/plugins/htmlCombinatorCommentBody.js +21 -8
- package/dist/plugins/htmlFirstChild.js +20 -9
- package/dist/plugins/important.js +7 -5
- package/dist/plugins/leadingStar.js +33 -36
- package/dist/plugins/leadingUnderscore.js +9 -4
- package/dist/plugins/mediaSlash0.js +8 -4
- package/dist/plugins/mediaSlash9.js +8 -4
- package/dist/plugins/slash9.js +8 -4
- package/dist/plugins/starHtml.js +20 -9
- package/dist/plugins/trailingSlashComma.js +21 -12
- package/package.json +19 -6
package/CHANGELOG.md
CHANGED
package/dist/cli.js
CHANGED
|
@@ -17,12 +17,12 @@ var _minimist = require('minimist');
|
|
|
17
17
|
|
|
18
18
|
var _minimist2 = _interopRequireDefault(_minimist);
|
|
19
19
|
|
|
20
|
+
var _package = require('../package.json');
|
|
21
|
+
|
|
20
22
|
var _ = require('./');
|
|
21
23
|
|
|
22
24
|
var _2 = _interopRequireDefault(_);
|
|
23
25
|
|
|
24
|
-
var _package = require('../package.json');
|
|
25
|
-
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
27
|
|
|
28
28
|
var opts = (0, _minimist2.default)(process.argv.slice(2), {
|
|
@@ -38,34 +38,32 @@ var opts = (0, _minimist2.default)(process.argv.slice(2), {
|
|
|
38
38
|
if (opts.version) {
|
|
39
39
|
console.log(_package.version);
|
|
40
40
|
} else {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var out = opts._[1];
|
|
41
|
+
var file = opts._[0];
|
|
42
|
+
var out = opts._[1];
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
44
|
+
if (file === 'help' || opts.help) {
|
|
45
|
+
_fs2.default.createReadStream(__dirname + '/../usage.txt').pipe(process.stdout).on('close', function () {
|
|
46
|
+
return process.exit(1);
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
(0, _readFileStdin2.default)(file, function (err, buf) {
|
|
50
|
+
if (err) {
|
|
51
|
+
throw err;
|
|
52
|
+
}
|
|
53
|
+
if (file) {
|
|
54
|
+
opts.from = file;
|
|
55
|
+
}
|
|
56
|
+
if (out) {
|
|
57
|
+
opts.to = out;
|
|
58
|
+
}
|
|
59
|
+
_2.default.process(String(buf), opts).then(function (result) {
|
|
60
|
+
if (result.warnings().length) {
|
|
61
|
+
process.exit(1);
|
|
56
62
|
}
|
|
57
|
-
if (
|
|
58
|
-
|
|
63
|
+
if (!opts.lint) {
|
|
64
|
+
(0, _writeFileStdout2.default)(result.css);
|
|
59
65
|
}
|
|
60
|
-
_2.default.process(String(buf), opts).then(function (result) {
|
|
61
|
-
if (result.warnings().length) {
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
if (!opts.lint) {
|
|
65
|
-
(0, _writeFileStdout2.default)(result.css);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
66
|
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
71
69
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
var FF_2 = exports.FF_2 = 'firefox 2';
|
|
5
|
+
var IE_5_5 = exports.IE_5_5 = 'ie 5.5';
|
|
6
|
+
var IE_6 = exports.IE_6 = 'ie 6';
|
|
7
|
+
var IE_7 = exports.IE_7 = 'ie 7';
|
|
8
|
+
var IE_8 = exports.IE_8 = 'ie 8';
|
|
9
|
+
var OP_9 = exports.OP_9 = 'opera 9';
|
package/dist/exists.js
CHANGED
package/dist/formatter.js
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
-
var _chalk = require('chalk');
|
|
6
|
-
|
|
7
|
-
var _chalk2 = _interopRequireDefault(_chalk);
|
|
8
|
-
|
|
9
5
|
var _path = require('path');
|
|
10
6
|
|
|
11
7
|
var _path2 = _interopRequireDefault(_path);
|
|
12
8
|
|
|
9
|
+
var _chalk = require('chalk');
|
|
10
|
+
|
|
11
|
+
var _chalk2 = _interopRequireDefault(_chalk);
|
|
12
|
+
|
|
13
13
|
var _textTable = require('text-table');
|
|
14
14
|
|
|
15
15
|
var _textTable2 = _interopRequireDefault(_textTable);
|
package/dist/index.js
CHANGED
|
@@ -70,26 +70,34 @@ var plugins = [_bodyEmpty2.default, _htmlCombinatorCommentBody2.default, _htmlFi
|
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
var stylehacks = _postcss2.default.plugin('stylehacks', function () {
|
|
73
|
-
var opts = arguments.length
|
|
73
|
+
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
74
74
|
|
|
75
75
|
var b = opts.browsers;
|
|
76
76
|
var browsers = b instanceof Array ? b : (0, _browserslist2.default)(b);
|
|
77
77
|
|
|
78
78
|
return function (css, result) {
|
|
79
|
-
plugins.
|
|
80
|
-
var hack = new Plugin(
|
|
79
|
+
var processors = plugins.reduce(function (list, Plugin) {
|
|
80
|
+
var hack = new Plugin(result);
|
|
81
81
|
var applied = browsers.some(function (browser) {
|
|
82
82
|
return hack.targets.some(function (target) {
|
|
83
83
|
return browser === target;
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
86
|
if (applied) {
|
|
87
|
-
return;
|
|
87
|
+
return list;
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
return [].concat(list, [hack]);
|
|
90
|
+
}, []);
|
|
91
|
+
css.walk(function (node) {
|
|
92
|
+
processors.forEach(function (proc) {
|
|
93
|
+
if (!~proc.nodeTypes.indexOf(node.type)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (opts.lint) {
|
|
97
|
+
return proc.detectAndWarn(node);
|
|
98
|
+
}
|
|
99
|
+
return proc.detectAndResolve(node);
|
|
100
|
+
});
|
|
93
101
|
});
|
|
94
102
|
};
|
|
95
103
|
});
|
|
@@ -104,7 +112,7 @@ stylehacks.detect = function (node) {
|
|
|
104
112
|
};
|
|
105
113
|
|
|
106
114
|
stylehacks.process = function (css) {
|
|
107
|
-
var opts = arguments.length
|
|
115
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
108
116
|
|
|
109
117
|
opts.reporter = {};
|
|
110
118
|
opts.reporter.formatter = _formatter2.default;
|
package/dist/isMixin.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = isMixin;
|
|
5
|
+
function isMixin(node) {
|
|
6
|
+
var selector = node.selector;
|
|
7
|
+
// If the selector ends with a ':' it is likely a part of a custom mixin.
|
|
8
|
+
|
|
9
|
+
if (!selector || selector[selector.length - 1] === ':') {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
module.exports = exports['default'];
|
package/dist/plugin.js
CHANGED
|
@@ -2,53 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
+
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
|
6
|
+
|
|
7
|
+
exports.default = plugin;
|
|
8
|
+
|
|
5
9
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
6
10
|
|
|
7
|
-
function plugin(targets, nodeTypes,
|
|
11
|
+
function plugin(targets, nodeTypes, detect) {
|
|
8
12
|
var Plugin = function () {
|
|
9
|
-
function Plugin(
|
|
13
|
+
function Plugin(result) {
|
|
10
14
|
_classCallCheck(this, Plugin);
|
|
11
15
|
|
|
12
16
|
this.nodes = [];
|
|
13
|
-
this.css = css;
|
|
14
17
|
this.result = result;
|
|
15
18
|
this.targets = targets;
|
|
16
19
|
this.nodeTypes = nodeTypes;
|
|
17
20
|
}
|
|
18
21
|
|
|
19
22
|
Plugin.prototype.push = function push(node, metadata) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
node._stylehacks = _extends({}, metadata, {
|
|
24
|
+
message: "Bad " + metadata.identifier + ": " + metadata.hack,
|
|
25
|
+
browsers: this.targets
|
|
26
|
+
});
|
|
23
27
|
this.nodes.push(node);
|
|
24
28
|
};
|
|
25
29
|
|
|
26
30
|
Plugin.prototype.any = function any(node) {
|
|
27
|
-
var hasHack = false;
|
|
28
31
|
if (~this.nodeTypes.indexOf(node.type)) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
hasHack = true;
|
|
32
|
-
}
|
|
32
|
+
detect.apply(this, arguments);
|
|
33
|
+
return !!node._stylehacks;
|
|
33
34
|
}
|
|
34
|
-
return
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
Plugin.prototype.detect = function detect() {
|
|
38
|
-
this.css.walk(function (node) {
|
|
39
|
-
if (~this.nodeTypes.indexOf(node.type)) {
|
|
40
|
-
_detect.apply(this, arguments);
|
|
41
|
-
}
|
|
42
|
-
}.bind(this));
|
|
35
|
+
return false;
|
|
43
36
|
};
|
|
44
37
|
|
|
45
38
|
Plugin.prototype.detectAndResolve = function detectAndResolve() {
|
|
46
|
-
this.
|
|
39
|
+
this.nodes = [];
|
|
40
|
+
|
|
41
|
+
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
|
42
|
+
args[_key] = arguments[_key];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
detect.apply(this, args);
|
|
47
46
|
return this.resolve();
|
|
48
47
|
};
|
|
49
48
|
|
|
50
49
|
Plugin.prototype.detectAndWarn = function detectAndWarn() {
|
|
51
|
-
this.
|
|
50
|
+
this.nodes = [];
|
|
51
|
+
|
|
52
|
+
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
53
|
+
args[_key2] = arguments[_key2];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
detect.apply(this, args);
|
|
52
57
|
return this.warn();
|
|
53
58
|
};
|
|
54
59
|
|
|
@@ -62,11 +67,11 @@ function plugin(targets, nodeTypes, _detect) {
|
|
|
62
67
|
var _this = this;
|
|
63
68
|
|
|
64
69
|
return this.nodes.forEach(function (node) {
|
|
65
|
-
var _node$_stylehacks = node._stylehacks
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
var _node$_stylehacks = node._stylehacks,
|
|
71
|
+
message = _node$_stylehacks.message,
|
|
72
|
+
browsers = _node$_stylehacks.browsers,
|
|
73
|
+
identifier = _node$_stylehacks.identifier,
|
|
74
|
+
hack = _node$_stylehacks.hack;
|
|
70
75
|
|
|
71
76
|
return node.warn(_this.result, message, { browsers: browsers, identifier: identifier, hack: hack });
|
|
72
77
|
});
|
|
@@ -77,5 +82,4 @@ function plugin(targets, nodeTypes, _detect) {
|
|
|
77
82
|
|
|
78
83
|
return Plugin;
|
|
79
84
|
}
|
|
80
|
-
exports
|
|
81
|
-
module.exports = exports['default'];
|
|
85
|
+
module.exports = exports["default"];
|
|
@@ -2,28 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
+
var _postcssSelectorParser = require('postcss-selector-parser');
|
|
6
|
+
|
|
7
|
+
var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
|
|
8
|
+
|
|
5
9
|
var _exists = require('../exists');
|
|
6
10
|
|
|
7
11
|
var _exists2 = _interopRequireDefault(_exists);
|
|
8
12
|
|
|
13
|
+
var _isMixin = require('../isMixin');
|
|
14
|
+
|
|
15
|
+
var _isMixin2 = _interopRequireDefault(_isMixin);
|
|
16
|
+
|
|
9
17
|
var _plugin = require('../plugin');
|
|
10
18
|
|
|
11
19
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
12
20
|
|
|
13
|
-
var
|
|
21
|
+
var _browsers = require('../dictionary/browsers');
|
|
14
22
|
|
|
15
|
-
var
|
|
23
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
16
24
|
|
|
17
|
-
|
|
25
|
+
var _postcss = require('../dictionary/postcss');
|
|
18
26
|
|
|
19
|
-
var
|
|
27
|
+
var _tags = require('../dictionary/tags');
|
|
28
|
+
|
|
29
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
30
|
|
|
21
31
|
function analyse(ctx, rule) {
|
|
22
32
|
return function (selectors) {
|
|
23
33
|
selectors.each(function (selector) {
|
|
24
|
-
if ((0, _exists2.default)(selector, 0,
|
|
34
|
+
if ((0, _exists2.default)(selector, 0, _tags.BODY) && (0, _exists2.default)(selector, 1, ':empty') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {
|
|
25
35
|
ctx.push(rule, {
|
|
26
|
-
identifier:
|
|
36
|
+
identifier: _identifiers.SELECTOR,
|
|
27
37
|
hack: selector.toString()
|
|
28
38
|
});
|
|
29
39
|
}
|
|
@@ -31,9 +41,10 @@ function analyse(ctx, rule) {
|
|
|
31
41
|
};
|
|
32
42
|
}
|
|
33
43
|
|
|
34
|
-
exports.default = (0, _plugin2.default)(
|
|
35
|
-
if (
|
|
36
|
-
|
|
44
|
+
exports.default = (0, _plugin2.default)([_browsers.FF_2], [_postcss.RULE], function (rule) {
|
|
45
|
+
if ((0, _isMixin2.default)(rule)) {
|
|
46
|
+
return;
|
|
37
47
|
}
|
|
48
|
+
(0, _postcssSelectorParser2.default)(analyse(this, rule)).process(rule.selector);
|
|
38
49
|
});
|
|
39
50
|
module.exports = exports['default'];
|
|
@@ -2,28 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
+
var _postcssSelectorParser = require('postcss-selector-parser');
|
|
6
|
+
|
|
7
|
+
var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
|
|
8
|
+
|
|
5
9
|
var _exists = require('../exists');
|
|
6
10
|
|
|
7
11
|
var _exists2 = _interopRequireDefault(_exists);
|
|
8
12
|
|
|
13
|
+
var _isMixin = require('../isMixin');
|
|
14
|
+
|
|
15
|
+
var _isMixin2 = _interopRequireDefault(_isMixin);
|
|
16
|
+
|
|
9
17
|
var _plugin = require('../plugin');
|
|
10
18
|
|
|
11
19
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
12
20
|
|
|
13
|
-
var
|
|
21
|
+
var _browsers = require('../dictionary/browsers');
|
|
14
22
|
|
|
15
|
-
var
|
|
23
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
16
24
|
|
|
17
|
-
|
|
25
|
+
var _postcss = require('../dictionary/postcss');
|
|
18
26
|
|
|
19
|
-
var
|
|
27
|
+
var _tags = require('../dictionary/tags');
|
|
28
|
+
|
|
29
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
30
|
|
|
21
31
|
function analyse(ctx, rule) {
|
|
22
32
|
return function (selectors) {
|
|
23
33
|
selectors.each(function (selector) {
|
|
24
|
-
if ((0, _exists2.default)(selector, 0,
|
|
34
|
+
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)) {
|
|
25
35
|
ctx.push(rule, {
|
|
26
|
-
identifier:
|
|
36
|
+
identifier: _identifiers.SELECTOR,
|
|
27
37
|
hack: selector.toString()
|
|
28
38
|
});
|
|
29
39
|
}
|
|
@@ -31,8 +41,11 @@ function analyse(ctx, rule) {
|
|
|
31
41
|
};
|
|
32
42
|
}
|
|
33
43
|
|
|
34
|
-
exports.default = (0, _plugin2.default)(
|
|
35
|
-
if (
|
|
44
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.RULE], function (rule) {
|
|
45
|
+
if ((0, _isMixin2.default)(rule)) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (rule.raws.selector && rule.raws.selector.raw) {
|
|
36
49
|
(0, _postcssSelectorParser2.default)(analyse(this, rule)).process(rule.raws.selector.raw);
|
|
37
50
|
}
|
|
38
51
|
});
|
|
@@ -2,28 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
+
var _postcssSelectorParser = require('postcss-selector-parser');
|
|
6
|
+
|
|
7
|
+
var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
|
|
8
|
+
|
|
5
9
|
var _exists = require('../exists');
|
|
6
10
|
|
|
7
11
|
var _exists2 = _interopRequireDefault(_exists);
|
|
8
12
|
|
|
13
|
+
var _isMixin = require('../isMixin');
|
|
14
|
+
|
|
15
|
+
var _isMixin2 = _interopRequireDefault(_isMixin);
|
|
16
|
+
|
|
9
17
|
var _plugin = require('../plugin');
|
|
10
18
|
|
|
11
19
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
12
20
|
|
|
13
|
-
var
|
|
21
|
+
var _browsers = require('../dictionary/browsers');
|
|
14
22
|
|
|
15
|
-
var
|
|
23
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
16
24
|
|
|
17
|
-
|
|
25
|
+
var _postcss = require('../dictionary/postcss');
|
|
18
26
|
|
|
19
|
-
var
|
|
27
|
+
var _tags = require('../dictionary/tags');
|
|
28
|
+
|
|
29
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
30
|
|
|
21
31
|
function analyse(ctx, rule) {
|
|
22
32
|
return function (selectors) {
|
|
23
33
|
selectors.each(function (selector) {
|
|
24
|
-
if ((0, _exists2.default)(selector, 0,
|
|
34
|
+
if ((0, _exists2.default)(selector, 0, _tags.HTML) && (0, _exists2.default)(selector, 1, ':first-child') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {
|
|
25
35
|
ctx.push(rule, {
|
|
26
|
-
identifier:
|
|
36
|
+
identifier: _identifiers.SELECTOR,
|
|
27
37
|
hack: selector.toString()
|
|
28
38
|
});
|
|
29
39
|
}
|
|
@@ -31,9 +41,10 @@ function analyse(ctx, rule) {
|
|
|
31
41
|
};
|
|
32
42
|
}
|
|
33
43
|
|
|
34
|
-
exports.default = (0, _plugin2.default)(
|
|
35
|
-
if (
|
|
36
|
-
|
|
44
|
+
exports.default = (0, _plugin2.default)([_browsers.OP_9], [_postcss.RULE], function (rule) {
|
|
45
|
+
if ((0, _isMixin2.default)(rule)) {
|
|
46
|
+
return;
|
|
37
47
|
}
|
|
48
|
+
(0, _postcssSelectorParser2.default)(analyse(this, rule)).process(rule.selector);
|
|
38
49
|
});
|
|
39
50
|
module.exports = exports['default'];
|
|
@@ -6,17 +6,19 @@ var _plugin = require('../plugin');
|
|
|
6
6
|
|
|
7
7
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
var _browsers = require('../dictionary/browsers');
|
|
10
|
+
|
|
11
|
+
var _postcss = require('../dictionary/postcss');
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
14
|
|
|
13
|
-
exports.default = (0, _plugin2.default)(
|
|
15
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.DECL], function (decl) {
|
|
14
16
|
var match = decl.value.match(/!\w/);
|
|
15
17
|
if (match) {
|
|
16
|
-
var
|
|
18
|
+
var hack = decl.value.substr(match.index, decl.value.length - 1);
|
|
17
19
|
this.push(decl, {
|
|
18
20
|
identifier: '!important',
|
|
19
|
-
hack:
|
|
21
|
+
hack: hack
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
});
|
|
@@ -2,60 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
|
|
6
|
-
|
|
7
5
|
var _plugin = require('../plugin');
|
|
8
6
|
|
|
9
7
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
10
8
|
|
|
9
|
+
var _browsers = require('../dictionary/browsers');
|
|
10
|
+
|
|
11
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
12
|
+
|
|
13
|
+
var _postcss = require('../dictionary/postcss');
|
|
14
|
+
|
|
11
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
16
|
|
|
13
|
-
var targets = ['ie 5.5', 'ie 6', 'ie 7'];
|
|
14
17
|
var hacks = '!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|'.split('_');
|
|
15
18
|
|
|
16
|
-
exports.default = (0, _plugin2.default)(
|
|
19
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE, _postcss.DECL], function (node) {
|
|
17
20
|
var _this = this;
|
|
18
21
|
|
|
19
|
-
if (node.type ===
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
var before = node.raws.before;
|
|
33
|
-
|
|
34
|
-
if (!before) {
|
|
35
|
-
return {
|
|
36
|
-
v: void 0
|
|
37
|
-
};
|
|
22
|
+
if (node.type === _postcss.DECL) {
|
|
23
|
+
// some values are not picked up by before, so ensure they are
|
|
24
|
+
// at the beginning of the value
|
|
25
|
+
hacks.some(function (hack) {
|
|
26
|
+
if (!node.prop.indexOf(hack)) {
|
|
27
|
+
_this.push(node, {
|
|
28
|
+
identifier: _identifiers.PROPERTY,
|
|
29
|
+
hack: node.prop
|
|
30
|
+
});
|
|
31
|
+
return true;
|
|
38
32
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
_this.push(node, {
|
|
42
|
-
identifier: 'property',
|
|
43
|
-
hack: '' + before.trim() + node.prop
|
|
44
|
-
});
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}();
|
|
33
|
+
});
|
|
34
|
+
var before = node.raws.before;
|
|
49
35
|
|
|
50
|
-
if (
|
|
51
|
-
|
|
36
|
+
if (!before) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
hacks.some(function (hack) {
|
|
40
|
+
if (~before.indexOf(hack)) {
|
|
41
|
+
_this.push(node, {
|
|
42
|
+
identifier: _identifiers.PROPERTY,
|
|
43
|
+
hack: '' + before.trim() + node.prop
|
|
44
|
+
});
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
52
49
|
// test for the @property: value; hack
|
|
53
50
|
var name = node.name;
|
|
54
51
|
|
|
55
52
|
var len = name.length - 1;
|
|
56
53
|
if (name.lastIndexOf(':') === len) {
|
|
57
54
|
this.push(node, {
|
|
58
|
-
identifier:
|
|
55
|
+
identifier: _identifiers.PROPERTY,
|
|
59
56
|
hack: '@' + name.substr(0, len)
|
|
60
57
|
});
|
|
61
58
|
}
|
|
@@ -6,18 +6,23 @@ var _plugin = require('../plugin');
|
|
|
6
6
|
|
|
7
7
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
var _browsers = require('../dictionary/browsers');
|
|
10
|
+
|
|
11
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
10
12
|
|
|
11
|
-
var
|
|
13
|
+
var _postcss = require('../dictionary/postcss');
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
|
|
17
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_6], [_postcss.DECL], function (decl) {
|
|
14
18
|
var before = decl.raws.before;
|
|
19
|
+
|
|
15
20
|
if (!before) {
|
|
16
21
|
return;
|
|
17
22
|
}
|
|
18
23
|
if (~before.indexOf('_') || ~before.indexOf('-')) {
|
|
19
24
|
this.push(decl, {
|
|
20
|
-
identifier:
|
|
25
|
+
identifier: _identifiers.PROPERTY,
|
|
21
26
|
hack: '' + before.trim() + decl.prop
|
|
22
27
|
});
|
|
23
28
|
}
|
|
@@ -6,15 +6,19 @@ var _plugin = require('../plugin');
|
|
|
6
6
|
|
|
7
7
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
var _browsers = require('../dictionary/browsers');
|
|
10
|
+
|
|
11
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
10
12
|
|
|
11
|
-
var
|
|
13
|
+
var _postcss = require('../dictionary/postcss');
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
16
|
|
|
13
|
-
exports.default = (0, _plugin2.default)(
|
|
17
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_8], [_postcss.ATRULE], function (rule) {
|
|
14
18
|
var params = rule.params.trim();
|
|
15
19
|
if (params === '\\0screen') {
|
|
16
20
|
this.push(rule, {
|
|
17
|
-
identifier:
|
|
21
|
+
identifier: _identifiers.MEDIA_QUERY,
|
|
18
22
|
hack: params
|
|
19
23
|
});
|
|
20
24
|
}
|
|
@@ -6,15 +6,19 @@ var _plugin = require('../plugin');
|
|
|
6
6
|
|
|
7
7
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
var _browsers = require('../dictionary/browsers');
|
|
10
|
+
|
|
11
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
10
12
|
|
|
11
|
-
var
|
|
13
|
+
var _postcss = require('../dictionary/postcss');
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
16
|
|
|
13
|
-
exports.default = (0, _plugin2.default)(
|
|
17
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE], function (rule) {
|
|
14
18
|
var params = rule.params.trim();
|
|
15
19
|
if (params === 'screen\\9') {
|
|
16
20
|
this.push(rule, {
|
|
17
|
-
identifier:
|
|
21
|
+
identifier: _identifiers.MEDIA_QUERY,
|
|
18
22
|
hack: params
|
|
19
23
|
});
|
|
20
24
|
}
|
package/dist/plugins/slash9.js
CHANGED
|
@@ -6,15 +6,19 @@ var _plugin = require('../plugin');
|
|
|
6
6
|
|
|
7
7
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
var _browsers = require('../dictionary/browsers');
|
|
10
|
+
|
|
11
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
10
12
|
|
|
11
|
-
var
|
|
13
|
+
var _postcss = require('../dictionary/postcss');
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
16
|
|
|
13
|
-
exports.default = (0, _plugin2.default)(
|
|
17
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_6, _browsers.IE_7, _browsers.IE_8], [_postcss.DECL], function (decl) {
|
|
14
18
|
var v = decl.value;
|
|
15
19
|
if (v && v.length > 2 && v.indexOf('\\9') === v.length - 2) {
|
|
16
20
|
this.push(decl, {
|
|
17
|
-
identifier:
|
|
21
|
+
identifier: _identifiers.VALUE,
|
|
18
22
|
hack: v
|
|
19
23
|
});
|
|
20
24
|
}
|
package/dist/plugins/starHtml.js
CHANGED
|
@@ -2,28 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
+
var _postcssSelectorParser = require('postcss-selector-parser');
|
|
6
|
+
|
|
7
|
+
var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
|
|
8
|
+
|
|
5
9
|
var _exists = require('../exists');
|
|
6
10
|
|
|
7
11
|
var _exists2 = _interopRequireDefault(_exists);
|
|
8
12
|
|
|
13
|
+
var _isMixin = require('../isMixin');
|
|
14
|
+
|
|
15
|
+
var _isMixin2 = _interopRequireDefault(_isMixin);
|
|
16
|
+
|
|
9
17
|
var _plugin = require('../plugin');
|
|
10
18
|
|
|
11
19
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
12
20
|
|
|
13
|
-
var
|
|
21
|
+
var _browsers = require('../dictionary/browsers');
|
|
14
22
|
|
|
15
|
-
var
|
|
23
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
16
24
|
|
|
17
|
-
|
|
25
|
+
var _postcss = require('../dictionary/postcss');
|
|
18
26
|
|
|
19
|
-
var
|
|
27
|
+
var _tags = require('../dictionary/tags');
|
|
28
|
+
|
|
29
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
30
|
|
|
21
31
|
function analyse(ctx, rule) {
|
|
22
32
|
return function (selectors) {
|
|
23
33
|
selectors.each(function (selector) {
|
|
24
|
-
if ((0, _exists2.default)(selector, 0, '*') && (0, _exists2.default)(selector, 1, ' ') && (0, _exists2.default)(selector, 2,
|
|
34
|
+
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)) {
|
|
25
35
|
ctx.push(rule, {
|
|
26
|
-
identifier:
|
|
36
|
+
identifier: _identifiers.SELECTOR,
|
|
27
37
|
hack: selector.toString()
|
|
28
38
|
});
|
|
29
39
|
}
|
|
@@ -31,9 +41,10 @@ function analyse(ctx, rule) {
|
|
|
31
41
|
};
|
|
32
42
|
}
|
|
33
43
|
|
|
34
|
-
exports.default = (0, _plugin2.default)(
|
|
35
|
-
if (
|
|
36
|
-
|
|
44
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6], [_postcss.RULE], function (rule) {
|
|
45
|
+
if ((0, _isMixin2.default)(rule)) {
|
|
46
|
+
return;
|
|
37
47
|
}
|
|
48
|
+
(0, _postcssSelectorParser2.default)(analyse(this, rule)).process(rule.selector);
|
|
38
49
|
});
|
|
39
50
|
module.exports = exports['default'];
|
|
@@ -6,21 +6,30 @@ var _plugin = require('../plugin');
|
|
|
6
6
|
|
|
7
7
|
var _plugin2 = _interopRequireDefault(_plugin);
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
var _isMixin = require('../isMixin');
|
|
10
|
+
|
|
11
|
+
var _isMixin2 = _interopRequireDefault(_isMixin);
|
|
12
|
+
|
|
13
|
+
var _browsers = require('../dictionary/browsers');
|
|
14
|
+
|
|
15
|
+
var _identifiers = require('../dictionary/identifiers');
|
|
10
16
|
|
|
11
|
-
var
|
|
17
|
+
var _postcss = require('../dictionary/postcss');
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
19
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
+
|
|
21
|
+
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.RULE], function (rule) {
|
|
22
|
+
if ((0, _isMixin2.default)(rule)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
var selector = rule.selector;
|
|
16
26
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
27
|
+
var trim = selector.trim();
|
|
28
|
+
if (trim.lastIndexOf(',') === selector.length - 1 || trim.lastIndexOf('\\') === selector.length - 1) {
|
|
29
|
+
this.push(rule, {
|
|
30
|
+
identifier: _identifiers.SELECTOR,
|
|
31
|
+
hack: selector
|
|
32
|
+
});
|
|
24
33
|
}
|
|
25
34
|
});
|
|
26
35
|
module.exports = exports['default'];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stylehacks",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"description": "Detect/remove browser hacks from CSS files.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"pretest": "eslint src",
|
|
16
16
|
"prepublish": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
|
|
17
|
-
"
|
|
17
|
+
"report": "nyc report --reporter=html",
|
|
18
|
+
"test": "nyc ava src/__tests__",
|
|
19
|
+
"test-012": "nyc ava src/__tests__"
|
|
18
20
|
},
|
|
19
21
|
"keywords": [
|
|
20
22
|
"browsers",
|
|
@@ -28,16 +30,20 @@
|
|
|
28
30
|
],
|
|
29
31
|
"license": "MIT",
|
|
30
32
|
"devDependencies": {
|
|
31
|
-
"ava": "^0.
|
|
33
|
+
"ava": "^0.17.0",
|
|
32
34
|
"babel-cli": "^6.5.1",
|
|
33
35
|
"babel-core": "^6.5.2",
|
|
34
36
|
"babel-plugin-add-module-exports": "^0.2.0",
|
|
35
37
|
"babel-preset-es2015": "^6.5.0",
|
|
36
38
|
"babel-preset-es2015-loose": "^7.0.0",
|
|
37
39
|
"babel-preset-stage-0": "^6.5.0",
|
|
40
|
+
"babel-register": "^6.9.0",
|
|
38
41
|
"del-cli": "^0.2.0",
|
|
39
|
-
"eslint": "^
|
|
40
|
-
"eslint-config-cssnano": "^
|
|
42
|
+
"eslint": "^3.0.0",
|
|
43
|
+
"eslint-config-cssnano": "^3.0.0",
|
|
44
|
+
"eslint-plugin-babel": "^3.3.0",
|
|
45
|
+
"eslint-plugin-import": "^2.0.1",
|
|
46
|
+
"nyc": "^10.0.0"
|
|
41
47
|
},
|
|
42
48
|
"homepage": "https://github.com/ben-eb/stylehacks",
|
|
43
49
|
"author": {
|
|
@@ -63,6 +69,13 @@
|
|
|
63
69
|
"extends": "cssnano"
|
|
64
70
|
},
|
|
65
71
|
"ava": {
|
|
66
|
-
"require": "babel-
|
|
72
|
+
"require": "babel-register"
|
|
73
|
+
},
|
|
74
|
+
"nyc": {
|
|
75
|
+
"exclude": [
|
|
76
|
+
"dist",
|
|
77
|
+
"node_modules",
|
|
78
|
+
"src/__tests__"
|
|
79
|
+
]
|
|
67
80
|
}
|
|
68
81
|
}
|