| 1 | "use strict";
|
|---|
| 2 |
|
|---|
| 3 | exports.__esModule = true;
|
|---|
| 4 | exports.getFilePath = getFilePath;
|
|---|
| 5 | exports.getBaseSvgoConfig = getBaseSvgoConfig;
|
|---|
| 6 | exports.getPlugins = getPlugins;
|
|---|
| 7 | exports.mergeSvgoConfig = mergeSvgoConfig;
|
|---|
| 8 |
|
|---|
| 9 | var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|---|
| 10 |
|
|---|
| 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|---|
| 12 |
|
|---|
| 13 | function getFilePath(state) {
|
|---|
| 14 | return state.filePath || process.cwd();
|
|---|
| 15 | }
|
|---|
| 16 |
|
|---|
| 17 | function getBaseSvgoConfig(config) {
|
|---|
| 18 | const baseSvgoConfig = {
|
|---|
| 19 | plugins: [{
|
|---|
| 20 | prefixIds: true
|
|---|
| 21 | }]
|
|---|
| 22 | };
|
|---|
| 23 |
|
|---|
| 24 | if (config.icon || config.dimensions === false) {
|
|---|
| 25 | baseSvgoConfig.plugins.push({
|
|---|
| 26 | removeViewBox: false
|
|---|
| 27 | });
|
|---|
| 28 | }
|
|---|
| 29 |
|
|---|
| 30 | return baseSvgoConfig;
|
|---|
| 31 | }
|
|---|
| 32 |
|
|---|
| 33 | function getPlugins(config) {
|
|---|
| 34 | if (!config || !config.plugins) {
|
|---|
| 35 | return [];
|
|---|
| 36 | }
|
|---|
| 37 |
|
|---|
| 38 | if (!Array.isArray(config.plugins)) {
|
|---|
| 39 | throw Error('`svgoConfig.plugins` must be an array');
|
|---|
| 40 | }
|
|---|
| 41 |
|
|---|
| 42 | return config.plugins;
|
|---|
| 43 | }
|
|---|
| 44 |
|
|---|
| 45 | function extractPlugins(config) {
|
|---|
| 46 | if (!config) return [];
|
|---|
| 47 | if (!config.plugins) return [];
|
|---|
| 48 | if (!Array.isArray(config.plugins)) return [config.plugins];
|
|---|
| 49 | return config.plugins;
|
|---|
| 50 | }
|
|---|
| 51 |
|
|---|
| 52 | function mergePlugins(configs) {
|
|---|
| 53 | const plugins = configs.reduce((merged, config) => _deepmerge.default.all([merged, ...extractPlugins(config)]), {});
|
|---|
| 54 | return Object.keys(plugins).reduce((array, key) => {
|
|---|
| 55 | array.push({
|
|---|
| 56 | [key]: plugins[key]
|
|---|
| 57 | });
|
|---|
| 58 | return array;
|
|---|
| 59 | }, []);
|
|---|
| 60 | }
|
|---|
| 61 |
|
|---|
| 62 | function mergeSvgoConfig(...configs) {
|
|---|
| 63 | const plugins = mergePlugins(configs);
|
|---|
| 64 | return { ..._deepmerge.default.all(configs.filter(Boolean)),
|
|---|
| 65 | plugins
|
|---|
| 66 | };
|
|---|
| 67 | } |
|---|