Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/wwwroot/mifepriston.org/node_modules/svgo/lib/svgo/ |
Upload File : |
'use strict'; var FS = require('fs'); var PATH = require('path'); var yaml = require('js-yaml'); /** * Read and/or extend/replace default config file, * prepare and optimize plugins array. * * @param {Object} [config] input config * @return {Object} output config */ module.exports = function(config) { var defaults; config = typeof config == 'object' && config || {}; if (config.plugins && !Array.isArray(config.plugins)) { return { error: 'Error: Invalid plugins list. Provided \'plugins\' in config should be an array.' }; } if (config.full) { defaults = config; if (Array.isArray(defaults.plugins)) { defaults.plugins = preparePluginsArray(config, defaults.plugins); } } else { defaults = Object.assign({}, yaml.safeLoad(FS.readFileSync(__dirname + '/../../.svgo.yml', 'utf8'))); defaults.plugins = preparePluginsArray(config, defaults.plugins || []); defaults = extendConfig(defaults, config); } if ('floatPrecision' in config && Array.isArray(defaults.plugins)) { defaults.plugins.forEach(function(plugin) { if (plugin.params && ('floatPrecision' in plugin.params)) { // Don't touch default plugin params plugin.params = Object.assign({}, plugin.params, { floatPrecision: config.floatPrecision }); } }); } if ('datauri' in config) { defaults.datauri = config.datauri; } if (Array.isArray(defaults.plugins)) { defaults.plugins = optimizePluginsArray(defaults.plugins); } return defaults; }; /** * Require() all plugins in array. * * @param {Object} config * @param {Array} plugins input plugins array * @return {Array} input plugins array of arrays */ function preparePluginsArray(config, plugins) { var plugin, key; return plugins.map(function(item) { // {} if (typeof item === 'object') { key = Object.keys(item)[0]; // custom if (typeof item[key] === 'object' && item[key].fn && typeof item[key].fn === 'function') { plugin = setupCustomPlugin(key, item[key]); } else { plugin = setPluginActiveState( loadPlugin(config, key, item[key].path), item, key ); plugin.name = key; } // name } else { plugin = loadPlugin(config, item); plugin.name = item; if (typeof plugin.params === 'object') { plugin.params = Object.assign({}, plugin.params); } } return plugin; }); } /** * Extend plugins with the custom config object. * * @param {Array} plugins input plugins * @param {Object} config config * @return {Array} output plugins */ function extendConfig(defaults, config) { var key; // plugins if (config.plugins) { config.plugins.forEach(function(item) { // {} if (typeof item === 'object') { key = Object.keys(item)[0]; if (item[key] == null) { console.error(`Error: '${key}' plugin is misconfigured! Have you padded its content in YML properly?\n`); } // custom if (typeof item[key] === 'object' && item[key].fn && typeof item[key].fn === 'function') { defaults.plugins.push(setupCustomPlugin(key, item[key])); // plugin defined via path } else if (typeof item[key] === 'object' && item[key].path) { defaults.plugins.push(setPluginActiveState(loadPlugin(config, undefined, item[key].path), item, key)); } else { defaults.plugins.forEach(function(plugin) { if (plugin.name === key) { plugin = setPluginActiveState(plugin, item, key); } }); } } }); } defaults.multipass = config.multipass; // svg2js if (config.svg2js) { defaults.svg2js = config.svg2js; } // js2svg if (config.js2svg) { defaults.js2svg = config.js2svg; } return defaults; } /** * Setup and enable a custom plugin * * @param {String} plugin name * @param {Object} custom plugin * @return {Array} enabled plugin */ function setupCustomPlugin(name, plugin) { plugin.active = true; plugin.params = Object.assign({}, plugin.params || {}); plugin.name = name; return plugin; } /** * Try to group sequential elements of plugins array. * * @param {Object} plugins input plugins * @return {Array} output plugins */ function optimizePluginsArray(plugins) { var prev; return plugins.reduce(function(plugins, item) { if (prev && item.type == prev[0].type) { prev.push(item); } else { plugins.push(prev = [item]); } return plugins; }, []); } /** * Sets plugin to active or inactive state. * * @param {Object} plugin * @param {Object} item * @param {Object} key * @return {Object} plugin */ function setPluginActiveState(plugin, item, key) { // name: {} if (typeof item[key] === 'object') { plugin.params = Object.assign({}, plugin.params || {}, item[key]); plugin.active = true; // name: false } else if (item[key] === false) { plugin.active = false; // name: true } else if (item[key] === true) { plugin.active = true; } return plugin; } /** * Loads default plugin using name or custom plugin defined via path in config. * * @param {Object} config * @param {Object} name * @param {Object} path * @return {Object} plugin */ function loadPlugin(config, name, path) { var plugin; if (!path) { plugin = require('../../plugins/' + name); } else { plugin = require(PATH.resolve(config.__DIR, path)); } return Object.assign({}, plugin); }