Socket
Socket
Sign inDemoInstall

postcss-svgo

Package Overview
Dependencies
Maintainers
2
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

postcss-svgo - npm Package Compare versions

Comparing version 2.0.2 to 2.0.3

5

CHANGELOG.md

@@ -0,1 +1,6 @@

# 2.0.3
* Uses postcss-value-parser instead of async-replace to reduce cssnano's
download size (thanks to @TrySound).
# 2.0.2

@@ -2,0 +7,0 @@

92

dist/index.js

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

var _asyncReplace = require('async-replace');
var _postcss = require('postcss');
var _asyncReplace2 = _interopRequireDefault(_asyncReplace);
var _postcss2 = _interopRequireDefault(_postcss);
var _postcssValueParser = require('postcss-value-parser');
var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);
var _svgo = require('svgo');

@@ -14,6 +18,2 @@

var _postcss = require('postcss');
var _postcss2 = _interopRequireDefault(_postcss);
var _isSvg = require('is-svg');

@@ -28,32 +28,56 @@

function minifyPromise(svgo, decl) {
return new Promise(function (resolve, reject) {
var isUriEncoded = undefined;
try {
isUriEncoded = decode(decl.value) !== decl.value;
} catch (err) {
isUriEncoded = false;
var promises = [];
decl.value = (0, _postcssValueParser2['default'])(decl.value).walk(function (node) {
if (node.type === 'function' && node.value === 'url' && node.nodes.length) {
var _ret = (function () {
_postcssValueParser2['default'].trim(node.nodes);
var quote = node.nodes[0].quote;
if (typeof quote === 'undefined') {
quote = '';
} else if (quote === '"') {
quote = "'";
}
var lastType = node.nodes[0].type;
node.nodes[0].type = 'word';
var value = _postcssValueParser2['default'].stringify(node.nodes);
var isUriEncoded = undefined;
try {
var encodedUri = decode(value);
isUriEncoded = encodedUri !== value;
if (isUriEncoded) {
value = encodedUri;
}
} catch (err) {
isUriEncoded = false;
}
if (!dataURI.test(value) || !(0, _isSvg2['default'])(value)) {
node.nodes[0].type = lastType;
return {
v: undefined
};
}
promises.push(new Promise(function (resolve, reject) {
svgo.optimize(value.replace(dataURI, ''), function (result) {
if (result.error) {
return reject('Error parsing SVG: ' + result.error);
}
var data = isUriEncoded ? encode(result.data) : result.data;
node.nodes = [{
type: 'string',
quote: quote,
value: 'data:image/svg+xml;charset=utf-8,' + data
}];
resolve();
});
}));
})();
if (typeof _ret === 'object') return _ret.v;
}
var minify = function minify(_, quote, svg, offset, str, cb) {
if (!dataURI.test(svg) || !(0, _isSvg2['default'])(svg)) {
return cb(null, str);
}
if (typeof quote === 'undefined') {
quote = '';
} else if (quote === '"') {
quote = "'";
}
svgo.optimize(svg.replace(dataURI, ''), function (result) {
if (result.error) {
return reject('Error parsing SVG: ' + result.error);
}
var data = isUriEncoded ? encode(result.data) : result.data;
var o = 'url(' + quote + 'data:image/svg+xml;charset=utf-8,' + data + quote + ')';
return cb(null, o);
});
};
(0, _asyncReplace2['default'])(isUriEncoded ? decode(decl.value) : decl.value, /url\(("|')?(.*)\1\)/g, minify, function (err, result) {
decl.value = result;
resolve();
});
});
return Promise.all(promises).then(function () {
decl.value = decl.value.toString();
});
}

@@ -60,0 +84,0 @@

{
"name": "postcss-svgo",
"version": "2.0.2",
"version": "2.0.3",
"description": "Optimise inline SVG with PostCSS.",

@@ -28,3 +28,3 @@ "main": "dist/index.js",

"babel-tape-runner": "^1.2.0",
"pleeease-filters": "^1.0.1",
"pleeease-filters": "^2.0.0",
"tap-spec": "^4.1.0",

@@ -41,7 +41,7 @@ "tape": "^4.2.0"

"dependencies": {
"async-replace": "^1.0.0",
"is-svg": "^1.1.1",
"postcss": "^5.0.2",
"postcss-value-parser": "^2.0.5",
"svgo": "^0.5.6"
}
}
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