| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | const merge = require('deepmerge');const defaults = require('./config');const utils = require('./utils');const loaderDefaults = defaults.loader;const isomorphicSpriteModule = require.resolve('../runtime/sprite.build');const isomorphicSymbolModule = require.resolve('svg-baker-runtime/symbol');const isTargetBrowser = target => target === 'web' || target === 'electron-renderer';/** * @param {Object} params * @param {Object} [params.config] Parsed loader config {@see SVGSpriteLoaderConfig} * @param {LoaderContext} context Loader context {@see https://webpack.js.org/api/loaders/#the-loader-context} * @return {Object} */module.exports = function configurator({ config, context, target }) {  const module = context._module;  const compiler = context._compiler;  const compilerName = compiler.name;  const autoConfigured = {    spriteModule: isTargetBrowser(target) ? loaderDefaults.spriteModule : isomorphicSpriteModule,    symbolModule: isTargetBrowser(target) ? loaderDefaults.symbolModule : isomorphicSymbolModule,    extract: utils.isModuleShouldBeExtracted(module),    esModule: context.version && context.version >= 2  };  const finalConfig = merge.all([loaderDefaults, autoConfigured, config || {}]);  /**   * esModule should be `false` when compiles via extract-text-webpack-plugin or html-webpack-plugin.   * Because this compilers executes module as usual node module so export should be always in commonjs style.   * This could be dropped when Node.js will support ES modules natively :)   * @see https://git.io/vS7Sn   * @see https://git.io/v9w60   */  if (compilerName && (    compilerName.includes('extract-text-webpack-plugin') ||      compilerName.includes('html-webpack-plugin')  )) {    finalConfig.esModule = false;  }  return finalConfig;};
 |