From 6941f419719138a53d7c1d6ded349adb308a63f9 Mon Sep 17 00:00:00 2001 From: Amila Welihinda Date: Wed, 19 Apr 2017 22:58:47 -0700 Subject: [PATCH] Release 0.11.0 (#921) * [WIP] Route-based code splitting (#884) * Upgrading to React Router v4, using react-router-redux@next Refactoring routes.js to use Switch store now export history renamed router reducer switch to react-router-dom * Adding code-splitting at route level * Fix flow warnings * Fix Typo during eslint no-shadow fix * More flow fixes... * Even more Flow checking * Switching to babel preset dynamic import webpack * Fixing CounterPage spec * Route-based code splitting * Updated all deps * Updated flow types * Fix npm start and npm run dev (#901) * should fix npm start and npm run dev * change back to warn about the global requires * makes flow happy * flow again use Children, passes npm run lint locally * flow again use any so we only get a warning * flow disable children * Updated deps * Cleaned up code style, removed unnecessary eslint supressions * Removed flow children disabled line * Added HtmlWebpackPlugin (#916) * Fixed HMR (disabled multiStep) (#920) * Fixed HMR * Commented multiPass instead of removing * Updated CHANGELOG (#923) * Updated changelog * Added more notable changes [ci skip] * Added support for Webpack Bundle Analyzer (#922) * Added webpack bundle analyzer to CHANGELOG [ci skip] * Bump package.json version [ci skip] * Bump flow-bin [ci skip] * Fixed hot-reload refresh url * Bumped electron * Added Initial Jest Snapshot Testing Support (#928) * Updated CHANGELOG date [ci skip] s --- .babelrc | 2 +- .eslintignore | 1 + .eslintrc | 4 + .gitignore | 1 + .vscode/settings.json | 1 + CHANGELOG.md | 40 ++++ app/app.html | 36 +--- app/components/Counter.js | 2 +- app/components/Home.js | 3 +- app/containers/Root.js | 8 +- app/index.js | 5 +- app/main.development.js | 5 +- app/reducers/index.js | 4 +- app/routes.js | 20 +- app/store/configureStore.development.js | 9 +- app/store/configureStore.production.js | 10 +- package.json | 59 +++--- test/actions/counter.spec.js | 1 - test/components/Counter.spec.js | 18 +- test/containers/CounterPage.spec.js | 9 +- test/example.js | 2 - webpack.config.main.prod.js | 6 + webpack.config.renderer.dev.js | 19 +- webpack.config.renderer.prod.js | 11 +- yarn.lock | 242 ++++++++++++++++-------- 25 files changed, 339 insertions(+), 179 deletions(-) diff --git a/.babelrc b/.babelrc index 108f810..bd49867 100644 --- a/.babelrc +++ b/.babelrc @@ -7,7 +7,7 @@ "stage-0", "react" ], - "plugins": ["add-module-exports"], + "plugins": ["add-module-exports", "dynamic-import-webpack"], "env": { "production": { "presets": ["react-optimize"], diff --git a/.eslintignore b/.eslintignore index c73255a..777ddce 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,3 +3,4 @@ app/dist/ app/main.js node_modules dll +__snapshots__ diff --git a/.eslintrc b/.eslintrc index 0da8fdf..ca294a9 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,5 +1,9 @@ { "parser": "babel-eslint", + "parserOptions": { + "sourceType": "module", + "allowImportExportEverywhere": true + }, "extends": "airbnb", "env": { "browser": true, diff --git a/.gitignore b/.gitignore index b072324..914089c 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ main.js.map .idea npm-debug.log.* +__snapshots__ diff --git a/.vscode/settings.json b/.vscode/settings.json index bd76604..b176d5b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,6 +4,7 @@ ".git": true, "node_modules": true, "flow-typed": true, + "__snapshots__": true, "bower_components": true } } diff --git a/CHANGELOG.md b/CHANGELOG.md index 091cfca..0e14398 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +# 0.11.0 (2017.4.19) + +Here's the most notable changes since `v0.10.0`. Its been about a year since a release has been pushed. Expect a new release to be published every 3-4 weeks. + +#### Breaking Changes + +- **Dropped support for node < 6** +- **Refactored webpack config files** +- **Migrate to two-package.json project structure** +- **Updated all devDeps to latest semver** +- **Migrated to Jest:** [#768](https://github.com/chentsulin/electron-react-boilerplate/pull/768) +- **Migrated to `react-router@4`** +- **Migrated to `electron-builder@4`** +- **Migrated to `webpack@2`** +- **Migrated to `react-hot-loader@3`** +- **Changed default live reload server PORT to `1212` from `3000`** + +#### Additions + +- **Added support for Yarn:** [#451](https://github.com/chentsulin/electron-react-boilerplate/pull/451) +- **Added support for Flow:** [#425](https://github.com/chentsulin/electron-react-boilerplate/pull/425) +- **Added support for stylelint:** [#911](https://github.com/chentsulin/electron-react-boilerplate/pull/911) +- **Added support for electron-builder:** [#876](https://github.com/chentsulin/electron-react-boilerplate/pull/876) +- **Added optional support for SASS:** [#880](https://github.com/chentsulin/electron-react-boilerplate/pull/880) +- **Added support for eslint-plugin-flowtype:** [#911](https://github.com/chentsulin/electron-react-boilerplate/pull/911) +- **Added support for appveyor:** [#280](https://github.com/chentsulin/electron-react-boilerplate/pull/280) +- **Added support for webpack dlls:** [#860](https://github.com/chentsulin/electron-react-boilerplate/pull/860) +- **Route based code splitting:** [#884](https://github.com/chentsulin/electron-react-boilerplate/pull/884) +- **Added support for Webpack Bundle Analyzer:** [#922](https://github.com/chentsulin/electron-react-boilerplate/pull/922) + +#### Improvements + +- **Parallelize renderer and main build processes when running `npm run build`** +- **Dynamically generate electron app menu** +- **Improved vscode integration:** [#856](https://github.com/chentsulin/electron-react-boilerplate/pull/856) + +#### Bug Fixes + +- **Fixed hot module replacement race condition bug:** [#917](https://github.com/chentsulin/electron-react-boilerplate/pull/917) [#920](https://github.com/chentsulin/electron-react-boilerplate/pull/920) + # 0.10.0 (2016.4.18) #### Improvements diff --git a/app/app.html b/app/app.html index 87d7f58..fb819d7 100644 --- a/app/app.html +++ b/app/app.html @@ -3,41 +3,11 @@ Hello Electron React! -
- + <% if (htmlWebpackPlugin.options.dll) { %> + + <% } %> diff --git a/app/components/Counter.js b/app/components/Counter.js index 746d185..0673383 100644 --- a/app/components/Counter.js +++ b/app/components/Counter.js @@ -1,6 +1,6 @@ // @flow import React, { Component } from 'react'; -import { Link } from 'react-router'; +import { Link } from 'react-router-dom'; import styles from './Counter.css'; class Counter extends Component { diff --git a/app/components/Home.js b/app/components/Home.js index 1e21609..5fac7b6 100644 --- a/app/components/Home.js +++ b/app/components/Home.js @@ -1,9 +1,8 @@ // @flow import React, { Component } from 'react'; -import { Link } from 'react-router'; +import { Link } from 'react-router-dom'; import styles from './Home.css'; - export default class Home extends Component { render() { return ( diff --git a/app/containers/Root.js b/app/containers/Root.js index a26f235..f2ce7ba 100644 --- a/app/containers/Root.js +++ b/app/containers/Root.js @@ -1,8 +1,8 @@ // @flow import React from 'react'; import { Provider } from 'react-redux'; -import { Router } from 'react-router'; -import routes from '../routes'; +import { ConnectedRouter } from 'react-router-redux'; +import Routes from '../routes'; type RootType = { store: {}, @@ -12,7 +12,9 @@ type RootType = { export default function Root({ store, history }: RootType) { return ( - + + + ); } diff --git a/app/index.js b/app/index.js index 247c128..4df2740 100644 --- a/app/index.js +++ b/app/index.js @@ -1,14 +1,11 @@ import React from 'react'; import { render } from 'react-dom'; -import { hashHistory } from 'react-router'; import { AppContainer } from 'react-hot-loader'; -import { syncHistoryWithStore } from 'react-router-redux'; import Root from './containers/Root'; -import configureStore from './store/configureStore'; +import { configureStore, history } from './store/configureStore'; import './app.global.css'; const store = configureStore(); -const history = syncHistoryWithStore(hashHistory, store); render( diff --git a/app/main.development.js b/app/main.development.js index aba1223..2751939 100644 --- a/app/main.development.js +++ b/app/main.development.js @@ -51,7 +51,10 @@ app.on('ready', async () => { height: 728 }); - mainWindow.loadURL(`file://${__dirname}/app.html`); + const url = (process.env.NODE_ENV === 'development') + ? `http://localhost:${process.env.PORT || 1212}/dist/app.html` + : `file://${__dirname}/dist/app.html`; + mainWindow.loadURL(url); // @TODO: Use 'ready-to-show' event // https://github.com/electron/electron/blob/master/docs/api/browser-window.md#using-ready-to-show-event diff --git a/app/reducers/index.js b/app/reducers/index.js index ef1b08d..1c8f47a 100644 --- a/app/reducers/index.js +++ b/app/reducers/index.js @@ -1,11 +1,11 @@ // @flow import { combineReducers } from 'redux'; -import { routerReducer as routing } from 'react-router-redux'; +import { routerReducer as router } from 'react-router-redux'; import counter from './counter'; const rootReducer = combineReducers({ counter, - routing + router, }); export default rootReducer; diff --git a/app/routes.js b/app/routes.js index 8c9b325..bfa9f26 100644 --- a/app/routes.js +++ b/app/routes.js @@ -1,14 +1,18 @@ -// @flow +/* eslint flowtype-errors/show-errors: 0 */ import React from 'react'; -import { Route, IndexRoute } from 'react-router'; +import { BrowserRouter as Router } from 'react-router-dom'; +import { Switch, Route } from 'react-router'; import App from './containers/App'; import HomePage from './containers/HomePage'; import CounterPage from './containers/CounterPage'; - -export default ( - - - - +export default () => ( + + + + + + + + ); diff --git a/app/store/configureStore.development.js b/app/store/configureStore.development.js index c0040b6..2e914c4 100644 --- a/app/store/configureStore.development.js +++ b/app/store/configureStore.development.js @@ -1,13 +1,16 @@ import { createStore, applyMiddleware, compose } from 'redux'; import thunk from 'redux-thunk'; -import { hashHistory } from 'react-router'; +import { hashHistory } from 'react-router-dom'; +import { createBrowserHistory } from 'history'; import { routerMiddleware, push } from 'react-router-redux'; import { createLogger } from 'redux-logger'; import rootReducer from '../reducers'; import * as counterActions from '../actions/counter'; import type { counterStateType } from '../reducers/counter'; -export default (initialState: ?counterStateType) => { +const history = createBrowserHistory(); + +const configureStore = (initialState: ?counterStateType) => { // Redux Configuration const middleware = []; const enhancers = []; @@ -56,3 +59,5 @@ export default (initialState: ?counterStateType) => { return store; }; + +export default { configureStore, history }; diff --git a/app/store/configureStore.production.js b/app/store/configureStore.production.js index 786433c..433034b 100644 --- a/app/store/configureStore.production.js +++ b/app/store/configureStore.production.js @@ -1,15 +1,17 @@ // @flow import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; -import { hashHistory } from 'react-router'; +import { createBrowserHistory } from 'history'; import { routerMiddleware } from 'react-router-redux'; import rootReducer from '../reducers'; import type { counterStateType } from '../reducers/counter'; -const router = routerMiddleware(hashHistory); - +const history = createBrowserHistory(); +const router = routerMiddleware(history); const enhancer = applyMiddleware(thunk, router); -export default function configureStore(initialState?: counterStateType) { +function configureStore(initialState?: counterStateType) { return createStore(rootReducer, initialState, enhancer); } + +export default { configureStore, history }; diff --git a/package.json b/package.json index 8c41669..8e7938d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "electron-react-boilerplate", "productName": "ElectronReact", - "version": "0.10.0", + "version": "0.11.0", "description": "Electron application boilerplate based on React, React Router, Webpack, React Hot Loader for rapid application development", "main": "main.js", "scripts": { @@ -18,6 +18,7 @@ "build-main": "cross-env NODE_ENV=production node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.main.prod.js --progress --profile --colors", "build-renderer": "cross-env NODE_ENV=production node --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.renderer.prod.js --progress --profile --colors", "start": "cross-env NODE_ENV=production electron ./app/", + "prestart": "npm run build", "flow": "flow", "flow-typed": "flow-typed install --overwrite", "start-hot-renderer": "cross-env HOT=1 NODE_ENV=development electron -r babel-register -r babel-polyfill ./app/main.development", @@ -114,40 +115,41 @@ }, "devDependencies": { "asar": "^0.13.0", - "babel-core": "^6.24.0", - "babel-eslint": "^7.2.1", + "babel-core": "^6.24.1", + "babel-eslint": "^7.2.2", "babel-jest": "^19.0.0", "babel-loader": "^6.4.1", "babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-dev-expression": "^0.2.1", + "babel-plugin-dynamic-import-webpack": "^1.0.1", "babel-plugin-flow-runtime": "^0.10.0", - "babel-plugin-transform-class-properties": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", "babel-polyfill": "^6.23.0", - "babel-preset-env": "^1.3.2", - "babel-preset-react": "^6.23.0", + "babel-preset-env": "^1.4.0", + "babel-preset-react": "^6.24.1", "babel-preset-react-hmre": "^1.1.1", "babel-preset-react-optimize": "^1.0.1", - "babel-preset-stage-0": "^6.22.0", - "babel-register": "^6.24.0", + "babel-preset-stage-0": "^6.24.1", + "babel-register": "^6.24.1", "babili-webpack-plugin": "^0.0.11", - "boiler-room-custodian": "^0.6.1", + "boiler-room-custodian": "^0.6.2", "chalk": "^1.1.3", "concurrently": "^3.4.0", "cross-env": "^4.0.0", "cross-spawn": "^5.1.0", "css-loader": "^0.28.0", "devtron": "^1.4.0", - "electron": "^1.6.2", - "electron-builder": "^16.6.0", - "electron-devtools-installer": "^2.1.0", - "enzyme": "^2.8.0", + "electron": "^1.6.5", + "electron-builder": "^17.0.1", + "electron-devtools-installer": "^2.2.0", + "enzyme": "^2.8.2", "eslint": "^3.19.0", "eslint-config-airbnb": "^14.1.0", "eslint-formatter-pretty": "^1.1.0", "eslint-import-resolver-webpack": "^0.8.1", "eslint-plugin-compat": "^1.0.2", - "eslint-plugin-flowtype": "^2.30.4", + "eslint-plugin-flowtype": "^2.31.0", "eslint-plugin-flowtype-errors": "^3.0.3", "eslint-plugin-import": "^2.2.0", "eslint-plugin-jest": "^19.0.1", @@ -156,8 +158,8 @@ "eslint-plugin-react": "^6.10.3", "express": "^4.15.2", "fbjs-scripts": "^0.7.1", - "file-loader": "^0.11.0", - "flow-bin": "^0.44.0", + "file-loader": "^0.11.1", + "flow-bin": "^0.44.2", "flow-runtime": "^0.10.0", "flow-typed": "^2.0.0", "html-webpack-plugin": "^2.28.0", @@ -166,8 +168,8 @@ "jsdom": "^9.12.0", "minimist": "^1.2.0", "node-sass": "^4.5.2", - "react-addons-test-utils": "^15.4.2", - "react-test-renderer": "^15.4.2", + "react-addons-test-utils": "^15.5.1", + "react-test-renderer": "^15.5.4", "redux-logger": "^3.0.1", "sass-loader": "^6.0.3", "sinon": "^2.1.0", @@ -176,23 +178,26 @@ "stylelint": "^7.10.1", "stylelint-config-standard": "^16.0.0", "url-loader": "^0.5.8", - "webpack": "^2.3.2", + "webpack": "^2.4.1", + "webpack-bundle-analyzer": "^2.4.0", "webpack-dev-server": "^2.4.2", "webpack-merge": "^4.1.0" }, "dependencies": { "electron-debug": "^1.1.0", - "extract-text-webpack-plugin": "^2.0.0", + "extract-text-webpack-plugin": "^2.1.0", "font-awesome": "^4.7.0", - "react": "^15.4.2", - "react-dom": "^15.4.2", + "history": "^4.6.1", + "react": "^15.5.4", + "react-dom": "^15.5.4", "react-hot-loader": "3.0.0-beta.6", - "react-redux": "^5.0.2", - "react-router": "^3.0.2", - "react-router-redux": "^4.0.7", + "react-redux": "^5.0.4", + "react-router": "^4.1.1", + "react-router-dom": "^4.1.1", + "react-router-redux": "^5.0.0-alpha.6", "redux": "^3.6.0", "redux-thunk": "^2.2.0", - "source-map-support": "^0.4.10" + "source-map-support": "^0.4.14" }, "devEngines": { "node": ">=6.x", diff --git a/test/actions/counter.spec.js b/test/actions/counter.spec.js index 332a0e2..ff6ea3a 100644 --- a/test/actions/counter.spec.js +++ b/test/actions/counter.spec.js @@ -1,4 +1,3 @@ -/* eslint-disable no-unused-expressions */ import { spy } from 'sinon'; import * as actions from '../../app/actions/counter'; diff --git a/test/components/Counter.spec.js b/test/components/Counter.spec.js index 8b2a99f..733bf28 100644 --- a/test/components/Counter.spec.js +++ b/test/components/Counter.spec.js @@ -1,7 +1,8 @@ -/* eslint-disable no-unused-expressions */ import { spy } from 'sinon'; import React from 'react'; import { shallow } from 'enzyme'; +import { BrowserRouter as Router } from 'react-router-dom'; +import renderer from 'react-test-renderer'; import Counter from '../../app/components/Counter'; function setup() { @@ -32,6 +33,21 @@ describe('Counter component', () => { expect(actions.increment.called).toBe(true); }); + it('should match exact snapshot', () => { + const { actions } = setup(); + const tree = renderer + .create( +
+ + + +
+ ) + .toJSON(); + + expect(tree).toMatchSnapshot(); + }); + it('should second button should call decrement', () => { const { buttons, actions } = setup(); buttons.at(1).simulate('click'); diff --git a/test/containers/CounterPage.spec.js b/test/containers/CounterPage.spec.js index e3a9b10..846d3d5 100644 --- a/test/containers/CounterPage.spec.js +++ b/test/containers/CounterPage.spec.js @@ -1,14 +1,19 @@ import React from 'react'; import { mount } from 'enzyme'; import { Provider } from 'react-redux'; +import { createBrowserHistory } from 'history'; +import { ConnectedRouter } from 'react-router-redux'; import CounterPage from '../../app/containers/CounterPage'; -import configureStore from '../../app/store/configureStore'; +import { configureStore } from '../../app/store/configureStore'; function setup(initialState) { const store = configureStore(initialState); + const history = createBrowserHistory(); const app = mount( - + + + ); return { diff --git a/test/example.js b/test/example.js index f71bd77..e73ab5b 100644 --- a/test/example.js +++ b/test/example.js @@ -1,5 +1,3 @@ -/* eslint-disable func-names */ - describe('description', () => { it('should have description', () => { expect(1 + 2).toBe(3); diff --git a/webpack.config.main.prod.js b/webpack.config.main.prod.js index 0567da2..c12fb0f 100644 --- a/webpack.config.main.prod.js +++ b/webpack.config.main.prod.js @@ -5,6 +5,7 @@ import webpack from 'webpack'; import merge from 'webpack-merge'; import BabiliPlugin from 'babili-webpack-plugin'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import baseConfig from './webpack.config.base'; export default merge.smart(baseConfig, { @@ -26,6 +27,11 @@ export default merge.smart(baseConfig, { */ new BabiliPlugin(), + new BundleAnalyzerPlugin({ + analyzerMode: process.env.OPEN_ANALYZER === 'true' ? 'server' : 'disabled', + openAnalyzer: process.env.OPEN_ANALYZER === 'true' + }), + /** * Create global constants which can be configured at compile time. * diff --git a/webpack.config.renderer.dev.js b/webpack.config.renderer.dev.js index 4b20996..51d3575 100644 --- a/webpack.config.renderer.dev.js +++ b/webpack.config.renderer.dev.js @@ -12,8 +12,10 @@ import fs from 'fs'; import webpack from 'webpack'; import chalk from 'chalk'; import merge from 'webpack-merge'; +import express from 'express'; import { spawn, execSync } from 'child_process'; import ExtractTextPlugin from 'extract-text-webpack-plugin'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; import baseConfig from './webpack.config.base'; const port = process.env.PORT || 1212; @@ -187,7 +189,8 @@ export default merge.smart(baseConfig, { * https://webpack.js.org/concepts/hot-module-replacement/ */ new webpack.HotModuleReplacementPlugin({ - multiStep: true + // @TODO: Waiting on https://github.com/jantimon/html-webpack-plugin/issues/533 + // multiStep: true }), new webpack.NoEmitOnErrorsPlugin(), @@ -214,6 +217,15 @@ export default merge.smart(baseConfig, { new ExtractTextPlugin({ filename: '[name].css' + }), + + /** + * Dynamically generate index.html page + */ + new HtmlWebpackPlugin({ + filename: 'app.html', + template: 'app/app.html', + dll: `${publicPath}/dll/vendor.dll.js` }) ], @@ -234,9 +246,12 @@ export default merge.smart(baseConfig, { }, historyApiFallback: { verbose: true, + rewrites: [{ from: /./, to: '/dist/app.html' }], disableDotRule: false, }, - setup() { + setup(app) { + app.use('/dist/dll/', express.static(dll)); + if (process.env.START_HOT) { spawn( 'npm', diff --git a/webpack.config.renderer.prod.js b/webpack.config.renderer.prod.js index 02fc001..9448b0f 100644 --- a/webpack.config.renderer.prod.js +++ b/webpack.config.renderer.prod.js @@ -5,6 +5,7 @@ import path from 'path'; import webpack from 'webpack'; import ExtractTextPlugin from 'extract-text-webpack-plugin'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import merge from 'webpack-merge'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import BabiliPlugin from 'babili-webpack-plugin'; @@ -156,13 +157,17 @@ export default merge.smart(baseConfig, { new ExtractTextPlugin('style.css'), + new BundleAnalyzerPlugin({ + analyzerMode: process.env.OPEN_ANALYZER === 'true' ? 'server' : 'disabled', + openAnalyzer: process.env.OPEN_ANALYZER === 'true' + }), + /** * Dynamically generate index.html page */ new HtmlWebpackPlugin({ - filename: '../app.html', - template: 'app/app.html', - inject: false + filename: 'app.html', + template: 'app/app.html' }) ], }); diff --git a/yarn.lock b/yarn.lock index e5af67e..9c1021f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -78,7 +78,7 @@ acorn@^4.0.3, acorn@^4.0.4: version "4.0.11" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" -acorn@^5.0.0, acorn@^5.0.1: +acorn@^5.0.0, acorn@^5.0.1, acorn@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" @@ -91,8 +91,8 @@ ajv-keywords@^2.0.1-beta.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.0.1-beta.2.tgz#b48f36d63e9334c5045bafde090db006328a0972" ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1: - version "4.11.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.6.tgz#947e93049790942b2a2d60a8289b28924d39f987" + version "4.11.7" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" @@ -223,8 +223,8 @@ arr-diff@^2.0.0: arr-flatten "^1.0.1" arr-flatten@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.2.tgz#1ec1e63439c54f67d6f72bb4299c3d4f73b2d996" + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" array-differ@^1.0.0: version "1.0.0" @@ -371,7 +371,7 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" -babel-core@^6.0.0, babel-core@^6.23.1, babel-core@^6.24.0, babel-core@^6.24.1, babel-core@^6.7.2: +babel-core@^6.0.0, babel-core@^6.23.1, babel-core@^6.24.1, babel-core@^6.7.2: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" dependencies: @@ -395,7 +395,7 @@ babel-core@^6.0.0, babel-core@^6.23.1, babel-core@^6.24.0, babel-core@^6.24.1, b slash "^1.0.0" source-map "^0.5.0" -babel-eslint@^7.2.1: +babel-eslint@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.2.tgz#0da2cbe6554fd0fb069f19674f2db2f9c59270ff" dependencies: @@ -612,6 +612,13 @@ babel-plugin-dev-expression@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.1.tgz#d4a7beefefbb50e3f2734990a82a2486cf9eb9ee" +babel-plugin-dynamic-import-webpack@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-webpack/-/babel-plugin-dynamic-import-webpack-1.0.1.tgz#26c24a1c1c9bf49184b30d5867562a4cbfa530d1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-template "^6.16.0" + babel-plugin-flow-runtime@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/babel-plugin-flow-runtime/-/babel-plugin-flow-runtime-0.10.0.tgz#de60b8c64ce0eec6b13663a129d79ec46b97cb2d" @@ -786,7 +793,7 @@ babel-plugin-transform-class-constructor-call@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-class-properties@^6.23.0, babel-plugin-transform-class-properties@^6.24.1, babel-plugin-transform-class-properties@^6.6.0: +babel-plugin-transform-class-properties@^6.24.1, babel-plugin-transform-class-properties@^6.6.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" dependencies: @@ -834,7 +841,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es20 babel-types "^6.24.1" lodash "^4.2.0" -babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.6.5: +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.6.5: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -1181,7 +1188,7 @@ babel-preset-babili@^0.0.12: babel-plugin-transform-undefined-to-void "^6.8.0" lodash.isplainobject "^4.0.6" -babel-preset-env@^1.3.2: +babel-preset-env@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.4.0.tgz#c8e02a3bcc7792f23cded68e0355b9d4c28f0f7a" dependencies: @@ -1274,7 +1281,7 @@ babel-preset-react-optimize@^1.0.1: babel-plugin-transform-react-pure-class-to-function "^1.0.1" babel-plugin-transform-react-remove-prop-types "^0.2.5" -babel-preset-react@^6.23.0: +babel-preset-react@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" dependencies: @@ -1285,7 +1292,7 @@ babel-preset-react@^6.23.0: babel-plugin-transform-react-jsx-source "^6.22.0" babel-preset-flow "^6.23.0" -babel-preset-stage-0@^6.22.0: +babel-preset-stage-0@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" dependencies: @@ -1320,7 +1327,7 @@ babel-preset-stage-3@^6.24.1: babel-plugin-transform-exponentiation-operator "^6.24.1" babel-plugin-transform-object-rest-spread "^6.22.0" -babel-register@^6.24.0, babel-register@^6.24.1: +babel-register@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" dependencies: @@ -1453,7 +1460,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" -boiler-room-custodian@^0.6.1: +boiler-room-custodian@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/boiler-room-custodian/-/boiler-room-custodian-0.6.2.tgz#59c8fcb35533282b6e3c90d3c251f165e6df521a" dependencies: @@ -2619,7 +2626,7 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" -duplexer@~0.1.1: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -2633,22 +2640,46 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -ejs@^2.3.1: +ejs@^2.3.1, ejs@^2.5.6: version "2.5.6" resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88" -electron-builder-core@16.8.0: - version "16.8.0" - resolved "https://registry.yarnpkg.com/electron-builder-core/-/electron-builder-core-16.8.0.tgz#9f1babbb6f3c294da5726f09ad8c97f0fb834449" +electron-builder-core@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/electron-builder-core/-/electron-builder-core-17.0.1.tgz#0d1fc68f43dff29d3bc4d703eccc126dc75a99eb" -electron-builder-http@16.6.0, electron-builder-http@~16.6.0: +electron-builder-http@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/electron-builder-http/-/electron-builder-http-17.0.1.tgz#45c78fdf4ad94f80676ea7a7c685b426309d47a5" + dependencies: + debug "2.6.3" + fs-extra-p "^4.1.0" + +electron-builder-http@~16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/electron-builder-http/-/electron-builder-http-16.6.0.tgz#60676caf0f1d9daf385ce070b07eec49efb29f0f" dependencies: debug "2.6.3" fs-extra-p "^4.1.0" -electron-builder-util@16.8.3, electron-builder-util@~16.8.3: +electron-builder-util@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/electron-builder-util/-/electron-builder-util-17.0.1.tgz#f58afb4d031cde9ba09efc64a6b53b1a29ce63ed" + dependencies: + "7zip-bin" "^2.0.4" + bluebird-lst "^1.0.2" + chalk "^1.1.3" + debug "2.6.3" + electron-builder-http "~16.6.0" + fs-extra-p "^4.1.0" + ini "^1.3.4" + is-ci "^1.0.10" + node-emoji "^1.5.1" + source-map-support "^0.4.14" + stat-mode "^0.2.2" + tunnel-agent "^0.6.0" + +electron-builder-util@~16.8.3: version "16.8.3" resolved "https://registry.yarnpkg.com/electron-builder-util/-/electron-builder-util-16.8.3.tgz#31a7fdb2f80c255f8f572af8ed9f1c6b033a47ce" dependencies: @@ -2665,9 +2696,9 @@ electron-builder-util@16.8.3, electron-builder-util@~16.8.3: stat-mode "^0.2.2" tunnel-agent "^0.6.0" -electron-builder@^16.6.0: - version "16.8.4" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-16.8.4.tgz#6b0389653465926846ed4abecbece1624d91c519" +electron-builder@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-17.0.2.tgz#77d8a0ea3c14cf45177260fb5454a94bf1964c24" dependencies: "7zip-bin" "^2.0.4" ajv "^5.0.4-beta.2" @@ -2676,14 +2707,14 @@ electron-builder@^16.6.0: chalk "^1.1.3" chromium-pickle-js "^0.2.0" cuint "^0.2.2" - electron-builder-core "16.8.0" - electron-builder-http "16.6.0" - electron-builder-util "16.8.3" + electron-builder-core "17.0.1" + electron-builder-http "17.0.1" + electron-builder-util "17.0.1" electron-download-tf "4.2.1" electron-osx-sign "0.4.4" - electron-publish "16.8.3" + electron-publish "17.0.1" fs-extra-p "^4.1.0" - hosted-git-info "^2.4.1" + hosted-git-info "^2.4.2" is-ci "^1.0.10" isbinaryfile "^3.0.2" js-yaml "^3.8.3" @@ -2696,7 +2727,7 @@ electron-builder@^16.6.0: semver "^5.3.0" update-notifier "^2.1.0" uuid-1345 "^0.99.6" - yargs "^7.0.2" + yargs "^7.1.0" electron-chromedriver@~1.6.0: version "1.6.0" @@ -2712,7 +2743,7 @@ electron-debug@^1.1.0: electron-is-dev "^0.1.0" electron-localshortcut "^0.6.0" -electron-devtools-installer@^2.1.0: +electron-devtools-installer@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-2.2.0.tgz#9813e6811afcd69ddca3cae5416db72ea7ecfb6a" dependencies: @@ -2769,9 +2800,9 @@ electron-osx-sign@0.4.4: plist "^2.0.1" tempfile "^1.1.1" -electron-publish@16.8.3: - version "16.8.3" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-16.8.3.tgz#02f2cd8783c5216f0fc82991df487046994194a1" +electron-publish@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-17.0.1.tgz#924cc89d1456efbcfe1320c4aa7eb57c34686451" dependencies: bluebird-lst "^1.0.2" chalk "^1.1.3" @@ -2792,9 +2823,9 @@ electron-version@^1.1.0: once "^1.3.2" semver "^5.0.3" -electron@^1.6.2: - version "1.6.6" - resolved "https://registry.yarnpkg.com/electron/-/electron-1.6.6.tgz#17df8cdf73ec2c04cfad7abb413579b8b8dafc28" +electron@^1.6.5: + version "1.6.7" + resolved "https://registry.yarnpkg.com/electron/-/electron-1.6.7.tgz#08b90812912a66f80cfb47bdaef6edfd6b78aa81" dependencies: electron-download "^3.0.1" extract-zip "^1.0.3" @@ -2860,7 +2891,7 @@ env-paths@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" -enzyme@^2.8.0: +enzyme@^2.8.2: version "2.8.2" resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.8.2.tgz#6c8bcb05012abc4aa4bc3213fb23780b9b5b1714" dependencies: @@ -3062,9 +3093,9 @@ eslint-plugin-flowtype-errors@^3.0.3: shelljs "^0.7.7" slash "^1.0.0" -eslint-plugin-flowtype@^2.30.4: - version "2.30.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.30.4.tgz#771d6bb4578ab8598e9c58018fea2e1a22946249" +eslint-plugin-flowtype@^2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.31.0.tgz#c575f7f5f4a8f0b74bd7339c81c4efbe1dd007fb" dependencies: lodash "^4.15.0" @@ -3317,7 +3348,7 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extract-text-webpack-plugin@^2.0.0: +extract-text-webpack-plugin@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz#69315b885f876dbf96d3819f6a9f1cca7aebf159" dependencies: @@ -3423,7 +3454,7 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" -file-loader@^0.11.0: +file-loader@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.11.1.tgz#6b328ee1234a729e4e47d36375dd6d35c0e1db84" dependencies: @@ -3440,6 +3471,10 @@ fileset@^2.0.2: glob "^7.0.3" minimatch "^3.0.3" +filesize@^3.5.6: + version "3.5.6" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a" + fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -3500,9 +3535,9 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" -flow-bin@^0.44.0: - version "0.44.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.44.0.tgz#b291f147e5dae1cc8a116f834f24d9402ed96a52" +flow-bin@^0.44.2: + version "0.44.2" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.44.2.tgz#3893c7db5de043ed82674f327a04b1309db208b5" flow-config-parser@^0.3.0: version "0.3.0" @@ -3855,6 +3890,12 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + dependencies: + duplexer "^0.1.1" + handle-thing@^1.2.4: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" @@ -3948,13 +3989,14 @@ highlight.js@^9.3.0: version "9.10.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.10.0.tgz#f9f0b14c0be00f0e4fb1e577b749fed9e6f52f55" -history@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c" +history@^4.5.1, history@^4.6.0, history@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.6.1.tgz#911cf8eb65728555a94f2b12780a0c531a14d2fd" dependencies: invariant "^2.2.1" loose-envify "^1.2.0" - query-string "^4.2.2" + resolve-pathname "^2.0.0" + value-equal "^0.2.0" warning "^3.0.0" hmac-drbg@^1.0.0: @@ -3984,7 +4026,7 @@ home-path@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.5.tgz#788b29815b12d53bacf575648476e6f9041d133f" -hosted-git-info@^2.1.4, hosted-git-info@^2.4.1: +hosted-git-info@^2.1.4, hosted-git-info@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" @@ -5223,7 +5265,7 @@ longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: @@ -5808,6 +5850,10 @@ onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +opener@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + opn@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" @@ -5879,8 +5925,8 @@ p-locate@^2.0.0: p-limit "^1.1.0" package-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.0.tgz#f3c9dc8738f5b59304d54d2cfb3f91d08fdd7998" + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" dependencies: got "^6.7.1" registry-auth-token "^3.0.1" @@ -5970,7 +6016,7 @@ path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" -path-to-regexp@^1.7.0: +path-to-regexp@^1.5.3, path-to-regexp@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" dependencies: @@ -6398,7 +6444,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types@^15.0.0, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@~15.5.7: +prop-types@^15.0.0, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@~15.5.7: version "15.5.8" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.8.tgz#6b7b2e141083be38c8595aa51fc55775c7199394" dependencies: @@ -6449,9 +6495,9 @@ qs@~6.3.0: version "6.3.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" -query-string@^4.1.0, query-string@^4.2.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd" +query-string@^4.1.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.3.tgz#91c90ff7173d9acd9e088b3cc223f9b437865692" dependencies: object-assign "^4.1.0" strict-uri-encode "^1.0.0" @@ -6492,7 +6538,7 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.1.7, rc@^1.2.1: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-addons-test-utils@^15.4.2: +react-addons-test-utils@^15.5.1: version "15.5.1" resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7" dependencies: @@ -6507,7 +6553,7 @@ react-deep-force-update@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-2.0.1.tgz#4f7f6c12c3e7de42f345992a3c518236fa1ecad3" -react-dom@^15.4.2: +react-dom@^15.5.4: version "15.5.4" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da" dependencies: @@ -6540,7 +6586,7 @@ react-proxy@^3.0.0-alpha.0: dependencies: lodash "^4.6.1" -react-redux@^5.0.2: +react-redux@^5.0.4: version "5.0.4" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.0.4.tgz#1563babadcfb2672f57f9ceaa439fb16bf85d55b" dependencies: @@ -6552,23 +6598,36 @@ react-redux@^5.0.2: loose-envify "^1.1.0" prop-types "^15.0.0" -react-router-redux@^4.0.7: - version "4.0.8" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-4.0.8.tgz#227403596b5151e182377dab835b5d45f0f8054e" +react-router-dom@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.1.1.tgz#3021ade1f2c160af97cf94e25594c5f294583025" + dependencies: + history "^4.5.1" + loose-envify "^1.3.1" + prop-types "^15.5.4" + react-router "^4.1.1" -react-router@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.0.5.tgz#c3b7873758045a8bbc9562aef4ff4bc8cce7c136" +react-router-redux@^5.0.0-alpha.6: + version "5.0.0-alpha.6" + resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-5.0.0-alpha.6.tgz#7418663c2ecd3c51be856fcf28f3d1deecc1a576" dependencies: - create-react-class "^15.5.1" - history "^3.0.0" + history "^4.5.1" + prop-types "^15.5.4" + react-router "^4.1.1" + +react-router@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.1.1.tgz#d448f3b7c1b429a6fbb03395099949c606b1fe95" + dependencies: + history "^4.6.0" hoist-non-react-statics "^1.2.0" - invariant "^2.2.1" - loose-envify "^1.2.0" - prop-types "^15.5.6" + invariant "^2.2.2" + loose-envify "^1.3.1" + path-to-regexp "^1.5.3" + prop-types "^15.5.4" warning "^3.0.0" -react-test-renderer@^15.4.2: +react-test-renderer@^15.5.4: version "15.5.4" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.5.4.tgz#d4ebb23f613d685ea8f5390109c2d20fbf7c83bc" dependencies: @@ -6586,7 +6645,7 @@ react-transform-hmr@^1.0.3: global "^4.3.0" react-proxy "^1.1.7" -react@^15.4.2: +react@^15.5.4: version "15.5.4" resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" dependencies: @@ -6912,6 +6971,10 @@ resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" +resolve-pathname@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.0.2.tgz#e55c016eb2e9df1de98e85002282bfb38c630436" + resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -7221,7 +7284,7 @@ source-map-resolve@^0.3.0: source-map-url "~0.3.0" urix "~0.1.0" -source-map-support@^0.4.10, source-map-support@^0.4.14, source-map-support@^0.4.2: +source-map-support@^0.4.14, source-map-support@^0.4.2: version "0.4.14" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.14.tgz#9d4463772598b86271b4f523f6c1f4e02a7d6aef" dependencies: @@ -8044,6 +8107,10 @@ validator@^5.4.0: version "5.7.0" resolved "https://registry.yarnpkg.com/validator/-/validator-5.7.0.tgz#7a87a58146b695ac486071141c0c49d67da05e5c" +value-equal@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.2.0.tgz#4f41c60a3fc011139a2ec3d3340a8998ae8b69c0" + vary@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" @@ -8142,6 +8209,21 @@ webidl-conversions@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0" +webpack-bundle-analyzer@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.4.0.tgz#e406b016e7452bc864793848c79308782accba8e" + dependencies: + acorn "^5.0.3" + chalk "^1.1.3" + commander "^2.9.0" + ejs "^2.5.6" + express "^4.15.2" + filesize "^3.5.6" + gzip-size "^3.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + opener "^1.4.3" + webpack-dev-middleware@^1.9.0: version "1.10.1" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893" @@ -8193,7 +8275,7 @@ webpack-sources@^0.2.3: source-list-map "^1.1.1" source-map "~0.5.3" -webpack@^2.3.2: +webpack@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.4.1.tgz#15a91dbe34966d8a4b99c7d656efd92a2e5a6f6a" dependencies: @@ -8353,8 +8435,8 @@ xmldom@0.1.x: resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" xregexp@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-3.1.1.tgz#8ee18d75ef5c7cb3f9967f8d29414a6ca5b1a184" + version "3.2.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-3.2.0.tgz#cb3601987bfe2695b584000c18f1c4a8c322878e" "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" @@ -8446,7 +8528,7 @@ yargs@^6.0.0, yargs@^6.3.0: y18n "^3.2.1" yargs-parser "^4.2.0" -yargs@^7.0.2: +yargs@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" dependencies: