diff --git a/index.js b/index.js index be4b35c0..080883ad 100644 --- a/index.js +++ b/index.js @@ -1491,7 +1491,7 @@ 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: * diff --git a/lib/config-generator.js b/lib/config-generator.js index 6592b8bd..b6406269 100644 --- a/lib/config-generator.js +++ b/lib/config-generator.js @@ -28,7 +28,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'); @@ -40,6 +39,7 @@ const PluginPriorities = require('./plugins/plugin-priorities'); const applyOptionsCallback = require('./utils/apply-options-callback'); const copyEntryTmpName = require('./utils/copyEntryTmpName'); const getVueVersion = require('./utils/get-vue-version'); +const multimatch = require('multimatch'); const tmp = require('tmp'); const fs = require('fs'); const path = require('path'); @@ -244,6 +244,7 @@ class ConfigGenerator { } return { + clean: this.buildCleanConfig(), path: this.webpackConfig.outputPath, filename: filename, // default "asset module" filename @@ -256,6 +257,26 @@ class ConfigGenerator { }; } + /** + * @returns {import('webpack').CleanOptions|boolean} + */ + buildCleanConfig() { + if (!this.webpackConfig.cleanupOutput) { + return false; + } + + const cleanedPaths = [].concat(this.webpackConfig.cleanWebpackPluginPaths); + // works around a bug where manifest.json is emitted when + // using dev-server... but then CleanWebpackPlugin deletes it + cleanedPaths.push('!manifest.json'); + + const cleanConfig = { + keep: (path)=> multimatch(path, cleanedPaths).length === 0 + }; + + return applyOptionsCallback(this.webpackConfig.cleanWebpackPluginOptionsCallback, cleanConfig); + } + buildRulesConfig() { const applyRuleConfigurationCallback = (name, defaultRules) => { return applyOptionsCallback(this.webpackConfig.loaderConfigurationCallbacks[name], defaultRules); @@ -457,8 +478,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 981a7a6c..00000000 --- a/lib/plugins/clean.js +++ /dev/null @@ -1,48 +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 WebpackConfig = require('../WebpackConfig'); //eslint-disable-line no-unused-vars -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 - * @return {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 80b627af..89a4d6c7 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 a9771421..2ee7edde 100755 --- a/package.json +++ b/package.json @@ -31,11 +31,11 @@ "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", "mini-css-extract-plugin": "^2.6.0", + "multimatch": "^5", "pretty-error": "^4.0.0", "resolve-url-loader": "^5.0.0", "semver": "^7.3.2", diff --git a/test/config-generator.js b/test/config-generator.js index b44f9e90..a8000101 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.be.haveOwnProperty('keep'); }); }); diff --git a/test/plugins/clean.js b/test/plugins/clean.js deleted file mode 100644 index d2c7dc36..00000000 --- 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 e5a4d045..496c0cf5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1384,14 +1384,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" @@ -1443,10 +1435,10 @@ 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/minimatch@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node-forge@^1.3.0": version "1.3.11" @@ -2078,6 +2070,11 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + array-equal@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.2.tgz#a8572e64e822358271250b9156d20d96ef5dec04" @@ -2107,17 +2104,10 @@ 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-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.findlastindex@^1.2.3: version "1.2.3" @@ -2163,6 +2153,11 @@ arraybuffer.prototype.slice@^1.0.2: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" @@ -2565,13 +2560,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" @@ -3037,19 +3025,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" @@ -3989,7 +3964,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== @@ -4020,17 +3995,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" @@ -4487,25 +4451,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" @@ -5181,6 +5126,17 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" +multimatch@^5: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + nanoid@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" @@ -5286,7 +5242,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== @@ -5450,11 +5406,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" @@ -5515,11 +5466,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" @@ -5579,28 +5525,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" @@ -6265,13 +6194,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"