postcss-merge-rules 2.0.10 → 2.1.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 +26 -0
- package/dist/index.js +39 -28
- package/dist/lib/clone.js +2 -3
- package/dist/lib/ensureCompatibility.js +140 -0
- package/package.json +31 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
# 2.1.2
|
|
2
|
+
|
|
3
|
+
* Performance improvements; no compatibility checking for simple selectors,
|
|
4
|
+
cached compatibility lookups, and early exit on compatibility mismatches
|
|
5
|
+
(thanks to @akx).
|
|
6
|
+
|
|
7
|
+
# 2.1.1
|
|
8
|
+
|
|
9
|
+
* Resolves an issue with `2.1.0` where `browserslist` was not being installed
|
|
10
|
+
correctly on older Node versions.
|
|
11
|
+
|
|
12
|
+
# 2.1.0
|
|
13
|
+
|
|
14
|
+
* Rules are now merged based on supported browsers, which uses `browserslist`
|
|
15
|
+
& `caniuse-api`. The browsers should be supplied by the standard means of
|
|
16
|
+
[configuring `browserslist`][browserslist], either using config files or
|
|
17
|
+
via environment variables.
|
|
18
|
+
|
|
19
|
+
[browserslist]: https://github.com/ai/browserslist#config-file
|
|
20
|
+
|
|
21
|
+
# 2.0.11
|
|
22
|
+
|
|
23
|
+
* Resolves an issue where partially identical properties would be removed from
|
|
24
|
+
a rule erroneously; for example `color: #fff` would be removed if the other
|
|
25
|
+
rule contained `background-color: #fff`.
|
|
26
|
+
|
|
1
27
|
# 2.0.10
|
|
2
28
|
|
|
3
29
|
* Replaces the internal list of vendor prefixes with the `vendors` module
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _browserslist = require('browserslist');
|
|
6
|
+
|
|
7
|
+
var _browserslist2 = _interopRequireDefault(_browserslist);
|
|
6
8
|
|
|
7
9
|
var _postcss = require('postcss');
|
|
8
10
|
|
|
@@ -16,9 +18,11 @@ var _clone = require('./lib/clone');
|
|
|
16
18
|
|
|
17
19
|
var _clone2 = _interopRequireDefault(_clone);
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
var _ensureCompatibility = require('./lib/ensureCompatibility');
|
|
22
|
+
|
|
23
|
+
var _ensureCompatibility2 = _interopRequireDefault(_ensureCompatibility);
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
26
|
|
|
23
27
|
var prefixes = _vendors2.default.map(function (v) {
|
|
24
28
|
return '-' + v + '-';
|
|
@@ -59,9 +63,15 @@ function sameParent(ruleA, ruleB) {
|
|
|
59
63
|
return hasParent ? sameType : true;
|
|
60
64
|
}
|
|
61
65
|
|
|
62
|
-
function canMerge(ruleA, ruleB) {
|
|
63
|
-
var a =
|
|
64
|
-
var b =
|
|
66
|
+
function canMerge(ruleA, ruleB, browsers, compatibilityCache) {
|
|
67
|
+
var a = ruleA.selectors;
|
|
68
|
+
var b = ruleB.selectors;
|
|
69
|
+
|
|
70
|
+
var selectors = a.concat(b);
|
|
71
|
+
|
|
72
|
+
if (!(0, _ensureCompatibility2.default)(selectors, browsers, compatibilityCache)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
65
75
|
|
|
66
76
|
var parent = sameParent(ruleA, ruleB);
|
|
67
77
|
var name = ruleA.parent.name;
|
|
@@ -69,7 +79,7 @@ function canMerge(ruleA, ruleB) {
|
|
|
69
79
|
if (parent && name && ~name.indexOf('keyframes')) {
|
|
70
80
|
return false;
|
|
71
81
|
}
|
|
72
|
-
return parent && (
|
|
82
|
+
return parent && (selectors.every(noVendor) || sameVendor(a, b));
|
|
73
83
|
}
|
|
74
84
|
|
|
75
85
|
var getDecls = function getDecls(rule) {
|
|
@@ -202,12 +212,12 @@ function partialMerge(first, second) {
|
|
|
202
212
|
}
|
|
203
213
|
}
|
|
204
214
|
|
|
205
|
-
function selectorMerger() {
|
|
215
|
+
function selectorMerger(browsers, compatibilityCache) {
|
|
206
216
|
var cache = null;
|
|
207
217
|
return function (rule) {
|
|
208
218
|
// Prime the cache with the first rule, or alternately ensure that it is
|
|
209
219
|
// safe to merge both declarations before continuing
|
|
210
|
-
if (!cache || !canMerge(rule, cache)) {
|
|
220
|
+
if (!cache || !canMerge(rule, cache, browsers, compatibilityCache)) {
|
|
211
221
|
cache = rule;
|
|
212
222
|
return;
|
|
213
223
|
}
|
|
@@ -228,21 +238,15 @@ function selectorMerger() {
|
|
|
228
238
|
// Merge when both selectors are exactly equal
|
|
229
239
|
// e.g. a { color: blue } a { font-weight: bold }
|
|
230
240
|
if (cache.selector === rule.selector) {
|
|
231
|
-
var
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
return {
|
|
241
|
-
v: void 0
|
|
242
|
-
};
|
|
243
|
-
}();
|
|
244
|
-
|
|
245
|
-
if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
|
|
241
|
+
var cached = getDecls(cache);
|
|
242
|
+
rule.walk(function (decl) {
|
|
243
|
+
if (~cached.indexOf(String(decl))) {
|
|
244
|
+
return decl.remove();
|
|
245
|
+
}
|
|
246
|
+
decl.moveTo(cache);
|
|
247
|
+
});
|
|
248
|
+
rule.remove();
|
|
249
|
+
return;
|
|
246
250
|
}
|
|
247
251
|
// Partial merge: check if the rule contains a subset of the last; if
|
|
248
252
|
// so create a joined selector with the subset, if smaller.
|
|
@@ -251,9 +255,16 @@ function selectorMerger() {
|
|
|
251
255
|
}
|
|
252
256
|
|
|
253
257
|
exports.default = _postcss2.default.plugin('postcss-merge-rules', function () {
|
|
254
|
-
return function (css) {
|
|
255
|
-
|
|
258
|
+
return function (css, result) {
|
|
259
|
+
var opts = result.opts;
|
|
260
|
+
|
|
261
|
+
var browsers = (0, _browserslist2.default)(null, {
|
|
262
|
+
stats: opts && opts.stats,
|
|
263
|
+
path: opts && opts.from,
|
|
264
|
+
env: opts && opts.env
|
|
265
|
+
});
|
|
266
|
+
var compatibilityCache = {};
|
|
267
|
+
css.walkRules(selectorMerger(browsers, compatibilityCache));
|
|
256
268
|
};
|
|
257
269
|
});
|
|
258
|
-
module.exports = exports['default'];
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,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Q0Esb0JBQVEsSUFBUjtBQUNBO0FBQ0g7OztBQUdELFlBQUksTUFBTSxRQUFOLEtBQW1CLEtBQUssUUFBNUIsRUFBc0M7QUFBQTtBQUNsQyxvQkFBTSxXQUFXLE9BQU8sS0FBUCxDQUFqQjtBQUNBLHFCQUFLLElBQUwsQ0FBVSxnQkFBUTtBQUNkLHdCQUFJLENBQUMsU0FBUyxPQUFULENBQWlCLE9BQU8sSUFBUCxDQUFqQixDQUFMLEVBQXFDO0FBQ2pDLCtCQUFPLEtBQUssTUFBTCxFQUFQO0FBQ0g7QUFDRCx5QkFBSyxNQUFMLENBQVksS0FBWjtBQUNILGlCQUxEO0FBTUEscUJBQUssTUFBTDtBQUNBO0FBQUE7QUFBQTtBQVRrQzs7QUFBQTtBQVVyQzs7O0FBR0QsZ0JBQVEsYUFBYSxLQUFiLEVBQW9CLElBQXBCLENBQVI7QUFDSCxLQXJDRDtBQXNDSDs7a0JBRWMsa0JBQVEsTUFBUixDQUFlLHFCQUFmLEVBQXNDLFlBQU07QUFDdkQsV0FBTztBQUFBLGVBQU8sSUFBSSxTQUFKLENBQWMsZ0JBQWQsQ0FBUDtBQUFBLEtBQVA7QUFDSCxDQUZjLEMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJztcbmltcG9ydCB2ZW5kb3JzIGZyb20gJ3ZlbmRvcnMnO1xuaW1wb3J0IGNsb25lIGZyb20gJy4vbGliL2Nsb25lJztcblxuY29uc3Qge2xpc3R9ID0gcG9zdGNzcztcbmNvbnN0IHByZWZpeGVzID0gdmVuZG9ycy5tYXAodiA9PiBgLSR7dn0tYCk7XG5cbmZ1bmN0aW9uIGludGVyc2VjdCAoYSwgYiwgbm90KSB7XG4gICAgcmV0dXJuIGEuZmlsdGVyKGMgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IH5iLmluZGV4T2YoYyk7XG4gICAgICAgIHJldHVybiBub3QgPyAhaW5kZXggOiBpbmRleDtcbiAgICB9KTtcbn1cblxuY29uc3QgZGlmZmVyZW50ID0gKGEsIGIpID0+IGludGVyc2VjdChhLCBiLCB0cnVlKS5jb25jYXQoaW50ZXJzZWN0KGIsIGEsIHRydWUpKTtcbmNvbnN0IGZpbHRlclByZWZpeGVzID0gc2VsZWN0b3IgPT4gaW50ZXJzZWN0KHByZWZpeGVzLCBzZWxlY3Rvcik7XG5cbmZ1bmN0aW9uIHNhbWVWZW5kb3IgKHNlbGVjdG9yc0EsIHNlbGVjdG9yc0IpIHtcbiAgICBsZXQgc2FtZSA9IHNlbGVjdG9ycyA9PiBzZWxlY3RvcnMubWFwKGZpbHRlclByZWZpeGVzKS5qb2luKCk7XG4gICAgcmV0dXJuIHNhbWUoc2VsZWN0b3JzQSkgPT09IHNhbWUoc2VsZWN0b3JzQik7XG59XG5cbmNvbnN0IG5vVmVuZG9yID0gc2VsZWN0b3IgPT4gIWZpbHRlclByZWZpeGVzKHNlbGVjdG9yKS5sZW5ndGg7XG5cbmZ1bmN0aW9uIHNhbWVQYXJlbnQgKHJ1bGVBLCBydWxlQikge1xuICAgIGNvbnN0IGhhc1BhcmVudCA9IHJ1bGVBLnBhcmVudCAmJiBydWxlQi5wYXJlbnQ7XG4gICAgbGV0IHNhbWVUeXBlID0gaGFzUGFyZW50ICYmIHJ1bGVBLnBhcmVudC50eXBlID09PSBydWxlQi5wYXJlbnQudHlwZTtcbiAgICAvLyBJZiBhbiBhdCBydWxlLCBlbnN1cmUgdGhhdCB0aGUgcGFyYW1ldGVycyBhcmUgdGhlIHNhbWVcbiAgICBpZiAoaGFzUGFyZW50ICYmIHJ1bGVBLnBhcmVudC50eXBlICE9PSAncm9vdCcgJiYgcnVsZUIucGFyZW50LnR5cGUgIT09ICdyb290Jykge1xuICAgICAgICBzYW1lVHlwZSA9IHNhbWVUeXBlICYmXG4gICAgICAgICAgICAgICAgICAgcnVsZUEucGFyZW50LnBhcmFtcyA9PT0gcnVsZUIucGFyZW50LnBhcmFtcyAmJlxuICAgICAgICAgICAgICAgICAgIHJ1bGVBLnBhcmVudC5uYW1lID09PSBydWxlQi5wYXJlbnQubmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc1BhcmVudCA/IHNhbWVUeXBlIDogdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY2FuTWVyZ2UgKHJ1bGVBLCBydWxlQikge1xuICAgIGNvbnN0IGEgPSBsaXN0LmNvbW1hKHJ1bGVBLnNlbGVjdG9yKTtcbiAgICBjb25zdCBiID0gbGlzdC5jb21tYShydWxlQi5zZWxlY3Rvcik7XG5cbiAgICBjb25zdCBwYXJlbnQgPSBzYW1lUGFyZW50KHJ1bGVBLCBydWxlQik7XG4gICAgY29uc3Qge25hbWV9ID0gcnVsZUEucGFyZW50O1xuICAgIGlmIChwYXJlbnQgJiYgbmFtZSAmJiB+bmFtZS5pbmRleE9mKCdrZXlmcmFtZXMnKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnQgJiYgKGEuY29uY2F0KGIpLmV2ZXJ5KG5vVmVuZG9yKSB8fCBzYW1lVmVuZG9yKGEsIGIpKTtcbn1cblxuY29uc3QgZ2V0RGVjbHMgPSBydWxlID0+IHJ1bGUubm9kZXMgPyBydWxlLm5vZGVzLm1hcChTdHJpbmcpIDogW107XG5jb25zdCBqb2luU2VsZWN0b3JzID0gKC4uLnJ1bGVzKSA9PiBydWxlcy5tYXAocyA9PiBzLnNlbGVjdG9yKS5qb2luKCk7XG5cbmZ1bmN0aW9uIHJ1bGVMZW5ndGggKC4uLnJ1bGVzKSB7XG4gICAgcmV0dXJuIHJ1bGVzLm1hcChyID0+IHIubm9kZXMubGVuZ3RoID8gU3RyaW5nKHIpIDogJycpLmpvaW4oJycpLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gc3BsaXRQcm9wIChwcm9wKSB7XG4gICAgY29uc3QgcGFydHMgPSBwcm9wLnNwbGl0KCctJyk7XG4gICAgbGV0IGJhc2UsIHJlc3Q7XG4gICAgLy8gVHJlYXQgdmVuZG9yIHByZWZpeGVkIHByb3BlcnRpZXMgYXMgaWYgdGhleSB3ZXJlIHVucHJlZml4ZWQ7XG4gICAgLy8gbW92aW5nIHRoZW0gd2hlbiBjb21iaW5lZCB3aXRoIG5vbi1wcmVmaXhlZCBwcm9wZXJ0aWVzIGNhblxuICAgIC8vIGNhdXNlIGlzc3Vlcy4gZS5nLiBtb3ZpbmcgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAgd2hlbiB0aGVyZVxuICAgIC8vIGlzIGEgYmFja2dyb3VuZCBzaG9ydGhhbmQgZGVmaW5pdGlvbi5cbiAgICBpZiAocHJvcFswXSA9PT0gJy0nKSB7XG4gICAgICAgIGJhc2UgPSBwYXJ0c1syXTtcbiAgICAgICAgcmVzdCA9IHBhcnRzLnNsaWNlKDMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2UgPSBwYXJ0c1swXTtcbiAgICAgICAgcmVzdCA9IHBhcnRzLnNsaWNlKDEpO1xuICAgIH1cbiAgICByZXR1cm4gW2Jhc2UsIHJlc3RdO1xufVxuXG5mdW5jdGlvbiBpc0NvbmZsaWN0aW5nUHJvcCAocHJvcEEsIHByb3BCKSB7XG4gICAgaWYgKHByb3BBID09PSBwcm9wQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYSA9IHNwbGl0UHJvcChwcm9wQSk7XG4gICAgY29uc3QgYiA9IHNwbGl0UHJvcChwcm9wQik7XG4gICAgcmV0dXJuIGFbMF0gPT09IGJbMF0gJiYgYVsxXS5sZW5ndGggIT09IGJbMV0ubGVuZ3RoO1xufVxuXG5mdW5jdGlvbiBoYXNDb25mbGljdHMgKGRlY2xQcm9wLCBub3RNb3ZlZCkge1xuICAgIHJldHVybiBub3RNb3ZlZC5zb21lKHByb3AgPT4gaXNDb25mbGljdGluZ1Byb3AocHJvcCwgZGVjbFByb3ApKTtcbn1cblxuZnVuY3Rpb24gcGFydGlhbE1lcmdlIChmaXJzdCwgc2Vjb25kKSB7XG4gICAgbGV0IGludGVyc2VjdGlvbiA9IGludGVyc2VjdChnZXREZWNscyhmaXJzdCksIGdldERlY2xzKHNlY29uZCkpO1xuICAgIGlmICghaW50ZXJzZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc2Vjb25kO1xuICAgIH1cbiAgICBsZXQgbmV4dFJ1bGUgPSBzZWNvbmQubmV4dCgpO1xuICAgIGlmIChuZXh0UnVsZSAmJiBuZXh0UnVsZS50eXBlID09PSAncnVsZScgJiYgY2FuTWVyZ2Uoc2Vjb25kLCBuZXh0UnVsZSkpIHtcbiAgICAgICAgbGV0IG5leHRJbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3QoZ2V0RGVjbHMoc2Vjb25kKSwgZ2V0RGVjbHMobmV4dFJ1bGUpKTtcbiAgICAgICAgaWYgKG5leHRJbnRlcnNlY3Rpb24ubGVuZ3RoID4gaW50ZXJzZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgZmlyc3QgPSBzZWNvbmQ7IHNlY29uZCA9IG5leHRSdWxlOyBpbnRlcnNlY3Rpb24gPSBuZXh0SW50ZXJzZWN0aW9uO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlY2lldmluZ0Jsb2NrID0gY2xvbmUoc2Vjb25kKTtcbiAgICByZWNpZXZpbmdCbG9jay5zZWxlY3RvciA9IGpvaW5TZWxlY3RvcnMoZmlyc3QsIHNlY29uZCk7XG4gICAgcmVjaWV2aW5nQmxvY2subm9kZXMgPSBbXTtcbiAgICBzZWNvbmQucGFyZW50Lmluc2VydEJlZm9yZShzZWNvbmQsIHJlY2lldmluZ0Jsb2NrKTtcbiAgICBjb25zdCBkaWZmZXJlbmNlID0gZGlmZmVyZW50KGdldERlY2xzKGZpcnN0KSwgZ2V0RGVjbHMoc2Vjb25kKSk7XG4gICAgY29uc3QgZmlsdGVyQ29uZmxpY3RzID0gKGRlY2xzLCBpbnRlcnNlY3RuKSA9PiB7XG4gICAgICAgIGxldCB3aWxsTm90TW92ZSA9IFtdO1xuICAgICAgICByZXR1cm4gZGVjbHMucmVkdWNlKCh3aWxsTW92ZSwgZGVjbCkgPT4ge1xuICAgICAgICAgICAgbGV0IGludGVyc2VjdHMgPSB+aW50ZXJzZWN0bi5pbmRleE9mKGRlY2wpO1xuICAgICAgICAgICAgbGV0IHByb3AgPSBkZWNsLnNwbGl0KCc6JylbMF07XG4gICAgICAgICAgICBsZXQgYmFzZSA9IHByb3Auc3BsaXQoJy0nKVswXTtcbiAgICAgICAgICAgIGxldCBjYW5Nb3ZlID0gZGlmZmVyZW5jZS5ldmVyeShkID0+IGQuc3BsaXQoJzonKVswXSAhPT0gYmFzZSk7XG4gICAgICAgICAgICBpZiAoaW50ZXJzZWN0cyAmJiBjYW5Nb3ZlICYmICFoYXNDb25mbGljdHMocHJvcCwgd2lsbE5vdE1vdmUpKSB7XG4gICAgICAgICAgICAgICAgd2lsbE1vdmUucHVzaChkZWNsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2lsbE5vdE1vdmUucHVzaChwcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB3aWxsTW92ZTtcbiAgICAgICAgfSwgW10pO1xuICAgIH07XG4gICAgaW50ZXJzZWN0aW9uID0gZmlsdGVyQ29uZmxpY3RzKGdldERlY2xzKGZpcnN0KS5yZXZlcnNlKCksIGludGVyc2VjdGlvbik7XG4gICAgaW50ZXJzZWN0aW9uID0gZmlsdGVyQ29uZmxpY3RzKChnZXREZWNscyhzZWNvbmQpKSwgaW50ZXJzZWN0aW9uKTtcbiAgICBjb25zdCBmaXJzdENsb25lID0gY2xvbmUoZmlyc3QpO1xuICAgIGNvbnN0IHNlY29uZENsb25lID0gY2xvbmUoc2Vjb25kKTtcbiAgICBjb25zdCBtb3ZlRGVjbCA9IGNhbGxiYWNrID0+IHtcbiAgICAgICAgcmV0dXJuIGRlY2wgPT4ge1xuICAgICAgICAgICAgaWYgKH5pbnRlcnNlY3Rpb24uaW5kZXhPZihTdHJpbmcoZGVjbCkpKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBkZWNsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGZpcnN0Q2xvbmUud2Fsa0RlY2xzKG1vdmVEZWNsKGRlY2wgPT4ge1xuICAgICAgICBkZWNsLnJlbW92ZSgpO1xuICAgICAgICByZWNpZXZpbmdCbG9jay5hcHBlbmQoZGVjbCk7XG4gICAgfSkpO1xuICAgIHNlY29uZENsb25lLndhbGtEZWNscyhtb3ZlRGVjbChkZWNsID0+IGRlY2wucmVtb3ZlKCkpKTtcbiAgICBjb25zdCBtZXJnZWQgPSBydWxlTGVuZ3RoKGZpcnN0Q2xvbmUsIHJlY2lldmluZ0Jsb2NrLCBzZWNvbmRDbG9uZSk7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSBydWxlTGVuZ3RoKGZpcnN0LCBzZWNvbmQpO1xuICAgIGlmIChtZXJnZWQgPCBvcmlnaW5hbCkge1xuICAgICAgICBmaXJzdC5yZXBsYWNlV2l0aChmaXJzdENsb25lKTtcbiAgICAgICAgc2Vjb25kLnJlcGxhY2VXaXRoKHNlY29uZENsb25lKTtcbiAgICAgICAgW2ZpcnN0Q2xvbmUsIHJlY2lldmluZ0Jsb2NrLCBzZWNvbmRDbG9uZV0uZm9yRWFjaChyID0+IHtcbiAgICAgICAgICAgIGlmICghci5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFzZWNvbmRDbG9uZS5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWNpZXZpbmdCbG9jaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2Vjb25kQ2xvbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVjaWV2aW5nQmxvY2sucmVtb3ZlKCk7XG4gICAgICAgIHJldHVybiBzZWNvbmQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZWxlY3Rvck1lcmdlciAoKSB7XG4gICAgbGV0IGNhY2hlID0gbnVsbDtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICAgICAgLy8gUHJpbWUgdGhlIGNhY2hlIHdpdGggdGhlIGZpcnN0IHJ1bGUsIG9yIGFsdGVybmF0ZWx5IGVuc3VyZSB0aGF0IGl0IGlzXG4gICAgICAgIC8vIHNhZmUgdG8gbWVyZ2UgYm90aCBkZWNsYXJhdGlvbnMgYmVmb3JlIGNvbnRpbnVpbmdcbiAgICAgICAgaWYgKCFjYWNoZSB8fCAhY2FuTWVyZ2UocnVsZSwgY2FjaGUpKSB7XG4gICAgICAgICAgICBjYWNoZSA9IHJ1bGU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgZGVkdXBsaWNhdGUgdGhlIHNhbWUgcnVsZTsgdGhpcyBpcyBzb21ldGltZXNcbiAgICAgICAgLy8gY2F1c2VkIGJ5IGEgcGFydGlhbCBtZXJnZVxuICAgICAgICBpZiAoY2FjaGUgPT09IHJ1bGUpIHtcbiAgICAgICAgICAgIGNhY2hlID0gcnVsZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBNZXJnZSB3aGVuIGRlY2xhcmF0aW9ucyBhcmUgZXhhY3RseSBlcXVhbFxuICAgICAgICAvLyBlLmcuIGgxIHsgY29sb3I6IHJlZCB9IGgyIHsgY29sb3I6IHJlZCB9XG4gICAgICAgIGlmIChnZXREZWNscyhydWxlKS5qb2luKCc7JykgPT09IGdldERlY2xzKGNhY2hlKS5qb2luKCc7JykpIHtcbiAgICAgICAgICAgIHJ1bGUuc2VsZWN0b3IgPSBqb2luU2VsZWN0b3JzKGNhY2hlLCBydWxlKTtcbiAgICAgICAgICAgIGNhY2hlLnJlbW92ZSgpO1xuICAgICAgICAgICAgY2FjaGUgPSBydWxlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1lcmdlIHdoZW4gYm90aCBzZWxlY3RvcnMgYXJlIGV4YWN0bHkgZXF1YWxcbiAgICAgICAgLy8gZS5nLiBhIHsgY29sb3I6IGJsdWUgfSBhIHsgZm9udC13ZWlnaHQ6IGJvbGQgfVxuICAgICAgICBpZiAoY2FjaGUuc2VsZWN0b3IgPT09IHJ1bGUuc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvU3RyaW5nID0gU3RyaW5nKGNhY2hlKTtcbiAgICAgICAgICAgIHJ1bGUud2FsayhkZWNsID0+IHtcbiAgICAgICAgICAgICAgICBpZiAofnRvU3RyaW5nLmluZGV4T2YoU3RyaW5nKGRlY2wpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVjbC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVjbC5tb3ZlVG8oY2FjaGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBydWxlLnJlbW92ZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFBhcnRpYWwgbWVyZ2U6IGNoZWNrIGlmIHRoZSBydWxlIGNvbnRhaW5zIGEgc3Vic2V0IG9mIHRoZSBsYXN0OyBpZlxuICAgICAgICAvLyBzbyBjcmVhdGUgYSBqb2luZWQgc2VsZWN0b3Igd2l0aCB0aGUgc3Vic2V0LCBpZiBzbWFsbGVyLlxuICAgICAgICBjYWNoZSA9IHBhcnRpYWxNZXJnZShjYWNoZSwgcnVsZSk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtbWVyZ2UtcnVsZXMnLCAoKSA9PiB7XG4gICAgcmV0dXJuIGNzcyA9PiBjc3Mud2Fsa1J1bGVzKHNlbGVjdG9yTWVyZ2VyKCkpO1xufSk7XG4iXX0=
|
|
270
|
+
module.exports = exports['default'];
|
package/dist/lib/clone.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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; };
|
|
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 && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
6
6
|
|
|
7
7
|
var clone = function clone(obj, parent) {
|
|
8
8
|
if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' || obj === null) {
|
|
@@ -32,5 +32,4 @@ var clone = function clone(obj, parent) {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
exports.default = clone;
|
|
35
|
-
module.exports = exports['default'];
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xvbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTSxRQUFRLFNBQVIsS0FBUSxDQUFDLEdBQUQsRUFBTSxNQUFOLEVBQWlCO0FBQzNCLFFBQUksUUFBTyxHQUFQLHlDQUFPLEdBQVAsT0FBZSxRQUFmLElBQTJCLFFBQVEsSUFBdkMsRUFBNkM7QUFDekMsZUFBTyxHQUFQO0FBQ0g7QUFDRCxRQUFNLFNBQVMsSUFBSSxJQUFJLFdBQVIsRUFBZjtBQUNBLFNBQUssSUFBSSxDQUFULElBQWMsR0FBZCxFQUFtQjtBQUNmLFlBQUksQ0FBRSxHQUFHLGNBQUgsQ0FBa0IsSUFBbEIsQ0FBdUIsR0FBdkIsRUFBNEIsQ0FBNUIsQ0FBTixFQUF1QztBQUNuQztBQUNIO0FBQ0QsWUFBSSxRQUFRLElBQUksQ0FBSixDQUFaO0FBQ0EsWUFBSSxNQUFNLFFBQU4sSUFBa0IsUUFBTyxLQUFQLHlDQUFPLEtBQVAsT0FBaUIsUUFBdkMsRUFBaUQ7QUFDN0MsZ0JBQUksTUFBSixFQUFZO0FBQ1IsdUJBQU8sQ0FBUCxJQUFZLE1BQVo7QUFDSDtBQUNKLFNBSkQsTUFJTyxJQUFJLE1BQU0sUUFBVixFQUFvQjtBQUN2QixtQkFBTyxDQUFQLElBQVksS0FBWjtBQUNILFNBRk0sTUFFQSxJQUFJLGlCQUFpQixLQUFyQixFQUE0QjtBQUMvQixtQkFBTyxDQUFQLElBQVksTUFBTSxHQUFOLENBQVU7QUFBQSx1QkFBSyxNQUFNLENBQU4sRUFBUyxNQUFULENBQUw7QUFBQSxhQUFWLENBQVo7QUFDSCxTQUZNLE1BRUE7QUFDSCxtQkFBTyxDQUFQLElBQVksTUFBTSxLQUFOLEVBQWEsTUFBYixDQUFaO0FBQ0g7QUFDSjtBQUNELFdBQU8sTUFBUDtBQUNILENBdkJEOztrQkF5QmUsSyIsImZpbGUiOiJjbG9uZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNsb25lID0gKG9iaiwgcGFyZW50KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBjb25zdCBjbG9uZWQgPSBuZXcgb2JqLmNvbnN0cnVjdG9yKCk7XG4gICAgZm9yIChsZXQgaSBpbiBvYmopIHtcbiAgICAgICAgaWYgKCEoe30uaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBpZiAoaSA9PT0gJ3BhcmVudCcgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGNsb25lZFtpXSA9IHBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpID09PSAnc291cmNlJykge1xuICAgICAgICAgICAgY2xvbmVkW2ldID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgY2xvbmVkW2ldID0gdmFsdWUubWFwKGogPT4gY2xvbmUoaiwgY2xvbmVkKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjbG9uZWRbaV0gPSBjbG9uZSh2YWx1ZSwgY2xvbmVkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2xvbmVkO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xvbmU7XG4iXX0=
|
|
35
|
+
module.exports = exports['default'];
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.pseudoElements = undefined;
|
|
5
|
+
exports.default = ensureCompatibility;
|
|
6
|
+
|
|
7
|
+
var _caniuseApi = require('caniuse-api');
|
|
8
|
+
|
|
9
|
+
var _postcssSelectorParser = require('postcss-selector-parser');
|
|
10
|
+
|
|
11
|
+
var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser);
|
|
12
|
+
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
15
|
+
var simpleSelectorRe = /^#?[-._a-z0-9 ]+$/i;
|
|
16
|
+
|
|
17
|
+
var cssSel2 = 'css-sel2';
|
|
18
|
+
var cssSel3 = 'css-sel3';
|
|
19
|
+
var cssGencontent = 'css-gencontent';
|
|
20
|
+
var cssFirstLetter = 'css-first-letter';
|
|
21
|
+
var cssFirstLine = 'css-first-line';
|
|
22
|
+
var cssInOutOfRange = 'css-in-out-of-range';
|
|
23
|
+
|
|
24
|
+
var pseudoElements = exports.pseudoElements = {
|
|
25
|
+
':active': cssSel2,
|
|
26
|
+
':after': cssGencontent,
|
|
27
|
+
':before': cssGencontent,
|
|
28
|
+
':checked': cssSel3,
|
|
29
|
+
':default': 'css-default-pseudo',
|
|
30
|
+
':dir': 'css-dir-pseudo',
|
|
31
|
+
':disabled': cssSel3,
|
|
32
|
+
':empty': cssSel3,
|
|
33
|
+
':enabled': cssSel3,
|
|
34
|
+
':first-child': cssSel2,
|
|
35
|
+
':first-letter': cssFirstLetter,
|
|
36
|
+
':first-line': cssFirstLine,
|
|
37
|
+
':first-of-type': cssSel3,
|
|
38
|
+
':focus': cssSel2,
|
|
39
|
+
':focus-within': 'css-focus-within',
|
|
40
|
+
':has': 'css-has',
|
|
41
|
+
':hover': cssSel2,
|
|
42
|
+
':in-range': cssInOutOfRange,
|
|
43
|
+
':indeterminate': 'css-indeterminate-pseudo',
|
|
44
|
+
':lang': cssSel2,
|
|
45
|
+
':last-child': cssSel3,
|
|
46
|
+
':last-of-type': cssSel3,
|
|
47
|
+
':matches': 'css-matches-pseudo',
|
|
48
|
+
':not': cssSel3,
|
|
49
|
+
':nth-child': cssSel3,
|
|
50
|
+
':nth-last-child': cssSel3,
|
|
51
|
+
':nth-last-of-type': cssSel3,
|
|
52
|
+
':nth-of-type': cssSel3,
|
|
53
|
+
':only-child': cssSel3,
|
|
54
|
+
':only-of-type': cssSel3,
|
|
55
|
+
':optional': 'css-optional-pseudo',
|
|
56
|
+
':out-of-range': cssInOutOfRange,
|
|
57
|
+
':placeholder-shown': 'css-placeholder-shown',
|
|
58
|
+
':root': cssSel3,
|
|
59
|
+
':target': cssSel3,
|
|
60
|
+
'::after': cssGencontent,
|
|
61
|
+
'::backdrop': 'dialog',
|
|
62
|
+
'::before': cssGencontent,
|
|
63
|
+
'::first-letter': cssFirstLetter,
|
|
64
|
+
'::first-line': cssFirstLine,
|
|
65
|
+
'::marker': 'css-marker-pseudo',
|
|
66
|
+
'::placeholder': 'css-placeholder',
|
|
67
|
+
'::selection': 'css-selection'
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
function isCssMixin(selector) {
|
|
71
|
+
return selector[selector.length - 1] === ':';
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function ensureCompatibility(selectors, browsers, compatibilityCache) {
|
|
75
|
+
// Should not merge mixins
|
|
76
|
+
if (selectors.some(isCssMixin)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return selectors.every(function (selector) {
|
|
80
|
+
if (simpleSelectorRe.test(selector)) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
if (compatibilityCache && selector in compatibilityCache) {
|
|
84
|
+
return compatibilityCache[selector];
|
|
85
|
+
}
|
|
86
|
+
var compatible = true;
|
|
87
|
+
(0, _postcssSelectorParser2.default)(function (ast) {
|
|
88
|
+
ast.walk(function (node) {
|
|
89
|
+
var type = node.type,
|
|
90
|
+
value = node.value;
|
|
91
|
+
|
|
92
|
+
if (type === 'pseudo') {
|
|
93
|
+
var entry = pseudoElements[value];
|
|
94
|
+
if (entry && compatible) {
|
|
95
|
+
compatible = (0, _caniuseApi.isSupported)(entry, browsers);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (type === 'combinator') {
|
|
99
|
+
if (~value.indexOf('~')) {
|
|
100
|
+
compatible = (0, _caniuseApi.isSupported)(cssSel3, browsers);
|
|
101
|
+
}
|
|
102
|
+
if (~value.indexOf('>') || ~value.indexOf('+')) {
|
|
103
|
+
compatible = (0, _caniuseApi.isSupported)(cssSel2, browsers);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (type === 'attribute' && node.attribute) {
|
|
107
|
+
// [foo]
|
|
108
|
+
if (!node.operator) {
|
|
109
|
+
compatible = (0, _caniuseApi.isSupported)(cssSel2, browsers);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (value) {
|
|
113
|
+
// [foo="bar"], [foo~="bar"], [foo|="bar"]
|
|
114
|
+
if (~['=', '~=', '|='].indexOf(node.operator)) {
|
|
115
|
+
compatible = (0, _caniuseApi.isSupported)(cssSel2, browsers);
|
|
116
|
+
}
|
|
117
|
+
// [foo^="bar"], [foo$="bar"], [foo*="bar"]
|
|
118
|
+
if (~['^=', '$=', '*='].indexOf(node.operator)) {
|
|
119
|
+
compatible = (0, _caniuseApi.isSupported)(cssSel3, browsers);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// [foo="bar" i]
|
|
124
|
+
if (node.insensitive) {
|
|
125
|
+
compatible = (0, _caniuseApi.isSupported)('css-case-insensitive', browsers);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (!compatible) {
|
|
129
|
+
// If this node was not compatible,
|
|
130
|
+
// break out early from walking the rest
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}).process(selector);
|
|
135
|
+
if (compatibilityCache) {
|
|
136
|
+
compatibilityCache[selector] = compatible;
|
|
137
|
+
}
|
|
138
|
+
return compatible;
|
|
139
|
+
});
|
|
140
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postcss-merge-rules",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "Merge CSS rules with PostCSS.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
],
|
|
10
10
|
"scripts": {
|
|
11
11
|
"pretest": "eslint src",
|
|
12
|
-
"prepublish": "babel src --out-dir dist --ignore /__tests__/",
|
|
13
|
-
"
|
|
14
|
-
"test
|
|
12
|
+
"prepublish": "del-cli dist && cross-env BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/",
|
|
13
|
+
"report": "nyc report --reporter=html",
|
|
14
|
+
"test": "cross-env BABEL_ENV=test nyc ava src/__tests__",
|
|
15
|
+
"test-012": "cross-env BABEL_ENV=test nyc ava src/__tests__"
|
|
15
16
|
},
|
|
16
17
|
"keywords": [
|
|
17
18
|
"css",
|
|
@@ -21,19 +22,22 @@
|
|
|
21
22
|
],
|
|
22
23
|
"license": "MIT",
|
|
23
24
|
"devDependencies": {
|
|
24
|
-
"ava": "^0.
|
|
25
|
+
"ava": "^0.17.0",
|
|
25
26
|
"babel-cli": "^6.3.17",
|
|
26
27
|
"babel-core": "^6.3.26",
|
|
27
28
|
"babel-plugin-add-module-exports": "^0.2.1",
|
|
29
|
+
"babel-plugin-istanbul": "^2.0.0",
|
|
28
30
|
"babel-preset-es2015": "^6.3.13",
|
|
29
31
|
"babel-preset-es2015-loose": "^7.0.0",
|
|
30
32
|
"babel-preset-stage-0": "^6.3.13",
|
|
31
33
|
"babel-register": "^6.9.0",
|
|
34
|
+
"cross-env": "^2.0.1",
|
|
32
35
|
"del-cli": "^0.2.0",
|
|
33
36
|
"eslint": "^3.0.0",
|
|
34
37
|
"eslint-config-cssnano": "^3.0.0",
|
|
35
38
|
"eslint-plugin-babel": "^3.3.0",
|
|
36
|
-
"eslint-plugin-import": "^
|
|
39
|
+
"eslint-plugin-import": "^2.0.1",
|
|
40
|
+
"nyc": "^10.0.0",
|
|
37
41
|
"postcss-discard-comments": "^2.0.4",
|
|
38
42
|
"postcss-simple-vars": "^3.0.0"
|
|
39
43
|
},
|
|
@@ -45,7 +49,10 @@
|
|
|
45
49
|
},
|
|
46
50
|
"repository": "ben-eb/postcss-merge-rules",
|
|
47
51
|
"dependencies": {
|
|
52
|
+
"browserslist": "^1.5.2",
|
|
53
|
+
"caniuse-api": "^1.5.2",
|
|
48
54
|
"postcss": "^5.0.4",
|
|
55
|
+
"postcss-selector-parser": "^2.2.2",
|
|
49
56
|
"vendors": "^1.0.0"
|
|
50
57
|
},
|
|
51
58
|
"eslintConfig": {
|
|
@@ -53,5 +60,23 @@
|
|
|
53
60
|
},
|
|
54
61
|
"ava": {
|
|
55
62
|
"require": "babel-register"
|
|
63
|
+
},
|
|
64
|
+
"nyc": {
|
|
65
|
+
"sourceMap": false,
|
|
66
|
+
"instrument": false
|
|
67
|
+
},
|
|
68
|
+
"browserslist": {
|
|
69
|
+
"chrome58": [
|
|
70
|
+
"Chrome 58"
|
|
71
|
+
],
|
|
72
|
+
"edge15": [
|
|
73
|
+
"Edge 15"
|
|
74
|
+
],
|
|
75
|
+
"ie6": [
|
|
76
|
+
"IE 6"
|
|
77
|
+
],
|
|
78
|
+
"ie7": [
|
|
79
|
+
"IE 7"
|
|
80
|
+
]
|
|
56
81
|
}
|
|
57
82
|
}
|