Socket
Socket
Sign inDemoInstall

stylehacks

Package Overview
Dependencies
Maintainers
4
Versions
50
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

stylehacks - npm Package Compare versions

Comparing version 4.0.0-rc.2 to 4.0.0

12

dist/dictionary/browsers.js

@@ -6,7 +6,7 @@ 'use strict';

});
var FF_2 = exports.FF_2 = 'firefox 2';
var IE_5_5 = exports.IE_5_5 = 'ie 5.5';
var IE_6 = exports.IE_6 = 'ie 6';
var IE_7 = exports.IE_7 = 'ie 7';
var IE_8 = exports.IE_8 = 'ie 8';
var OP_9 = exports.OP_9 = 'opera 9';
const FF_2 = exports.FF_2 = 'firefox 2';
const IE_5_5 = exports.IE_5_5 = 'ie 5.5';
const IE_6 = exports.IE_6 = 'ie 6';
const IE_7 = exports.IE_7 = 'ie 7';
const IE_8 = exports.IE_8 = 'ie 8';
const OP_9 = exports.OP_9 = 'opera 9';

@@ -6,5 +6,5 @@ 'use strict';

});
var MEDIA_QUERY = exports.MEDIA_QUERY = 'media query';
var PROPERTY = exports.PROPERTY = 'property';
var SELECTOR = exports.SELECTOR = 'selector';
var VALUE = exports.VALUE = 'value';
const MEDIA_QUERY = exports.MEDIA_QUERY = 'media query';
const PROPERTY = exports.PROPERTY = 'property';
const SELECTOR = exports.SELECTOR = 'selector';
const VALUE = exports.VALUE = 'value';

@@ -6,4 +6,4 @@ 'use strict';

});
var ATRULE = exports.ATRULE = 'atrule';
var DECL = exports.DECL = 'decl';
var RULE = exports.RULE = 'rule';
const ATRULE = exports.ATRULE = 'atrule';
const DECL = exports.DECL = 'decl';
const RULE = exports.RULE = 'rule';

@@ -6,3 +6,3 @@ 'use strict';

});
var BODY = exports.BODY = 'body';
var HTML = exports.HTML = 'html';
const BODY = exports.BODY = 'body';
const HTML = exports.HTML = 'html';

@@ -8,5 +8,5 @@ "use strict";

function exists(selector, index, value) {
var node = selector.at(index);
const node = selector.at(index);
return node && node.value === value;
}
module.exports = exports["default"];

@@ -21,10 +21,6 @@ 'use strict';

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); } }
var stylehacks = _postcss2.default.plugin('stylehacks', function () {
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function (css, result) {
var resultOpts = result.opts || {};
var browsers = (0, _browserslist2.default)(null, {
const stylehacks = _postcss2.default.plugin('stylehacks', (opts = {}) => {
return (css, result) => {
const resultOpts = result.opts || {};
const browsers = (0, _browserslist2.default)(null, {
stats: resultOpts.stats,

@@ -34,8 +30,6 @@ path: __dirname,

});
var processors = _plugins2.default.reduce(function (list, Plugin) {
var hack = new Plugin(result);
var applied = browsers.some(function (browser) {
return hack.targets.some(function (target) {
return browser === target;
});
const processors = _plugins2.default.reduce((list, Plugin) => {
const hack = new Plugin(result);
const applied = browsers.some(browser => {
return hack.targets.some(target => browser === target);
});

@@ -45,6 +39,6 @@ if (applied) {

}
return [].concat(_toConsumableArray(list), [hack]);
return [...list, hack];
}, []);
css.walk(function (node) {
processors.forEach(function (proc) {
css.walk(node => {
processors.forEach(proc => {
if (!~proc.nodeTypes.indexOf(node.type)) {

@@ -62,5 +56,5 @@ return;

stylehacks.detect = function (node) {
return _plugins2.default.some(function (Plugin) {
var hack = new Plugin();
stylehacks.detect = node => {
return _plugins2.default.some(Plugin => {
const hack = new Plugin();
return hack.any(node);

@@ -67,0 +61,0 @@ });

@@ -8,5 +8,4 @@ 'use strict';

function isMixin(node) {
var selector = node.selector;
const { selector } = node;
// If the selector ends with a ':' it is likely a part of a custom mixin.
if (!selector || selector[selector.length - 1] === ':') {

@@ -13,0 +12,0 @@ return true;

@@ -6,14 +6,6 @@ "use strict";

});
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; }; }();
exports.default = plugin;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function plugin(targets, nodeTypes, detect) {
var Plugin = function () {
function Plugin(result) {
_classCallCheck(this, Plugin);
class Plugin {
constructor(result) {
this.nodes = [];

@@ -25,73 +17,44 @@ this.result = result;

_createClass(Plugin, [{
key: "push",
value: function push(node, metadata) {
node._stylehacks = Object.assign({}, metadata, {
message: `Bad ${metadata.identifier}: ${metadata.hack}`,
browsers: this.targets
});
this.nodes.push(node);
}
}, {
key: "any",
value: function any(node) {
if (~this.nodeTypes.indexOf(node.type)) {
detect.apply(this, arguments);
return !!node._stylehacks;
}
return false;
}
}, {
key: "detectAndResolve",
value: function detectAndResolve() {
this.nodes = [];
push(node, metadata) {
node._stylehacks = Object.assign({}, metadata, {
message: `Bad ${metadata.identifier}: ${metadata.hack}`,
browsers: this.targets
});
this.nodes.push(node);
}
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
detect.apply(this, args);
return this.resolve();
any(node) {
if (~this.nodeTypes.indexOf(node.type)) {
detect.apply(this, arguments);
return !!node._stylehacks;
}
}, {
key: "detectAndWarn",
value: function detectAndWarn() {
this.nodes = [];
return false;
}
for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
detectAndResolve(...args) {
this.nodes = [];
detect.apply(this, args);
return this.resolve();
}
detect.apply(this, args);
return this.warn();
}
}, {
key: "resolve",
value: function resolve() {
return this.nodes.forEach(function (node) {
return node.remove();
});
}
}, {
key: "warn",
value: function warn() {
var _this = this;
detectAndWarn(...args) {
this.nodes = [];
detect.apply(this, args);
return this.warn();
}
return this.nodes.forEach(function (node) {
var _node$_stylehacks = node._stylehacks,
message = _node$_stylehacks.message,
browsers = _node$_stylehacks.browsers,
identifier = _node$_stylehacks.identifier,
hack = _node$_stylehacks.hack;
resolve() {
return this.nodes.forEach(node => node.remove());
}
return node.warn(_this.result, message, { browsers, identifier, hack });
});
}
}]);
warn() {
return this.nodes.forEach(node => {
const { message, browsers, identifier, hack } = node._stylehacks;
return node.warn(this.result, message, { browsers, identifier, hack });
});
}
}
return Plugin;
}();
return Plugin;
}
module.exports = exports["default"];

@@ -34,4 +34,4 @@ 'use strict';

function analyse(ctx, rule) {
return function (selectors) {
selectors.each(function (selector) {
return selectors => {
selectors.each(selector => {
if ((0, _exists2.default)(selector, 0, _tags.BODY) && (0, _exists2.default)(selector, 1, ':empty') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {

@@ -38,0 +38,0 @@ ctx.push(rule, {

@@ -34,4 +34,4 @@ 'use strict';

function analyse(ctx, rule) {
return function (selectors) {
selectors.each(function (selector) {
return selectors => {
selectors.each(selector => {
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)) {

@@ -38,0 +38,0 @@ ctx.push(rule, {

@@ -34,4 +34,4 @@ 'use strict';

function analyse(ctx, rule) {
return function (selectors) {
selectors.each(function (selector) {
return selectors => {
selectors.each(selector => {
if ((0, _exists2.default)(selector, 0, _tags.HTML) && (0, _exists2.default)(selector, 1, ':first-child') && (0, _exists2.default)(selector, 2, ' ') && selector.at(3)) {

@@ -38,0 +38,0 @@ ctx.push(rule, {

@@ -18,5 +18,5 @@ 'use strict';

exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.DECL], function (decl) {
var match = decl.value.match(/!\w/);
const match = decl.value.match(/!\w/);
if (match) {
var hack = decl.value.substr(match.index, decl.value.length - 1);
const hack = decl.value.substr(match.index, decl.value.length - 1);
this.push(decl, {

@@ -23,0 +23,0 @@ identifier: '!important',

@@ -19,13 +19,11 @@ 'use strict';

var hacks = '!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|'.split('_');
const hacks = '!_$_&_*_)_=_%_+_,_._/_`_]_#_~_?_:_|'.split('_');
exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE, _postcss.DECL], function (node) {
var _this = this;
if (node.type === _postcss.DECL) {
// some values are not picked up by before, so ensure they are
// at the beginning of the value
hacks.some(function (hack) {
hacks.some(hack => {
if (!node.prop.indexOf(hack)) {
_this.push(node, {
this.push(node, {
identifier: _identifiers.PROPERTY,

@@ -37,10 +35,9 @@ hack: node.prop

});
var before = node.raws.before;
let { before } = node.raws;
if (!before) {
return;
}
hacks.some(function (hack) {
hacks.some(hack => {
if (~before.indexOf(hack)) {
_this.push(node, {
this.push(node, {
identifier: _identifiers.PROPERTY,

@@ -54,5 +51,4 @@ hack: `${before.trim()}${node.prop}`

// test for the @property: value; hack
var name = node.name;
var len = name.length - 1;
let { name } = node;
let len = name.length - 1;
if (name.lastIndexOf(':') === len) {

@@ -59,0 +55,0 @@ this.push(node, {

@@ -24,4 +24,3 @@ 'use strict';

exports.default = (0, _plugin2.default)([_browsers.IE_6], [_postcss3.DECL], function (decl) {
var before = decl.raws.before;
const { before } = decl.raws;
if (before && ~before.indexOf('_')) {

@@ -28,0 +27,0 @@ this.push(decl, {

@@ -20,3 +20,3 @@ 'use strict';

exports.default = (0, _plugin2.default)([_browsers.IE_8], [_postcss.ATRULE], function (rule) {
var params = rule.params.trim();
const params = rule.params.trim();
if (params === '\\0screen') {

@@ -23,0 +23,0 @@ this.push(rule, {

@@ -20,3 +20,3 @@ 'use strict';

exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7, _browsers.IE_8], [_postcss.ATRULE], function (rule) {
var params = rule.params.trim();
const params = rule.params.trim();
if (params === '\\0screen\\,screen\\9') {

@@ -23,0 +23,0 @@ this.push(rule, {

@@ -20,3 +20,3 @@ 'use strict';

exports.default = (0, _plugin2.default)([_browsers.IE_5_5, _browsers.IE_6, _browsers.IE_7], [_postcss.ATRULE], function (rule) {
var params = rule.params.trim();
const params = rule.params.trim();
if (params === 'screen\\9') {

@@ -23,0 +23,0 @@ this.push(rule, {

@@ -20,3 +20,3 @@ 'use strict';

exports.default = (0, _plugin2.default)([_browsers.IE_6, _browsers.IE_7, _browsers.IE_8], [_postcss.DECL], function (decl) {
var v = decl.value;
let v = decl.value;
if (v && v.length > 2 && v.indexOf('\\9') === v.length - 2) {

@@ -23,0 +23,0 @@ this.push(decl, {

@@ -34,4 +34,4 @@ 'use strict';

function analyse(ctx, rule) {
return function (selectors) {
selectors.each(function (selector) {
return selectors => {
selectors.each(selector => {
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)) {

@@ -38,0 +38,0 @@ ctx.push(rule, {

@@ -27,5 +27,4 @@ 'use strict';

}
var selector = rule.selector;
var trim = selector.trim();
const { selector } = rule;
const trim = selector.trim();
if (trim.lastIndexOf(',') === selector.length - 1 || trim.lastIndexOf('\\') === selector.length - 1) {

@@ -32,0 +31,0 @@ this.push(rule, {

{
"name": "stylehacks",
"version": "4.0.0-rc.2",
"version": "4.0.0",
"description": "Detect/remove browser hacks from CSS files.",

@@ -26,5 +26,5 @@ "main": "dist/index.js",

"babel-cli": "^6.0.0",
"cross-env": "^3.0.0"
"cross-env": "^5.0.0"
},
"homepage": "https://github.com/ben-eb/cssnano",
"homepage": "https://github.com/cssnano/cssnano",
"author": {

@@ -35,14 +35,14 @@ "name": "Ben Briggs",

},
"repository": "ben-eb/cssnano",
"repository": "cssnano/cssnano",
"dependencies": {
"browserslist": "^2.0.0",
"browserslist": "^4.0.0",
"postcss": "^6.0.0",
"postcss-selector-parser": "^3.0.0-rc.0"
"postcss-selector-parser": "^3.0.0"
},
"bugs": {
"url": "https://github.com/ben-eb/cssnano/issues"
"url": "https://github.com/cssnano/cssnano/issues"
},
"engines": {
"node": ">=4"
"node": ">=6.9.0"
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc