1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 'use strict';
- const {
- defaultPlugins,
- resolvePluginConfig,
- extendDefaultPlugins,
- } = require('./svgo/config.js');
- const { parseSvg } = require('./parser.js');
- const { stringifySvg } = require('./stringifier.js');
- const { invokePlugins } = require('./svgo/plugins.js');
- const JSAPI = require('./svgo/jsAPI.js');
- const { encodeSVGDatauri } = require('./svgo/tools.js');
- exports.extendDefaultPlugins = extendDefaultPlugins;
- const optimize = (input, config) => {
- if (config == null) {
- config = {};
- }
- if (typeof config !== 'object') {
- throw Error('Config should be an object');
- }
- const maxPassCount = config.multipass ? 10 : 1;
- let prevResultSize = Number.POSITIVE_INFINITY;
- let svgjs = null;
- const info = {};
- if (config.path != null) {
- info.path = config.path;
- }
- for (let i = 0; i < maxPassCount; i += 1) {
- info.multipassCount = i;
- // TODO throw this error in v3
- try {
- svgjs = parseSvg(input, config.path);
- } catch (error) {
- return { error: error.toString(), modernError: error };
- }
- if (svgjs.error != null) {
- if (config.path != null) {
- svgjs.path = config.path;
- }
- return svgjs;
- }
- const plugins = config.plugins || defaultPlugins;
- if (Array.isArray(plugins) === false) {
- throw Error(
- "Invalid plugins list. Provided 'plugins' in config should be an array."
- );
- }
- const resolvedPlugins = plugins.map(resolvePluginConfig);
- const globalOverrides = {};
- if (config.floatPrecision != null) {
- globalOverrides.floatPrecision = config.floatPrecision;
- }
- svgjs = invokePlugins(svgjs, info, resolvedPlugins, null, globalOverrides);
- svgjs = stringifySvg(svgjs, config.js2svg);
- if (svgjs.data.length < prevResultSize) {
- input = svgjs.data;
- prevResultSize = svgjs.data.length;
- } else {
- if (config.datauri) {
- svgjs.data = encodeSVGDatauri(svgjs.data, config.datauri);
- }
- if (config.path != null) {
- svgjs.path = config.path;
- }
- return svgjs;
- }
- }
- return svgjs;
- };
- exports.optimize = optimize;
- /**
- * The factory that creates a content item with the helper methods.
- *
- * @param {Object} data which is passed to jsAPI constructor
- * @returns {JSAPI} content item
- */
- const createContentItem = (data) => {
- return new JSAPI(data);
- };
- exports.createContentItem = createContentItem;
|