From 34f8e0b06d06ab22994175ec0a62473922ca6cf1 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Fri, 30 Aug 2024 13:50:18 +0200 Subject: [PATCH] Replace clean-webpack-plugin with the core output cleaning feature --- CHANGELOG.md | 6 +- index.js | 11 ++- lib/WebpackConfig.js | 18 ++--- lib/config-generator.js | 15 +++- lib/plugins/clean.js | 51 -------------- lib/plugins/plugin-priorities.js | 1 - package.json | 1 - test/WebpackConfig.js | 18 ++--- test/config-generator.js | 9 +-- test/plugins/clean.js | 80 ---------------------- yarn.lock | 113 +------------------------------ 11 files changed, 35 insertions(+), 288 deletions(-) delete mode 100644 lib/plugins/clean.js delete mode 100644 test/plugins/clean.js diff --git a/CHANGELOG.md b/CHANGELOG.md index eaf001dca..061ca4817 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,10 @@ This is a new major version that contains several backwards-compatibility breaks * #1308 Drop Vue 2 support (End-Of-Life), only Vue 3 is supported (@Kocal) -* #1309 Drop ESLint integration (@Kocal) +* #1309 Drop ESLint integration (@Kocal) + +* #1313 Drop `clean-webpack-plugin` in favor of webpack's `output.clean` configuration. The + configuration settings supported by `Encore.cleanupOutputBeforeBuild` have changed (@stof) ## 4.7.0 @@ -992,4 +995,3 @@ for a full description of all of the valid browser descriptions. * `Encore.cleanupOutputBeforeBuild()` now empties the directory instead or removing it. - diff --git a/index.js b/index.js index d60e30099..0344c3671 100644 --- a/index.js +++ b/index.js @@ -1491,22 +1491,21 @@ class Encore { /** * If enabled, the output directory is emptied between each build (to remove old files). * - * A list of available options can be found at https://github.com/johnagan/clean-webpack-plugin + * A list of available options can be found at https://webpack.js.org/configuration/output/#outputclean * * For example: * * ``` - * Encore.cleanupOutputBeforeBuild(['*.js'], (options) => { + * Encore.cleanupOutputBeforeBuild((options) => { * options.dry = true; * }) * ``` * - * @param {Array} paths Paths that should be cleaned, relative to the "root" option - * @param {Function} cleanWebpackPluginOptionsCallback + * @param {Function} cleanOptionsCallback * @returns {Encore} */ - cleanupOutputBeforeBuild(paths = ['**/*'], cleanWebpackPluginOptionsCallback = () => {}) { - webpackConfig.cleanupOutputBeforeBuild(paths, cleanWebpackPluginOptionsCallback); + cleanupOutputBeforeBuild(cleanOptionsCallback = () => {}) { + webpackConfig.cleanupOutputBeforeBuild(cleanOptionsCallback); return this; } diff --git a/lib/WebpackConfig.js b/lib/WebpackConfig.js index 8e7f64172..63bf5f9c9 100644 --- a/lib/WebpackConfig.js +++ b/lib/WebpackConfig.js @@ -154,11 +154,8 @@ class WebpackConfig { svelte: () => {}, }; - // Plugins options - this.cleanWebpackPluginPaths = ['**/*']; - // Plugins callbacks - this.cleanWebpackPluginOptionsCallback = () => {}; + this.cleanOptionsCallback = () => {}; this.definePluginOptionsCallback = () => {}; this.forkedTypeScriptTypesCheckOptionsCallback = () => {}; this.friendlyErrorsPluginOptionsCallback = () => {}; @@ -844,18 +841,13 @@ class WebpackConfig { this.fontRuleCallback = ruleCallback; } - cleanupOutputBeforeBuild(paths = ['**/*'], cleanWebpackPluginOptionsCallback = () => {}) { - if (!Array.isArray(paths)) { - throw new Error('Argument 1 to cleanupOutputBeforeBuild() must be an Array of paths - e.g. [\'**/*\']'); - } - - if (typeof cleanWebpackPluginOptionsCallback !== 'function') { - throw new Error('Argument 2 to cleanupOutputBeforeBuild() must be a callback function'); + cleanupOutputBeforeBuild(cleanOptionsCallback = () => {}) { + if (typeof cleanOptionsCallback !== 'function') { + throw new Error('Argument 1 to cleanupOutputBeforeBuild() must be a callback function'); } this.cleanupOutput = true; - this.cleanWebpackPluginPaths = paths; - this.cleanWebpackPluginOptionsCallback = cleanWebpackPluginOptionsCallback; + this.cleanOptionsCallback = cleanOptionsCallback; } autoProvideVariables(variables) { diff --git a/lib/config-generator.js b/lib/config-generator.js index 52c7146ad..31fd4c5f6 100644 --- a/lib/config-generator.js +++ b/lib/config-generator.js @@ -31,7 +31,6 @@ const deleteUnusedEntriesPluginUtil = require('./plugins/delete-unused-entries') const entryFilesManifestPlugin = require('./plugins/entry-files-manifest'); const manifestPluginUtil = require('./plugins/manifest'); const variableProviderPluginUtil = require('./plugins/variable-provider'); -const cleanPluginUtil = require('./plugins/clean'); const definePluginUtil = require('./plugins/define'); const terserPluginUtil = require('./plugins/terser'); const optimizeCssAssetsUtil = require('./plugins/optimize-css-assets'); @@ -247,6 +246,7 @@ class ConfigGenerator { } return { + clean: this.buildCleanConfig(), path: this.webpackConfig.outputPath, filename: filename, // default "asset module" filename @@ -259,6 +259,17 @@ class ConfigGenerator { }; } + /** + * @returns {import('webpack').CleanOptions|boolean} + */ + buildCleanConfig() { + if (!this.webpackConfig.cleanupOutput) { + return false; + } + + return applyOptionsCallback(this.webpackConfig.cleanOptionsCallback, {}); + } + buildRulesConfig() { const applyRuleConfigurationCallback = (name, defaultRules) => { return applyOptionsCallback(this.webpackConfig.loaderConfigurationCallbacks[name], defaultRules); @@ -460,8 +471,6 @@ class ConfigGenerator { variableProviderPluginUtil(plugins, this.webpackConfig); - cleanPluginUtil(plugins, this.webpackConfig); - definePluginUtil(plugins, this.webpackConfig); notifierPluginUtil(plugins, this.webpackConfig); diff --git a/lib/plugins/clean.js b/lib/plugins/clean.js deleted file mode 100644 index 1d371e035..000000000 --- a/lib/plugins/clean.js +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of the Symfony Webpack Encore package. - * - * (c) Fabien Potencier - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -'use strict'; - -/** - * @import WebpackConfig from '../WebpackConfig' - */ - -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); -const PluginPriorities = require('./plugin-priorities'); -const applyOptionsCallback = require('../utils/apply-options-callback'); - -/** - * Updates plugins array passed adding CleanWebpackPlugin instance - * - * @param {Array} plugins to push to - * @param {WebpackConfig} webpackConfig read only variable - * @returns {void} - */ -module.exports = function(plugins, webpackConfig) { - - if (!webpackConfig.cleanupOutput) { - return; - } - - const cleanOnceBeforeBuildPatterns = webpackConfig.cleanWebpackPluginPaths; - // works around a bug where manifest.json is emitted when - // using dev-server... but then CleanWebpackPlugin deletes it - cleanOnceBeforeBuildPatterns.push('!manifest.json'); - - const cleanWebpackPluginOptions = { - verbose: false, - cleanOnceBeforeBuildPatterns: webpackConfig.cleanWebpackPluginPaths, - // disabled to avoid a bug where some files were incorrectly deleted on watch rebuild - cleanStaleWebpackAssets: false - }; - - plugins.push({ - plugin: new CleanWebpackPlugin( - applyOptionsCallback(webpackConfig.cleanWebpackPluginOptionsCallback, cleanWebpackPluginOptions) - ), - priority: PluginPriorities.CleanWebpackPlugin - }); -}; diff --git a/lib/plugins/plugin-priorities.js b/lib/plugins/plugin-priorities.js index 80b627af4..89a4d6c72 100644 --- a/lib/plugins/plugin-priorities.js +++ b/lib/plugins/plugin-priorities.js @@ -15,7 +15,6 @@ module.exports = { WebpackManifestPlugin: 120, LoaderOptionsPlugin: 110, ProvidePlugin: 90, - CleanWebpackPlugin: 80, DefinePlugin: 70, WebpackNotifier: 60, VueLoaderPlugin: 50, diff --git a/package.json b/package.json index f0aee60ad..218f5dd57 100755 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "assets-webpack-plugin": "7.0.*", "babel-loader": "^9.1.3", "chalk": "^4.0.0", - "clean-webpack-plugin": "^4.0.0", "css-loader": "^6.7.0", "css-minimizer-webpack-plugin": "^5.0.0", "fastest-levenshtein": "^1.0.16", diff --git a/test/WebpackConfig.js b/test/WebpackConfig.js index b26e90d3d..c3b8836cd 100644 --- a/test/WebpackConfig.js +++ b/test/WebpackConfig.js @@ -225,33 +225,23 @@ describe('WebpackConfig object', () => { config.cleanupOutputBeforeBuild(); expect(config.cleanupOutput).to.be.true; - expect(config.cleanWebpackPluginPaths).to.deep.equal(['**/*']); }); it('Setting paths and callback', () => { const config = createConfig(); const callback = () => {}; - config.cleanupOutputBeforeBuild(['**/*.js', '**/*.css'], callback); + config.cleanupOutputBeforeBuild(callback); expect(config.cleanupOutput).to.be.true; - expect(config.cleanWebpackPluginPaths).to.deep.equal(['**/*.js', '**/*.css']); - expect(config.cleanWebpackPluginOptionsCallback).to.equal(callback); - }); - - it('Setting invalid paths argument', () => { - const config = createConfig(); - - expect(() => { - config.cleanupOutputBeforeBuild('foo', () => {}); - }).to.throw('Argument 1 to cleanupOutputBeforeBuild() must be an Array of paths'); + expect(config.cleanOptionsCallback).to.equal(callback); }); it('Setting invalid callback argument', () => { const config = createConfig(); expect(() => { - config.cleanupOutputBeforeBuild(['**/*'], 'foo'); - }).to.throw('Argument 2 to cleanupOutputBeforeBuild() must be a callback function'); + config.cleanupOutputBeforeBuild('foo'); + }).to.throw('Argument 1 to cleanupOutputBeforeBuild() must be a callback function'); }); }); diff --git a/test/config-generator.js b/test/config-generator.js index b44f9e904..920fd0ea3 100644 --- a/test/config-generator.js +++ b/test/config-generator.js @@ -15,7 +15,6 @@ const RuntimeConfig = require('../lib/config/RuntimeConfig'); const configGenerator = require('../lib/config-generator'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const { WebpackManifestPlugin } = require('../lib/webpack-manifest-plugin'); -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const webpack = require('webpack'); const path = require('path'); const logger = require('../lib/logger'); @@ -534,7 +533,7 @@ describe('The config-generator function', () => { }); }); - describe('cleanupOutputBeforeBuild() adds CleanWebpackPlugin', () => { + describe('cleanupOutputBeforeBuild() configures output cleaning', () => { it('without cleanupOutputBeforeBuild()', () => { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; @@ -543,8 +542,7 @@ describe('The config-generator function', () => { const actualConfig = configGenerator(config); - const cleanPlugin = findPlugin(CleanWebpackPlugin, actualConfig.plugins); - expect(cleanPlugin).to.be.undefined; + expect(actualConfig.output.clean).to.be.false; }); it('with cleanupOutputBeforeBuild()', () => { @@ -556,8 +554,7 @@ describe('The config-generator function', () => { const actualConfig = configGenerator(config); - const cleanPlugin = findPlugin(CleanWebpackPlugin, actualConfig.plugins); - expect(cleanPlugin).to.not.be.undefined; + expect(actualConfig.output.clean).to.deep.equals({}); }); }); diff --git a/test/plugins/clean.js b/test/plugins/clean.js deleted file mode 100644 index d2c7dc361..000000000 --- a/test/plugins/clean.js +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of the Symfony Webpack Encore package. - * - * (c) Fabien Potencier - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -'use strict'; - -const expect = require('chai').expect; -const { CleanWebpackPlugin } = require('clean-webpack-plugin'); -const WebpackConfig = require('../../lib/WebpackConfig'); -const RuntimeConfig = require('../../lib/config/RuntimeConfig'); -const cleanPluginUtil = require('../../lib/plugins/clean'); - -function createConfig() { - const runtimeConfig = new RuntimeConfig(); - runtimeConfig.context = __dirname; - runtimeConfig.babelRcFileExists = false; - - return new WebpackConfig(runtimeConfig); -} - -describe('plugins/clean', () => { - it('disabled', () => { - const config = createConfig(); - const plugins = []; - - cleanPluginUtil(plugins, config); - expect(plugins.length).to.equal(0); - }); - - it('enabled with default settings', () => { - const config = createConfig(); - const plugins = []; - - config.cleanupOutputBeforeBuild(); - - cleanPluginUtil(plugins, config); - expect(plugins.length).to.equal(1); - expect(plugins[0].plugin).to.be.instanceof(CleanWebpackPlugin); - expect(plugins[0].plugin.cleanOnceBeforeBuildPatterns).to.deep.equal(['**/*', '!manifest.json']); - expect(plugins[0].plugin.dry).to.equal(false); - }); - - it('enabled with custom paths and options callback', () => { - const config = createConfig(); - const plugins = []; - - config.cleanupOutputBeforeBuild(['**/*.js', '**/*.css'], (options) => { - options.dry = true; - }); - - cleanPluginUtil(plugins, config); - expect(plugins.length).to.equal(1); - expect(plugins[0].plugin).to.be.instanceof(CleanWebpackPlugin); - expect(plugins[0].plugin.cleanOnceBeforeBuildPatterns).to.deep.equal(['**/*.js', '**/*.css', '!manifest.json']); - expect(plugins[0].plugin.dry).to.equal(true); - }); - - it('enabled with an options callback that returns an object', () => { - const config = createConfig(); - const plugins = []; - - config.cleanupOutputBeforeBuild(['**/*.js', '**/*.css'], (options) => { - options.dry = true; - - // This should override the original config - return { verbose: true }; - }); - - cleanPluginUtil(plugins, config); - expect(plugins.length).to.equal(1); - expect(plugins[0].plugin).to.be.instanceof(CleanWebpackPlugin); - expect(plugins[0].plugin.dry).to.equal(false); - expect(plugins[0].plugin.verbose).to.equal(true); - }); -}); diff --git a/yarn.lock b/yarn.lock index 1b21cca60..dd36ed739 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1398,14 +1398,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - "@types/http-errors@*": version "2.0.4" resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" @@ -1457,11 +1449,6 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/node-forge@^1.3.0": version "1.3.11" resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" @@ -2131,18 +2118,6 @@ array-includes@^3.1.7: get-intrinsic "^1.2.1" is-string "^1.0.7" -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== - array.prototype.findlastindex@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" @@ -2589,13 +2564,6 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -clean-webpack-plugin@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz#72947d4403d452f38ed61a9ff0ada8122aacd729" - integrity sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w== - dependencies: - del "^4.1.1" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -3073,19 +3041,6 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -4068,7 +4023,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.1.3, glob@^7.1.6: +glob@^7.1.3, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4099,17 +4054,6 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -4566,25 +4510,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -5370,7 +5295,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -5534,11 +5459,6 @@ p-locate@^6.0.0: dependencies: p-limit "^4.0.0" -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - p-retry@^4.5.0: version "4.6.2" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" @@ -5607,11 +5527,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -5671,28 +5586,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -6357,13 +6255,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"