Socket
Socket
Sign inDemoInstall

csso

Package Overview
Dependencies
3
Maintainers
3
Versions
82
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.4.0 to 3.5.0

4

HISTORY.md

@@ -0,1 +1,5 @@

## 3.5.0 (January 14, 2018)
- Migrated to [CSSTree](https://github.com/csstree/csstree) `1.0.0-alpha.27`
## 3.4.0 (November 3, 2017)

@@ -2,0 +6,0 @@

8

lib/clean/Atrule.js

@@ -54,6 +54,6 @@ var resolveKeyword = require('css-tree').keyword;

default:
var keyword = resolveKeyword(node.name);
if (keyword.name === 'keyframes' ||
keyword.name === 'media' ||
keyword.name === 'supports') {
var name = resolveKeyword(node.name).basename;
if (name === 'keyframes' ||
name === 'media' ||
name === 'supports') {

@@ -60,0 +60,0 @@ // drop at-rule with no prelude

@@ -1,2 +0,2 @@

var walk = require('css-tree').walkUp;
var walk = require('css-tree').walk;
var handlers = {

@@ -13,7 +13,9 @@ Atrule: require('./Atrule'),

module.exports = function(ast, options) {
walk(ast, function(node, item, list) {
if (handlers.hasOwnProperty(node.type)) {
handlers[node.type].call(this, node, item, list, options);
walk(ast, {
leave: function(node, item, list) {
if (handlers.hasOwnProperty(node.type)) {
handlers[node.type].call(this, node, item, list, options);
}
}
});
};

@@ -7,3 +7,3 @@ var List = require('css-tree').List;

var restructure = require('./restructure');
var walkRules = require('css-tree').walkRules;
var walk = require('css-tree').walk;

@@ -58,5 +58,8 @@ function readChunk(children, specialComments) {

walkRules(ast, function markScopes(node) {
if (node.type === 'Atrule' && node.block !== null) {
node.block.id = seed++;
walk(ast, {
visit: 'Atrule',
enter: function markScopes(node) {
if (node.block !== null) {
node.block.id = seed++;
}
}

@@ -63,0 +66,0 @@ });

var csstree = require('css-tree');
var parse = csstree.parse;
var compress = require('./compress');
var translate = csstree.translate;
var translateWithSourceMap = csstree.translateWithSourceMap;
var generate = csstree.generate;

@@ -26,3 +25,3 @@ function debugOutput(name, options, startTime, data) {

if (level > 1 && ast) {
var css = translate(ast, true);
var css = generate(ast);

@@ -106,6 +105,6 @@ // when level 2, limit css to 256 symbols

// translate
// generate
if (options.sourceMap) {
result = debugOutput('translateWithSourceMap', options, Date.now(), (function() {
var tmp = translateWithSourceMap(compressResult.ast);
result = debugOutput('generate(sourceMap: true)', options, Date.now(), (function() {
var tmp = generate(compressResult.ast, { sourceMap: true });
tmp.map._file = filename; // since other tools can relay on file in source map transform chain

@@ -116,4 +115,4 @@ tmp.map.setSourceContent(filename, source);

} else {
result = debugOutput('translate', options, Date.now(), {
css: translate(compressResult.ast),
result = debugOutput('generate', options, Date.now(), {
css: generate(compressResult.ast),
map: null

@@ -120,0 +119,0 @@ });

@@ -6,5 +6,5 @@ var resolveKeyword = require('css-tree').keyword;

// compress @keyframe selectors
if (resolveKeyword(node.name).name === 'keyframes') {
if (resolveKeyword(node.name).basename === 'keyframes') {
compressKeyframes(node);
}
};

@@ -1,2 +0,2 @@

var walk = require('css-tree').walkUp;
var walk = require('css-tree').walk;
var handlers = {

@@ -17,7 +17,9 @@ Atrule: require('./Atrule'),

module.exports = function(ast) {
walk(ast, function(node, item, list) {
if (handlers.hasOwnProperty(node.type)) {
handlers[node.type].call(this, node, item, list);
walk(ast, {
leave: function(node, item, list) {
if (handlers.hasOwnProperty(node.type)) {
handlers[node.type].call(this, node, item, list);
}
}
});
};

@@ -17,5 +17,5 @@ var resolveName = require('css-tree').property;

if (handlers.hasOwnProperty(property.name)) {
handlers[property.name](node);
if (handlers.hasOwnProperty(property.basename)) {
handlers[property.basename](node);
}
};
var List = require('css-tree').List;
var resolveKeyword = require('css-tree').keyword;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var walkRulesRight = require('css-tree').walkRulesRight;
var walk = require('css-tree').walk;
function addRuleToMap(map, item, list, single) {
var node = item.data;
var name = resolveKeyword(node.name).name;
var name = resolveKeyword(node.name).basename;
var id = node.name.toLowerCase() + '/' + (node.prelude ? node.prelude.id : null);

@@ -32,5 +32,5 @@

if (node.type === 'Atrule') {
var keyword = resolveKeyword(node.name);
var name = resolveKeyword(node.name).basename;
switch (keyword.name) {
switch (name) {
case 'keyframes':

@@ -49,4 +49,4 @@ addRuleToMap(collected, item, list, true);

if (topInjectPoint === null &&
keyword.name !== 'charset' &&
keyword.name !== 'import') {
name !== 'charset' &&
name !== 'import') {
topInjectPoint = item;

@@ -63,3 +63,6 @@ }

for (var id in collected[atrule]) {
ast.children.insertList(collected[atrule][id], atrule === 'media' ? null : topInjectPoint);
ast.children.insertList(
collected[atrule][id],
atrule === 'media' ? null : topInjectPoint
);
}

@@ -102,7 +105,7 @@ }

walkRulesRight(ast, function(node, item, list) {
if (node.type === 'Atrule') {
processAtrule(node, item, list);
}
walk(ast, {
visit: 'Atrule',
reverse: true,
enter: processAtrule
});
};

@@ -1,2 +0,2 @@

var walkRules = require('css-tree').walkRules;
var walk = require('css-tree').walk;
var utils = require('./utils');

@@ -43,7 +43,6 @@

module.exports = function initialMergeRule(ast) {
walkRules(ast, function(node, item, list) {
if (node.type === 'Rule') {
processRule(node, item, list);
}
walk(ast, {
visit: 'Rule',
enter: processRule
});
};
var List = require('css-tree').List;
var walkRulesRight = require('css-tree').walkRulesRight;
var walk = require('css-tree').walk;

@@ -37,7 +37,7 @@ function processRule(node, item, list) {

module.exports = function disjoinRule(ast) {
walkRulesRight(ast, function(node, item, list) {
if (node.type === 'Rule') {
processRule(node, item, list);
}
walk(ast, {
visit: 'Rule',
reverse: true,
enter: processRule
});
};
var List = require('css-tree').List;
var translate = require('css-tree').translate;
var walkRulesRight = require('css-tree').walkRulesRight;
var generate = require('css-tree').generate;
var walk = require('css-tree').walk;

@@ -281,6 +281,6 @@ var REPLACE = 1;

var stringValues = [
translate(sides.top.node),
translate(sides.right.node),
translate(sides.bottom.node),
translate(sides.left.node)
generate(sides.top.node),
generate(sides.right.node),
generate(sides.bottom.node),
generate(sides.left.node)
];

@@ -399,29 +399,29 @@

walkRulesRight(ast, function(node) {
if (node.type !== 'Rule') {
return;
}
walk(ast, {
visit: 'Rule',
reverse: true,
enter: function(node) {
var stylesheet = this.block || this.stylesheet;
var ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first().id;
var ruleMap;
var shorts;
var stylesheet = this.block || this.stylesheet;
var ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first().id;
var ruleMap;
var shorts;
if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
ruleMap = {
lastShortSelector: null
};
stylesheetMap[stylesheet.id] = ruleMap;
} else {
ruleMap = stylesheetMap[stylesheet.id];
}
if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
ruleMap = {
lastShortSelector: null
};
stylesheetMap[stylesheet.id] = ruleMap;
} else {
ruleMap = stylesheetMap[stylesheet.id];
}
if (ruleMap.hasOwnProperty(ruleId)) {
shorts = ruleMap[ruleId];
} else {
shorts = {};
ruleMap[ruleId] = shorts;
}
if (ruleMap.hasOwnProperty(ruleId)) {
shorts = ruleMap[ruleId];
} else {
shorts = {};
ruleMap[ruleId] = shorts;
ruleMap.lastShortSelector = processRule.call(this, node, shorts, shortDeclarations, ruleMap.lastShortSelector);
}
ruleMap.lastShortSelector = processRule.call(this, node, shorts, shortDeclarations, ruleMap.lastShortSelector);
});

@@ -428,0 +428,0 @@

var resolveProperty = require('css-tree').property;
var resolveKeyword = require('css-tree').keyword;
var walkRulesRight = require('css-tree').walkRulesRight;
var translate = require('css-tree').translate;
var walk = require('css-tree').walk;
var generate = require('css-tree').generate;
var fingerprintId = 1;

@@ -68,6 +68,6 @@ var dontRestructure = {

function getPropertyFingerprint(propertyName, declaration, fingerprints) {
var realName = resolveProperty(propertyName).name;
var realName = resolveProperty(propertyName).basename;
if (realName === 'background') {
return propertyName + ':' + translate(declaration.value);
return propertyName + ':' + generate(declaration.value);
}

@@ -183,3 +183,3 @@

default:
fingerprint = translate(declaration.value);
fingerprint = generate(declaration.value);
}

@@ -196,4 +196,4 @@

if (NEEDLESS_TABLE.hasOwnProperty(property.name)) {
var table = NEEDLESS_TABLE[property.name];
if (NEEDLESS_TABLE.hasOwnProperty(property.basename)) {
var table = NEEDLESS_TABLE[property.basename];

@@ -273,28 +273,28 @@ for (var i = 0; i < table.length; i++) {

walkRulesRight(ast, function(node, item, list) {
if (node.type !== 'Rule') {
return;
}
walk(ast, {
visit: 'Rule',
reverse: true,
enter: function(node, item, list) {
var stylesheet = this.block || this.stylesheet;
var ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first().id;
var ruleMap;
var props;
var stylesheet = this.block || this.stylesheet;
var ruleId = (node.pseudoSignature || '') + '|' + node.prelude.children.first().id;
var ruleMap;
var props;
if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
ruleMap = {};
stylesheetMap[stylesheet.id] = ruleMap;
} else {
ruleMap = stylesheetMap[stylesheet.id];
}
if (!stylesheetMap.hasOwnProperty(stylesheet.id)) {
ruleMap = {};
stylesheetMap[stylesheet.id] = ruleMap;
} else {
ruleMap = stylesheetMap[stylesheet.id];
}
if (ruleMap.hasOwnProperty(ruleId)) {
props = ruleMap[ruleId];
} else {
props = {};
ruleMap[ruleId] = props;
}
if (ruleMap.hasOwnProperty(ruleId)) {
props = ruleMap[ruleId];
} else {
props = {};
ruleMap[ruleId] = props;
processRule.call(this, node, item, list, props, fingerprints);
}
processRule.call(this, node, item, list, props, fingerprints);
});
};

@@ -1,2 +0,2 @@

var walkRules = require('css-tree').walkRules;
var walk = require('css-tree').walk;
var utils = require('./utils');

@@ -82,7 +82,6 @@

module.exports = function mergeRule(ast) {
walkRules(ast, function(node, item, list) {
if (node.type === 'Rule') {
processRule(node, item, list);
}
walk(ast, {
visit: 'Rule',
enter: processRule
});
};
var List = require('css-tree').List;
var walkRulesRight = require('css-tree').walkRulesRight;
var walk = require('css-tree').walk;
var utils = require('./utils');

@@ -152,7 +152,7 @@

module.exports = function restructRule(ast) {
walkRulesRight(ast, function(node, item, list) {
if (node.type === 'Rule') {
processRule.call(this, node, item, list);
}
walk(ast, {
visit: 'Rule',
reverse: true,
enter: processRule
});
};

@@ -1,2 +0,2 @@

var translate = require('css-tree').translate;
var generate = require('css-tree').generate;

@@ -23,3 +23,3 @@ function Index() {

return function markDeclaration(node) {
var id = translate(node);
var id = generate(node);

@@ -26,0 +26,0 @@ node.id = ids.resolve(id);

var resolveKeyword = require('css-tree').keyword;
var walkRules = require('css-tree').walkRules;
var translate = require('css-tree').translate;
var walk = require('css-tree').walk;
var generate = require('css-tree').generate;
var createDeclarationIndexer = require('./createDeclarationIndexer');
var processSelector = require('./processSelector');
function walk(node, markDeclaration, options) {
switch (node.type) {
case 'Rule':
module.exports = function prepare(ast, options) {
var markDeclaration = createDeclarationIndexer();
walk(ast, {
visit: 'Rule',
enter: function processRule(node) {
node.block.children.each(markDeclaration);
processSelector(node, options.usage);
break;
}
});
case 'Atrule':
walk(ast, {
visit: 'Atrule',
enter: function(node) {
if (node.prelude) {
node.prelude.id = null; // pre-init property to avoid multiple hidden class for translate
node.prelude.id = translate(node.prelude);
node.prelude.id = null; // pre-init property to avoid multiple hidden class for generate
node.prelude.id = generate(node.prelude);
}

@@ -22,3 +28,3 @@

// NOTE: still no clarification about problems with keyframes selector grouping (issue #197)
if (resolveKeyword(node.name).name === 'keyframes') {
if (resolveKeyword(node.name).basename === 'keyframes') {
node.block.avoidRulesMerge = true; /* probably we don't need to prevent those merges for @keyframes

@@ -32,11 +38,3 @@ TODO: need to be checked */

}
break;
}
}
module.exports = function prepare(ast, options) {
var markDeclaration = createDeclarationIndexer();
walkRules(ast, function(node) {
walk(node, markDeclaration, options);
}
});

@@ -43,0 +41,0 @@

@@ -1,2 +0,2 @@

var translate = require('css-tree').translate;
var generate = require('css-tree').generate;
var specificity = require('./specificity');

@@ -36,3 +36,3 @@

if (scope !== 0 && classScope !== scope) {
throw new Error('Selector can\'t has classes from different scopes: ' + translate(simpleSelector));
throw new Error('Selector can\'t has classes from different scopes: ' + generate(simpleSelector));
}

@@ -82,3 +82,3 @@

simpleSelector.id = null; // pre-init property to avoid multiple hidden class
simpleSelector.id = translate(simpleSelector);
simpleSelector.id = generate(simpleSelector);

@@ -85,0 +85,0 @@ if (scope) {

{
"name": "csso",
"version": "3.4.0",
"version": "3.5.0",
"description": "CSS minifier with structural optimisations",

@@ -56,7 +56,8 @@ "keywords": [

"browserify": "browserify -t package-json-versionify --standalone csso lib/index.js | uglifyjs --compress --mangle -o dist/csso-browser.js",
"gh-pages": "git clone -b gh-pages https://github.com/css/csso.git .gh-pages && npm run browserify && cp dist/csso-browser.js .gh-pages/ && cd .gh-pages && git commit -am \"update\" && git push && cd .. && rm -rf .gh-pages",
"prepublish": "npm run browserify"
"gh-pages": "git clone --depth=1 -b gh-pages https://github.com/css/csso.git .gh-pages && npm run browserify && cp dist/csso-browser.js .gh-pages/ && cd .gh-pages && git commit -am \"update\" && git push && cd .. && rm -rf .gh-pages",
"prepublish": "npm run browserify",
"postpublish": "npm run gh-pages"
},
"dependencies": {
"css-tree": "1.0.0-alpha25"
"css-tree": "1.0.0-alpha.27"
},

@@ -63,0 +64,0 @@ "devDependencies": {

@@ -178,7 +178,7 @@ [![NPM version](https://img.shields.io/npm/v/csso.svg)](https://www.npmjs.com/package/csso)

Specify what comments to left:
Specify what comments to leave:
- `'exclamation'` or `true` – left all exclamation comments (i.e. `/*! .. */`)
- `'first-exclamation'` – remove every comments except first one
- `false` – remove every comments
- `'exclamation'` or `true` – leave all exclamation comments (i.e. `/*! .. */`)
- `'first-exclamation'` – remove every comment except first one
- `false` – remove all comments

@@ -185,0 +185,0 @@ - usage

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc