| 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;
 |