mirror of
https://github.com/penpot/penpot.git
synced 2025-02-11 01:28:30 -05:00
✨ Make svgclean behave exactly as svgo.
This commit is contained in:
parent
3135de3eb3
commit
031123b2ca
5 changed files with 356 additions and 97 deletions
File diff suppressed because one or more lines are too long
44
vendor/svgclean/main.js
vendored
44
vendor/svgclean/main.js
vendored
|
@ -1,41 +1,13 @@
|
||||||
const plugins = {
|
const plugins = [
|
||||||
// prefixIds: true,
|
{removeDimensions: true},
|
||||||
cleanupAttrs: true,
|
{removeXMLNS: true},
|
||||||
// cleanupEnableBackground: true,
|
{removeScriptElement: true},
|
||||||
// cleanupIDs: true,
|
{removeViewBox: false},
|
||||||
cleanupNumericValues: true,
|
{moveElemsAttrsToGroup: false}
|
||||||
collapseGroups: true,
|
];
|
||||||
convertColors: true,
|
|
||||||
convertEllipseToCircle: true,
|
|
||||||
convertPathData: true,
|
|
||||||
convertShapeToPath: true,
|
|
||||||
convertStyleToAttrs: true,
|
|
||||||
convertTransform: true,
|
|
||||||
inlineStyles: true,
|
|
||||||
mergePaths: false,
|
|
||||||
minifyStyles: true,
|
|
||||||
removeComments: true,
|
|
||||||
removeDesc: true,
|
|
||||||
removeDimensions: false,
|
|
||||||
removeDoctype: true,
|
|
||||||
removeEditorsNSData: true,
|
|
||||||
removeEmptyAttrs: true,
|
|
||||||
removeEmptyContainers: true,
|
|
||||||
removeEmptyText: true,
|
|
||||||
removeHiddenElems: true,
|
|
||||||
removeNonInheritableGroupAttrs: true,
|
|
||||||
removeRasterImages: true,
|
|
||||||
removeTitle: true,
|
|
||||||
removeUnknownsAndDefaults: true,
|
|
||||||
removeUnusedNS: true,
|
|
||||||
removeUselessDefs: true,
|
|
||||||
removeUselessStrokeAndFill: true,
|
|
||||||
removeXMLNS: true,
|
|
||||||
removeXMLProcInst: true
|
|
||||||
};
|
|
||||||
|
|
||||||
const svgc = require("./src/svgclean.js");
|
const svgc = require("./src/svgclean.js");
|
||||||
const inst = svgc.configure({plugins});
|
const inst = svgc.configure({plugins, multipass: undefined});
|
||||||
|
|
||||||
exports.optimize = function(data) {
|
exports.optimize = function(data) {
|
||||||
return svgc.optimize(inst, data)
|
return svgc.optimize(inst, data)
|
||||||
|
|
268
vendor/svgclean/package-lock.json
generated
vendored
268
vendor/svgclean/package-lock.json
generated
vendored
|
@ -4,6 +4,12 @@
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@types/q": {
|
||||||
|
"version": "1.5.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
|
||||||
|
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@ungap/promise-all-settled": {
|
"@ungap/promise-all-settled": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||||
|
@ -701,6 +707,75 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"coa": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/q": "^1.5.1",
|
||||||
|
"chalk": "^2.4.1",
|
||||||
|
"q": "^1.1.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^1.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "2.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^3.2.1",
|
||||||
|
"escape-string-regexp": "^1.0.5",
|
||||||
|
"supports-color": "^5.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "1.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"color-name": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"escape-string-regexp": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "5.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^3.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"color-convert": {
|
"color-convert": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
@ -2615,6 +2690,12 @@
|
||||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"q": {
|
||||||
|
"version": "1.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
||||||
|
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"qs": {
|
"qs": {
|
||||||
"version": "6.5.2",
|
"version": "6.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||||
|
@ -3170,6 +3251,193 @@
|
||||||
"has-flag": "^4.0.0"
|
"has-flag": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"svgo": {
|
||||||
|
"version": "1.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
|
||||||
|
"integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"chalk": "^2.4.1",
|
||||||
|
"coa": "^2.0.2",
|
||||||
|
"css-select": "^2.0.0",
|
||||||
|
"css-select-base-adapter": "^0.1.1",
|
||||||
|
"css-tree": "1.0.0-alpha.37",
|
||||||
|
"csso": "^4.0.2",
|
||||||
|
"js-yaml": "^3.13.1",
|
||||||
|
"mkdirp": "~0.5.1",
|
||||||
|
"object.values": "^1.1.0",
|
||||||
|
"sax": "~1.2.4",
|
||||||
|
"stable": "^0.1.8",
|
||||||
|
"unquote": "~1.1.1",
|
||||||
|
"util.promisify": "~1.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-styles": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"color-convert": "^1.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"version": "2.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
|
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^3.2.1",
|
||||||
|
"escape-string-regexp": "^1.0.5",
|
||||||
|
"supports-color": "^5.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-convert": {
|
||||||
|
"version": "1.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"color-name": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"color-name": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
|
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"css-select": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"boolbase": "^1.0.0",
|
||||||
|
"css-what": "^3.2.1",
|
||||||
|
"domutils": "^1.7.0",
|
||||||
|
"nth-check": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"css-tree": {
|
||||||
|
"version": "1.0.0-alpha.37",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
|
||||||
|
"integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"mdn-data": "2.0.4",
|
||||||
|
"source-map": "^0.6.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"css-what": {
|
||||||
|
"version": "3.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
|
||||||
|
"integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"dom-serializer": {
|
||||||
|
"version": "0.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
|
||||||
|
"integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"domelementtype": "^2.0.1",
|
||||||
|
"entities": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"domelementtype": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"domelementtype": {
|
||||||
|
"version": "1.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
|
||||||
|
"integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"domutils": {
|
||||||
|
"version": "1.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
|
||||||
|
"integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"dom-serializer": "0",
|
||||||
|
"domelementtype": "1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"es-abstract": {
|
||||||
|
"version": "1.17.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz",
|
||||||
|
"integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"es-to-primitive": "^1.2.1",
|
||||||
|
"function-bind": "^1.1.1",
|
||||||
|
"has": "^1.0.3",
|
||||||
|
"has-symbols": "^1.0.1",
|
||||||
|
"is-callable": "^1.2.2",
|
||||||
|
"is-regex": "^1.1.1",
|
||||||
|
"object-inspect": "^1.8.0",
|
||||||
|
"object-keys": "^1.1.1",
|
||||||
|
"object.assign": "^4.1.1",
|
||||||
|
"string.prototype.trimend": "^1.0.1",
|
||||||
|
"string.prototype.trimstart": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"escape-string-regexp": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||||
|
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"has-flag": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||||
|
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"mdn-data": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"nth-check": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"boolbase": "~1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"supports-color": {
|
||||||
|
"version": "5.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||||
|
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"has-flag": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"util.promisify": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"es-abstract": "^1.17.2",
|
||||||
|
"has-symbols": "^1.0.1",
|
||||||
|
"object.getownpropertydescriptors": "^2.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"syntax-error": {
|
"syntax-error": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
|
||||||
|
|
2
vendor/svgclean/package.json
vendored
2
vendor/svgclean/package.json
vendored
|
@ -9,7 +9,6 @@
|
||||||
"build": "browserify -r./main.js:svgclean -o bundle.js",
|
"build": "browserify -r./main.js:svgclean -o bundle.js",
|
||||||
"minify": "terser bundle.js -c -m -o bundle.min.js",
|
"minify": "terser bundle.js -c -m -o bundle.min.js",
|
||||||
"dist": "npm run build && npm run minify"
|
"dist": "npm run build && npm run minify"
|
||||||
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
|
@ -33,6 +32,7 @@
|
||||||
"mocha-istanbul": "^0.3.0",
|
"mocha-istanbul": "^0.3.0",
|
||||||
"mock-stdin": "^1.0.0",
|
"mock-stdin": "^1.0.0",
|
||||||
"should": "~13.2.3",
|
"should": "~13.2.3",
|
||||||
|
"svgo": "^1.3.2",
|
||||||
"terser": "^5.5.1"
|
"terser": "^5.5.1"
|
||||||
},
|
},
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
|
|
135
vendor/svgclean/src/svgclean/config.js
vendored
135
vendor/svgclean/src/svgclean/config.js
vendored
|
@ -108,46 +108,57 @@ const builtinPlugins = {
|
||||||
sortDefsChildren,
|
sortDefsChildren,
|
||||||
};
|
};
|
||||||
|
|
||||||
const defaultPlugins = {
|
const defaultPlugins = [
|
||||||
prefixIds: true,
|
"removeDoctype",
|
||||||
cleanupAttrs: true,
|
"removeXMLProcInst",
|
||||||
cleanupEnableBackground: true,
|
"removeComments",
|
||||||
cleanupIDs: true,
|
"removeMetadata",
|
||||||
cleanupNumericValues: true,
|
"removeXMLNS",
|
||||||
collapseGroups: true,
|
"removeEditorsNSData",
|
||||||
convertColors: true,
|
"cleanupAttrs",
|
||||||
convertEllipseToCircle: true,
|
"inlineStyles",
|
||||||
convertPathData: true,
|
"minifyStyles",
|
||||||
convertShapeToPath: true,
|
"convertStyleToAttrs",
|
||||||
convertStyleToAttrs: true,
|
"cleanupIDs",
|
||||||
convertTransform: true,
|
"prefixIds",
|
||||||
inlineStyles: true,
|
"removeRasterImages",
|
||||||
mergePaths: false,
|
"removeUselessDefs",
|
||||||
minifyStyles: true,
|
"cleanupNumericValues",
|
||||||
moveElemsAttrsToGroup: false,
|
"cleanupListOfValues",
|
||||||
moveGroupAttrsToElems: false,
|
"convertColors",
|
||||||
removeComments: true,
|
"removeUnknownsAndDefaults",
|
||||||
removeDesc: true,
|
"removeNonInheritableGroupAttrs",
|
||||||
removeDimensions: false,
|
"removeUselessStrokeAndFill",
|
||||||
removeDoctype: true,
|
"removeViewBox",
|
||||||
removeEditorsNSData: true,
|
"cleanupEnableBackground",
|
||||||
removeEmptyAttrs: true,
|
"removeHiddenElems",
|
||||||
removeEmptyContainers: true,
|
"removeEmptyText",
|
||||||
removeEmptyText: true,
|
"convertShapeToPath",
|
||||||
removeHiddenElems: true,
|
"convertEllipseToCircle",
|
||||||
removeNonInheritableGroupAttrs: true,
|
"moveElemsAttrsToGroup",
|
||||||
removeRasterImages: true,
|
"moveGroupAttrsToElems",
|
||||||
removeTitle: true,
|
"collapseGroups",
|
||||||
removeUnknownsAndDefaults: true,
|
"convertPathData",
|
||||||
removeUnusedNS: true,
|
"convertTransform",
|
||||||
removeUselessDefs: true,
|
"removeEmptyAttrs",
|
||||||
removeUselessStrokeAndFill: true,
|
"removeEmptyContainers",
|
||||||
removeViewBox: false,
|
"mergePaths",
|
||||||
removeXMLNS: true,
|
"removeUnusedNS",
|
||||||
removeXMLProcInst: true,
|
"sortAttrs",
|
||||||
sortAttrs: false,
|
"sortDefsChildren",
|
||||||
sortDefsChildren: true
|
"removeTitle",
|
||||||
};
|
"removeDesc",
|
||||||
|
"removeDimensions",
|
||||||
|
"removeAttrs",
|
||||||
|
"removeAttributesBySelector",
|
||||||
|
"removeElementsByAttr",
|
||||||
|
"addClassesToSVGElement",
|
||||||
|
"removeStyleElement",
|
||||||
|
"removeScriptElement",
|
||||||
|
"addAttributesToSVGElement",
|
||||||
|
"removeOffCanvasPaths",
|
||||||
|
"reusePaths"
|
||||||
|
];
|
||||||
|
|
||||||
function optimizePlugins(plugins) {
|
function optimizePlugins(plugins) {
|
||||||
let prev;
|
let prev;
|
||||||
|
@ -163,27 +174,35 @@ function optimizePlugins(plugins) {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.loadPlugins = function(config={}) {
|
exports.loadPlugins = function(config={}) {
|
||||||
let plugins = Object.assign({}, config.plugins || defaultPlugins);
|
let configured = [];
|
||||||
let configuredPlugins = [];
|
|
||||||
|
|
||||||
for (let key of Object.keys(plugins)) {
|
for (let name of defaultPlugins) {
|
||||||
let pluginOpt = plugins[key];
|
const plugin = Object.assign({}, builtinPlugins[name]);
|
||||||
let plugin = null;
|
plugin.name = name;
|
||||||
|
configured.push(plugin);
|
||||||
if (typeof pluginOpt === "object") {
|
|
||||||
plugin = Object.assign({}, builtinPlugins[key]);
|
|
||||||
plugin.params = Object.assign({}, pluginOpt);
|
|
||||||
} else if (pluginOpt === true) {
|
|
||||||
plugin = Object.assign({}, builtinPlugins[key]);
|
|
||||||
} else {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
plugin.active = true;
|
|
||||||
configuredPlugins.push(plugin);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return optimizePlugins(configuredPlugins);
|
for (let item of config.plugins || []) {
|
||||||
|
const name = Object.keys(item)[0];
|
||||||
|
const opts = item[name];
|
||||||
|
|
||||||
|
if (typeof opts === "object") {
|
||||||
|
configured.forEach(function(plugin) {
|
||||||
|
if (plugin.name === name) {
|
||||||
|
plugin.active = true;
|
||||||
|
plugin.params = Object.assign({}, plugin.params, opts);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (typeof opts === "boolean") {
|
||||||
|
configured.forEach(function(plugin) {
|
||||||
|
if (plugin.name === name) {
|
||||||
|
plugin.active = opts;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return optimizePlugins(configured);
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.executePlugins = function(plugins, data, info) {
|
exports.executePlugins = function(plugins, data, info) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue