postcss-svgo
Advanced tools
Comparing version 4.0.0-rc.2 to 4.0.0
@@ -27,22 +27,18 @@ 'use strict'; | ||
var PLUGIN = 'postcss-svgo'; | ||
var dataURI = /data:image\/svg\+xml(;((charset=)?utf-8|base64))?,/i; | ||
var dataURIBase64 = /data:image\/svg\+xml;base64,/i; | ||
const PLUGIN = 'postcss-svgo'; | ||
const dataURI = /data:image\/svg\+xml(;((charset=)?utf-8|base64))?,/i; | ||
const dataURIBase64 = /data:image\/svg\+xml;base64,/i; | ||
function minifyPromise(svgo, decl, opts) { | ||
var promises = []; | ||
const promises = []; | ||
decl.value = (0, _postcssValueParser2.default)(decl.value).walk(function (node) { | ||
if (node.type !== 'function' || node.value !== 'url' || !node.nodes.length) { | ||
decl.value = (0, _postcssValueParser2.default)(decl.value).walk(node => { | ||
if (node.type !== 'function' || node.value.toLowerCase() !== 'url' || !node.nodes.length) { | ||
return; | ||
} | ||
var _node$nodes$ = node.nodes[0], | ||
value = _node$nodes$.value, | ||
quote = _node$nodes$.quote; | ||
let { value, quote } = node.nodes[0]; | ||
let isBase64, isUriEncoded; | ||
let svg = value.replace(dataURI, ''); | ||
var isBase64 = void 0, | ||
isUriEncoded = void 0; | ||
var svg = value.replace(dataURI, ''); | ||
if (dataURIBase64.test(value)) { | ||
@@ -52,3 +48,3 @@ svg = Buffer.from(svg, 'base64').toString('utf8'); | ||
} else { | ||
var decodedUri = void 0; | ||
let decodedUri; | ||
@@ -75,33 +71,27 @@ try { | ||
promises.push(new Promise(function (resolve, reject) { | ||
return svgo.optimize(svg, function (result) { | ||
if (result.error) { | ||
return reject(`${PLUGIN}: ${result.error}`); | ||
} | ||
promises.push(svgo.optimize(svg).then(result => { | ||
let data, optimizedValue; | ||
var data = void 0, | ||
optimizedValue = void 0; | ||
if (isBase64) { | ||
data = Buffer.from(result.data).toString('base64'); | ||
optimizedValue = 'data:image/svg+xml;base64,' + data; | ||
} else { | ||
data = isUriEncoded ? (0, _url.encode)(result.data) : result.data; | ||
// Should always encode # otherwise we yield a broken SVG | ||
// in Firefox (works in Chrome however). See this issue: | ||
// https://github.com/cssnano/cssnano/issues/245 | ||
data = data.replace(/#/g, '%23'); | ||
optimizedValue = 'data:image/svg+xml;charset=utf-8,' + data; | ||
quote = isUriEncoded ? '"' : '\''; | ||
} | ||
if (isBase64) { | ||
data = Buffer.from(result.data).toString('base64'); | ||
optimizedValue = 'data:image/svg+xml;base64,' + data; | ||
} else { | ||
data = isUriEncoded ? (0, _url.encode)(result.data) : result.data; | ||
// Should always encode # otherwise we yield a broken SVG | ||
// in Firefox (works in Chrome however). See this issue: | ||
// https://github.com/ben-eb/cssnano/issues/245 | ||
data = data.replace(/#/g, '%23'); | ||
optimizedValue = 'data:image/svg+xml;charset=utf-8,' + data; | ||
quote = isUriEncoded ? '"' : '\''; | ||
} | ||
node.nodes[0] = Object.assign({}, node.nodes[0], { | ||
value: optimizedValue, | ||
quote: quote, | ||
type: 'string', | ||
before: '', | ||
after: '' | ||
}); | ||
return resolve(); | ||
node.nodes[0] = Object.assign({}, node.nodes[0], { | ||
value: optimizedValue, | ||
quote: quote, | ||
type: 'string', | ||
before: '', | ||
after: '' | ||
}); | ||
}).catch(error => { | ||
throw new Error(`${PLUGIN}: ${error}`); | ||
})); | ||
@@ -112,15 +102,11 @@ | ||
return Promise.all(promises).then(function () { | ||
return decl.value = decl.value.toString(); | ||
}); | ||
return Promise.all(promises).then(() => decl.value = decl.value.toString()); | ||
} | ||
exports.default = _postcss2.default.plugin(PLUGIN, function () { | ||
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var svgo = new _svgo2.default(opts); | ||
return function (css) { | ||
return new Promise(function (resolve, reject) { | ||
var promises = []; | ||
css.walkDecls(function (decl) { | ||
exports.default = _postcss2.default.plugin(PLUGIN, (opts = {}) => { | ||
const svgo = new _svgo2.default(opts); | ||
return css => { | ||
return new Promise((resolve, reject) => { | ||
const promises = []; | ||
css.walkDecls(decl => { | ||
if (dataURI.test(decl.value)) { | ||
@@ -127,0 +113,0 @@ promises.push(minifyPromise(svgo, decl, opts)); |
@@ -11,2 +11,2 @@ 'use strict'; | ||
var decode = exports.decode = decodeURIComponent; | ||
const decode = exports.decode = decodeURIComponent; |
{ | ||
"name": "postcss-svgo", | ||
"version": "4.0.0-rc.2", | ||
"version": "4.0.0", | ||
"description": "Optimise inline SVG with PostCSS.", | ||
@@ -25,6 +25,6 @@ "main": "dist/index.js", | ||
"babel-cli": "^6.0.0", | ||
"cross-env": "^3.0.0", | ||
"pleeease-filters": "^3.0.0" | ||
"cross-env": "^5.0.0", | ||
"pleeease-filters": "^4.0.0" | ||
}, | ||
"homepage": "https://github.com/ben-eb/cssnano", | ||
"homepage": "https://github.com/cssnano/cssnano", | ||
"author": { | ||
@@ -35,15 +35,15 @@ "name": "Ben Briggs", | ||
}, | ||
"repository": "ben-eb/cssnano", | ||
"repository": "cssnano/cssnano", | ||
"dependencies": { | ||
"is-svg": "^2.0.0", | ||
"is-svg": "^3.0.0", | ||
"postcss": "^6.0.0", | ||
"postcss-value-parser": "^3.0.0", | ||
"svgo": "^0.7.0" | ||
"svgo": "^1.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" | ||
} | ||
} |
@@ -118,3 +118,3 @@ # [postcss][postcss]-svgo | ||
See [CONTRIBUTORS.md](https://github.com/ben-eb/cssnano/blob/master/CONTRIBUTORS.md). | ||
See [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTORS.md). | ||
@@ -121,0 +121,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
10781
98
1
+ Added@types/q@1.5.8(transitive)
+ Addedarray-buffer-byte-length@1.0.1(transitive)
+ Addedarray.prototype.reduce@1.0.7(transitive)
+ Addedarraybuffer.prototype.slice@1.0.3(transitive)
+ Addedavailable-typed-arrays@1.0.7(transitive)
+ Addedboolbase@1.0.0(transitive)
+ Addedcall-bind@1.0.7(transitive)
+ Addedcoa@2.0.2(transitive)
+ Addedcss-select@2.1.0(transitive)
+ Addedcss-select-base-adapter@0.1.1(transitive)
+ Addedcss-tree@1.0.0-alpha.371.1.3(transitive)
+ Addedcss-what@3.4.2(transitive)
+ Addedcsso@4.2.0(transitive)
+ Addeddata-view-buffer@1.0.1(transitive)
+ Addeddata-view-byte-length@1.0.1(transitive)
+ Addeddata-view-byte-offset@1.0.0(transitive)
+ Addeddefine-data-property@1.1.4(transitive)
+ Addeddefine-properties@1.2.1(transitive)
+ Addeddom-serializer@0.2.2(transitive)
+ Addeddomelementtype@1.3.12.3.0(transitive)
+ Addeddomutils@1.7.0(transitive)
+ Addedentities@2.2.0(transitive)
+ Addedes-abstract@1.23.3(transitive)
+ Addedes-array-method-boxes-properly@1.0.0(transitive)
+ Addedes-define-property@1.0.0(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedes-object-atoms@1.0.0(transitive)
+ Addedes-set-tostringtag@2.0.3(transitive)
+ Addedes-to-primitive@1.2.1(transitive)
+ Addedesprima@4.0.1(transitive)
+ Addedfor-each@0.3.3(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedfunction.prototype.name@1.1.6(transitive)
+ Addedfunctions-have-names@1.2.3(transitive)
+ Addedget-intrinsic@1.2.4(transitive)
+ Addedget-symbol-description@1.0.2(transitive)
+ Addedglobalthis@1.0.4(transitive)
+ Addedgopd@1.0.1(transitive)
+ Addedhas-bigints@1.0.2(transitive)
+ Addedhas-property-descriptors@1.0.2(transitive)
+ Addedhas-proto@1.0.3(transitive)
+ Addedhas-symbols@1.0.3(transitive)
+ Addedhas-tostringtag@1.0.2(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedinternal-slot@1.0.7(transitive)
+ Addedis-array-buffer@3.0.4(transitive)
+ Addedis-bigint@1.0.4(transitive)
+ Addedis-boolean-object@1.1.2(transitive)
+ Addedis-callable@1.2.7(transitive)
+ Addedis-data-view@1.0.1(transitive)
+ Addedis-date-object@1.0.5(transitive)
+ Addedis-negative-zero@2.0.3(transitive)
+ Addedis-number-object@1.0.7(transitive)
+ Addedis-regex@1.1.4(transitive)
+ Addedis-shared-array-buffer@1.0.3(transitive)
+ Addedis-string@1.0.7(transitive)
+ Addedis-svg@3.0.0(transitive)
+ Addedis-symbol@1.0.4(transitive)
+ Addedis-typed-array@1.1.13(transitive)
+ Addedis-weakref@1.0.2(transitive)
+ Addedisarray@2.0.5(transitive)
+ Addedjs-yaml@3.14.1(transitive)
+ Addedmdn-data@2.0.142.0.4(transitive)
+ Addednth-check@1.0.2(transitive)
+ Addedobject-inspect@1.13.2(transitive)
+ Addedobject-keys@1.1.1(transitive)
+ Addedobject.assign@4.1.5(transitive)
+ Addedobject.getownpropertydescriptors@2.1.8(transitive)
+ Addedobject.values@1.2.0(transitive)
+ Addedpossible-typed-array-names@1.0.0(transitive)
+ Addedregexp.prototype.flags@1.5.2(transitive)
+ Addedsafe-array-concat@1.1.2(transitive)
+ Addedsafe-regex-test@1.0.3(transitive)
+ Addedset-function-length@1.2.2(transitive)
+ Addedset-function-name@2.0.2(transitive)
+ Addedside-channel@1.0.6(transitive)
+ Addedstable@0.1.8(transitive)
+ Addedstring.prototype.trim@1.2.9(transitive)
+ Addedstring.prototype.trimend@1.0.8(transitive)
+ Addedstring.prototype.trimstart@1.0.8(transitive)
+ Addedsvgo@1.3.2(transitive)
+ Addedtyped-array-buffer@1.0.2(transitive)
+ Addedtyped-array-byte-length@1.0.1(transitive)
+ Addedtyped-array-byte-offset@1.0.2(transitive)
+ Addedtyped-array-length@1.0.6(transitive)
+ Addedunbox-primitive@1.0.2(transitive)
+ Addedunquote@1.1.1(transitive)
+ Addedutil.promisify@1.0.1(transitive)
+ Addedwhich-boxed-primitive@1.0.2(transitive)
+ Addedwhich-typed-array@1.1.15(transitive)
- Removedansi-regex@2.1.1(transitive)
- Removedansi-styles@2.2.1(transitive)
- Removedchalk@1.1.3(transitive)
- Removedclap@1.2.3(transitive)
- Removedcoa@1.0.4(transitive)
- Removedcolors@1.1.2(transitive)
- Removedcsso@2.3.2(transitive)
- Removedesprima@2.7.3(transitive)
- Removedhas-ansi@2.0.0(transitive)
- Removedis-svg@2.1.0(transitive)
- Removedjs-yaml@3.7.0(transitive)
- Removedsource-map@0.5.7(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedsupports-color@2.0.0(transitive)
- Removedsvgo@0.7.2(transitive)
- Removedwhet.extend@0.9.9(transitive)
Updatedis-svg@^3.0.0
Updatedsvgo@^1.0.0