{"version":3,"file":"index.esm.js","sources":["../src/utilities.js","../src/customizers/webpack.js","../src/customizers/babel.js","../src/overrides.js"],"sourcesContent":["/**\n *\n * Returns the `babel` loader from the provided `config`.\n *\n * `create-react-app` defines two `babel` configurations, one for js files\n * found in `src/` and another for any js files found outside that directory.\n * This function can target either using the `isOutsideOfApp` param.\n *\n * @param {*} config The webpack config to search.\n * @param {boolean} isOutsideOfApp Flag for whether to use the `babel-loader`\n * for matching files in `src/` or files outside of `src/`.\n */\nexport const getBabelLoader = (config, isOutsideOfApp) => {\n let babelLoaderFilter;\n if (isOutsideOfApp) {\n babelLoaderFilter = rule =>\n rule.loader && rule.loader.includes(\"babel\") && rule.exclude;\n } else {\n babelLoaderFilter = rule =>\n rule.loader && rule.loader.includes(\"babel\") && rule.include;\n }\n\n // First, try to find the babel loader inside the oneOf array.\n // This is where we can find it when working with react-scripts@2.0.3.\n let loaders = config.module.rules.find(rule => Array.isArray(rule.oneOf))\n .oneOf;\n\n let babelLoader = loaders.find(babelLoaderFilter);\n\n // If the loader was not found, try to find it inside of the \"use\" array, within the rules.\n // This should work when dealing with react-scripts@2.0.0.next.* versions.\n if (!babelLoader) {\n loaders = loaders.reduce((ldrs, rule) => ldrs.concat(rule.use || []), []);\n babelLoader = loaders.find(babelLoaderFilter);\n }\n return babelLoader;\n};\n\nexport const tap = (options) => (config) => {\n const { message, dest } = options || {}\n const print = []\n if (message) print.push(message)\n print.push(JSON.stringify(config, null, 2))\n\n if (dest) {\n const fs = require('fs')\n fs.appendFile(dest, `${print.join('\\n')}\\n`)\n }\n\n print.forEach(sentence => console.log(sentence))\n\n return config\n}\n","import { getBabelLoader } from \"../utilities\";\n\nexport const addBundleVisualizer = (\n options = {},\n behindFlag = false\n) => config => {\n const BundleAnalyzerPlugin = require(\"webpack-bundle-analyzer\")\n .BundleAnalyzerPlugin;\n\n // if behindFlag is set to true, the report will be created only if\n // the `--analyze` flag is added to the `yarn build` command\n if (behindFlag ? process.argv.includes(\"--analyze\") : true) {\n config.plugins.push(\n new BundleAnalyzerPlugin(\n Object.assign(\n {\n analyzerMode: \"static\",\n reportFilename: \"report.html\"\n },\n options\n )\n )\n );\n }\n return config;\n};\n\nexport const disableEsLint = () => config => {\n let eslintRules = config.module.rules.filter(\n r => r.use && r.use.some(u => u.options && u.options.useEslintrc !== void 0)\n );\n eslintRules.forEach(rule => {\n config.module.rules = config.module.rules.filter(r => r !== rule);\n });\n return config;\n};\n\nexport const addWebpackAlias = alias => config => {\n if (!config.resolve) {\n config.resolve = {};\n }\n if (!config.resolve.alias) {\n config.resolve.alias = {};\n }\n Object.assign(config.resolve.alias, alias);\n return config;\n};\n\nexport const addWebpackResolve = resolve => config => {\n if (!config.resolve) {\n config.resolve = {};\n }\n Object.assign(config.resolve, resolve);\n return config;\n};\n\nexport const addWebpackPlugin = plugin => config => {\n config.plugins.push(plugin);\n return config;\n};\n\nexport const adjustWorkbox = adjust => config => {\n config.plugins.forEach(p => {\n if (p.constructor.name === \"GenerateSW\") {\n adjust(p.config);\n }\n });\n return config;\n};\n\nexport const adjustStyleLoaders = callback => config => {\n const mode = process.env.NODE_ENV === 'production' ? 'prod' : 'dev';\n const loader = mode === 'prod' ? 'css-extract-plugin' : 'style-loader';\n\n const loaders = config.module.rules.find(rule => Array.isArray(rule.oneOf))\n .oneOf;\n const styleLoaders = loaders.filter(({ use }) => use && use[0] && (use[0].loader || use[0]).includes(loader));\n styleLoaders.forEach(loader => callback(loader));\n\n return config;\n};\n\nexport const useEslintRc = configFile => config => {\n const eslintRule = config.module.rules.filter(\n r => r.use && r.use.some(u => u.options && u.options.useEslintrc !== void 0)\n )[0];\n\n eslintRule.use[0].options.useEslintrc = true;\n eslintRule.use[0].options.ignore = true;\n eslintRule.use[0].options.configFile = configFile;\n\n delete eslintRule.use[0].options.baseConfig;\n\n const rules = config.module.rules.map(r =>\n r.use && r.use.some(u => u.options && u.options.useEslintrc !== void 0)\n ? eslintRule\n : r\n );\n config.module.rules = rules;\n\n return config;\n};\n\nexport const enableEslintTypescript = () => config => {\n const eslintRule = config.module.rules.filter(\n r => r.use && r.use.some(u => u.options && u.options.useEslintrc !== void 0)\n )[0];\n\n eslintRule.test = /\\.([j,t]sx?|mjs)$/;\n\n const rules = config.module.rules.map(r =>\n r.use && r.use.some(u => u.options && u.options.useEslintrc !== void 0)\n ? eslintRule\n : r\n );\n config.module.rules = rules;\n\n return config;\n};\n\nexport const addLessLoader = (loaderOptions = {}) => config => {\n const mode = process.env.NODE_ENV === \"development\" ? \"dev\" : \"prod\";\n\n // Need these for production mode, which are copied from react-scripts\n const publicPath = require(\"react-scripts/config/paths\").servedPath;\n const shouldUseRelativeAssetPaths = publicPath === \"./\";\n const shouldUseSourceMap =\n mode === \"prod\" && process.env.GENERATE_SOURCEMAP !== \"false\";\n const lessRegex = /\\.less$/;\n const lessModuleRegex = /\\.module\\.less$/;\n const localIdentName =\n loaderOptions.localIdentName || \"[path][name]__[local]--[hash:base64:5]\";\n\n const getLessLoader = cssOptions => {\n return [\n mode === \"dev\"\n ? require.resolve(\"style-loader\")\n : {\n loader: require(\"mini-css-extract-plugin\").loader,\n options: Object.assign(\n {},\n shouldUseRelativeAssetPaths ? { publicPath: \"../../\" } : undefined\n )\n },\n {\n loader: require.resolve(\"css-loader\"),\n options: cssOptions\n },\n {\n loader: require.resolve(\"postcss-loader\"),\n options: {\n ident: \"postcss\",\n plugins: () => [\n require(\"postcss-flexbugs-fixes\"),\n require(\"postcss-preset-env\")({\n autoprefixer: {\n flexbox: \"no-2009\"\n },\n stage: 3\n })\n ],\n sourceMap: shouldUseSourceMap\n }\n },\n {\n loader: require.resolve(\"less-loader\"),\n options: Object.assign(loaderOptions, {\n source: shouldUseSourceMap\n })\n }\n ];\n };\n\n const loaders = config.module.rules.find(rule => Array.isArray(rule.oneOf))\n .oneOf;\n\n // Insert less-loader as the penultimate item of loaders (before file-loader)\n loaders.splice(\n loaders.length - 1,\n 0,\n {\n test: lessRegex,\n exclude: lessModuleRegex,\n use: getLessLoader({\n importLoaders: 2\n }),\n sideEffects: mode === \"prod\"\n },\n {\n test: lessModuleRegex,\n use: getLessLoader({\n importLoaders: 2,\n modules: true,\n localIdentName: localIdentName\n })\n }\n );\n\n return config;\n};\n\n// to be used inside `overrideDevServer`, makes CRA watch all the folders\n// included `node_modules`, useful when you are working with linked packages\n// usage: `yarn start --watch-all`\nexport const watchAll = () => config => {\n if (process.argv.includes(\"--watch-all\")) {\n delete config.watchOptions;\n }\n return config;\n};\n\n// to be used to disable chunk according to:\n// https://github.com/facebook/create-react-app/issues/5306#issuecomment-433425838\nexport const disableChunk = () => config => {\n config.optimization.splitChunks = {\n cacheGroups: {\n default: false\n }\n };\n\n config.optimization.runtimeChunk = false;\n\n return config;\n};\n\n// to be used to ignore replace packages with global variable\n// Useful when trying to offload libs to CDN\nexport const addWebpackExternals = externalDeps => config => {\n let externals = config.externals;\n if (!externals) {\n externals = externalDeps;\n } else if (Array.isArray(externalDeps)) {\n externals = externalDeps.concat(externals);\n } else if (\n Array.isArray(externals) ||\n externalDeps.constructor === Function ||\n externalDeps.constructor === RegExp\n ) {\n externals = [externalDeps].concat(externals);\n } else if (externalDeps instanceof Object && externals instanceof Object) {\n externals = {\n ...externals,\n ...externalDeps\n };\n }\n\n config.externals = externals;\n return config;\n};\n\nexport const addPostcssPlugins = plugins => config => {\n const rules = config.module.rules.find(rule => Array.isArray(rule.oneOf))\n .oneOf;\n rules.forEach(\n r =>\n r.use &&\n r.use.forEach(u => {\n if (u.options && u.options.ident === \"postcss\") {\n if (!u.options.plugins) {\n u.options.plugins = () => [...plugins];\n }\n if (u.options.plugins) {\n const originalPlugins = u.options.plugins;\n u.options.plugins = () => [...originalPlugins(), ...plugins];\n }\n }\n })\n );\n return config;\n};\n\n// This will remove the CRA plugin that prevents to import modules from\n// outside the `src` directory, useful if you use a different directory\nexport const removeModuleScopePlugin = () => config => {\n config.resolve.plugins = config.resolve.plugins.filter(\n p => p.constructor.name !== \"ModuleScopePlugin\"\n );\n return config;\n};\n\n/**\n * Add the provided module to the webpack module rules array.\n *\n * @param rule The rule to be added\n * @see https://webpack.js.org/configuration/module/#modulerules\n */\nexport const addWebpackModuleRule = rule => config => {\n for (let _rule of config.module.rules) {\n if (_rule.oneOf) {\n _rule.oneOf.unshift(rule);\n break;\n }\n }\n return config;\n};\n\nexport const addTslintLoader = options => config => {\n config.module.rules.unshift({\n test: /\\.(ts|tsx)$/,\n loader: \"tslint-loader\",\n options,\n enforce: \"pre\"\n });\n return config;\n};\n\n/**\n * Override the webpack target.\n *\n * @param target What to set the webpack target as (can be string or function).\n *\n * @see https://webpack.js.org/configuration/target/\n */\nexport const setWebpackTarget = target => config => {\n config.target = target;\n return config;\n};\n\n/**\n * override the webpack publicPath\n *\n * @param path What to set the webpack publicPath as.\n * @see https://webpack.js.org/configuration/output/#outputpublicpath\n */\nexport const setWebpackPublicPath = path => config => {\n if (path) {\n if (!(path.startsWith(\"http\") || path.startsWith(\"https\"))) {\n if (!path.startsWith(\"/\")) {\n path = \"/\" + path;\n }\n }\n if (!path.endsWith(\"/\")) {\n path = path + \"/\";\n }\n config.output.publicPath = path;\n }\n return config;\n};\n\n/**\n * override the webpack optimization.splitChunks\n *\n * @param configuration of optimization.splitChunks\n * @see https://webpack.js.org/plugins/split-chunks-plugin/\n */\nexport const setWebpackOptimizationSplitChunks = splitChunks => config => {\n if (splitChunks && typeof splitChunks === \"object\") {\n config.optimization.splitChunks = splitChunks;\n }\n return config;\n};\n\n/**\n * Sets the `stats` object in Webpack config\n * This may not work in development mode\n *\n * @param stats Stats configuration in Webpack\n * @see https://webpack.js.org/configuration/stats/\n */\nexport const setWebpackStats = stats => config => {\n config.stats = stats;\n return config;\n};\n","import { getBabelLoader } from \"../utilities\";\n\nexport const addBabelPlugin = plugin => config => {\n getBabelLoader(config).options.plugins.push(plugin);\n return config;\n};\n\nexport const addExternalBabelPlugin = plugin => config => {\n const outsideBabelOptions = getBabelLoader(config, true).options;\n if (!outsideBabelOptions.plugins) {\n outsideBabelOptions.plugins = [];\n }\n outsideBabelOptions.plugins.push(plugin);\n return config;\n};\n\nexport const addBabelPreset = preset => config => {\n getBabelLoader(config).options.presets.push(preset);\n return config;\n};\n\nexport const addDecoratorsLegacy = () => config =>\n addBabelPlugin([\"@babel/plugin-proposal-decorators\", { legacy: true }])(\n config\n );\n\nexport const useBabelRc = () => config => {\n getBabelLoader(config).options.babelrc = true;\n return config;\n};\n\nexport const babelInclude = include => config => {\n getBabelLoader(config).include = include;\n return config;\n};\n\n/**\n * Replaces the `exclude` option of `babel-loader`.\n * @param exclude The new `exclude` value.\n */\nexport const babelExclude = exclude => config => {\n getBabelLoader(config).exclude = exclude;\n return config;\n};\n\nexport const addBabelPlugins = (...plugins) =>\n plugins.map(p => addBabelPlugin(p));\n\nexport const addExternalBabelPlugins = (...plugins) =>\n plugins.map(p => addExternalBabelPlugin(p));\n\nexport const addBabelPresets = (...plugins) =>\n plugins.map(p => addBabelPreset(p));\n\nexport const fixBabelImports = (libraryName, options) =>\n addBabelPlugin([\n \"import\",\n Object.assign(\n {},\n {\n libraryName\n },\n options\n ),\n `fix-${libraryName}-imports`\n ]);\n\nexport const removeInternalBabelPlugin = pluginName => config => {\n config.plugins = config.plugins.filter(p => p.constructor.name !== pluginName);\n return config;\n};\n","import flow from \"lodash.flow\";\n\nexport const override = (...plugins) => flow(...plugins.filter(f => f));\n\n// Use this helper to override the webpack dev server settings\n// it works just like the `override` utility\nexport const overrideDevServer = (...plugins) => configFunction => (\n proxy,\n allowedHost\n) => {\n const config = configFunction(proxy, allowedHost);\n const updatedConfig = override(...plugins)(config);\n return updatedConfig;\n};\n"],"names":["getBabelLoader","config","isOutsideOfApp","babelLoaderFilter","rule","loader","includes","exclude","include","loaders","module","rules","find","Array","isArray","oneOf","babelLoader","reduce","ldrs","concat","use","tap","options","message","dest","print","push","JSON","stringify","require","appendFile","join","forEach","sentence","console","log","addBundleVisualizer","behindFlag","BundleAnalyzerPlugin","process","argv","plugins","Object","assign","analyzerMode","reportFilename","disableEsLint","filter","r","some","u","useEslintrc","addWebpackAlias","alias","resolve","addWebpackResolve","addWebpackPlugin","plugin","adjustWorkbox","adjust","p","constructor","name","adjustStyleLoaders","callback","env","NODE_ENV","useEslintRc","configFile","eslintRule","ignore","baseConfig","map","enableEslintTypescript","test","addLessLoader","loaderOptions","mode","shouldUseRelativeAssetPaths","servedPath","shouldUseSourceMap","GENERATE_SOURCEMAP","lessModuleRegex","localIdentName","getLessLoader","cssOptions","publicPath","undefined","ident","autoprefixer","flexbox","stage","sourceMap","source","splice","length","importLoaders","sideEffects","modules","watchAll","watchOptions","disableChunk","optimization","splitChunks","cacheGroups","default","runtimeChunk","addWebpackExternals","externalDeps","externals","Function","RegExp","addPostcssPlugins","originalPlugins","removeModuleScopePlugin","addWebpackModuleRule","_rule","unshift","addTslintLoader","enforce","setWebpackTarget","target","setWebpackPublicPath","path","startsWith","endsWith","output","setWebpackOptimizationSplitChunks","setWebpackStats","stats","addBabelPlugin","addExternalBabelPlugin","outsideBabelOptions","addBabelPreset","preset","presets","addDecoratorsLegacy","legacy","useBabelRc","babelrc","babelInclude","babelExclude","addBabelPlugins","addExternalBabelPlugins","addBabelPresets","fixBabelImports","libraryName","removeInternalBabelPlugin","pluginName","override","flow","f","overrideDevServer","configFunction","proxy","allowedHost"],"mappings":"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"}