diff --git a/client/index.js b/client/index.js index 7ffe66055334515ebd69b8bc78ce239bf010bfd8..c2f1107c6315fe93d47c6d75d156df6f4f732dfb 100644 --- a/client/index.js +++ b/client/index.js @@ -7,6 +7,7 @@ import App from '../lib/app' import { loadGetInitialProps, getURL } from '../lib/utils' import PageLoader from '../lib/page-loader' import * as asset from '../lib/asset' +import * as envConfig from '../lib/runtime-config' // Polyfill Promise globally // This is needed because Webpack2's dynamic loading(common chunks) code @@ -26,7 +27,8 @@ const { query, buildId, chunks, - assetPrefix + assetPrefix, + runtimeConfig }, location } = window @@ -36,6 +38,8 @@ const { __webpack_public_path__ = `${assetPrefix}/_next/webpack/` //eslint-disable-line // Initialize next/asset with the assetPrefix asset.setAssetPrefix(assetPrefix) +// Initialize next/config with the environment configuration +envConfig.setConfig(runtimeConfig || {}) const asPath = getURL() diff --git a/config.js b/config.js new file mode 100644 index 0000000000000000000000000000000000000000..c718915e9f276897504385b3b42f4cd7a88b2101 --- /dev/null +++ b/config.js @@ -0,0 +1 @@ +module.exports = require('./dist/lib/runtime-config') diff --git a/lib/runtime-config.js b/lib/runtime-config.js new file mode 100644 index 0000000000000000000000000000000000000000..dd007258620a3d1b8f6c754640ff87b651f44339 --- /dev/null +++ b/lib/runtime-config.js @@ -0,0 +1,9 @@ +let runtimeConfig + +export default () => { + return runtimeConfig +} + +export function setConfig (configValue) { + runtimeConfig = configValue +} diff --git a/package.json b/package.json index b760a82648cc60bfc6670b34687b3359012f37fe..7f74a44127ef90ac9fd88a4bc4d2c9010e2c29bb 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "router.js", "asset.js", "error.js", - "constants.js" + "constants.js", + "config.js" ], "bin": { "next": "./dist/bin/next" diff --git a/readme.md b/readme.md index a91e0602c11536a4110565b5be861ec3edc07896..3e8ca2b724586b3fcc4188398e43fa917929636c 100644 --- a/readme.md +++ b/readme.md @@ -1143,6 +1143,34 @@ Here's an example `.babelrc` file: } ``` +#### Exposing configuration to the server / client side + +The `config` key allows for exposing runtime configuration in your app. All keys are server only by default. To expose a configuration to both the server and client side you can use the `public` key. + +```js +// next.config.js +module.exports = { + runtimeConfig: { + mySecret: 'secret', + public: { + staticFolder: '/static' + } + } +} +``` + +```js +// pages/index.js +import getConfig from 'next/config' +const config = getConfig() +console.log(config.mySecret) // Will be 'secret' on the server, `undefined` on the client +console.log(config.public.staticFolder) // Will be '/static' on both server and client + +export default () =>
+ +
+``` + ### CDN support with Asset Prefix To set up a CDN, you can set up the `assetPrefix` setting and configure your CDN's origin to resolve to the domain that Next.js is hosted on. diff --git a/server/export.js b/server/export.js index d6c26cde683b95b9ba4dbd610a22ee29fa903a87..8c3bfb58a281d70f81fc305c917ebd169d5a8b8a 100644 --- a/server/export.js +++ b/server/export.js @@ -10,11 +10,12 @@ import { renderToHTML } from './render' import { getAvailableChunks } from './utils' import { printAndExit } from '../lib/utils' import { setAssetPrefix } from '../lib/asset' +import * as envConfig from '../lib/runtime-config' export default async function (dir, options, configuration) { dir = resolve(dir) - const config = configuration || getConfig(PHASE_EXPORT, dir) - const nextDir = join(dir, config.distDir) + const nextConfig = configuration || getConfig(PHASE_EXPORT, dir) + const nextDir = join(dir, nextConfig.distDir) log(` using build directory: ${nextDir}`) @@ -73,28 +74,42 @@ export default async function (dir, options, configuration) { await copyPages(nextDir, outDir, buildId) // Get the exportPathMap from the `next.config.js` - if (typeof config.exportPathMap !== 'function') { + if (typeof nextConfig.exportPathMap !== 'function') { printAndExit( '> Could not find "exportPathMap" function inside "next.config.js"\n' + '> "next export" uses that function to build html pages.' ) } - const exportPathMap = await config.exportPathMap() + const exportPathMap = await nextConfig.exportPathMap() const exportPaths = Object.keys(exportPathMap) // Start the rendering process const renderOpts = { dir, - dist: config.distDir, + dist: nextConfig.distDir, buildStats, buildId, nextExport: true, - assetPrefix: config.assetPrefix.replace(/\/$/, ''), + assetPrefix: nextConfig.assetPrefix.replace(/\/$/, ''), dev: false, staticMarkup: false, hotReloader: null, - availableChunks: getAvailableChunks(dir, config.distDir) + availableChunks: getAvailableChunks(dir, nextConfig.distDir) + } + + // Allow configuration from next.config.js to be passed to the server / client + if (nextConfig.runtimeConfig) { + // Initialize next/config with the environment configuration + envConfig.setConfig(nextConfig.runtimeConfig) + + // Only the `public` key is exposed to the client side + // It'll be rendered as part of __NEXT_DATA__ on the client side + if (nextConfig.runtimeConfig.public) { + renderOpts.runtimeConfig = { + public: nextConfig.runtimeConfig.public + } + } } // set the assetPrefix to use for 'next/asset' diff --git a/server/index.js b/server/index.js index ae5564f573b0b70448b94ac14f81ab45885af941..ddf886282d20ac56379910d67a3371b7fdbf9a9d 100644 --- a/server/index.js +++ b/server/index.js @@ -20,6 +20,7 @@ import {PHASE_PRODUCTION_SERVER, PHASE_DEVELOPMENT_SERVER} from '../lib/constant // We need to go up one more level since we are in the `dist` directory import pkg from '../../package' import * as asset from '../lib/asset' +import * as envConfig from '../lib/runtime-config' import { isResSent } from '../lib/utils' const blockedPages = { @@ -35,10 +36,10 @@ export default class Server { this.router = new Router() this.http = null const phase = dev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_SERVER - this.config = getConfig(phase, this.dir, conf) - this.dist = this.config.distDir + this.nextConfig = getConfig(phase, this.dir, conf) + this.dist = this.nextConfig.distDir - this.hotReloader = dev ? this.getHotReloader(this.dir, { quiet, config: this.config }) : null + this.hotReloader = dev ? this.getHotReloader(this.dir, { quiet, config: this.nextConfig }) : null if (dev) { updateNotifier(pkg, 'next') @@ -48,6 +49,7 @@ export default class Server { console.error(`> Could not find a valid build in the '${this.dist}' directory! Try building your app with 'next build' before starting the server.`) process.exit(1) } + this.buildStats = !dev ? require(join(this.dir, this.dist, 'build-stats.json')) : null this.buildId = !dev ? this.readBuildId() : '-' this.renderOpts = { @@ -61,7 +63,21 @@ export default class Server { availableChunks: dev ? {} : getAvailableChunks(this.dir, this.dist) } - this.setAssetPrefix(this.config.assetPrefix) + // Allow configuration from next.config.js to be passed to the server / client + if (this.nextConfig.runtimeConfig) { + // Initialize next/config with the environment configuration + envConfig.setConfig(this.nextConfig.runtimeConfig) + + // Only the `public` key is exposed to the client side + // It'll be rendered as part of __NEXT_DATA__ on the client side + if (this.nextConfig.runtimeConfig.public) { + this.renderOpts.runtimeConfig = { + public: this.nextConfig.runtimeConfig.public + } + } + } + + this.setAssetPrefix(this.nextConfig.assetPrefix) this.defineRoutes() } @@ -262,7 +278,7 @@ export default class Server { } } - if (this.config.useFileSystemPublicRoutes) { + if (this.nextConfig.useFileSystemPublicRoutes) { routes['/:path*'] = async (req, res, params, parsedUrl) => { const { pathname, query } = parsedUrl await this.render(req, res, pathname, query) @@ -320,7 +336,7 @@ export default class Server { return } - if (this.config.poweredByHeader) { + if (this.nextConfig.poweredByHeader) { res.setHeader('X-Powered-By', `Next.js ${pkg.version}`) } return sendHTML(req, res, html, req.method, this.renderOpts) diff --git a/server/render.js b/server/render.js index 5ed575c0f63b7a6cb48cba8997c69c5539b5d52c..16717e4b013143312b5f5ee8988fcefb4549399a 100644 --- a/server/render.js +++ b/server/render.js @@ -40,6 +40,7 @@ async function doRender (req, res, pathname, query, { buildStats, hotReloader, assetPrefix, + runtimeConfig, availableChunks, dist, dir = process.cwd(), @@ -109,6 +110,7 @@ async function doRender (req, res, pathname, query, { buildId, buildStats, assetPrefix, + runtimeConfig, nextExport, err: (err) ? serializeError(dev, err) : null }, diff --git a/test/integration/next-plugins/.gitignore b/test/integration/config/.gitignore similarity index 100% rename from test/integration/next-plugins/.gitignore rename to test/integration/config/.gitignore diff --git a/test/integration/next-plugins/components/hello-webpack-css.css b/test/integration/config/components/hello-webpack-css.css similarity index 100% rename from test/integration/next-plugins/components/hello-webpack-css.css rename to test/integration/config/components/hello-webpack-css.css diff --git a/test/integration/next-plugins/components/hello-webpack-css.js b/test/integration/config/components/hello-webpack-css.js similarity index 100% rename from test/integration/next-plugins/components/hello-webpack-css.js rename to test/integration/config/components/hello-webpack-css.js diff --git a/test/integration/next-plugins/next.config.js b/test/integration/config/next.config.js similarity index 61% rename from test/integration/next-plugins/next.config.js rename to test/integration/config/next.config.js index a9fd07c13d3da57b243b259b528d9cda8fbf0898..a25c6e81c375393d82be14cc934fa77db8860ca5 100644 --- a/test/integration/next-plugins/next.config.js +++ b/test/integration/config/next.config.js @@ -5,5 +5,11 @@ module.exports = withCSS({ // Make sure entries are not getting disposed. maxInactiveAge: 1000 * 60 * 60 }, - cssModules: true + cssModules: true, + runtimeConfig: { + mySecret: 'secret', + public: { + staticFolder: '/static' + } + } }) diff --git a/test/integration/next-plugins/node_modules/css-framework/framework.css b/test/integration/config/node_modules/css-framework/framework.css similarity index 100% rename from test/integration/next-plugins/node_modules/css-framework/framework.css rename to test/integration/config/node_modules/css-framework/framework.css diff --git a/test/integration/config/pages/next-config.js b/test/integration/config/pages/next-config.js new file mode 100644 index 0000000000000000000000000000000000000000..2a5cd60900de828b8303c5987b7f7c74e432899b --- /dev/null +++ b/test/integration/config/pages/next-config.js @@ -0,0 +1,8 @@ +// pages/index.js +import getConfig from 'next/config' +const config = getConfig() + +export default () =>
+

{config.mySecret}

+

{config.public.staticFolder}

+
diff --git a/test/integration/next-plugins/pages/webpack-css.js b/test/integration/config/pages/webpack-css.js similarity index 100% rename from test/integration/next-plugins/pages/webpack-css.js rename to test/integration/config/pages/webpack-css.js diff --git a/test/integration/config/test/client.js b/test/integration/config/test/client.js new file mode 100644 index 0000000000000000000000000000000000000000..cd7fc21c03a9eb73a34c90199cde8a3149fa3ab4 --- /dev/null +++ b/test/integration/config/test/client.js @@ -0,0 +1,21 @@ +/* global describe, it, expect */ + +import webdriver from 'next-webdriver' +import { waitFor } from 'next-test-utils' + +export default (context, render) => { + describe('Configuration', () => { + it('should have config available on the client', async () => { + const browser = await webdriver(context.appPort, '/next-config') + // Wait for client side to load + await waitFor(5000) + + const serverText = await browser.elementByCss('#server-only').text() + const serverClientText = await browser.elementByCss('#server-and-client').text() + + expect(serverText).toBe('') + expect(serverClientText).toBe('/static') + browser.close() + }) + }) +} diff --git a/test/integration/next-plugins/test/index.test.js b/test/integration/config/test/index.test.js similarity index 80% rename from test/integration/next-plugins/test/index.test.js rename to test/integration/config/test/index.test.js index df945a1d9e1dd24bf003362c40412341f46b87e7..225de13830554085a8a119c0b2725385a5398f8e 100644 --- a/test/integration/next-plugins/test/index.test.js +++ b/test/integration/config/test/index.test.js @@ -11,21 +11,24 @@ import { // test suits import rendering from './rendering' +import client from './client' const context = {} jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 5 -describe('Next Plugins', () => { +describe('Configuration', () => { beforeAll(async () => { context.appPort = await findPort() context.server = await launchApp(join(__dirname, '../'), context.appPort, true) // pre-build all pages at the start await Promise.all([ + renderViaHTTP(context.appPort, '/next-config'), renderViaHTTP(context.appPort, '/webpack-css') ]) }) afterAll(() => killApp(context.server)) rendering(context, 'Rendering via HTTP', (p, q) => renderViaHTTP(context.appPort, p, q), (p, q) => fetchViaHTTP(context.appPort, p, q)) + client(context, (p, q) => renderViaHTTP(context.appPort, p, q)) }) diff --git a/test/integration/next-plugins/test/rendering.js b/test/integration/config/test/rendering.js similarity index 64% rename from test/integration/next-plugins/test/rendering.js rename to test/integration/config/test/rendering.js index 3974eff0fb89b5bd0b3176f31cc996e940ab2ac3..a504fa03b0fe686397085f299a8f0f6f83ecd207 100644 --- a/test/integration/next-plugins/test/rendering.js +++ b/test/integration/config/test/rendering.js @@ -18,5 +18,15 @@ export default function ({ app }, suiteName, render, fetch) { const $ = await get$('/webpack-css') expect($('._2pRSkKTPDMGLMnmsEkP__J').text() === 'Hello World') }) + + test('renders server config on the server only', async () => { + const $ = await get$('/next-config') + expect($('#server-only').text() === 'mySecret') + }) + + test('renders public config on the server only', async () => { + const $ = await get$('/next-config') + expect($('#server-and-client').text() === '/static') + }) }) } diff --git a/test/integration/production/test/index.test.js b/test/integration/production/test/index.test.js index 9ebb7cac727951c0833d4a8a5ae144bd02a45c0d..688bbc86661450b56d52c18918d18192f4a3bfaa 100644 --- a/test/integration/production/test/index.test.js +++ b/test/integration/production/test/index.test.js @@ -165,8 +165,8 @@ describe('Production Usage', () => { it('should not set it when poweredByHeader==false', async () => { const req = { url: '/stateless', headers: {} } - const originalConfigValue = app.config.poweredByHeader - app.config.poweredByHeader = false + const originalConfigValue = app.nextConfig.poweredByHeader + app.nextConfig.poweredByHeader = false const res = { getHeader () { return false @@ -180,7 +180,7 @@ describe('Production Usage', () => { } await app.render(req, res, req.url) - app.config.poweredByHeader = originalConfigValue + app.nextConfig.poweredByHeader = originalConfigValue }) }) diff --git a/yarn.lock b/yarn.lock index ac396dc3994d8aeb9d779a2d78e447b040269179..978008c6867edd75e86ed100b38c6c598a038e3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -111,10 +111,14 @@ ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" -ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: +ajv-keywords@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" +ajv-keywords@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" + ajv@^4.7.0, ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" @@ -131,6 +135,14 @@ ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" +ajv@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.0.tgz#afac295bbaa0152449e522742e4547c1ae9328d2" + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -245,8 +257,8 @@ are-we-there-yet@~1.1.2: readable-stream "^2.0.6" argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" dependencies: sprintf-js "~1.0.2" @@ -302,8 +314,8 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" asn1.js@^4.0.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" dependencies: bn.js "^4.0.0" inherits "^2.0.1" @@ -1095,8 +1107,8 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" base64-js@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + version "1.2.3" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" bcrypt-pbkdf@^1.0.0: version "1.0.1" @@ -1131,7 +1143,7 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@^3.5.0: +bluebird@^3.5.0, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" @@ -1174,8 +1186,8 @@ boxen@^1.2.1: widest-line "^2.0.0" brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -1314,22 +1326,22 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" cacache@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8" + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" dependencies: - bluebird "^3.5.0" + bluebird "^3.5.1" chownr "^1.0.1" glob "^7.1.2" graceful-fs "^4.1.11" lru-cache "^4.1.1" - mississippi "^1.3.0" + mississippi "^2.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" - rimraf "^2.6.1" - ssri "^5.0.0" + rimraf "^2.6.2" + ssri "^5.2.4" unique-filename "^1.1.0" - y18n "^3.2.1" + y18n "^4.0.0" caching-transform@^1.0.0: version "1.0.1" @@ -1375,12 +1387,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.30000802" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000802.tgz#f7dca342da1c12cf84ff2c80432e24c7e1cc36d9" + version "1.0.30000810" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000810.tgz#bd25830c41efab64339a2e381f49677343c84509" caniuse-lite@^1.0.30000792: - version "1.0.30000792" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332" + version "1.0.30000810" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000810.tgz#47585fffce0e9f3593a6feea4673b945424351d9" capture-stack-trace@^1.0.0: version "1.0.0" @@ -1405,7 +1417,7 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@2.3.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: +chalk@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -1423,6 +1435,14 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" + dependencies: + ansi-styles "^3.2.0" + escape-string-regexp "^1.0.5" + supports-color "^5.2.0" + cheerio@0.22.0: version "0.22.0" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" @@ -1601,13 +1621,17 @@ colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: delayed-stream "~1.0.0" -commander@^2.9.0, commander@~2.13.0: +commander@^2.9.0: + version "2.14.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + +commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -1853,8 +1877,8 @@ css-color-names@0.0.4: resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" css-loader@^0.28.9: - version "0.28.9" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.9.tgz#68064b85f4e271d7ce4c48a58300928e535d1c95" + version "0.28.10" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.10.tgz#40282e79230f7bcb4e483efa631d670b735ebf42" dependencies: babel-code-frame "^6.26.0" css-selector-tokenizer "^0.7.0" @@ -2152,8 +2176,8 @@ domutils@1.5.1: domelementtype "1" domutils@^1.5.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" dependencies: dom-serializer "0" domelementtype "1" @@ -2188,8 +2212,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.30: - version "1.3.32" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.32.tgz#11d0684c0840e003c4be8928f8ac5f35dbc2b4e6" + version "1.3.34" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz#d93498f40391bb0c16a603d8241b9951404157ed" elegant-spinner@^1.0.1: version "1.0.1" @@ -2244,9 +2268,9 @@ entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -errno@^0.1.2, errno@^0.1.3, errno@^0.1.4: - version "0.1.6" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026" +errno@^0.1.2, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" dependencies: prr "~1.0.1" @@ -2281,8 +2305,8 @@ es-to-primitive@^1.1.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.38" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" + version "0.10.39" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.39.tgz#fca21b67559277ca4ac1a1ed7048b107b6f76d87" dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.1" @@ -2621,8 +2645,8 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" fast-deep-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -2811,11 +2835,11 @@ form-data@~2.1.1: mime-types "^2.1.12" form-data@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: asynckit "^0.4.0" - combined-stream "^1.0.5" + combined-stream "1.0.6" mime-types "^2.1.12" forwarded@~0.1.0: @@ -3090,6 +3114,10 @@ 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" + has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" @@ -3155,8 +3183,8 @@ hoek@2.x.x: resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" hoek@4.x.x: - version "4.2.0" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + 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" @@ -3345,8 +3373,8 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" invariant@^2.2.0, invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + version "2.2.3" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.3.tgz#1a827dfde7dcbd7c323f0ca826be8fa7c5e9d688" dependencies: loose-envify "^1.0.0" @@ -3457,12 +3485,17 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: - version "2.17.1" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471" + version "2.17.2" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" dependencies: generate-function "^2.0.0" generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" jsonpointer "^4.0.0" xtend "^4.0.0" @@ -3567,8 +3600,8 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" is-windows@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" @@ -3596,24 +3629,24 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" istanbul-api@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.2.tgz#e17cd519dd5ec4141197f246fdf380b75487f3b1" dependencies: async "^2.1.4" fileset "^2.0.2" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" istanbul-lib-hook "^1.1.0" - istanbul-lib-instrument "^1.9.1" - istanbul-lib-report "^1.1.2" - istanbul-lib-source-maps "^1.2.2" - istanbul-reports "^1.1.3" + istanbul-lib-instrument "^1.9.2" + istanbul-lib-report "^1.1.3" + istanbul-lib-source-maps "^1.2.3" + istanbul-reports "^1.1.4" js-yaml "^3.7.0" mkdirp "^0.5.1" once "^1.4.0" -istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" +istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1, istanbul-lib-coverage@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz#4113c8ff6b7a40a1ef7350b01016331f63afde14" istanbul-lib-hook@^1.0.7, istanbul-lib-hook@^1.1.0: version "1.1.0" @@ -3621,40 +3654,40 @@ istanbul-lib-hook@^1.0.7, istanbul-lib-hook@^1.1.0: dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0, istanbul-lib-instrument@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" +istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0, istanbul-lib-instrument@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz#84905bf47f7e0b401d6b840da7bad67086b4aab6" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" babel-traverse "^6.18.0" babel-types "^6.18.0" babylon "^6.18.0" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" semver "^5.3.0" -istanbul-lib-report@^1.1.1, istanbul-lib-report@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" +istanbul-lib-report@^1.1.1, istanbul-lib-report@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.3.tgz#2df12188c0fa77990c0d2176d2d0ba3394188259" dependencies: - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" +istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6" dependencies: debug "^3.1.0" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" mkdirp "^0.5.1" rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.1.1, istanbul-reports@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" +istanbul-reports@^1.1.1, istanbul-reports@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.4.tgz#5ccba5e22b7b5a5d91d5e0a830f89be334bf97bd" dependencies: handlebars "^4.0.3" @@ -4280,8 +4313,8 @@ macaddress@^0.2.8: resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" make-dir@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" dependencies: pify "^3.0.0" @@ -4396,15 +4429,15 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.7: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" +mime-types@^2.1.12, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: - mime-db "~1.30.0" + mime-db "~1.33.0" mime@1.3.4: version "1.3.4" @@ -4454,9 +4487,9 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -mississippi@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.1.tgz#2a8bb465e86550ac8b36a7b6f45599171d78671e" +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -4464,7 +4497,7 @@ mississippi@^1.3.0: flush-write-stream "^1.0.0" from2 "^2.1.0" parallel-transform "^1.1.0" - pump "^1.0.0" + pump "^2.0.1" pumpify "^1.3.3" stream-each "^1.1.0" through2 "^2.0.0" @@ -4540,8 +4573,8 @@ mz@2.7.0: thenify-all "^1.0.0" nan@^2.3.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" + version "2.9.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" natural-compare@^1.4.0: version "1.4.0" @@ -4844,8 +4877,8 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -5165,8 +5198,8 @@ postcss-load-plugins@^2.3.0: object-assign "^4.1.0" postcss-loader@^2.0.10: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.0.tgz#038c2d6d59753fef4667827fd3ae03f5dc5e6a7a" + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.1.tgz#208935af3b1d65e1abb1a870a912dd12e7b36895" dependencies: loader-utils "^1.1.0" postcss "^6.0.0" @@ -5351,12 +5384,12 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 supports-color "^3.2.3" postcss@^6.0.0, postcss@^6.0.1: - version "6.0.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.17.tgz#e259a051ca513f81e9afd0c21f7f82eda50c65c5" + version "6.0.19" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.19.tgz#76a78386f670b9d9494a655bf23ac012effd1555" dependencies: - chalk "^2.3.0" + chalk "^2.3.1" source-map "^0.6.1" - supports-color "^5.1.0" + supports-color "^5.2.0" prelude-ls@~1.1.2: version "1.1.2" @@ -5381,9 +5414,9 @@ private@^0.1.6, private@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" process@^0.11.10: version "0.11.10" @@ -5447,14 +5480,7 @@ public-encrypt@^4.0.0: parse-asn1 "^5.0.0" randombytes "^2.0.1" -pump@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^2.0.0: +pump@^2.0.0, pump@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" dependencies: @@ -5530,8 +5556,8 @@ randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: safe-buffer "^5.1.0" randomfill@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" @@ -5617,13 +5643,13 @@ 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: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + version "2.3.4" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" dependencies: core-util-is "~1.0.0" inherits "~2.0.3" isarray "~1.0.0" - process-nextick-args "~1.0.6" + process-nextick-args "~2.0.0" safe-buffer "~5.1.1" string_decoder "~1.0.3" util-deprecate "~1.0.1" @@ -5922,8 +5948,8 @@ run-async@^0.1.0: once "^1.3.0" run-parallel@^1.1.2: - version "1.1.6" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039" + version "1.1.7" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.7.tgz#d8f40854b9e19d18c2e0e70180cc05cfc86b650f" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -5946,8 +5972,8 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" sane@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.3.0.tgz#3f3df584abf69e63d4bb74f0f8c42468e4d7d46b" + version "2.4.1" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.4.1.tgz#29f991208cf28636720efdc584293e7fd66663a5" dependencies: anymatch "^1.3.0" exec-sh "^0.2.0" @@ -5970,11 +5996,11 @@ schema-utils@^0.3.0: ajv "^5.0.0" schema-utils@^0.4.0, schema-utils@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.3.tgz#e2a594d3395834d5e15da22b48be13517859458e" + version "0.4.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" dependencies: - ajv "^5.0.0" - ajv-keywords "^2.1.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" semver-diff@^2.0.0: version "2.1.0" @@ -6189,11 +6215,11 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -ssri@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.1.0.tgz#2cbf1df36b74d0fc91fcf89640a4b3e1d10b1899" +ssri@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.2.4.tgz#9985e14041e65fc397af96542be35724ac11da52" dependencies: - safe-buffer "^5.1.0" + safe-buffer "^5.1.1" stackframe@^1.0.3: version "1.0.4" @@ -6308,8 +6334,8 @@ string_decoder@^1.0.0, string_decoder@~1.0.3: safe-buffer "~5.1.0" stringify-object@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.1.tgz#2720c2eff940854c819f6ee252aaeb581f30624d" + version "3.2.2" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.2.tgz#9853052e5a88fb605a44cd27445aa257ad7ffbcd" dependencies: get-own-enumerable-property-symbols "^2.0.1" is-obj "^1.0.1" @@ -6396,11 +6422,11 @@ supports-color@^4.0.0, supports-color@^4.2.1: dependencies: has-flag "^2.0.0" -supports-color@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" +supports-color@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" dependencies: - has-flag "^2.0.0" + has-flag "^3.0.0" svgo@^0.7.0: version "0.7.2" @@ -6492,8 +6518,8 @@ term-size@^1.2.0: execa "^0.7.0" test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" + version "4.2.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.0.tgz#07e3613609a362c74516a717515e13322ab45b3c" dependencies: arrify "^1.0.1" micromatch "^2.3.11" @@ -6611,11 +6637,11 @@ type-check@~0.3.2: prelude-ls "~1.1.2" type-is@~1.6.15: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" dependencies: media-typer "0.3.0" - mime-types "~2.1.15" + mime-types "~2.1.18" typedarray@^0.0.6: version "0.0.6" @@ -6974,11 +7000,11 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" worker-farm@^1.3.1, worker-farm@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" + version "1.5.4" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.4.tgz#4debbe46b40edefcc717ebde74a90b1ae1e909a1" dependencies: - errno "^0.1.4" - xtend "^4.0.1" + errno "~0.1.7" + xtend "~4.0.1" wrap-ansi@^2.0.0: version "2.1.0" @@ -7040,6 +7066,10 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"