diff --git a/lib/router/index.js b/lib/router/index.js index 94586c780a2c9..8de6d185308d2 100644 --- a/lib/router/index.js +++ b/lib/router/index.js @@ -1,70 +1,75 @@ /* global window */ import _Router from './router' -import { execOnce } from '../utils' - -const SingletonRouter = { - router: null, // holds the actual router instance - readyCallbacks: [], - ready (cb) { - if (this.router) return cb() - if (typeof window !== 'undefined') { - this.readyCallbacks.push(cb) - } - } -} + +let SingletonRouter + +console.trace('routerr') // Create public properties and methods of the router in the SingletonRouter const propertyFields = ['components', 'pathname', 'route', 'query', 'asPath'] const routerEvents = ['routeChangeStart', 'beforeHistoryChange', 'routeChangeComplete', 'routeChangeError'] const coreMethodFields = ['push', 'replace', 'reload', 'back', 'prefetch', 'beforePopState'] -propertyFields.forEach((field) => { - // Here we need to use Object.defineProperty because, we need to return - // the property assigned to the actual router - // The value might get changed as we change routes and this is the - // proper way to access it - Object.defineProperty(SingletonRouter, field, { - get () { +function initialRouter () { + SingletonRouter = { + router: null, // holds the actual router instance + readyCallbacks: [], + ready (cb) { + if (this.router) return cb() + if (typeof window !== 'undefined') { + this.readyCallbacks.push(cb) + } + } + } + + propertyFields.forEach((field) => { + // Here we need to use Object.defineProperty because, we need to return + // the property assigned to the actual router + // The value might get changed as we change routes and this is the + // proper way to access it + Object.defineProperty(SingletonRouter, field, { + get () { + throwIfNoRouter() + return SingletonRouter.router[field] + } + }) + }) + + coreMethodFields.forEach((field) => { + SingletonRouter[field] = (...args) => { throwIfNoRouter() - return SingletonRouter.router[field] + return SingletonRouter.router[field](...args) } }) -}) -coreMethodFields.forEach((field) => { - SingletonRouter[field] = (...args) => { - throwIfNoRouter() - return SingletonRouter.router[field](...args) - } -}) - -routerEvents.forEach((event) => { - SingletonRouter.ready(() => { - SingletonRouter.router.events.on(event, (...args) => { - const eventField = `on${event.charAt(0).toUpperCase()}${event.substring(1)}` - if (SingletonRouter[eventField]) { - try { - SingletonRouter[eventField](...args) - } catch (err) { - console.error(`Error when running the Router event: ${eventField}`) - console.error(`${err.message}\n${err.stack}`) + routerEvents.forEach((event) => { + SingletonRouter.ready(() => { + SingletonRouter.router.events.on(event, (...args) => { + const eventField = `on${event.charAt(0).toUpperCase()}${event.substring(1)}` + if (SingletonRouter[eventField]) { + try { + SingletonRouter[eventField](...args) + } catch (err) { + console.error(`Error when running the Router event: ${eventField}`) + console.error(`${err.message}\n${err.stack}`) + } } - } + }) }) }) -}) - -const warnAboutRouterOnAppUpdated = execOnce(() => { - console.warn(`Router.onAppUpdated is removed - visit https://err.sh/next.js/no-on-app-updated-hook for more information.`) -}) -Object.defineProperty(SingletonRouter, 'onAppUpdated', { - get () { return null }, - set () { - warnAboutRouterOnAppUpdated() - return null + if (typeof window !== 'undefined') { + window.__NEXT_ROUTER__ = SingletonRouter } -}) +} + +// If SSR or window.__NEXT_ROUTER__ is not set yet, run initialRouter() +// This is to share state across all router requires +if (typeof window === 'undefined' || (typeof window !== 'undefined' && !window.__NEXT_ROUTER__)) { + initialRouter() +} else { + SingletonRouter = window.__NEXT_ROUTER__ +} function throwIfNoRouter () { if (!SingletonRouter.router) { diff --git a/package.json b/package.json index 6b098e238bee6..592112e3c085b 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "url": "0.11.0", "uuid": "3.1.0", "walk": "2.3.9", - "webpack": "3.10.0", + "webpack": "4.5.0", "webpack-dev-middleware": "1.12.0", "webpack-hot-middleware": "2.19.1", "webpack-sources": "1.1.0", diff --git a/server/build/plugins/pages-plugin.js b/server/build/plugins/pages-plugin.js index 8d111c78d4630..ad5de8c493391 100644 --- a/server/build/plugins/pages-plugin.js +++ b/server/build/plugins/pages-plugin.js @@ -45,7 +45,7 @@ class PageChunkTemplatePlugin { export default class PagesPlugin { apply (compiler) { compiler.plugin('compilation', (compilation) => { - compilation.chunkTemplate.apply(new PageChunkTemplatePlugin()) + compilation.mainTemplate.apply(new PageChunkTemplatePlugin()) }) } } diff --git a/server/build/webpack.js b/server/build/webpack.js index ebc466a2d77f4..30739235f85b1 100644 --- a/server/build/webpack.js +++ b/server/build/webpack.js @@ -1,4 +1,4 @@ -import path, {sep} from 'path' +import path from 'path' import webpack from 'webpack' import resolve from 'resolve' import UglifyJSPlugin from 'uglifyjs-webpack-plugin' @@ -115,7 +115,28 @@ export default async function getBaseWebpackConfig (dir, {dev = false, isServer ].filter(Boolean) } : {} + function optimization ({dev, isServer}) { + if (isServer) { + return {} + } + + return { + splitChunks: { + cacheGroups: { + commons: { + test: /(node_modules\/(react|react-dom|core-js|next)|next\.js\/dist)/, + chunks: 'all', + priority: 10, + name: 'vendor.js' + } + } + } + } + } + let webpackConfig = { + optimization: optimization({dev, isServer}), + mode: dev ? 'development' : 'production', devtool: dev ? 'source-map' : false, name: isServer ? 'server' : 'client', cache: true, @@ -135,7 +156,7 @@ export default async function getBaseWebpackConfig (dir, {dev = false, isServer filename: '[name]', libraryTarget: 'commonjs2', // This saves chunks with the name given via require.ensure() - chunkFilename: '[name]-[chunkhash].js', + chunkFilename: dev ? '[name]' : '[name]-[chunkhash].js', strictModuleExceptionHandling: true, devtoolModuleFilenameTemplate (info) { if (dev) { @@ -261,45 +282,45 @@ export default async function getBaseWebpackConfig (dir, {dev = false, isServer isServer && new PagesManifestPlugin(), !isServer && new PagesPlugin(), !isServer && new DynamicChunksPlugin(), - isServer && new NextJsSsrImportPlugin(), + isServer && new NextJsSsrImportPlugin() // In dev mode, we don't move anything to the commons bundle. // In production we move common modules into the existing main.js bundle - !isServer && new webpack.optimize.CommonsChunkPlugin({ - name: 'main.js', - filename: 'main.js', - minChunks (module, count) { - // React and React DOM are used everywhere in Next.js. So they should always be common. Even in development mode, to speed up compilation. - if (module.resource && module.resource.includes(`${sep}react-dom${sep}`) && count >= 0) { - return true - } + // !isServer && new webpack.optimize.CommonsChunkPlugin({ + // name: 'main.js', + // filename: 'main.js', + // minChunks (module, count) { + // // React and React DOM are used everywhere in Next.js. So they should always be common. Even in development mode, to speed up compilation. + // if (module.resource && module.resource.includes(`${sep}react-dom${sep}`) && count >= 0) { + // return true + // } - if (module.resource && module.resource.includes(`${sep}react${sep}`) && count >= 0) { - return true - } + // if (module.resource && module.resource.includes(`${sep}react${sep}`) && count >= 0) { + // return true + // } - // In the dev we use on-demand-entries. - // So, it makes no sense to use commonChunks based on the minChunks count. - // Instead, we move all the code in node_modules into each of the pages. - if (dev) { - return false - } + // // In the dev we use on-demand-entries. + // // So, it makes no sense to use commonChunks based on the minChunks count. + // // Instead, we move all the code in node_modules into each of the pages. + // if (dev) { + // return false + // } - // commons - // If there are one or two pages, only move modules to common if they are - // used in all of the pages. Otherwise, move modules used in at-least - // 1/2 of the total pages into commons. - if (totalPages <= 2) { - return count >= totalPages - } - return count >= totalPages * 0.5 - // commons end - } - }), - // We use a manifest file in development to speed up HMR - dev && !isServer && new webpack.optimize.CommonsChunkPlugin({ - name: 'manifest', - filename: 'manifest.js' - }) + // // commons + // // If there are one or two pages, only move modules to common if they are + // // used in all of the pages. Otherwise, move modules used in at-least + // // 1/2 of the total pages into commons. + // if (totalPages <= 2) { + // return count >= totalPages + // } + // return count >= totalPages * 0.5 + // // commons end + // } + // }), + // // We use a manifest file in development to speed up HMR + // dev && !isServer && new webpack.optimize.CommonsChunkPlugin({ + // name: 'manifest', + // filename: 'manifest.js' + // }) ].filter(Boolean) } diff --git a/server/document.js b/server/document.js index 3ab9eda757ae3..ee19e7311b1fe 100644 --- a/server/document.js +++ b/server/document.js @@ -58,7 +58,7 @@ export class Head extends Component { const { dev } = this.context._documentProps if (dev) { return [ - this.getChunkPreloadLink('manifest.js'), + this.getChunkPreloadLink('vendor.js'), this.getChunkPreloadLink('main.js') ] } @@ -142,7 +142,7 @@ export class NextScript extends Component { const { dev } = this.context._documentProps if (dev) { return [ - this.getChunkScript('manifest.js'), + this.getChunkScript('vendor.js'), this.getChunkScript('main.js') ] } diff --git a/server/index.js b/server/index.js index 32249c12ced14..9f94fee7f7136 100644 --- a/server/index.js +++ b/server/index.js @@ -162,19 +162,15 @@ export default class Server { await this.serveStatic(req, res, p) }, - '/_next/:buildId/manifest.js': async (req, res, params) => { - if (!this.dev) return this.send404(res) - + '/_next/:buildId/vendor.js': async (req, res, params) => { this.handleBuildId(params.buildId, res) - const p = join(this.dir, this.dist, 'manifest.js') + const p = join(this.dir, this.dist, 'vendor.js') await this.serveStatic(req, res, p) }, - '/_next/:buildId/manifest.js.map': async (req, res, params) => { - if (!this.dev) return this.send404(res) - + '/_next/:buildId/vendor.js.map': async (req, res, params) => { this.handleBuildId(params.buildId, res) - const p = join(this.dir, this.dist, 'manifest.js.map') + const p = join(this.dir, this.dist, 'vendor.js.map') await this.serveStatic(req, res, p) }, diff --git a/yarn.lock b/yarn.lock index 08cebf89e29fe..0cd4630719d2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,11 +8,11 @@ dependencies: "@babel/highlight" "7.0.0-beta.42" -"@babel/code-frame@7.0.0-beta.43", "@babel/code-frame@^7.0.0-beta.40": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.43.tgz#57281887da181b4f9a3e72151f54f3237bf011eb" +"@babel/code-frame@7.0.0-beta.44", "@babel/code-frame@^7.0.0-beta.40": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" dependencies: - "@babel/highlight" "7.0.0-beta.43" + "@babel/highlight" "7.0.0-beta.44" "@babel/core@7.0.0-beta.42": version "7.0.0-beta.42" @@ -35,16 +35,16 @@ source-map "^0.5.0" "@babel/core@^7.0.0-beta.42": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.43.tgz#2e5d50b338b1484f4de7a92047e65b88f3fd2eed" - dependencies: - "@babel/code-frame" "7.0.0-beta.43" - "@babel/generator" "7.0.0-beta.43" - "@babel/helpers" "7.0.0-beta.43" - "@babel/template" "7.0.0-beta.43" - "@babel/traverse" "7.0.0-beta.43" - "@babel/types" "7.0.0-beta.43" - babylon "7.0.0-beta.43" + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.44.tgz#90bb9e897427e7ebec2a1b857f458ff74ca28057" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helpers" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" convert-source-map "^1.1.0" debug "^3.1.0" json5 "^0.5.0" @@ -64,11 +64,11 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@7.0.0-beta.43": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.43.tgz#9f32baf9fe6a4a79872d1825bb7541ed992573ca" +"@babel/generator@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" dependencies: - "@babel/types" "7.0.0-beta.43" + "@babel/types" "7.0.0-beta.44" jsesc "^2.5.1" lodash "^4.2.0" source-map "^0.5.0" @@ -125,13 +125,13 @@ "@babel/template" "7.0.0-beta.42" "@babel/types" "7.0.0-beta.42" -"@babel/helper-function-name@7.0.0-beta.43": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.43.tgz#c1f521f0782a0e544fdfae2d88b6a2895a38a498" +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.43" - "@babel/template" "7.0.0-beta.43" - "@babel/types" "7.0.0-beta.43" + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" "@babel/helper-get-function-arity@7.0.0-beta.42": version "7.0.0-beta.42" @@ -139,11 +139,11 @@ dependencies: "@babel/types" "7.0.0-beta.42" -"@babel/helper-get-function-arity@7.0.0-beta.43": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.43.tgz#c00072b6d290ce037dc9037fe99037c7686a56e3" +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" dependencies: - "@babel/types" "7.0.0-beta.43" + "@babel/types" "7.0.0-beta.44" "@babel/helper-hoist-variables@7.0.0-beta.42": version "7.0.0-beta.42" @@ -222,11 +222,11 @@ dependencies: "@babel/types" "7.0.0-beta.42" -"@babel/helper-split-export-declaration@7.0.0-beta.43": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.43.tgz#1e95b16ce597df81ce1face60f5ea89a4631a7bf" +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" dependencies: - "@babel/types" "7.0.0-beta.43" + "@babel/types" "7.0.0-beta.44" "@babel/helper-wrap-function@7.0.0-beta.42": version "7.0.0-beta.42" @@ -245,13 +245,13 @@ "@babel/traverse" "7.0.0-beta.42" "@babel/types" "7.0.0-beta.42" -"@babel/helpers@7.0.0-beta.43": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.43.tgz#a45078bdd135012229c3bb209c86ef1f953ba041" +"@babel/helpers@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.44.tgz#b1cc87fdc3b77351c0a4860bcd9d4ef457919bfd" dependencies: - "@babel/template" "7.0.0-beta.43" - "@babel/traverse" "7.0.0-beta.43" - "@babel/types" "7.0.0-beta.43" + "@babel/template" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" "@babel/highlight@7.0.0-beta.42": version "7.0.0-beta.42" @@ -261,9 +261,9 @@ esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/highlight@7.0.0-beta.43": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.43.tgz#7bd0415ca160495a22b3a234f0841b4a9ab0de26" +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -657,13 +657,13 @@ babylon "7.0.0-beta.42" lodash "^4.2.0" -"@babel/template@7.0.0-beta.43": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.43.tgz#0d34fa1da16835b23dd136b942c753ad97540c24" +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" dependencies: - "@babel/code-frame" "7.0.0-beta.43" - "@babel/types" "7.0.0-beta.43" - babylon "7.0.0-beta.43" + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" lodash "^4.2.0" "@babel/traverse@7.0.0-beta.42": @@ -681,16 +681,16 @@ invariant "^2.2.0" lodash "^4.2.0" -"@babel/traverse@7.0.0-beta.43", "@babel/traverse@^7.0.0-beta.40": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.43.tgz#dad8700f1e51ed960de22c5060bf1c3e8c8fc494" - dependencies: - "@babel/code-frame" "7.0.0-beta.43" - "@babel/generator" "7.0.0-beta.43" - "@babel/helper-function-name" "7.0.0-beta.43" - "@babel/helper-split-export-declaration" "7.0.0-beta.43" - "@babel/types" "7.0.0-beta.43" - babylon "7.0.0-beta.43" +"@babel/traverse@7.0.0-beta.44", "@babel/traverse@^7.0.0-beta.40": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" debug "^3.1.0" globals "^11.1.0" invariant "^2.2.0" @@ -704,9 +704,9 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@babel/types@7.0.0-beta.43", "@babel/types@^7.0.0-beta.40": - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.43.tgz#9d82c2d773b6baec0474ddb774eafd7fb4511f8b" +"@babel/types@7.0.0-beta.44", "@babel/types@^7.0.0-beta.40": + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" dependencies: esutils "^2.0.2" lodash "^4.2.0" @@ -780,11 +780,11 @@ accepts@~1.3.3: mime-types "~2.1.18" negotiator "0.6.1" -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" dependencies: - acorn "^4.0.3" + acorn "^5.0.0" acorn-globals@^3.1.0: version "3.1.0" @@ -802,7 +802,7 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.3, acorn@^4.0.4: +acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" @@ -817,7 +817,7 @@ aggregate-error@^1.0.0: clean-stack "^1.0.0" indent-string "^3.0.0" -ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: +ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -832,7 +832,7 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.3, ajv@^5.3.0: +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -902,7 +902,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -any-promise@^1.0.0, any-promise@^1.1.0: +any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -1087,7 +1087,7 @@ async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.0, async@^2.1.2, async@^2.1.4, async@^2.4.1: +async@^2.0.0, async@^2.1.4, async@^2.4.1: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -1307,9 +1307,9 @@ babylon@7.0.0-beta.42: version "7.0.0-beta.42" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.42.tgz#67cfabcd4f3ec82999d29031ccdea89d0ba99657" -babylon@7.0.0-beta.43, babylon@^7.0.0-beta.40: - version "7.0.0-beta.43" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.43.tgz#15128e7403d41b0e56cca2f110024cc1d8ada8cd" +babylon@7.0.0-beta.44, babylon@^7.0.0-beta.40: + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" babylon@^6.18.0: version "6.18.0" @@ -1458,8 +1458,8 @@ browser-resolve@^1.11.2: resolve "1.1.7" browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" dependencies: buffer-xor "^1.0.3" cipher-base "^1.0.0" @@ -1561,7 +1561,7 @@ bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -cacache@^10.0.1: +cacache@^10.0.1, cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" dependencies: @@ -1637,12 +1637,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000821" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000821.tgz#3fcdc67c446a94a9cdd848248a4e3e54b2da7419" + version "1.0.30000823" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000823.tgz#e68e5f8c70783ef4059d2ea0de81f551651da6fc" caniuse-lite@^1.0.30000821: - version "1.0.30000821" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000821.tgz#0f3223f1e048ed96451c56ca6cf197058c42cb93" + version "1.0.30000823" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000823.tgz#b79842a5b5a48eaa416b73f5a5d7a23f52d26014" capture-stack-trace@^1.0.0: version "1.0.0" @@ -1747,6 +1747,10 @@ chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" +chrome-trace-event@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz#90f36885d5345a50621332f0717b595883d5d982" + chromedriver@2.32.3: version "2.32.3" resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-2.32.3.tgz#ce84f055bee7cbfe56f31182b276f33256b12bf1" @@ -2289,12 +2293,6 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2546,8 +2544,8 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.41: - version "1.3.41" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.41.tgz#7e33643e00cd85edfd17e04194f6d00e73737235" + version "1.3.42" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.42.tgz#95c33bf01d0cc405556aec899fe61fd4d76ea0f9" elegant-spinner@^1.0.1: version "1.0.1" @@ -2589,14 +2587,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" +enhanced-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" + tapable "^1.0.0" entities@^1.1.1, entities@~1.1.1: version "1.1.1" @@ -2638,59 +2635,6 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.42" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "1" - -es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -2710,15 +2654,6 @@ escodegen@^1.6.1: optionalDependencies: source-map "~0.6.1" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-config-standard-jsx@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-5.0.0.tgz#4abfac554f38668e0078c664569e7b2384e5d2aa" @@ -2878,13 +2813,6 @@ etag@1.8.1, etag@~1.8.0, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - event-source-polyfill@0.0.12: version "0.0.12" resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-0.0.12.tgz#e539cd67fdef2760a16aa5262fa98134df52e3af" @@ -3440,10 +3368,6 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-promise@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-3.3.0.tgz#d1eb3625c4e6dcbb9b96eeae4425d5a3b135fed2" - glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -3572,10 +3496,6 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3675,11 +3595,7 @@ hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" -hoist-non-react-statics@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz#343db84c6018c650778898240135a1420ee22ce0" - -hoist-non-react-statics@^2.5.0: +hoist-non-react-statics@2.5.0, hoist-non-react-statics@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" @@ -3867,10 +3783,6 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" -interpret@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - invariant@^2.2.0, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -4576,10 +4488,6 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -5200,14 +5108,6 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -mz@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - nan@^2.3.0: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -5241,10 +5141,6 @@ neo-async@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.0.tgz#76b1c823130cca26acfbaccc8fbaf0a2fa33b18f" -next-tick@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - node-fetch@1.7.3, node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -6344,15 +6240,15 @@ read-pkg@^2.0.0: path-type "^2.0.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" process-nextick-args "~2.0.0" safe-buffer "~5.1.1" - string_decoder "~1.0.3" + string_decoder "~1.1.1" util-deprecate "~1.0.1" readdirp@^2.0.0: @@ -6733,7 +6629,7 @@ schema-utils@^0.3.0: dependencies: ajv "^5.0.0" -schema-utils@^0.4.0, schema-utils@^0.4.2: +schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" dependencies: @@ -7148,18 +7044,12 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string_decoder@^1.0.0: +string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" dependencies: safe-buffer "~5.1.0" -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" @@ -7243,12 +7133,6 @@ supports-color@^3.1.2, supports-color@^3.2.3: dependencies: has-flag "^1.0.0" -supports-color@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" - supports-color@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" @@ -7286,9 +7170,9 @@ table@4.0.2: slice-ansi "1.0.0" string-width "^2.1.1" -tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" +tapable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" tar-pack@^3.4.0: version "3.4.1" @@ -7358,18 +7242,6 @@ text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - dependencies: - any-promise "^1.0.0" - throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -7513,7 +7385,7 @@ uglify-es@^3.3.4: commander "~2.13.0" source-map "~0.6.1" -uglify-js@^2.6, uglify-js@^2.8.29: +uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: @@ -7539,13 +7411,18 @@ uglifyjs-webpack-plugin@1.1.6: webpack-sources "^1.1.0" worker-farm "^1.5.2" -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" +uglifyjs-webpack-plugin@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz#5eec941b2e9b8538be0a20fc6eda25b14c7c1043" dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" uid-number@^0.0.6: version "0.0.6" @@ -7762,7 +7639,7 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" -watchpack@^1.4.0: +watchpack@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" dependencies: @@ -7817,32 +7694,29 @@ webpack-sources@1.1.0, webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" +webpack@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.5.0.tgz#1e6f71e148ead02be265ff2879c9cd6bb30b8848" dependencies: acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^5.1.5" - ajv-keywords "^2.0.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^0.1.1" + enhanced-resolve "^4.0.0" + eslint-scope "^3.7.1" loader-runner "^2.3.0" loader-utils "^1.1.0" memory-fs "~0.4.1" + micromatch "^3.1.8" mkdirp "~0.5.0" + neo-async "^2.5.0" node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" + schema-utils "^0.4.2" + tapable "^1.0.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" webpack-sources "^1.0.1" - yargs "^8.0.2" whatwg-encoding@^1.0.1: version "1.0.3" @@ -7989,7 +7863,7 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" -yargs@^8.0.1, yargs@^8.0.2: +yargs@^8.0.1: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" dependencies: