+}
+
+const isReduxDevtoolsExtenstionExist =
+(arg: Window | WindowWithDevTools):
+ arg is WindowWithDevTools => {
+ return '__REDUX_DEVTOOLS_EXTENSION__' in arg;
+}
+
+// ...
+
+const store = createStore(rootReducer, initialState,
+ isReduxDevtoolsExtenstionExist(window) ?
+ window.__REDUX_DEVTOOLS_EXTENSION__() : undefined)
+```
+
### Export from browser console or from application
```js
@@ -7,3 +46,25 @@ store.liftedStore.getState()
```
The extension is not sharing `store` object, so you should take care of that.
+
+### Applying multiple times with different sets of options
+
+We're [not allowing that from instrumentation part](https://github.com/zalmoxisus/redux-devtools-instrument/blob/master/src/instrument.js#L676), because that would re-dispatch every app action in case we'd have many liftedStores, but there's [a helper for logging only](https://github.com/zalmoxisus/redux-devtools-extension/blob/master/npm-package/logOnly.js), which can be used it like so:
+
+```js
+import { createStore, compose } from 'redux';
+import { devToolsEnhancer } from 'redux-devtools-extension/logOnly';
+
+const store = createStore(reducer, /* preloadedState, */ compose(
+devToolsEnhancer({
+ instaceID: 1,
+ name: 'Blacklisted',
+ actionsBlacklist: '...'
+}),
+devToolsEnhancer({
+ instaceID: 2,
+ name: 'Whitelisted',
+ actionsWhitelist: '...'
+})
+));
+```
diff --git a/docs/Troubleshooting.md b/docs/Troubleshooting.md
index ae908093..f7be9e5b 100644
--- a/docs/Troubleshooting.md
+++ b/docs/Troubleshooting.md
@@ -16,9 +16,9 @@ If you develop on your local filesystem, make sure to allow Redux DevTools acces
Most likely you mutate the state. Check it by [adding `redux-immutable-state-invariant` middleware](https://github.com/zalmoxisus/redux-devtools-extension/blob/master/examples/counter/store/configureStore.js#L3).
-### Last actions RE-APPLIED
+### @@INIT or REPLACE action resets the state of the app or last actions RE-APPLIED
-When you use `store.replaceReducer` the effect will be the same as for hot-reloading, where the extension is recomputing all the history again. To avoid that set [`shouldHotReload`](/docs/API/Arguments.md#shouldhotreload) parameter to `false`.
+`@@redux/REPLACE` (or `@@INIT`) is used internally when the application is hot reloaded. When you use `store.replaceReducer` the effect will be the same as for hot-reloading, where the extension is recomputing all the history again. To avoid that set [`shouldHotReload`](/docs/API/Arguments.md#shouldhotreload) parameter to `false`.
### It doesn't work with other store enhancers
@@ -38,7 +38,7 @@ Where `batchedSubscribe` is `redux-batched-subscribe` store enhancer.
That is happening due to serialization of some huge objects included in the state or action. The solution is to [sanitize them](/docs/API/Arguments.md#actionsanitizer--statesanitizer).
-You can do that by including/omitting data containing specific values, having specific types... In the example bellow we're omitting parts of action and state objects with the key `data` (in case of action only when was dispatched action `FILE_DOWNLOAD_SUCCESS`):
+You can do that by including/omitting data containing specific values, having specific types... In the example below we're omitting parts of action and state objects with the key `data` (in case of action only when was dispatched action `FILE_DOWNLOAD_SUCCESS`):
```js
const actionSanitizer = (action) => (
diff --git a/examples/counter/.babelrc b/examples/counter/.babelrc
index 120f832f..61058eb2 100644
--- a/examples/counter/.babelrc
+++ b/examples/counter/.babelrc
@@ -1,4 +1,3 @@
{
- "presets": [ "es2015", "stage-0", "react" ],
- "plugins": [ "add-module-exports", "transform-decorators-legacy" ]
+ "presets": [ "es2015", "stage-0", "react" ]
}
diff --git a/examples/counter/components/Counter.js b/examples/counter/components/Counter.js
index 2f8cf750..63372813 100644
--- a/examples/counter/components/Counter.js
+++ b/examples/counter/components/Counter.js
@@ -1,6 +1,5 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import { isMonitorAction } from '../store/configureStore';
class Counter extends Component {
render() {
diff --git a/examples/counter/package.json b/examples/counter/package.json
index db7e538f..73fb3ab2 100644
--- a/examples/counter/package.json
+++ b/examples/counter/package.json
@@ -17,35 +17,25 @@
},
"homepage": "http://rackt.github.io/redux",
"dependencies": {
- "prop-types": "^15.5.8",
- "react": "^15.5.4",
- "react-dom": "^15.5.4",
- "react-redux": "^4.4.5",
- "redux": "^3.5.2",
- "redux-devtools-extension": "^1.0.0",
- "redux-thunk": "^2.1.0"
+ "prop-types": "^15.6.2",
+ "react": "^16.7.0",
+ "react-dom": "^16.7.0",
+ "react-redux": "^6.0.0",
+ "redux": "^4.0.1",
+ "redux-devtools-extension": "^2.13.7",
+ "redux-thunk": "^2.3.0"
},
"devDependencies": {
- "babel-core": "^6.3.15",
- "babel-loader": "^6.2.0",
- "babel-plugin-add-module-exports": "^0.1.1",
- "babel-plugin-react-transform": "^2.0.0",
- "babel-plugin-transform-decorators-legacy": "^1.2.0",
- "babel-polyfill": "^6.3.14",
- "babel-preset-es2015": "^6.3.13",
- "babel-preset-react": "^6.3.13",
- "babel-preset-react-hmre": "^1.0.1",
+ "babel-cli": "^6.3.17",
+ "babel-core": "^6.3.17",
+ "babel-loader": "^7.0.0",
+ "babel-preset-es2015": "^6.0.0",
+ "babel-preset-react": "6.3.13",
"babel-preset-stage-0": "^6.3.13",
- "expect": "^1.6.0",
"express": "^4.13.3",
- "jsdom": "^5.6.1",
- "mocha": "^2.2.5",
- "node-libs-browser": "^0.5.2",
- "react-addons-test-utils": "^15.1.0",
- "react-transform-hmr": "^1.0.0",
- "redux-immutable-state-invariant": "^1.1.1",
- "webpack": "^1.13.1",
- "webpack-dev-middleware": "^1.2.0",
+ "redux-immutable-state-invariant": "^2.1.0",
+ "webpack": "^4.0.0",
+ "webpack-dev-server": "^3.0.0",
"webpack-hot-middleware": "^2.2.0"
}
}
diff --git a/examples/counter/store/configureStore.js b/examples/counter/store/configureStore.js
index 98de9de3..2456b86b 100644
--- a/examples/counter/store/configureStore.js
+++ b/examples/counter/store/configureStore.js
@@ -5,9 +5,8 @@ import invariant from 'redux-immutable-state-invariant';
import reducer from '../reducers';
import * as actionCreators from '../actions/counter';
-export let isMonitorAction;
export default function configureStore(preloadedState) {
- const composeEnhancers = composeWithDevTools({ actionCreators });
+ const composeEnhancers = composeWithDevTools({ actionCreators, trace: true, traceLimit: 25 });
const store = createStore(reducer, preloadedState, composeEnhancers(
applyMiddleware(invariant(), thunk)
));
@@ -15,8 +14,7 @@ export default function configureStore(preloadedState) {
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('../reducers', () => {
- const nextReducer = require('../reducers');
- store.replaceReducer(nextReducer);
+ store.replaceReducer(require('../reducers').default)
});
}
diff --git a/examples/counter/webpack.config.js b/examples/counter/webpack.config.js
index 6fcc6a3d..014df804 100644
--- a/examples/counter/webpack.config.js
+++ b/examples/counter/webpack.config.js
@@ -2,7 +2,8 @@ var path = require('path');
var webpack = require('webpack');
module.exports = {
- devtool: 'cheap-module-eval-source-map',
+ mode: 'development',
+ devtool: 'source-map',
entry: [
'webpack-hot-middleware/client',
'./index'
@@ -13,16 +14,13 @@ module.exports = {
publicPath: '/static/'
},
plugins: [
- new webpack.optimize.OccurenceOrderPlugin(),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoErrorsPlugin()
+ new webpack.HotModuleReplacementPlugin()
],
module: {
- loaders: [{
+ rules: [{
test: /\.js$/,
- loaders: ['babel'],
- exclude: /node_modules/,
- include: __dirname
+ loaders: ['babel-loader'],
+ exclude: /node_modules/
}]
}
};
diff --git a/examples/react-counter-messaging/.babelrc b/examples/react-counter-messaging/.babelrc
index 120f832f..61058eb2 100644
--- a/examples/react-counter-messaging/.babelrc
+++ b/examples/react-counter-messaging/.babelrc
@@ -1,4 +1,3 @@
{
- "presets": [ "es2015", "stage-0", "react" ],
- "plugins": [ "add-module-exports", "transform-decorators-legacy" ]
+ "presets": [ "es2015", "stage-0", "react" ]
}
diff --git a/examples/react-counter-messaging/components/Counter.js b/examples/react-counter-messaging/components/Counter.js
index eea41aeb..b1da358c 100644
--- a/examples/react-counter-messaging/components/Counter.js
+++ b/examples/react-counter-messaging/components/Counter.js
@@ -1,8 +1,8 @@
-import React, { Component, PropTypes } from 'react';
+import React, { Component } from 'react';
const withDevTools = (
// process.env.NODE_ENV === 'development' &&
- typeof window !== 'undefined' && window.devToolsExtension
+ typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__
);
class Counter extends Component {
@@ -16,7 +16,7 @@ class Counter extends Component {
componentWillMount() {
if (withDevTools) {
- this.devTools = window.devToolsExtension.connect();
+ this.devTools = window.__REDUX_DEVTOOLS_EXTENSION__.connect();
this.unsubscribe = this.devTools.subscribe((message) => {
// Implement monitors actions.
// For example time traveling:
@@ -30,7 +30,7 @@ class Counter extends Component {
componentWillUnmount() {
if (withDevTools) {
this.unsubscribe(); // Use if you have other subscribers from other components.
- window.devToolsExtension.disconnect(); // If there aren't other subscribers.
+ window.__REDUX_DEVTOOLS_EXTENSION__.disconnect(); // If there aren't other subscribers.
}
}
diff --git a/examples/react-counter-messaging/package.json b/examples/react-counter-messaging/package.json
index 9784735a..97db9897 100644
--- a/examples/react-counter-messaging/package.json
+++ b/examples/react-counter-messaging/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"description": "React counter example",
"scripts": {
- "start": "node server.js"
+ "start": "webpack-dev-server --progress"
},
"repository": {
"type": "git",
@@ -15,29 +15,19 @@
},
"homepage": "https://github.com/zalmoxisus/redux-devtools-extension",
"dependencies": {
- "react": "^15.1.0",
- "react-dom": "^15.1.0"
+ "react": "^16.0.0",
+ "react-dom": "^16.0.0"
},
"devDependencies": {
- "babel-core": "^6.3.15",
- "babel-loader": "^6.2.0",
- "babel-plugin-add-module-exports": "^0.1.1",
- "babel-plugin-react-transform": "^2.0.0",
- "babel-plugin-transform-decorators-legacy": "^1.2.0",
- "babel-polyfill": "^6.3.14",
- "babel-preset-es2015": "^6.3.13",
- "babel-preset-react": "^6.3.13",
- "babel-preset-react-hmre": "^1.0.1",
+ "babel-cli": "^6.3.17",
+ "babel-core": "^6.3.17",
+ "babel-loader": "^7.0.0",
+ "babel-preset-es2015": "^6.0.0",
+ "babel-preset-react": "6.3.13",
"babel-preset-stage-0": "^6.3.13",
- "expect": "^1.6.0",
- "express": "^4.13.3",
- "jsdom": "^5.6.1",
- "mocha": "^2.2.5",
- "node-libs-browser": "^0.5.2",
- "react-addons-test-utils": "^15.1.0",
- "react-transform-hmr": "^1.0.0",
- "webpack": "^1.13.1",
- "webpack-dev-middleware": "^1.2.0",
+ "webpack": "^4.0.0",
+ "webpack-cli": "^3.2.0",
+ "webpack-dev-server": "^3.0.0",
"webpack-hot-middleware": "^2.2.0"
}
}
diff --git a/examples/react-counter-messaging/server.js b/examples/react-counter-messaging/server.js
deleted file mode 100644
index 0fe70397..00000000
--- a/examples/react-counter-messaging/server.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var webpack = require('webpack');
-var webpackDevMiddleware = require('webpack-dev-middleware');
-var webpackHotMiddleware = require('webpack-hot-middleware');
-var config = require('./webpack.config');
-
-var app = new require('express')();
-var port = 4001;
-
-var compiler = webpack(config);
-app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: config.output.publicPath }));
-app.use(webpackHotMiddleware(compiler));
-
-app.get("/", function(req, res) {
- res.sendFile(__dirname + '/index.html');
-});
-
-app.listen(port, function(error) {
- if (error) {
- console.error(error);
- } else {
- console.info("==> 🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.", port, port);
- }
-});
diff --git a/examples/react-counter-messaging/webpack.config.js b/examples/react-counter-messaging/webpack.config.js
index 6fcc6a3d..090ebf3c 100644
--- a/examples/react-counter-messaging/webpack.config.js
+++ b/examples/react-counter-messaging/webpack.config.js
@@ -2,9 +2,9 @@ var path = require('path');
var webpack = require('webpack');
module.exports = {
- devtool: 'cheap-module-eval-source-map',
+ mode: 'development',
+ devtool: 'source-map',
entry: [
- 'webpack-hot-middleware/client',
'./index'
],
output: {
@@ -12,17 +12,14 @@ module.exports = {
filename: 'bundle.js',
publicPath: '/static/'
},
- plugins: [
- new webpack.optimize.OccurenceOrderPlugin(),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoErrorsPlugin()
- ],
module: {
- loaders: [{
+ rules: [{
test: /\.js$/,
- loaders: ['babel'],
- exclude: /node_modules/,
- include: __dirname
+ loaders: ['babel-loader'],
+ exclude: /node_modules/
}]
+ },
+ devServer: {
+ port: 4004
}
};
diff --git a/examples/react-counter/.babelrc b/examples/react-counter/.babelrc
deleted file mode 100644
index 120f832f..00000000
--- a/examples/react-counter/.babelrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "presets": [ "es2015", "stage-0", "react" ],
- "plugins": [ "add-module-exports", "transform-decorators-legacy" ]
-}
diff --git a/examples/react-counter/components/Counter.js b/examples/react-counter/components/Counter.js
deleted file mode 100644
index c39ba208..00000000
--- a/examples/react-counter/components/Counter.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React, { Component, PropTypes } from 'react';
-
-const withDevTools = (
- // process.env.NODE_ENV === 'development' &&
- typeof window !== 'undefined' && window.devToolsExtension
-);
-
-const reducer = (state = { counter: 0 }, action) => {
- switch (action.type) {
- case 'INCREMENT':
- return { counter: state.counter + 1 };
- case 'DECREMENT':
- return { counter: state.counter - 1 };
- default:
- return state;
- }
-};
-
-class Counter extends Component {
- constructor() {
- super();
- this.state = { counter: 0 };
-
- this.increment = this.increment.bind(this);
- this.decrement = this.decrement.bind(this);
- }
-
- componentWillMount() {
- if (withDevTools) {
- this.store = window.devToolsExtension(reducer);
- this.store.subscribe(() => { this.setState(this.store.getState()); });
- }
- }
-
- dispatch(action) {
- if (withDevTools) this.store.dispatch(action);
- else this.setState(reducer(this.state, action));
- }
-
- increment() {
- this.dispatch({ type: 'INCREMENT' });
- }
-
- decrement() {
- this.dispatch({ type: 'DECREMENT' });
- }
-
- render() {
- const { counter } = this.state;
- return (
-
- Clicked: {counter} times
- {' '}
- +
- {' '}
- -
-
- );
- }
-}
-
-export default Counter;
diff --git a/examples/react-counter/index.html b/examples/react-counter/index.html
deleted file mode 100644
index ff28e56e..00000000
--- a/examples/react-counter/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
- React counter example
-
-
-
-
-
-
-
diff --git a/examples/react-counter/index.js b/examples/react-counter/index.js
deleted file mode 100644
index 70e40595..00000000
--- a/examples/react-counter/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import React from 'react';
-import { render } from 'react-dom';
-import Counter from './components/Counter';
-
-render(
- ,
- document.getElementById('root')
-);
diff --git a/examples/react-counter/package.json b/examples/react-counter/package.json
deleted file mode 100644
index 9784735a..00000000
--- a/examples/react-counter/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "react-counter-example",
- "version": "0.0.0",
- "description": "React counter example",
- "scripts": {
- "start": "node server.js"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/zalmoxisus/redux-devtools-extension.git"
- },
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/zalmoxisus/redux-devtools-extension/issues"
- },
- "homepage": "https://github.com/zalmoxisus/redux-devtools-extension",
- "dependencies": {
- "react": "^15.1.0",
- "react-dom": "^15.1.0"
- },
- "devDependencies": {
- "babel-core": "^6.3.15",
- "babel-loader": "^6.2.0",
- "babel-plugin-add-module-exports": "^0.1.1",
- "babel-plugin-react-transform": "^2.0.0",
- "babel-plugin-transform-decorators-legacy": "^1.2.0",
- "babel-polyfill": "^6.3.14",
- "babel-preset-es2015": "^6.3.13",
- "babel-preset-react": "^6.3.13",
- "babel-preset-react-hmre": "^1.0.1",
- "babel-preset-stage-0": "^6.3.13",
- "expect": "^1.6.0",
- "express": "^4.13.3",
- "jsdom": "^5.6.1",
- "mocha": "^2.2.5",
- "node-libs-browser": "^0.5.2",
- "react-addons-test-utils": "^15.1.0",
- "react-transform-hmr": "^1.0.0",
- "webpack": "^1.13.1",
- "webpack-dev-middleware": "^1.2.0",
- "webpack-hot-middleware": "^2.2.0"
- }
-}
diff --git a/examples/react-counter/server.js b/examples/react-counter/server.js
deleted file mode 100644
index 0fe70397..00000000
--- a/examples/react-counter/server.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var webpack = require('webpack');
-var webpackDevMiddleware = require('webpack-dev-middleware');
-var webpackHotMiddleware = require('webpack-hot-middleware');
-var config = require('./webpack.config');
-
-var app = new require('express')();
-var port = 4001;
-
-var compiler = webpack(config);
-app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: config.output.publicPath }));
-app.use(webpackHotMiddleware(compiler));
-
-app.get("/", function(req, res) {
- res.sendFile(__dirname + '/index.html');
-});
-
-app.listen(port, function(error) {
- if (error) {
- console.error(error);
- } else {
- console.info("==> 🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.", port, port);
- }
-});
diff --git a/examples/react-counter/webpack.config.js b/examples/react-counter/webpack.config.js
deleted file mode 100644
index 6fcc6a3d..00000000
--- a/examples/react-counter/webpack.config.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var path = require('path');
-var webpack = require('webpack');
-
-module.exports = {
- devtool: 'cheap-module-eval-source-map',
- entry: [
- 'webpack-hot-middleware/client',
- './index'
- ],
- output: {
- path: path.join(__dirname, 'dist'),
- filename: 'bundle.js',
- publicPath: '/static/'
- },
- plugins: [
- new webpack.optimize.OccurenceOrderPlugin(),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoErrorsPlugin()
- ],
- module: {
- loaders: [{
- test: /\.js$/,
- loaders: ['babel'],
- exclude: /node_modules/,
- include: __dirname
- }]
- }
-};
diff --git a/examples/saga-counter/.babelrc b/examples/saga-counter/.babelrc
new file mode 100644
index 00000000..61058eb2
--- /dev/null
+++ b/examples/saga-counter/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presets": [ "es2015", "stage-0", "react" ]
+}
diff --git a/examples/saga-counter/package.json b/examples/saga-counter/package.json
index c47f7f70..38c59f46 100644
--- a/examples/saga-counter/package.json
+++ b/examples/saga-counter/package.json
@@ -3,9 +3,7 @@
"version": "0.0.0",
"description": "Redux counter example",
"scripts": {
- "start": "node server.js",
- "test": "NODE_ENV=test mocha --recursive --compilers js:babel-core/register --require ./test/setup.js",
- "test:watch": "npm test -- --watch"
+ "start": "webpack-dev-server --progress"
},
"repository": {
"type": "git",
@@ -17,33 +15,23 @@
},
"homepage": "http://rackt.github.io/redux",
"dependencies": {
- "react": "^15.1.0",
- "react-dom": "^15.1.0",
- "react-redux": "^4.4.5",
- "redux": "^3.5.2",
+ "prop-types": "^15.6.2",
+ "react": "^16.0.0",
+ "react-dom": "^16.0.0",
+ "react-redux": "^6.0.0",
+ "redux": "^4.0.0",
"redux-saga": "^0.10.5"
},
"devDependencies": {
- "babel-core": "^6.3.15",
- "babel-loader": "^6.2.0",
- "babel-plugin-add-module-exports": "^0.1.1",
- "babel-plugin-react-transform": "^2.0.0",
- "babel-plugin-transform-decorators-legacy": "^1.2.0",
- "babel-polyfill": "^6.3.14",
- "babel-preset-es2015": "^6.3.13",
- "babel-preset-react": "^6.3.13",
- "babel-preset-react-hmre": "^1.0.1",
+ "babel-cli": "^6.3.17",
+ "babel-core": "^6.3.17",
+ "babel-loader": "^7.0.0",
+ "babel-preset-es2015": "^6.0.0",
+ "babel-preset-react": "6.3.13",
"babel-preset-stage-0": "^6.3.13",
- "expect": "^1.6.0",
- "express": "^4.13.3",
- "jsdom": "^5.6.1",
- "mocha": "^2.2.5",
- "node-libs-browser": "^0.5.2",
- "react-addons-test-utils": "^15.1.0",
- "react-transform-hmr": "^1.0.0",
- "redux-immutable-state-invariant": "^1.1.1",
- "webpack": "^1.13.1",
- "webpack-dev-middleware": "^1.2.0",
- "webpack-hot-middleware": "^2.2.0"
+ "webpack": "^4.0.0",
+ "webpack-cli": "^3.2.0",
+ "webpack-dev-server": "^3.1.0",
+ "webpack-hot-middleware": "^2.24.0"
}
}
diff --git a/examples/saga-counter/server.js b/examples/saga-counter/server.js
deleted file mode 100644
index 348676d0..00000000
--- a/examples/saga-counter/server.js
+++ /dev/null
@@ -1,23 +0,0 @@
-var webpack = require('webpack')
-var webpackDevMiddleware = require('webpack-dev-middleware')
-var webpackHotMiddleware = require('webpack-hot-middleware')
-var config = require('./webpack.config')
-
-var app = new (require('express'))()
-var port = 3000
-
-var compiler = webpack(config)
-app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: config.output.publicPath }))
-app.use(webpackHotMiddleware(compiler))
-
-app.use(function(req, res) {
- res.sendFile(__dirname + '/index.html')
-})
-
-app.listen(port, function(error) {
- if (error) {
- console.error(error)
- } else {
- console.info("==> 🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.", port, port)
- }
-})
diff --git a/examples/saga-counter/src/components/Counter.js b/examples/saga-counter/src/components/Counter.js
index 1f617344..93d8c13f 100644
--- a/examples/saga-counter/src/components/Counter.js
+++ b/examples/saga-counter/src/components/Counter.js
@@ -1,5 +1,5 @@
-/*eslint-disable no-unused-vars */
-import React, { Component, PropTypes } from 'react'
+import React from 'react'
+import PropTypes from 'prop-types'
const Counter = ({ value, onIncrement, onIncrementAsync, onDecrement, onIncrementIfOdd }) =>
diff --git a/examples/saga-counter/src/main.js b/examples/saga-counter/src/main.js
index 50080355..e997ceb6 100644
--- a/examples/saga-counter/src/main.js
+++ b/examples/saga-counter/src/main.js
@@ -1,4 +1,3 @@
-/*eslint-disable no-unused-vars*/
import "babel-polyfill"
import React from 'react'
@@ -13,7 +12,8 @@ import rootSaga from './sagas'
const sagaMiddleware = createSagaMiddleware(/* {sagaMonitor} */)
-const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
+const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&
+ window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({ trace: true, traceLimit: 25 }) || compose;
const store = createStore(
reducer,
composeEnhancers(applyMiddleware(sagaMiddleware))
diff --git a/examples/saga-counter/test/sagas.js b/examples/saga-counter/test/sagas.js
deleted file mode 100644
index eee0c09a..00000000
--- a/examples/saga-counter/test/sagas.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import test from 'tape';
-
-import { put, call } from '../../../src/effects'
-import { delay } from '../../../src'
-import { incrementAsync } from '../src/sagas'
-
-test('incrementAsync Saga test', (t) => {
- const generator = incrementAsync()
-
- t.deepEqual(
- generator.next().value,
- call(delay, 1000),
- 'counter Saga must call delay(1000)'
- )
-
- t.deepEqual(
- generator.next().value,
- put({type: 'INCREMENT'}),
- 'counter Saga must dispatch an INCREMENT action'
- )
-
- t.deepEqual(
- generator.next(),
- { done: true, value: undefined },
- 'counter Saga must be done'
- )
-
- t.end()
-});
diff --git a/examples/saga-counter/webpack.config.js b/examples/saga-counter/webpack.config.js
index 2d30cf06..0eff171d 100644
--- a/examples/saga-counter/webpack.config.js
+++ b/examples/saga-counter/webpack.config.js
@@ -1,10 +1,10 @@
-var path = require('path')
-var webpack = require('webpack')
+var path = require('path');
+var webpack = require('webpack');
module.exports = {
- devtool: 'cheap-module-eval-source-map',
+ mode: 'development',
+ devtool: 'source-map',
entry: [
- 'webpack-hot-middleware/client',
path.join(__dirname, 'src', 'main')
],
output: {
@@ -12,20 +12,14 @@ module.exports = {
filename: 'bundle.js',
publicPath: '/static/'
},
- plugins: [
- new webpack.optimize.OccurenceOrderPlugin(),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoErrorsPlugin(),
- new webpack.DefinePlugin({
- 'process.env.NODE_ENV': JSON.stringify('development')
- })
- ],
module: {
- loaders: [{
+ rules: [{
test: /\.js$/,
- loaders: [ 'babel' ],
- exclude: /node_modules/,
- include: __dirname
+ loaders: ['babel-loader'],
+ exclude: /node_modules/
}]
+ },
+ devServer: {
+ port: 4003
}
-}
+};
diff --git a/examples/todomvc/.babelrc b/examples/todomvc/.babelrc
index f0a6f40f..ad37c427 100644
--- a/examples/todomvc/.babelrc
+++ b/examples/todomvc/.babelrc
@@ -1,4 +1,3 @@
{
- "presets": [ "es2015", "stage-0", "react" ],
- "plugins": [ "add-module-exports", "transform-decorators-legacy" ]
+ "presets": [ "es2015", "stage-0", "react" ]
}
\ No newline at end of file
diff --git a/examples/todomvc/components/Footer.js b/examples/todomvc/components/Footer.js
index 6652e768..e2110fb9 100644
--- a/examples/todomvc/components/Footer.js
+++ b/examples/todomvc/components/Footer.js
@@ -1,4 +1,5 @@
-import React, { PropTypes, Component } from 'react';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import classnames from 'classnames';
import { SHOW_ALL, SHOW_COMPLETED, SHOW_ACTIVE } from '../constants/TodoFilters';
diff --git a/examples/todomvc/components/Header.js b/examples/todomvc/components/Header.js
index 9c735f3c..98abf6b7 100644
--- a/examples/todomvc/components/Header.js
+++ b/examples/todomvc/components/Header.js
@@ -1,4 +1,5 @@
-import React, { PropTypes, Component } from 'react';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import TodoTextInput from './TodoTextInput';
class Header extends Component {
diff --git a/examples/todomvc/components/MainSection.js b/examples/todomvc/components/MainSection.js
index 307663fe..3005d8cd 100644
--- a/examples/todomvc/components/MainSection.js
+++ b/examples/todomvc/components/MainSection.js
@@ -1,4 +1,5 @@
-import React, { Component, PropTypes } from 'react';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import TodoItem from './TodoItem';
import Footer from './Footer';
import { SHOW_ALL, SHOW_COMPLETED, SHOW_ACTIVE } from '../constants/TodoFilters';
diff --git a/examples/todomvc/components/TodoItem.js b/examples/todomvc/components/TodoItem.js
index b2830b76..60585b72 100644
--- a/examples/todomvc/components/TodoItem.js
+++ b/examples/todomvc/components/TodoItem.js
@@ -1,4 +1,5 @@
-import React, { Component, PropTypes } from 'react';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import classnames from 'classnames';
import TodoTextInput from './TodoTextInput';
diff --git a/examples/todomvc/components/TodoTextInput.js b/examples/todomvc/components/TodoTextInput.js
index df098aa6..6fafca6d 100644
--- a/examples/todomvc/components/TodoTextInput.js
+++ b/examples/todomvc/components/TodoTextInput.js
@@ -1,4 +1,5 @@
-import React, { Component, PropTypes } from 'react';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import classnames from 'classnames';
class TodoTextInput extends Component {
@@ -38,7 +39,7 @@ class TodoTextInput extends Component {
})}
type="text"
placeholder={this.props.placeholder}
- autoFocus="true"
+ autoFocus={true}
value={this.state.text}
onBlur={this.handleBlur.bind(this)}
onChange={this.handleChange.bind(this)}
diff --git a/examples/todomvc/containers/App.js b/examples/todomvc/containers/App.js
index 5e6b4605..ab91a9ff 100644
--- a/examples/todomvc/containers/App.js
+++ b/examples/todomvc/containers/App.js
@@ -1,4 +1,5 @@
-import React, { Component, PropTypes } from 'react';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import Header from '../components/Header';
diff --git a/examples/todomvc/package.json b/examples/todomvc/package.json
index 5cd61164..9fd03bf4 100644
--- a/examples/todomvc/package.json
+++ b/examples/todomvc/package.json
@@ -18,33 +18,25 @@
"homepage": "http://rackt.github.io/redux",
"dependencies": {
"classnames": "^2.1.2",
- "react": "^0.14.0",
- "react-dom": "^0.14.0",
- "react-redux": "^4.0.0",
- "redux": "^3.1.5"
+ "prop-types": "^15.6.2",
+ "react": "^16.0.0",
+ "react-dom": "^16.0.0",
+ "react-redux": "^6.0.0",
+ "redux": "^4.0.0"
},
"devDependencies": {
- "babel-core": "^6.3.15",
- "babel-loader": "^6.2.0",
- "babel-plugin-add-module-exports": "^0.1.1",
- "babel-plugin-react-transform": "^2.0.0-beta1",
- "babel-plugin-transform-decorators-legacy": "^1.2.0",
- "babel-polyfill": "^6.3.14",
- "babel-preset-es2015": "^6.3.13",
- "babel-preset-react": "^6.3.13",
+ "babel-cli": "^6.3.17",
+ "babel-core": "^6.3.17",
+ "babel-loader": "^7.0.0",
+ "babel-preset-es2015": "^6.0.0",
+ "babel-preset-react": "6.3.13",
"babel-preset-stage-0": "^6.3.13",
- "expect": "^1.8.0",
"express": "^4.13.3",
- "jsdom": "^5.6.1",
- "mocha": "^2.2.5",
- "node-libs-browser": "^0.5.2",
- "raw-loader": "^0.5.1",
- "react-addons-test-utils": "^0.14.0",
- "react-transform-hmr": "^1.0.0",
- "style-loader": "^0.12.3",
+ "raw-loader": "^1.0.0",
+ "style-loader": "^0.23.0",
"todomvc-app-css": "^2.0.1",
- "webpack": "^1.9.11",
- "webpack-dev-middleware": "^1.2.0",
+ "webpack": "^4.0.0",
+ "webpack-dev-server": "^3.0.0",
"webpack-hot-middleware": "^2.2.0"
}
}
diff --git a/examples/todomvc/reducers/todos.js b/examples/todomvc/reducers/todos.js
index 8eca4f3a..d972d145 100644
--- a/examples/todomvc/reducers/todos.js
+++ b/examples/todomvc/reducers/todos.js
@@ -3,6 +3,7 @@ import { ADD_TODO, DELETE_TODO, EDIT_TODO, COMPLETE_TODO, COMPLETE_ALL, CLEAR_CO
const initialState = [{
text: 'Use Redux',
completed: false,
+ modified: new Date(),
id: 0
}];
@@ -12,6 +13,7 @@ export default function todos(state = initialState, action) {
return [{
id: state.reduce((maxId, todo) => Math.max(todo.id, maxId), -1) + 1,
completed: false,
+ modified: new Date(),
text: action.text
}, ...state];
@@ -23,21 +25,21 @@ export default function todos(state = initialState, action) {
case EDIT_TODO:
return state.map(todo =>
todo.id === action.id ?
- Object.assign({}, todo, { text: action.text }) :
+ Object.assign({}, todo, { text: action.text, modified: new Date() }) :
todo
);
case COMPLETE_TODO:
return state.map(todo =>
todo.id === action.id ?
- Object.assign({}, todo, { completed: !todo.completed }) :
+ Object.assign({}, todo, { completed: !todo.completed, modified: new Date() }) :
todo
);
case COMPLETE_ALL:
const areAllMarked = state.every(todo => todo.completed);
return state.map(todo => Object.assign({}, todo, {
- completed: !areAllMarked
+ completed: !areAllMarked, modified: new Date()
}));
case CLEAR_COMPLETED:
diff --git a/examples/todomvc/store/configureStore.js b/examples/todomvc/store/configureStore.js
index b483cf42..5c7daab8 100644
--- a/examples/todomvc/store/configureStore.js
+++ b/examples/todomvc/store/configureStore.js
@@ -4,7 +4,7 @@ import * as actionCreators from '../actions';
export default function configureStore(preloadedState) {
const enhancer = window.__REDUX_DEVTOOLS_EXTENSION__ &&
- window.__REDUX_DEVTOOLS_EXTENSION__({ actionCreators });
+ window.__REDUX_DEVTOOLS_EXTENSION__({ actionCreators, serialize: true, trace: true });
if (!enhancer) {
console.warn('Install Redux DevTools Extension to inspect the app state: ' +
'https://github.com/zalmoxisus/redux-devtools-extension#installation')
@@ -15,8 +15,7 @@ export default function configureStore(preloadedState) {
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('../reducers', () => {
- const nextReducer = require('../reducers');
- store.replaceReducer(nextReducer);
+ store.replaceReducer(require('../reducers').default)
});
}
diff --git a/examples/todomvc/webpack.config.js b/examples/todomvc/webpack.config.js
index 41800a27..f80d059d 100644
--- a/examples/todomvc/webpack.config.js
+++ b/examples/todomvc/webpack.config.js
@@ -2,7 +2,8 @@ var path = require('path');
var webpack = require('webpack');
module.exports = {
- devtool: 'cheap-module-eval-source-map',
+ mode: 'development',
+ devtool: 'source-map',
entry: [
'webpack-hot-middleware/client',
'./index'
@@ -13,19 +14,16 @@ module.exports = {
publicPath: '/static/'
},
plugins: [
- new webpack.optimize.OccurenceOrderPlugin(),
- new webpack.HotModuleReplacementPlugin(),
- new webpack.NoErrorsPlugin()
+ new webpack.HotModuleReplacementPlugin()
],
module: {
- loaders: [{
+ rules: [{
test: /\.js$/,
- loaders: ['babel'],
- exclude: /node_modules/,
- include: __dirname
+ loaders: ['babel-loader'],
+ exclude: /node_modules/
}, {
test: /\.css?$/,
- loaders: ['style', 'raw'],
+ loaders: ['style-loader', 'raw-loader'],
include: __dirname
}]
}
diff --git a/npm-package/index.d.ts b/npm-package/index.d.ts
index 7169659d..738b8706 100644
--- a/npm-package/index.d.ts
+++ b/npm-package/index.d.ts
@@ -154,8 +154,17 @@ export interface EnhancerOptions {
*/
test?: boolean;
};
+ /**
+ * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.
+ * Defaults to false.
+ */
+ trace?: boolean | ((action: A) => string);
+ /**
+ * The maximum number of stack trace entries to record per action. Defaults to 10.
+ */
+ traceLimit?: number;
}
-export function composeWithDevTools(...funcs: Function[]): StoreEnhancer;
+export function composeWithDevTools(...funcs: Array>): StoreEnhancer;
export function composeWithDevTools(options: EnhancerOptions): typeof compose;
export function devToolsEnhancer(options: EnhancerOptions): StoreEnhancer;
diff --git a/npm-package/package.json b/npm-package/package.json
index b69e70c7..17f92c3e 100644
--- a/npm-package/package.json
+++ b/npm-package/package.json
@@ -1,6 +1,6 @@
{
"name": "redux-devtools-extension",
- "version": "2.13.5",
+ "version": "2.13.8",
"description": "Wrappers for Redux DevTools Extension.",
"main": "index.js",
"repository": {
diff --git a/package.json b/package.json
index df070f06..2507d45a 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "version": "2.15.4",
+ "version": "2.17.1",
"name": "remotedev-redux-devtools-extension",
"description": "Redux Developer Tools for debugging application state changes.",
"scripts": {
@@ -69,10 +69,10 @@
"selenium-webdriver": "^3.0.1",
"sinon-chrome": "^1.1.2",
"style-loader": "^0.18.2",
- "webpack": "^3.1.0"
+ "webpack": "^4.27.1"
},
"dependencies": {
- "jsan": "^3.1.11",
+ "jsan": "^3.1.13",
"lodash": "^4.17.2",
"react": "^15.4.1",
"react-dom": "^15.4.1",
@@ -81,11 +81,12 @@
"react-redux": "^4.4.5",
"redux": "^3.5.2",
"redux-devtools": "^3.4.1",
- "redux-devtools-instrument": "^1.9.0",
- "remotedev-app": "^0.10.8",
+ "redux-devtools-instrument": "^1.9.6",
+ "remotedev-app": "^0.10.13-beta",
"remotedev-monitor-components": "^0.0.5",
- "remotedev-serialize": "^0.1.2",
+ "remotedev-serialize": "^0.1.8",
"remotedev-slider": "^1.1.1",
- "remotedev-utils": "0.0.1"
+ "remotedev-utils": "0.0.1",
+ "terser-webpack-plugin": "^1.1.0"
}
}
diff --git a/src/app/api/filters.js b/src/app/api/filters.js
index 506b6ebf..7be43f80 100644
--- a/src/app/api/filters.js
+++ b/src/app/api/filters.js
@@ -9,24 +9,30 @@ export const FilterState = {
export function getLocalFilter(config) {
if (config.actionsBlacklist || config.actionsWhitelist) {
return {
- whitelist: config.actionsWhitelist && config.actionsWhitelist.join('|'),
- blacklist: config.actionsBlacklist && config.actionsBlacklist.join('|')
+ whitelist: Array.isArray(config.actionsWhitelist) ? config.actionsWhitelist.join('|') : config.actionsWhitelist,
+ blacklist: Array.isArray(config.actionsBlacklist) ? config.actionsBlacklist.join('|') : config.actionsBlacklist
};
}
return undefined;
}
+export const noFiltersApplied = (localFilter) => (
+ // !predicate &&
+ !localFilter && (!window.devToolsOptions || !window.devToolsOptions.filter ||
+ window.devToolsOptions.filter === FilterState.DO_NOT_FILTER)
+);
+
export function isFiltered(action, localFilter) {
if (
- !localFilter || window.devToolsOptions &&
- window.devToolsOptions.filter === FilterState.DO_NOT_FILTER ||
- typeof action.type.match !== 'function'
+ noFiltersApplied(localFilter) ||
+ typeof action !== 'string' && typeof action.type.match !== 'function'
) return false;
- const { whitelist, blacklist } = localFilter || window.devToolsOptions;
+ const { whitelist, blacklist } = localFilter || window.devToolsOptions || {};
+ const actionType = action.type || action;
return (
- whitelist && !action.type.match(whitelist) ||
- blacklist && action.type.match(blacklist)
+ whitelist && !actionType.match(whitelist) ||
+ blacklist && actionType.match(blacklist)
);
}
@@ -48,10 +54,7 @@ export function filterState(state, type, localFilter, stateSanitizer, actionSani
if (type === 'ACTION') return !stateSanitizer ? state : stateSanitizer(state, nextActionId - 1);
else if (type !== 'STATE') return state;
- if (
- predicate || localFilter || window.devToolsOptions &&
- window.devToolsOptions.filter && window.devToolsOptions.filter !== FilterState.DO_NOT_FILTER
- ) {
+ if (predicate || !noFiltersApplied(localFilter)) {
const filteredStagedActionIds = [];
const filteredComputedStates = [];
const sanitizedActionsById = actionSanitizer && {};
@@ -104,8 +107,7 @@ export function startingFrom(
const index = stagedActionIds.indexOf(sendingActionId);
if (index === -1) return state;
- const shouldFilter = predicate || localFilter ||
- window.devToolsOptions.filter !== FilterState.DO_NOT_FILTER;
+ const shouldFilter = predicate || !noFiltersApplied(localFilter);
const filteredStagedActionIds = shouldFilter ? [0] : stagedActionIds;
const actionsById = state.actionsById;
const computedStates = state.computedStates;
diff --git a/src/app/api/importState.js b/src/app/api/importState.js
index 947dcc91..83b1a758 100644
--- a/src/app/api/importState.js
+++ b/src/app/api/importState.js
@@ -11,7 +11,9 @@ export default function importState(state, { deserializeState, deserializeAction
let parse = jsan.parse;
if (serialize) {
if (serialize.immutable) {
- parse = v => jsan.parse(v, seralizeImmutable(serialize.immutable, serialize.refs).reviver);
+ parse = v => jsan.parse(v, seralizeImmutable(
+ serialize.immutable, serialize.refs, serialize.replacer, serialize.reviver
+ ).reviver);
} else if (serialize.reviver) {
parse = v => jsan.parse(v, serialize.reviver);
}
diff --git a/src/app/api/index.js b/src/app/api/index.js
index c596b51e..ff2d8c44 100644
--- a/src/app/api/index.js
+++ b/src/app/api/index.js
@@ -47,11 +47,14 @@ export function getSeralizeParameter(config, param) {
if (serialize) {
if (serialize === true) return { options: true };
if (serialize.immutable) {
- const immutableSerializer = seralizeImmutable(serialize.immutable, serialize.refs);
+ const immutableSerializer = seralizeImmutable(
+ serialize.immutable, serialize.refs, serialize.replacer, serialize.reviver
+ );
return {
replacer: immutableSerializer.replacer,
reviver: immutableSerializer.reviver,
- options: serialize.options || true
+ options: typeof serialize.options === 'object' ?
+ { ...immutableSerializer.options, ...serialize.options } : immutableSerializer.options
};
}
if (!serialize.replacer && !serialize.reviver) return { options: serialize.options };
@@ -71,11 +74,42 @@ function post(message) {
window.postMessage(message, '*');
}
-function amendActionType(action) {
- if (typeof action === 'string') return { action: { type: action }, timestamp: Date.now() };
- if (!action.type) return { action: { type: 'update' }, timestamp: Date.now() };
- if (action.action) return action;
- return { action, timestamp: Date.now() };
+function getStackTrace(config, toExcludeFromTrace) {
+ if (!config.trace) return undefined;
+ if (typeof config.trace === 'function') return config.trace();
+
+ let stack;
+ let extraFrames = 0;
+ let prevStackTraceLimit;
+ const traceLimit = config.traceLimit;
+ const error = Error();
+ if (Error.captureStackTrace) {
+ if (Error.stackTraceLimit < traceLimit) {
+ prevStackTraceLimit = Error.stackTraceLimit;
+ Error.stackTraceLimit = traceLimit;
+ }
+ Error.captureStackTrace(error, toExcludeFromTrace);
+ } else {
+ extraFrames = 3;
+ }
+ stack = error.stack;
+ if (prevStackTraceLimit) Error.stackTraceLimit = prevStackTraceLimit;
+ if (extraFrames || typeof Error.stackTraceLimit !== 'number' || Error.stackTraceLimit > traceLimit) {
+ const frames = stack.split('\n');
+ if (frames.length > traceLimit) {
+ stack = frames.slice(0, traceLimit + extraFrames + (frames[0] === 'Error' ? 1 : 0)).join('\n');
+ }
+ }
+ return stack;
+}
+
+function amendActionType(action, config, toExcludeFromTrace) {
+ let timestamp = Date.now();
+ let stack = getStackTrace(config, toExcludeFromTrace);
+ if (typeof action === 'string') return { action: { type: action }, timestamp, stack };
+ if (!action.type) return { action: { type: 'update' }, timestamp, stack };
+ if (action.action) return stack ? { stack, ...action } : action;
+ return { action, timestamp, stack };
}
export function toContentScript(message, serializeState, serializeAction) {
@@ -102,7 +136,7 @@ export function sendMessage(action, state, config, instanceId, name) {
if (typeof config !== 'object') {
// Legacy: sending actions not from connected part
config = {}; // eslint-disable-line no-param-reassign
- if (action) amendedAction = amendActionType(action);
+ if (action) amendedAction = amendActionType(action, config, sendMessage);
}
const message = {
type: action ? 'ACTION' : 'STATE',
@@ -223,7 +257,7 @@ export function connect(preConfig) {
}
}
else if (config.actionSanitizer) amendedAction = config.actionSanitizer(action);
- amendedAction = amendActionType(amendedAction);
+ amendedAction = amendActionType(amendedAction, config, send);
if (latency) {
delayedActions.push(amendedAction);
delayedStates.push(amendedState);
@@ -280,7 +314,7 @@ export function connect(preConfig) {
export function updateStore(stores) {
return function(newStore, instanceId) {
/* eslint-disable no-console */
- console.warn('`devToolsExtension.updateStore` is deprecated, remove it and just use ' +
+ console.warn('`__REDUX_DEVTOOLS_EXTENSION__.updateStore` is deprecated, remove it and just use ' +
'`__REDUX_DEVTOOLS_EXTENSION_COMPOSE__` instead of the extension\'s store enhancer: ' +
'https://github.com/zalmoxisus/redux-devtools-extension#12-advanced-store-setup');
/* eslint-enable no-console */
diff --git a/src/app/containers/App.js b/src/app/containers/App.js
index 1787bf73..9d7847a1 100644
--- a/src/app/containers/App.js
+++ b/src/app/containers/App.js
@@ -31,12 +31,26 @@ class App extends Component {
openWindow = (position) => {
chrome.runtime.sendMessage({ type: 'OPEN', position });
};
+ openOptionsPage = () => {
+ if (navigator.userAgent.indexOf('Firefox') !== -1) {
+ chrome.runtime.sendMessage({ type: 'OPEN_OPTIONS' });
+ } else {
+ chrome.runtime.openOptionsPage();
+ }
+ };
render() {
const {
monitor, position, togglePersist,
dispatcherIsOpen, sliderIsOpen, options, liftedState
} = this.props;
+ if (!position && (!options || !options.features)) {
+ return (
+
+ );
+ }
const features = options.features || {};
return (
@@ -119,10 +133,10 @@ class App extends Component {
onClick={() => { this.openWindow('remote'); }}
>Remote
}
- {chrome.runtime.openOptionsPage &&
+ {(chrome.runtime.openOptionsPage || navigator.userAgent.indexOf('Firefox') !== -1) &&
{ chrome.runtime.openOptionsPage(); }}
+ onClick={this.openOptionsPage}
>Settings
}
diff --git a/src/app/middlewares/api.js b/src/app/middlewares/api.js
index 382c9248..0d4a172c 100644
--- a/src/app/middlewares/api.js
+++ b/src/app/middlewares/api.js
@@ -12,10 +12,11 @@ const connections = {
panel: {},
monitor: {}
};
+const chunks = {};
let monitors = 0;
let isMonitored = false;
-const getId = sender => sender.tab ? sender.tab.id : sender.id;
+const getId = (sender, name) => sender.tab ? sender.tab.id : name || sender.id;
function toMonitors(action, tabId, verbose) {
Object.keys(connections.monitor).forEach(id => {
@@ -86,6 +87,10 @@ function messaging(request, sender, sendResponse) {
}
return;
}
+ if (request.type === 'OPEN_OPTIONS') {
+ chrome.runtime.openOptionsPage();
+ return;
+ }
if (request.type === 'GET_OPTIONS') {
window.syncOptions.get(options => {
sendResponse({ options });
@@ -122,8 +127,21 @@ function messaging(request, sender, sendResponse) {
}
const action = { type: UPDATE_STATE, request, id: tabId };
+ const instanceId = `${tabId}/${request.instanceId}`;
+ if (request.split) {
+ if (request.split === 'start') {
+ chunks[instanceId] = request;
+ return;
+ }
+ if (request.split === 'chunk') {
+ chunks[instanceId][request.chunk[0]] = (chunks[instanceId][request.chunk[0]] || '') + request.chunk[1];
+ return;
+ }
+ action.request = chunks[instanceId];
+ delete chunks[instanceId];
+ }
if (request.instanceId) {
- action.request.instanceId = `${tabId}/${request.instanceId}`;
+ action.request.instanceId = instanceId;
}
window.store.dispatch(action);
@@ -137,8 +155,8 @@ function messaging(request, sender, sendResponse) {
function disconnect(type, id, listener) {
return function disconnectListener() {
const p = connections[type][id];
- if (listener) p.onMessage.removeListener(listener);
- p.onDisconnect.removeListener(disconnectListener);
+ if (listener && p) p.onMessage.removeListener(listener);
+ if (p) p.onDisconnect.removeListener(disconnectListener);
delete connections[type][id];
if (type === 'tab') {
if (!window.store.getState().persistStates) {
@@ -164,7 +182,10 @@ function onConnect(port) {
connections.tab[id] = port;
listener = msg => {
if (msg.name === 'INIT_INSTANCE') {
- if (typeof id === 'number') chrome.pageAction.show(id);
+ if (typeof id === 'number') {
+ chrome.pageAction.show(id);
+ chrome.pageAction.setIcon({tabId: id, path: 'img/logo/38x38.png'});
+ }
if (isMonitored) port.postMessage({ type: 'START' });
const state = window.store.getState();
@@ -186,8 +207,8 @@ function onConnect(port) {
};
port.onMessage.addListener(listener);
port.onDisconnect.addListener(disconnect('tab', id, listener));
- } else if (port.name === 'monitor') {
- id = getId(port.sender);
+ } else if (port.name && port.name.indexOf('monitor') === 0) {
+ id = getId(port.sender, port.name);
connections.monitor[id] = port;
monitorInstances(true);
monitors++;
diff --git a/src/app/middlewares/instanceSelector.js b/src/app/middlewares/instanceSelector.js
new file mode 100644
index 00000000..6dc15040
--- /dev/null
+++ b/src/app/middlewares/instanceSelector.js
@@ -0,0 +1,35 @@
+import { SELECT_INSTANCE, UPDATE_STATE } from 'remotedev-app/lib/constants/actionTypes';
+
+function selectInstance(tabId, store, next) {
+ const instances = store.getState().instances;
+ if (instances.current === 'default') return;
+ const connections = instances.connections[tabId];
+ if (connections && connections.length === 1) {
+ next({ type: SELECT_INSTANCE, selected: connections[0] });
+ }
+}
+
+function getCurrentTabId(next) {
+ chrome.tabs.query({
+ active: true,
+ lastFocusedWindow: true
+ }, tabs => {
+ const tab = tabs[0];
+ if (!tab) return;
+ next(tab.id);
+ });
+}
+
+export default function popupSelector(store) {
+ return next => action => {
+ const result = next(action);
+ if (action.type === UPDATE_STATE) {
+ if (chrome.devtools && chrome.devtools.inspectedWindow) {
+ selectInstance(chrome.devtools.inspectedWindow.tabId, store, next);
+ } else {
+ getCurrentTabId(tabId => selectInstance(tabId, store, next));
+ }
+ }
+ return result;
+ };
+}
diff --git a/src/app/middlewares/popupSelector.js b/src/app/middlewares/popupSelector.js
deleted file mode 100644
index b9b4ba51..00000000
--- a/src/app/middlewares/popupSelector.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import { SELECT_INSTANCE } from 'remotedev-app/lib/constants/actionTypes';
-
-export default function popupSelector(store) {
- let autoselected = false;
- return next => action => {
- const result = next(action);
- if (!autoselected) {
- chrome.tabs.query({
- active: true,
- lastFocusedWindow: true
- }, tabs => {
- const instances = store.getState().instances;
- if (instances.current === 'default') return;
- autoselected = true;
- const tab = tabs[0];
- if (!tab) return;
- const connections = instances.connections[tab.id];
- if (connections && connections.length === 1) {
- next({ type: SELECT_INSTANCE, selected: connections[0] });
- }
- });
- }
- return result;
- };
-}
diff --git a/src/app/stores/enhancerStore.js b/src/app/stores/enhancerStore.js
index 4117a766..e3881dce 100644
--- a/src/app/stores/enhancerStore.js
+++ b/src/app/stores/enhancerStore.js
@@ -12,7 +12,9 @@ export default function configureStore(next, monitorReducer, config) {
instrument(
monitorReducer,
{
- maxAge: config.maxAge || window.devToolsOptions.maxAge || 50,
+ maxAge: config.maxAge,
+ trace: config.trace,
+ traceLimit: config.traceLimit,
shouldCatchErrors: config.shouldCatchErrors || window.shouldCatchErrors,
shouldHotReload: config.shouldHotReload,
shouldRecordChanges: config.shouldRecordChanges,
diff --git a/src/app/stores/windowStore.js b/src/app/stores/windowStore.js
index b5f18307..a779dcd4 100644
--- a/src/app/stores/windowStore.js
+++ b/src/app/stores/windowStore.js
@@ -4,19 +4,21 @@ import exportState from 'remotedev-app/lib/middlewares/exportState';
import api from 'remotedev-app/lib/middlewares/api';
import { CONNECT_REQUEST } from 'remotedev-app/lib/constants/socketActionTypes';
import syncStores from '../middlewares/windowSync';
-import popupSelector from '../middlewares/popupSelector';
+import instanceSelector from '../middlewares/instanceSelector';
import rootReducer from '../reducers/window';
export default function configureStore(baseStore, position, preloadedState) {
let enhancer;
const middlewares = [exportState, api, syncStores(baseStore), persist(position)];
- if (position === '#popup') middlewares.push(popupSelector);
+ if (!position || position === '#popup') { // select current tab instance for devPanel and pageAction
+ middlewares.push(instanceSelector);
+ }
if (process.env.NODE_ENV === 'production') {
enhancer = applyMiddleware(...middlewares);
} else {
enhancer = compose(
applyMiddleware(...middlewares),
- window.devToolsExtension ? window.devToolsExtension() : noop => noop
+ window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : noop => noop
);
}
const store = createStore(rootReducer, preloadedState, enhancer);
diff --git a/src/assets/img/logo/gray.png b/src/assets/img/logo/gray.png
new file mode 100644
index 00000000..2787e3c3
Binary files /dev/null and b/src/assets/img/logo/gray.png differ
diff --git a/src/browser/extension/chromeAPIMock.js b/src/browser/extension/chromeAPIMock.js
index c43985b3..8d2b6563 100644
--- a/src/browser/extension/chromeAPIMock.js
+++ b/src/browser/extension/chromeAPIMock.js
@@ -3,11 +3,13 @@
window.isElectron = window.navigator &&
window.navigator.userAgent.indexOf('Electron') !== -1;
+const isFirefox = navigator.userAgent.indexOf('Firefox') !== -1;
+
// Background page only
if (
window.isElectron &&
location.pathname === '/_generated_background_page.html' ||
- navigator.userAgent.indexOf('Firefox') !== -1
+ isFirefox
) {
chrome.runtime.onConnectExternal = {
addListener() {}
@@ -84,3 +86,7 @@ if (window.isElectron) {
return originSendMessage(...arguments);
};
}
+
+if (isFirefox) {
+ chrome.storage.sync = chrome.storage.local;
+}
diff --git a/src/browser/extension/devtools/index.js b/src/browser/extension/devtools/index.js
index 6b1dcf2c..b8e17f1c 100644
--- a/src/browser/extension/devtools/index.js
+++ b/src/browser/extension/devtools/index.js
@@ -1,3 +1,14 @@
-chrome.devtools.panels.create(
- 'Redux', 'img/logo/scalable.png', 'devpanel.html', function() {}
-);
+function createPanel(url) {
+ chrome.devtools.panels.create(
+ 'Redux', 'img/logo/scalable.png', url, function() {}
+ );
+}
+
+if (chrome.runtime.getBackgroundPage) {
+ // Check if the background page's object is accessible (not in incognito)
+ chrome.runtime.getBackgroundPage(background => {
+ createPanel(background ? 'window.html' : 'devpanel.html');
+ });
+} else {
+ createPanel('devpanel.html');
+}
diff --git a/src/browser/extension/inject/contentScript.js b/src/browser/extension/inject/contentScript.js
index fab54d11..235834c3 100644
--- a/src/browser/extension/inject/contentScript.js
+++ b/src/browser/extension/inject/contentScript.js
@@ -1,5 +1,8 @@
-import { injectOptions, isAllowed } from '../options/syncOptions';
+import { injectOptions, getOptionsFromBg, isAllowed } from '../options/syncOptions';
const source = '@devtools-extension';
+const pageSource = '@devtools-page';
+// Chrome message limit is 64 MB, but we're using 32 MB to include other object's parts
+const maxChromeMsgSize = 32 * 1024 * 1024;
let connected = false;
let bg;
@@ -48,6 +51,36 @@ function tryCatch(fn, args) {
try {
return fn(args);
} catch (err) {
+ if (err.message === 'Message length exceeded maximum allowed length.') {
+ const instanceId = args.instanceId;
+ const newArgs = { split: 'start' };
+ const toSplit = [];
+ let size = 0;
+ let arg;
+ Object.keys(args).map(key => {
+ arg = args[key];
+ if (typeof arg === 'string') {
+ size += arg.length;
+ if (size > maxChromeMsgSize) {
+ toSplit.push([key, arg]);
+ return;
+ }
+ }
+ newArgs[key] = arg;
+ });
+ fn(newArgs);
+ for (let i = 0; i < toSplit.length; i++) {
+ for (let j = 0; j < toSplit[i][1].length; j += maxChromeMsgSize) {
+ fn({
+ instanceId,
+ source: pageSource,
+ split: 'chunk',
+ chunk: [toSplit[i][0], toSplit[i][1].substr(j, maxChromeMsgSize)]
+ });
+ }
+ }
+ return fn({ instanceId, source: pageSource, split: 'end' });
+ }
handleDisconnect();
/* eslint-disable no-console */
if (process.env.NODE_ENV !== 'production') console.error('Failed to send message', err);
@@ -58,6 +91,7 @@ function tryCatch(fn, args) {
function send(message) {
if (!connected) connect();
if (message.type === 'INIT_INSTANCE') {
+ getOptionsFromBg();
bg.postMessage({ name: 'INIT_INSTANCE', instanceId: message.instanceId });
} else {
bg.postMessage({ name: 'RELAY', message });
@@ -69,7 +103,7 @@ function handleMessages(event) {
if (!isAllowed()) return;
if (!event || event.source !== window || typeof event.data !== 'object') return;
const message = event.data;
- if (message.source !== '@devtools-page') return;
+ if (message.source !== pageSource) return;
if (message.type === 'DISCONNECT') {
if (bg) {
bg.disconnect();
diff --git a/src/browser/extension/inject/index.js b/src/browser/extension/inject/index.js
index c48712c0..c380d216 100644
--- a/src/browser/extension/inject/index.js
+++ b/src/browser/extension/inject/index.js
@@ -12,5 +12,5 @@ chrome.runtime.sendMessage(window.devToolsExtensionID, { type: 'GET_OPTIONS' },
}
window.devToolsOptions = response.options;
- window.devToolsExtension.notifyErrors();
+ window.__REDUX_DEVTOOLS_EXTENSION__.notifyErrors();
});
diff --git a/src/browser/extension/inject/pageScript.js b/src/browser/extension/inject/pageScript.js
index 89bfbac5..77886b5e 100644
--- a/src/browser/extension/inject/pageScript.js
+++ b/src/browser/extension/inject/pageScript.js
@@ -4,7 +4,9 @@ import createStore from '../../../app/stores/createStore';
import configureStore, { getUrlParam } from '../../../app/stores/enhancerStore';
import { isAllowed } from '../options/syncOptions';
import Monitor from '../../../app/service/Monitor';
-import { getLocalFilter, isFiltered, filterState, startingFrom } from '../../../app/api/filters';
+import {
+ noFiltersApplied, getLocalFilter, isFiltered, filterState, startingFrom
+} from '../../../app/api/filters';
import notifyErrors from '../../../app/api/notifyErrors';
import importState from '../../../app/api/importState';
import openWindow from '../../../app/api/openWindow';
@@ -24,7 +26,7 @@ function deprecateParam(oldParam, newParam) {
/* eslint-enable no-console */
}
-const devToolsExtension = function(reducer, preloadedState, config) {
+const __REDUX_DEVTOOLS_EXTENSION__ = function(reducer, preloadedState, config) {
/* eslint-disable no-param-reassign */
if (typeof reducer === 'object') {
config = reducer; reducer = undefined;
@@ -91,7 +93,7 @@ const devToolsExtension = function(reducer, preloadedState, config) {
if (type === 'ACTION') {
message.action = !actionSanitizer ? action : actionSanitizer(action.action, nextActionId - 1);
- message.maxAge = maxAge;
+ message.maxAge = getMaxAge();
message.nextActionId = nextActionId;
} else if (libConfig) {
message.libConfig = libConfig;
@@ -144,7 +146,7 @@ const devToolsExtension = function(reducer, preloadedState, config) {
payload,
source,
instanceId,
- maxAge
+ maxAge: getMaxAge()
}, serializeState, serializeAction);
}, latency);
@@ -233,9 +235,29 @@ const devToolsExtension = function(reducer, preloadedState, config) {
}
}
- function init() {
- maxAge = config.maxAge || window.devToolsOptions.maxAge || 50;
+ const filteredActionIds = []; // simple circular buffer of non-excluded actions with fixed maxAge-1 length
+ const getMaxAge = (liftedAction, liftedState) => {
+ let m = config && config.maxAge || window.devToolsOptions.maxAge || 50;
+ if (!liftedAction || noFiltersApplied(localFilter) || !liftedAction.action) return m;
+ if (!maxAge || maxAge < m) maxAge = m; // it can be modified in process on options page
+ if (isFiltered(liftedAction.action, localFilter)) {
+ // TODO: check also predicate && !predicate(state, action) with current state
+ maxAge++;
+ } else {
+ filteredActionIds.push(liftedState.nextActionId);
+ if (filteredActionIds.length >= m) {
+ const stagedActionIds = liftedState.stagedActionIds;
+ let i = 1;
+ while (maxAge > m && filteredActionIds.indexOf(stagedActionIds[i]) === -1) {
+ maxAge--; i++;
+ }
+ filteredActionIds.shift();
+ }
+ }
+ return maxAge;
+ };
+ function init() {
setListener(onMessage, instanceId);
notifyErrors(() => {
errorOccurred = true;
@@ -274,7 +296,7 @@ const devToolsExtension = function(reducer, preloadedState, config) {
if (!isAllowed(window.devToolsOptions)) return next(reducer_, initialState_, enhancer_);
store = stores[instanceId] =
- configureStore(next, monitor.reducer, config)(reducer_, initialState_, enhancer_);
+ configureStore(next, monitor.reducer, { ...config, maxAge: getMaxAge })(reducer_, initialState_, enhancer_);
if (isInIframe()) setTimeout(init, 3000);
else init();
@@ -284,30 +306,70 @@ const devToolsExtension = function(reducer, preloadedState, config) {
};
if (!reducer) return enhance();
+ /* eslint-disable no-console */
+ console.warn('Creating a Redux store directly from DevTools extension is discouraged and will not be supported in future major version. For more details see: https://git.io/fphCe');
+ /* eslint-enable no-console */
return createStore(reducer, preloadedState, enhance);
};
// noinspection JSAnnotator
-window.devToolsExtension = devToolsExtension;
-window.devToolsExtension.open = openWindow;
-window.devToolsExtension.updateStore = updateStore(stores);
-window.devToolsExtension.notifyErrors = notifyErrors;
-window.devToolsExtension.send = sendMessage;
-window.devToolsExtension.listen = setListener;
-window.devToolsExtension.connect = connect;
-window.devToolsExtension.disconnect = disconnect;
-
-window.__REDUX_DEVTOOLS_EXTENSION__ = window.devToolsExtension;
+window.__REDUX_DEVTOOLS_EXTENSION__ = __REDUX_DEVTOOLS_EXTENSION__;
+window.__REDUX_DEVTOOLS_EXTENSION__.open = openWindow;
+window.__REDUX_DEVTOOLS_EXTENSION__.updateStore = updateStore(stores);
+window.__REDUX_DEVTOOLS_EXTENSION__.notifyErrors = notifyErrors;
+window.__REDUX_DEVTOOLS_EXTENSION__.send = sendMessage;
+window.__REDUX_DEVTOOLS_EXTENSION__.listen = setListener;
+window.__REDUX_DEVTOOLS_EXTENSION__.connect = connect;
+window.__REDUX_DEVTOOLS_EXTENSION__.disconnect = disconnect;
+
+// Deprecated
+/* eslint-disable no-console */
+let varNameDeprecatedWarned;
+const varNameDeprecatedWarn = () => {
+ if (varNameDeprecatedWarned) return;
+ console.warn('`window.devToolsExtension` is deprecated in favor of `window.__REDUX_DEVTOOLS_EXTENSION__`, and will be removed in next version of Redux DevTools: https://git.io/fpEJZ');
+ varNameDeprecatedWarned = true;
+};
+/* eslint-enable no-console */
+window.devToolsExtension = (...args) => {
+ varNameDeprecatedWarn();
+ return __REDUX_DEVTOOLS_EXTENSION__.apply(null, args);
+};
+window.devToolsExtension.open = (...args) => {
+ varNameDeprecatedWarn();
+ return openWindow.apply(null, args);
+};
+window.devToolsExtension.updateStore = (...args) => {
+ varNameDeprecatedWarn();
+ return updateStore(stores).apply(null, args);
+};
+window.devToolsExtension.notifyErrors = (...args) => {
+ varNameDeprecatedWarn();
+ return notifyErrors.apply(null, args);
+};
+window.devToolsExtension.send = (...args) => {
+ varNameDeprecatedWarn();
+ return sendMessage.apply(null, args);
+};
+window.devToolsExtension.listen = (...args) => {
+ varNameDeprecatedWarn();
+ return setListener.apply(null, args);
+};
+window.devToolsExtension.connect = (...args) => {
+ varNameDeprecatedWarn();
+ return connect.apply(null, args);
+};
+window.devToolsExtension.disconnect = (...args) => {
+ varNameDeprecatedWarn();
+ return disconnect.apply(null, args);
+};
const preEnhancer = instanceId => next =>
(reducer, preloadedState, enhancer) => {
const store = next(reducer, preloadedState, enhancer);
- // Mutate the store in order to keep the reference
if (stores[instanceId]) {
stores[instanceId].initialDispatch = store.dispatch;
- stores[instanceId].liftedStore = store.liftedStore;
- stores[instanceId].getState = store.getState;
}
return {
@@ -322,14 +384,14 @@ const extensionCompose = (config) => (...funcs) => {
return (...args) => {
const instanceId = generateId(config.instanceId);
return [preEnhancer(instanceId), ...funcs].reduceRight(
- (composed, f) => f(composed), devToolsExtension({ ...config, instanceId })(...args)
+ (composed, f) => f(composed), __REDUX_DEVTOOLS_EXTENSION__({ ...config, instanceId })(...args)
);
};
};
window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ = (...funcs) => {
if (funcs.length === 0) {
- return devToolsExtension();
+ return __REDUX_DEVTOOLS_EXTENSION__();
}
if (funcs.length === 1 && typeof funcs[0] === 'object') {
return extensionCompose(funcs[0]);
diff --git a/src/browser/extension/manifest.json b/src/browser/extension/manifest.json
index 6b09cba9..42e4e769 100644
--- a/src/browser/extension/manifest.json
+++ b/src/browser/extension/manifest.json
@@ -1,12 +1,12 @@
{
- "version": "2.15.4",
+ "version": "2.17.1",
"name": "Redux DevTools",
"short_name": "Redux DevTools",
"description": "Redux DevTools for debugging application's state changes.",
"homepage_url": "https://github.com/zalmoxisus/redux-devtools-extension",
"manifest_version": 2,
"page_action": {
- "default_icon": "img/logo/38x38.png",
+ "default_icon": "img/logo/gray.png",
"default_title": "Redux DevTools",
"default_popup": "window.html#popup"
},
diff --git a/src/browser/extension/options/EditorGroup.js b/src/browser/extension/options/EditorGroup.js
new file mode 100644
index 00000000..4cd06721
--- /dev/null
+++ b/src/browser/extension/options/EditorGroup.js
@@ -0,0 +1,59 @@
+import React from 'react';
+
+export default ({ options, saveOption }) => {
+ const EditorState = {
+ BROWSER: 0,
+ EXTERNAL: 1
+ };
+
+ return (
+
+ Editor for stack traces
+
+
+ saveOption('useEditor', EditorState.BROWSER)}/>
+ {
+ navigator.userAgent.indexOf('Firefox') !== -1 ?
+ 'Don\'t open in external editor' :
+ 'Use browser\'s debugger (from Chrome devpanel only)'
+ }
+
+
+
+ saveOption('useEditor', EditorState.EXTERNAL)}/>
+ External editor:
+ saveOption('editor', e.target.value.replace(/\W/g, ''))}/>
+
+
+
+ Absolute path to the project directory to open:
+
+
+
+
+ );
+};
diff --git a/src/browser/extension/options/Options.js b/src/browser/extension/options/Options.js
index 5ab2e294..db8b4e7f 100644
--- a/src/browser/extension/options/Options.js
+++ b/src/browser/extension/options/Options.js
@@ -1,4 +1,5 @@
import React from 'react';
+import EditorGroup from './EditorGroup';
import FilterGroup from './FilterGroup';
import AllowToRunGroup from './AllowToRunGroup';
import MiscellaneousGroup from './MiscellaneousGroup';
@@ -6,10 +7,11 @@ import ContextMenuGroup from './ContextMenuGroup';
export default (props) => (
);
diff --git a/src/browser/extension/options/syncOptions.js b/src/browser/extension/options/syncOptions.js
index deb1acad..b04d1730 100644
--- a/src/browser/extension/options/syncOptions.js
+++ b/src/browser/extension/options/syncOptions.js
@@ -33,6 +33,9 @@ const get = callback => {
if (options) callback(options);
else {
chrome.storage.sync.get({
+ useEditor: 0,
+ editor: '',
+ projectPath: '',
maxAge: 50,
filter: FilterState.DO_NOT_FILTER,
whitelist: '',
diff --git a/src/browser/extension/window/index.js b/src/browser/extension/window/index.js
index db5a6b39..87921b67 100644
--- a/src/browser/extension/window/index.js
+++ b/src/browser/extension/window/index.js
@@ -13,7 +13,9 @@ getPreloadedState(position, state => { preloadedState = state; });
chrome.runtime.getBackgroundPage(({ store }) => {
const localStore = configureStore(store, position, preloadedState);
- const bg = chrome.runtime.connect({ name: 'monitor' });
+ let name = 'monitor';
+ if (chrome && chrome.devtools && chrome.devtools.inspectedWindow) name += chrome.devtools.inspectedWindow.tabId;
+ const bg = chrome.runtime.connect({ name });
const update = action => { localStore.dispatch(action || { type: UPDATE_STATE }); };
bg.onMessage.addListener(update);
update();
diff --git a/src/browser/firefox/manifest.json b/src/browser/firefox/manifest.json
index 94f6891d..7975f566 100644
--- a/src/browser/firefox/manifest.json
+++ b/src/browser/firefox/manifest.json
@@ -1,5 +1,5 @@
{
- "version": "2.15.4",
+ "version": "2.17.1",
"name": "Redux DevTools",
"manifest_version": 2,
"description": "Redux Developer Tools for debugging application state changes.",
diff --git a/test/app/containers/App.spec.js b/test/app/containers/App.spec.js
index 385c0363..69231fad 100644
--- a/test/app/containers/App.spec.js
+++ b/test/app/containers/App.spec.js
@@ -6,7 +6,7 @@ import configureStore from '../../../src/app/stores/windowStore';
import App from '../../../src/app/containers/App.js';
const store = configureStore(store);
-const component = mount( );
+const component = mount( );
describe('App container', () => {
it('should render inspector monitor\'s component', () => {
diff --git a/test/app/inject/api.spec.js b/test/app/inject/api.spec.js
index c7035311..385ac4b6 100644
--- a/test/app/inject/api.spec.js
+++ b/test/app/inject/api.spec.js
@@ -1,35 +1,34 @@
-import 'babel-polyfill';
import expect from 'expect';
import { insertScript, listenMessage } from '../../utils/inject';
import '../../../src/browser/extension/inject/pageScript';
describe('API', () => {
- it('should get window.devToolsExtension function', () => {
- expect(window.devToolsExtension).toBeA('function');
+ it('should get window.__REDUX_DEVTOOLS_EXTENSION__ function', () => {
+ expect(window.__REDUX_DEVTOOLS_EXTENSION__).toBeA('function');
});
it('should notify error', () => {
const spy = expect.createSpy(() => {});
- window.devToolsExtension.notifyErrors(spy);
+ window.__REDUX_DEVTOOLS_EXTENSION__.notifyErrors(spy);
insertScript('hi()');
expect(spy).toHaveBeenCalled();
});
it('should open monitor', async () => {
let message = await listenMessage(() => {
- window.devToolsExtension.open();
+ window.__REDUX_DEVTOOLS_EXTENSION__.open();
});
expect(message).toEqual({ source: '@devtools-page', type: 'OPEN', position: 'right' });
message = await listenMessage(() => {
- window.devToolsExtension.open('left');
+ window.__REDUX_DEVTOOLS_EXTENSION__.open('left');
});
expect(message).toEqual({ source: '@devtools-page', type: 'OPEN', position: 'left' });
});
it('should send message', async () => {
let message = await listenMessage(() => {
- window.devToolsExtension.send('hi');
+ window.__REDUX_DEVTOOLS_EXTENSION__.send('hi');
});
expect(message).toInclude({
type: 'ACTION',
@@ -41,7 +40,7 @@ describe('API', () => {
expect(message.action).toMatch(/{"action":{"type":"hi"},"timestamp":\d+}/);
message = await listenMessage(() => {
- window.devToolsExtension.send({ type: 'hi' }, { counter: 1 }, 1);
+ window.__REDUX_DEVTOOLS_EXTENSION__.send({ type: 'hi' }, { counter: 1 }, 1);
});
expect(message).toInclude({
type: 'ACTION',
@@ -53,7 +52,7 @@ describe('API', () => {
expect(message.action).toMatch(/{"action":{"type":"hi"},"timestamp":\d+}/);
message = await listenMessage(() => {
- window.devToolsExtension.send({ type: 'hi' }, { counter: 1 }, 1);
+ window.__REDUX_DEVTOOLS_EXTENSION__.send({ type: 'hi' }, { counter: 1 }, 1);
});
expect(message).toInclude({
type: 'ACTION',
@@ -65,7 +64,7 @@ describe('API', () => {
expect(message.action).toMatch(/{"action":{"type":"hi"},"timestamp":\d+}/);
message = await listenMessage(() => {
- window.devToolsExtension.send(undefined, { counter: 1 }, 1);
+ window.__REDUX_DEVTOOLS_EXTENSION__.send(undefined, { counter: 1 }, 1);
});
expect(message).toEqual({
action: undefined,
diff --git a/test/app/inject/enhancer.spec.js b/test/app/inject/enhancer.spec.js
index d4587614..2932959d 100644
--- a/test/app/inject/enhancer.spec.js
+++ b/test/app/inject/enhancer.spec.js
@@ -15,7 +15,7 @@ function counter(state = 0, action) {
describe('Redux enhancer', () => {
it('should create the store', async () => {
const message = await listenMessage(() => {
- window.store = createStore(counter, window.devToolsExtension());
+ window.store = createStore(counter, window.__REDUX_DEVTOOLS_EXTENSION__());
expect(window.store).toBeA('object');
});
expect(message.type).toBe('INIT_INSTANCE');
@@ -147,7 +147,7 @@ describe('Redux enhancer', () => {
it('should create the store with config parameters', async () => {
const message = await listenMessage(() => {
- window.store = createStore(counter, window.devToolsExtension({
+ window.store = createStore(counter, window.__REDUX_DEVTOOLS_EXTENSION__({
actionsBlacklist: ['SOME_ACTION'],
statesFilter: state => state,
serializeState: (key, value) => value
@@ -159,7 +159,7 @@ describe('Redux enhancer', () => {
it('should create the store using old Redux api', async () => {
const message = await listenMessage(() => {
- window.store = window.devToolsExtension()(createStore)(counter);
+ window.store = window.__REDUX_DEVTOOLS_EXTENSION__()(createStore)(counter);
expect(window.store).toBeA('object');
});
expect(message.type).toBe('INIT_INSTANCE');
@@ -171,7 +171,7 @@ describe('Redux enhancer', () => {
const message = await listenMessage(() => {
window.store = createStore(counter, compose(
testEnhancer,
- window.devToolsExtension())
+ window.__REDUX_DEVTOOLS_EXTENSION__())
);
expect(window.store).toBeA('object');
});
diff --git a/test/app/setup.js b/test/app/setup.js
index b43ceda9..690f9fef 100644
--- a/test/app/setup.js
+++ b/test/app/setup.js
@@ -1,4 +1,5 @@
require('babel-register')();
+require('babel-polyfill');
global.chrome = require('sinon-chrome');
var jsdom = require('jsdom').jsdom;
diff --git a/test/chrome/extension.spec.js b/test/chrome/extension.spec.js
index 9a6a8fd5..5866b907 100644
--- a/test/chrome/extension.spec.js
+++ b/test/chrome/extension.spec.js
@@ -28,9 +28,9 @@ describe('Chrome extension', function() {
});
it('should open extension\'s window', async () => {
- await this.driver.get(`chrome-extension://${extensionId}/window.html`);
+ await this.driver.get(`chrome-extension://${extensionId}/window.html#left`);
const url = await this.driver.getCurrentUrl();
- expect(url).toBe(`chrome-extension://${extensionId}/window.html`);
+ expect(url).toBe(`chrome-extension://${extensionId}/window.html#left`);
});
it('should match document title', async () => {
diff --git a/test/electron/fixture/renderer.js b/test/electron/fixture/renderer.js
index b185b83e..e501f7d3 100644
--- a/test/electron/fixture/renderer.js
+++ b/test/electron/fixture/renderer.js
@@ -17,7 +17,7 @@ const store = createStore(
}
},
initialState,
- window.devToolsExtension ? window.devToolsExtension() : noop => noop
+ window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__() : noop => noop
);
const el = document.getElementById('counter');
diff --git a/test/perf/send.spec.js b/test/perf/send.spec.js
index 8bac065b..41806520 100644
--- a/test/perf/send.spec.js
+++ b/test/perf/send.spec.js
@@ -8,7 +8,7 @@ function test(title, data, maxTime = 100) {
it('should send ' + title, async() => {
const start = new Date();
await listenMessage(() => {
- window.devToolsExtension.send({ type: 'TEST_ACTION', data }, data);
+ window.__REDUX_DEVTOOLS_EXTENSION__.send({ type: 'TEST_ACTION', data }, data);
});
const ms = new Date() - start;
// console.log(ms);
diff --git a/webpack/base.config.js b/webpack/base.config.js
index fc584659..d74a6dc1 100644
--- a/webpack/base.config.js
+++ b/webpack/base.config.js
@@ -1,10 +1,13 @@
import path from 'path';
import webpack from 'webpack';
+import TerserPlugin from 'terser-webpack-plugin';
const extpath = path.join(__dirname, '../src/browser/extension/');
const mock = `${extpath}chromeAPIMock.js`;
const baseConfig = (params) => ({
+ // devtool: 'source-map',
+ mode: 'production',
entry: params.input || {
background: [ mock, `${extpath}background/index` ],
options: [ mock, `${extpath}options/index` ],
@@ -28,19 +31,26 @@ const baseConfig = (params) => ({
...(params.plugins ? params.plugins :
[
new webpack.optimize.ModuleConcatenationPlugin(),
- new webpack.optimize.OccurrenceOrderPlugin(),
- new webpack.optimize.UglifyJsPlugin({
- comments: false,
- compressor: {
- warnings: false
- },
- mangle: {
- screw_ie8: true,
- keep_fnames: true
- }
- })
+ new webpack.optimize.OccurrenceOrderPlugin()
])
],
+ optimization: {
+ minimizer: [
+ new TerserPlugin({
+ terserOptions: {
+ output: {
+ comments: false
+ }
+ },
+ // sourceMap: true,
+ cache: true,
+ parallel: true
+ })
+ ]
+ },
+ performance: {
+ hints: false
+ },
resolve: {
alias: {
app: path.join(__dirname, '../src/app'),
diff --git a/yarn.lock b/yarn.lock
index 73b76121..72507158 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,11 +2,180 @@
# yarn lockfile v1
+"@babel/code-frame@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
+ integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/highlight@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
+ integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^4.0.0"
+
"@types/node@^8.0.24":
version "8.10.20"
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.20.tgz#fe674ea52e13950ab10954433a7824438aabbcac"
integrity sha512-M7x8+5D1k/CuA6jhiwuSCmE8sbUWJF0wYsjcig9WrXvwUI5ArEoUBdOXpV4JcEMrLp02/QbDjw+kI+vQeKyQgg==
+"@webassemblyjs/ast@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace"
+ integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.7.11"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+ "@webassemblyjs/wast-parser" "1.7.11"
+
+"@webassemblyjs/floating-point-hex-parser@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313"
+ integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==
+
+"@webassemblyjs/helper-api-error@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a"
+ integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==
+
+"@webassemblyjs/helper-buffer@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b"
+ integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==
+
+"@webassemblyjs/helper-code-frame@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b"
+ integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.7.11"
+
+"@webassemblyjs/helper-fsm@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181"
+ integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==
+
+"@webassemblyjs/helper-module-context@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209"
+ integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==
+
+"@webassemblyjs/helper-wasm-bytecode@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06"
+ integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==
+
+"@webassemblyjs/helper-wasm-section@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a"
+ integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/helper-buffer" "1.7.11"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+ "@webassemblyjs/wasm-gen" "1.7.11"
+
+"@webassemblyjs/ieee754@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b"
+ integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63"
+ integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==
+ dependencies:
+ "@xtuc/long" "4.2.1"
+
+"@webassemblyjs/utf8@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82"
+ integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==
+
+"@webassemblyjs/wasm-edit@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005"
+ integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/helper-buffer" "1.7.11"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+ "@webassemblyjs/helper-wasm-section" "1.7.11"
+ "@webassemblyjs/wasm-gen" "1.7.11"
+ "@webassemblyjs/wasm-opt" "1.7.11"
+ "@webassemblyjs/wasm-parser" "1.7.11"
+ "@webassemblyjs/wast-printer" "1.7.11"
+
+"@webassemblyjs/wasm-gen@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8"
+ integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+ "@webassemblyjs/ieee754" "1.7.11"
+ "@webassemblyjs/leb128" "1.7.11"
+ "@webassemblyjs/utf8" "1.7.11"
+
+"@webassemblyjs/wasm-opt@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7"
+ integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/helper-buffer" "1.7.11"
+ "@webassemblyjs/wasm-gen" "1.7.11"
+ "@webassemblyjs/wasm-parser" "1.7.11"
+
+"@webassemblyjs/wasm-parser@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a"
+ integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/helper-api-error" "1.7.11"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.11"
+ "@webassemblyjs/ieee754" "1.7.11"
+ "@webassemblyjs/leb128" "1.7.11"
+ "@webassemblyjs/utf8" "1.7.11"
+
+"@webassemblyjs/wast-parser@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c"
+ integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/floating-point-hex-parser" "1.7.11"
+ "@webassemblyjs/helper-api-error" "1.7.11"
+ "@webassemblyjs/helper-code-frame" "1.7.11"
+ "@webassemblyjs/helper-fsm" "1.7.11"
+ "@xtuc/long" "4.2.1"
+
+"@webassemblyjs/wast-printer@1.7.11":
+ version "1.7.11"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813"
+ integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/wast-parser" "1.7.11"
+ "@xtuc/long" "4.2.1"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.1":
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8"
+ integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==
+
abab@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d"
@@ -17,12 +186,12 @@ abbrev@1, abbrev@~1.0.7, abbrev@~1.0.9:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
-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"
- integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=
+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"
+ integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==
dependencies:
- acorn "^4.0.3"
+ acorn "^5.0.0"
acorn-globals@^1.0.4:
version "1.0.9"
@@ -48,21 +217,31 @@ acorn@^3.1.0, acorn@~3.3.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
-acorn@^4.0.3, acorn@~4.0.2:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
- integrity sha1-F6jWp6bE71OLgU7Jq6wneSk78wo=
-
acorn@^5.0.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.0.tgz#1abb587fbf051f94e3de20e6b26ef910b1828298"
integrity sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g==
+acorn@^5.6.2:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
+ integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
+
+acorn@~4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
+ integrity sha1-F6jWp6bE71OLgU7Jq6wneSk78wo=
+
adm-zip@^0.4.7:
version "0.4.7"
resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1"
integrity sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
ajv-keywords@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
@@ -106,6 +285,11 @@ amdefine@>=0.0.4:
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+anser@^1.4.7:
+ version "1.4.7"
+ resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.7.tgz#78c0ce6aefffaa09bed267bd7d26ee5b9fb6d575"
+ integrity sha512-0jA836gkgorW5M+yralEdnAuQ4Z8o/jAu9Po3//dAClUyq9LdKEIAVVZNoej9jfnRi20wPL/gBb3eTjpzppjLg==
+
ansi-escapes@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
@@ -121,11 +305,6 @@ ansi-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=
-ansi-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
- integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
ansi-styles@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
@@ -136,6 +315,13 @@ ansi-styles@^2.2.1:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
ansi@^0.3.0, ansi@~0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21"
@@ -172,6 +358,11 @@ aproba@^1.0.3, aproba@~1.0.1:
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
archy@^1.0.0, archy@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
@@ -322,7 +513,7 @@ async@^1.4.0:
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
-async@^2.0.1, async@^2.1.2:
+async@^2.0.1:
version "2.1.4"
resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
integrity sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=
@@ -1033,13 +1224,6 @@ babel-plugin-transform-regenerator@^6.16.0:
dependencies:
regenerator-transform "0.9.8"
-babel-plugin-transform-runtime@^6.7.5:
- version "6.15.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c"
- integrity sha1-PXW02Umtga8VdXAnOEb7Wa6w1Xw=
- dependencies:
- babel-runtime "^6.9.0"
-
babel-plugin-transform-strict-mode@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d"
@@ -1206,6 +1390,11 @@ balanced-match@^0.4.1:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
base-64@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb"
@@ -1282,6 +1471,11 @@ block-stream@*, block-stream@0.0.9:
dependencies:
inherits "~2.0.0"
+bluebird@^3.5.1:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
+ integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
+
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.8"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
@@ -1326,6 +1520,14 @@ brace-expansion@^1.0.0:
balanced-match "^0.4.1"
concat-map "0.0.1"
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
braces@^1.8.2:
version "1.8.5"
resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
@@ -1473,6 +1675,26 @@ builtins@0.0.7:
resolved "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz#355219cd6cf18dbe7c01cc7fd2dce765cfdc549a"
integrity sha1-NVIZzWzxjb58Acx/0tznZc/cVJo=
+cacache@^11.0.2:
+ version "11.3.1"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f"
+ integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==
+ dependencies:
+ bluebird "^3.5.1"
+ chownr "^1.0.1"
+ figgy-pudding "^3.1.0"
+ glob "^7.1.2"
+ graceful-fs "^4.1.11"
+ lru-cache "^4.1.3"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.2"
+ ssri "^6.0.0"
+ unique-filename "^1.1.0"
+ y18n "^4.0.0"
+
cache-base@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -1506,11 +1728,6 @@ camelcase@^2.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-camelcase@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
- integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
-
caseless@~0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
@@ -1551,6 +1768,15 @@ chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
+chalk@^2.0.0, chalk@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
+ integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
change-emitter@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.2.tgz#6b88ca4d5d864e516f913421b11899a860aee8db"
@@ -1640,6 +1866,13 @@ chrome-storage-local@^0.1.6:
resolved "https://registry.yarnpkg.com/chrome-storage-local/-/chrome-storage-local-0.1.7.tgz#bb2a3689d663b3a1f4d394592f83914fddc4adba"
integrity sha1-uyo2idZjs6H005RZL4ORT93Erbo=
+chrome-trace-event@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
+ integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==
+ dependencies:
+ tslib "^1.9.0"
+
chromedriver@^2.35.0:
version "2.35.0"
resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-2.35.0.tgz#c103ba2fb3d1671f666058159f5cbaa816902e4d"
@@ -1708,15 +1941,6 @@ cliui@^2.1.0:
right-align "^0.1.1"
wordwrap "0.0.2"
-cliui@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
- integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
- dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
- wrap-ansi "^2.0.0"
-
clone-stats@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
@@ -1776,6 +2000,18 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
color-space@^1.14.3:
version "1.14.7"
resolved "https://registry.yarnpkg.com/color-space/-/color-space-1.14.7.tgz#b7f5a31779427bb25f9927a69410d80c2eaaa71b"
@@ -1825,6 +2061,11 @@ commander@2.9.0, commander@^2.8.1, commander@^2.9.0:
dependencies:
graceful-readlink ">= 1.0.0"
+commander@~2.17.1:
+ version "2.17.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
+ integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1854,7 +2095,7 @@ concat-stream@1.6.0, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^
readable-stream "^2.2.2"
typedarray "^0.0.6"
-concat-stream@1.6.2:
+concat-stream@1.6.2, concat-stream@^1.5.0:
version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -1915,6 +2156,18 @@ convert-source-map@^1.1.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
copy-descriptor@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
@@ -1965,6 +2218,15 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
+create-react-class@^15.6.0:
+ version "15.6.3"
+ resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
+ integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==
+ dependencies:
+ fbjs "^0.8.9"
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
cross-env@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-1.0.8.tgz#2bde748efc780f56ddf07ea69fcad875357774ce"
@@ -1981,15 +2243,6 @@ cross-spawn@^3.0.1:
lru-cache "^4.0.1"
which "^1.2.9"
-cross-spawn@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
- integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
- dependencies:
- lru-cache "^4.0.1"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
crossvent@1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/crossvent/-/crossvent-1.5.4.tgz#da2c4f8f40c94782517bf2beec1044148194ab92"
@@ -2095,10 +2348,15 @@ custom-event@1.0.0:
resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.0.tgz#2e4628be19dc4b214b5c02630c5971e811618062"
integrity sha1-LkYovhncSyFLXAJjDFlx6BFhgGI=
+cyclist@~0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+ integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
+
d3-state-visualizer@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/d3-state-visualizer/-/d3-state-visualizer-1.3.1.tgz#14c9fc31509c51db909ed715a41c05686870f182"
- integrity sha1-FMn8MVCcUduQntcVpBwFaGhw8YI=
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/d3-state-visualizer/-/d3-state-visualizer-1.3.2.tgz#8e3ac418aa7ee7e3f46025309f9d1c215ee385eb"
+ integrity sha512-XgTRC6FXeoTt8l79cc2f3Zaah+K7DUQb3GL0zfbvoIi7zWWHV4l7OfuX9/JxxvwilKApMZwHMBJ7cJ2yWAc5IQ==
dependencies:
d3 "^3.5.6"
d3tooltip "^1.2.2"
@@ -2177,7 +2435,7 @@ debuglog@^1.0.1:
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
-decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+decamelize@^1.0.0, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
@@ -2404,6 +2662,16 @@ duplexer2@0.0.2:
dependencies:
readable-stream "~1.1.9"
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125"
+ integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
ecc-jsbn@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
@@ -2465,6 +2733,13 @@ encoding@^0.1.11:
dependencies:
iconv-lite "~0.4.13"
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ dependencies:
+ once "^1.4.0"
+
end-of-stream@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf"
@@ -2472,15 +2747,14 @@ end-of-stream@~0.1.5:
dependencies:
once "~1.3.0"
-enhanced-resolve@^3.4.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
- integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=
+enhanced-resolve@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
+ integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
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"
@@ -2509,6 +2783,13 @@ errno@^0.1.3:
dependencies:
prr "~0.0.0"
+errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+ dependencies:
+ prr "~1.0.1"
+
error-ex@^1.2.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
@@ -2630,7 +2911,7 @@ escodegen@^1.6.1:
optionalDependencies:
source-map "~0.2.0"
-escope@^3.3.0, escope@^3.6.0:
+escope@^3.3.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=
@@ -2650,6 +2931,14 @@ eslint-plugin-react@^3.2.3:
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-3.16.1.tgz#262d96b77d7c4a42af809a73c0e527a58612293c"
integrity sha1-Ji2Wt318SkKvgJpzwOUnpYYSKTw=
+eslint-scope@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
+ integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
eslint@^1.7.1:
version "1.10.3"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-1.10.3.tgz#fb19a91b13c158082bbca294b17d979bc8353a0a"
@@ -2758,19 +3047,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
md5.js "^1.3.4"
safe-buffer "^5.1.1"
-execa@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
- integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
- dependencies:
- cross-spawn "^5.0.1"
- get-stream "^3.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
-
exit-hook@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
@@ -2955,6 +3231,11 @@ fd-slicer@~1.0.1:
dependencies:
pend "~1.2.0"
+figgy-pudding@^3.1.0, figgy-pudding@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
+ integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
+
figures@^1.3.5:
version "1.7.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
@@ -3006,6 +3287,15 @@ find-cache-dir@^1.0.0:
make-dir "^1.0.0"
pkg-dir "^2.0.0"
+find-cache-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d"
+ integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^1.0.0"
+ pkg-dir "^3.0.0"
+
find-index@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4"
@@ -3019,13 +3309,20 @@ find-up@^1.0.0:
path-exists "^2.0.0"
pinkie-promise "^2.0.0"
-find-up@^2.0.0, find-up@^2.1.0:
+find-up@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
dependencies:
locate-path "^2.0.0"
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
findup-sync@^0.4.2:
version "0.4.3"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12"
@@ -3069,6 +3366,14 @@ flat-cache@^1.2.1:
graceful-fs "^4.1.2"
write "^0.2.1"
+flush-write-stream@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
+ integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.4"
+
for-in@^0.1.5:
version "0.1.6"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
@@ -3137,6 +3442,14 @@ fragment-cache@^0.2.1:
dependencies:
map-cache "^0.2.2"
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
fs-exists-sync@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
@@ -3178,6 +3491,16 @@ fs-vacuum@~1.2.7, fs-vacuum@~1.2.9:
path-is-inside "^1.0.1"
rimraf "^2.5.2"
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
fs-write-stream-atomic@~1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.8.tgz#e49aaddf288f87d46ff9e882f216a13abc40778b"
@@ -3295,11 +3618,6 @@ generate-object-property@^1.1.0:
dependencies:
is-property "^1.0.0"
-get-caller-file@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
- integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=
-
get-params@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe"
@@ -3310,11 +3628,6 @@ get-stdin@^4.0.1:
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
-get-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
- integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
-
get-value@^2.0.2, get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
@@ -3468,6 +3781,18 @@ glob@^7.0.3, glob@~7.0.6:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^7.1.2:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
glob@~3.1.21:
version "3.1.21"
resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd"
@@ -3559,6 +3884,11 @@ graceful-fs@^3.0.0:
dependencies:
natives "^1.1.0"
+graceful-fs@^4.1.11:
+ version "4.1.15"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
+ integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
+
graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.3, graceful-fs@~4.1.6:
version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
@@ -3720,10 +4050,10 @@ has-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
-has-flag@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
- integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
has-gulplog@^0.1.0:
version "0.1.0"
@@ -3879,6 +4209,11 @@ html-encoding-sniffer@^1.0.1:
dependencies:
whatwg-encoding "^1.0.1"
+html-entities@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
+ integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
+
htmlparser2@^3.9.1:
version "3.9.2"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
@@ -4047,11 +4382,6 @@ invariant@^2.0.0, invariant@^2.2.0:
dependencies:
loose-envify "^1.0.0"
-invert-kv@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
- integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-
irregular-plurals@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.2.0.tgz#38f299834ba8c00c30be9c554e137269752ff3ac"
@@ -4243,11 +4573,6 @@ is-fullwidth-code-point@^1.0.0:
dependencies:
number-is-nan "^1.0.0"
-is-fullwidth-code-point@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
- integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
is-function@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5"
@@ -4402,7 +4727,7 @@ is-resolvable@^1.0.0:
dependencies:
tryit "^1.0.1"
-is-stream@^1.0.1, is-stream@^1.1.0:
+is-stream@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@@ -4521,6 +4846,11 @@ js-tokens@^2.0.0:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
integrity sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
js-yaml@3.4.5:
version "3.4.5"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.4.5.tgz#c3403797df12b91866574f2de23646fe8cafb44d"
@@ -4529,12 +4859,17 @@ js-yaml@3.4.5:
argparse "^1.0.2"
esprima "^2.6.0"
-jsan@^3.1.11:
- version "3.1.11"
- resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.11.tgz#9ab1807e5e77ba691e92f90c29a0a6002d1259db"
- integrity sha512-8KtxvhQhAUKMQF+S/jer33XZKujglnicpCeMnVaJN5iZJ1q5zCLoX1p8awG1SgnMELX9o36LF5uUUmN5HPIqSA==
+jsan@^3.1.12:
+ version "3.1.12"
+ resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.12.tgz#e784ce5ab533ee41f868bb054d74769365c80be5"
+ integrity sha512-EDJhJdWGP++Qh5TGfsdc3k2hFjr1/4Q3nVX6MPkTYlqqj3Xv9erXnBRZEBmuGR2IpfARdm0Ivj5EBSvhFylWRA==
-jsan@^3.1.2, jsan@^3.1.3:
+jsan@^3.1.13:
+ version "3.1.13"
+ resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.13.tgz#4de8c7bf8d1cfcd020c313d438f930cec4b91d86"
+ integrity sha512-9kGpCsGHifmw6oJet+y8HaCl14y7qgAsxVdV3pCHDySNR3BfDC30zgkssd7x5LRVAT22dnpbe9JdzzmXZnq9/g==
+
+jsan@^3.1.3:
version "3.1.10"
resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.10.tgz#ba9917b864defff567e0c990a34ae7a8d5eb1d90"
integrity sha512-Rpme/mJFG3BlIM8/9L+0qAIGccx6dyYEODdkZUHYKyJI3NIl6d13buXa7aE3lO1kZAGMalG0/6QzalXdDdUc4g==
@@ -4580,10 +4915,10 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-json-loader@^0.5.4:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
- integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==
+json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
json-parse-helpfulerror@^1.0.2:
version "1.0.3"
@@ -4619,7 +4954,7 @@ json3@3.3.2:
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=
-json5@^0.5.0, json5@^0.5.1:
+json5@^0.5.0:
version "0.5.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
@@ -4749,13 +5084,6 @@ lazy-cache@^2.0.2:
dependencies:
set-getter "^0.1.0"
-lcid@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
- integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
- dependencies:
- invert-kv "^1.0.0"
-
levn@~0.2.5:
version "0.2.5"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.2.5.tgz#ba8d339d0ca4a610e3a3f145b9caf48807155054"
@@ -4803,16 +5131,6 @@ load-json-file@^1.0.0:
pinkie-promise "^2.0.0"
strip-bom "^2.0.0"
-load-json-file@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
- integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
- dependencies:
- graceful-fs "^4.1.2"
- parse-json "^2.2.0"
- pify "^2.0.0"
- strip-bom "^3.0.0"
-
loader-runner@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
@@ -4835,6 +5153,14 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
lockfile@~1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79"
@@ -5398,6 +5724,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0:
dependencies:
js-tokens "^2.0.0"
+loose-envify@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
loud-rejection@^1.0.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
@@ -5419,6 +5752,14 @@ lru-cache@^4.0.1, lru-cache@~4.0.1:
pseudomap "^1.0.1"
yallist "^2.0.0"
+lru-cache@^4.1.3:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
make-dir@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b"
@@ -5475,13 +5816,6 @@ md5.js@^1.3.4:
hash-base "^3.0.0"
inherits "^2.0.1"
-mem@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
- integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=
- dependencies:
- mimic-fn "^1.0.0"
-
memory-fs@^0.4.0, memory-fs@~0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
@@ -5544,6 +5878,25 @@ micromatch@^3.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
+micromatch@^3.1.8:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -5576,11 +5929,6 @@ mime-types@~2.1.17:
dependencies:
mime-db "~1.33.0"
-mimic-fn@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
- integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
-
min-document@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
@@ -5620,6 +5968,13 @@ minimatch@^2.0.1:
dependencies:
brace-expansion "^1.0.0"
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
minimatch@~0.2.11:
version "0.2.14"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
@@ -5638,6 +5993,22 @@ minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
mixin-deep@^1.2.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
@@ -5677,6 +6048,18 @@ mocha@^3.0.0, mocha@^3.1.2:
mkdirp "0.5.1"
supports-color "3.1.2"
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
ms@0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
@@ -5957,13 +6340,6 @@ npm-registry-client@~7.2.1:
optionalDependencies:
npmlog "~2.0.0 || ~3.1.0"
-npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
- dependencies:
- path-key "^2.0.0"
-
npm-user-validate@~0.1.2, npm-user-validate@~0.1.5:
version "0.1.5"
resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-0.1.5.tgz#52465d50c2d20294a57125b996baedbf56c5004b"
@@ -6195,6 +6571,11 @@ object-assign@^4.0.1, object-assign@^4.1.0:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
object-copy@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
@@ -6287,7 +6668,7 @@ once@^1.3.0, once@~1.3.0, once@~1.3.3:
dependencies:
wrappy "1"
-once@^1.3.3, once@~1.4.0:
+once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -6360,15 +6741,6 @@ os-homedir@^1.0.0, os-homedir@^1.0.1:
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
-os-locale@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
- integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
- dependencies:
- execa "^0.7.0"
- lcid "^1.0.0"
- mem "^1.1.0"
-
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
@@ -6391,11 +6763,6 @@ output-file-sync@^1.1.0:
mkdirp "^0.5.1"
object-assign "^4.1.0"
-p-finally@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
- integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-
p-limit@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
@@ -6403,6 +6770,13 @@ p-limit@^1.1.0:
dependencies:
p-try "^1.0.0"
+p-limit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec"
+ integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==
+ dependencies:
+ p-try "^2.0.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -6410,6 +6784,13 @@ p-locate@^2.0.0:
dependencies:
p-limit "^1.1.0"
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
p-map@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
@@ -6420,11 +6801,25 @@ p-try@^1.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+p-try@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
+ integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
+
pako@~1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==
+parallel-transform@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+ integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
+ dependencies:
+ cyclist "~0.2.2"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
parse-asn1@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
@@ -6516,11 +6911,6 @@ path-is-inside@^1.0.1, path-is-inside@~1.0.0, path-is-inside@~1.0.1:
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
-path-key@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
path-root-regex@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
@@ -6542,13 +6932,6 @@ path-type@^1.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-path-type@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
- integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
- dependencies:
- pify "^2.0.0"
-
pbkdf2@^3.0.3:
version "3.0.14"
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
@@ -6599,6 +6982,13 @@ pkg-dir@^2.0.0:
dependencies:
find-up "^2.1.0"
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
plur@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a"
@@ -6667,6 +7057,11 @@ progress-stream@^1.1.0:
speedometer "~0.1.2"
through2 "~0.2.3"
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
promise@^7.0.1, promise@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf"
@@ -6681,6 +7076,14 @@ promzard@^0.3.0:
dependencies:
read "1"
+prop-types@^15.5.10:
+ version "15.6.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102"
+ integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==
+ dependencies:
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
prop-types@^15.5.7, prop-types@^15.5.8:
version "15.5.8"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.8.tgz#6b7b2e141083be38c8595aa51fc55775c7199394"
@@ -6698,7 +7101,12 @@ prr@~0.0.0:
resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=
-pseudomap@^1.0.1:
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+pseudomap@^1.0.1, pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
@@ -6819,6 +7227,31 @@ pug-walk@^1.0.0:
pug-runtime "^2.0.2"
pug-strip-comments "^1.0.1"
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
punycode@1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
@@ -7030,17 +7463,7 @@ react-icons@^2.2.1:
dependencies:
react-icon-base "2.0.4"
-react-json-tree@0.10.0:
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.10.0.tgz#92d5c223fc7718614a906591cd916127ce2b6033"
- integrity sha1-ktXCI/x3GGFKkGWRzZFhJ84rYDM=
- dependencies:
- babel-plugin-transform-runtime "^6.7.5"
- babel-runtime "^6.6.1"
- react-base16-styling "^0.4.1"
- react-pure-render "^1.0.2"
-
-react-json-tree@^0.10.0, react-json-tree@^0.10.9:
+react-json-tree@^0.10.0, react-json-tree@^0.10.7, react-json-tree@^0.10.9:
version "0.10.9"
resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.10.9.tgz#7263173a2cc8bf05eac63b0419c3ce75b232e284"
integrity sha1-cmMXOizIvwXqxjsEGcPOdbIy4oQ=
@@ -7106,6 +7529,17 @@ react@^15.1.0, react@^15.4.1:
loose-envify "^1.1.0"
object-assign "^4.1.0"
+react@^15.4.0:
+ version "15.6.2"
+ resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72"
+ integrity sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=
+ dependencies:
+ create-react-class "^15.6.0"
+ fbjs "^0.8.9"
+ loose-envify "^1.1.0"
+ object-assign "^4.1.0"
+ prop-types "^15.5.10"
+
read-cmd-shim@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b"
@@ -7157,14 +7591,6 @@ read-pkg-up@^1.0.1:
find-up "^1.0.0"
read-pkg "^1.0.0"
-read-pkg-up@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
- integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
- dependencies:
- find-up "^2.0.0"
- read-pkg "^2.0.0"
-
read-pkg@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
@@ -7174,15 +7600,6 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
-read-pkg@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
- integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
- dependencies:
- load-json-file "^2.0.0"
- normalize-package-data "^2.3.2"
- path-type "^2.0.0"
-
read@1, read@~1.0.1, read@~1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
@@ -7213,6 +7630,19 @@ read@1, read@~1.0.1, read@~1.0.7:
isarray "0.0.1"
string_decoder "~0.10.x"
+readable-stream@^2.0.0, readable-stream@^2.0.4:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ 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.1.1"
+ util-deprecate "~1.0.1"
+
readable-stream@^2.0.1, readable-stream@^2.1.5, readable-stream@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
@@ -7341,7 +7771,7 @@ redux-devtools-chart-monitor@^1.6.1:
react-pure-render "^1.0.2"
redux-devtools-themes "^1.0.0"
-redux-devtools-instrument@^1.0.1, redux-devtools-instrument@^1.9.0:
+redux-devtools-instrument@^1.0.1:
version "1.9.0"
resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.9.0.tgz#2faed9ac3292c783284b21843edfaa0567764a0c"
integrity sha512-pLFQoja1ojpsSRTWbC9yyc/a+z8uwOD7FPKLp+Abs7qjsah6khA5o8HBE2wa0VipE5vniYINdkNyxV/2iWADKg==
@@ -7349,6 +7779,14 @@ redux-devtools-instrument@^1.0.1, redux-devtools-instrument@^1.9.0:
lodash "^4.2.0"
symbol-observable "^1.0.2"
+redux-devtools-instrument@^1.9.6:
+ version "1.9.6"
+ resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.9.6.tgz#6b412595f74b9d48cfd4ecc13e585b1588ed6e7e"
+ integrity sha512-MwvY4cLEB2tIfWWBzrUR02UM9qRG2i7daNzywRvabOSVdvAY7s9BxSwMmVRH1Y/7QWjplNtOwgT0apKhHg2Qew==
+ dependencies:
+ lodash "^4.2.0"
+ symbol-observable "^1.0.2"
+
redux-devtools-log-monitor@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/redux-devtools-log-monitor/-/redux-devtools-log-monitor-1.2.0.tgz#136a202f999c659a13fbb5c50793106e80722311"
@@ -7379,6 +7817,19 @@ redux-devtools-themes@^1.0.0:
dependencies:
base16 "^1.0.0"
+redux-devtools-trace-monitor@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/redux-devtools-trace-monitor/-/redux-devtools-trace-monitor-0.1.0.tgz#b4d26fbd6fb2002b061d6e49e840b782418f4794"
+ integrity sha512-fUgCVeGbDpamX94F70ABMnemKRgYoPuTdfSyaasZ/fG1nW/bZKlsyW/eZIJjLBcdlWv7eK3IyRrypX3pRZ0/VA==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ anser "^1.4.7"
+ chalk "^2.4.1"
+ html-entities "^1.2.1"
+ react "^15.4.0"
+ redux-devtools-themes "^1.0.0"
+ settle-promise "^1.0.0"
+
redux-devtools@^3.0.0, redux-devtools@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/redux-devtools/-/redux-devtools-3.4.1.tgz#09d342ce0ab6087be679e953a1d7c530efa1138e"
@@ -7462,15 +7913,15 @@ regjsparser@^0.1.4:
dependencies:
jsesc "~0.5.0"
-remotedev-app@^0.10.8:
- version "0.10.8"
- resolved "https://registry.yarnpkg.com/remotedev-app/-/remotedev-app-0.10.8.tgz#7cca9be39674993b81dd400fc094ff85c361c64e"
- integrity sha1-fMqb45Z0mTuB3UAPwJT/hcNhxk4=
+remotedev-app@^0.10.13-beta:
+ version "0.10.13-beta"
+ resolved "https://registry.yarnpkg.com/remotedev-app/-/remotedev-app-0.10.13-beta.tgz#e240a10c9184fdca5fee68a36078eed313883aa7"
+ integrity sha512-QtbHdZg9kcVIH1/jBvq8jOd5okA+mRnx6zLP2O7eN3PTYpRvzRKpHKavNUTcFfjJgo94URqeAqpf/ZJ+y+SKhg==
dependencies:
chrome-storage-local "^0.1.6"
d3-state-visualizer "^1.3.1"
javascript-stringify "^1.5.0"
- jsan "^3.1.2"
+ jsan "^3.1.12"
jsondiffpatch "^0.2.4"
lodash "^4.0.0"
material-ui "0.16.4"
@@ -7484,16 +7935,17 @@ remotedev-app@^0.10.8:
redux-devtools-log-monitor "^1.2.0"
redux-devtools-test-generator "^0.4.0"
redux-devtools-themes "^1.0.0"
- remotedev-inspector-monitor "^0.10.2"
+ redux-devtools-trace-monitor "^0.1.0"
+ remotedev-inspector-monitor "^0.11.0"
remotedev-monitor-components "^0.0.5"
remotedev-slider "1.1.3"
socketcluster-client "^5.5.0"
styled-components "^1.1.1"
-remotedev-inspector-monitor@^0.10.2:
- version "0.10.2"
- resolved "https://registry.yarnpkg.com/remotedev-inspector-monitor/-/remotedev-inspector-monitor-0.10.2.tgz#2f6618fc2a2d5aa9d57e97baa21b9cb4f330f638"
- integrity sha1-L2YY/CotWqnVfpe6ohuctPMw9jg=
+remotedev-inspector-monitor@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/remotedev-inspector-monitor/-/remotedev-inspector-monitor-0.11.0.tgz#552dbc3736e6d898a783b51cfd7d20b875620d5f"
+ integrity sha1-VS28Nzbm2Jing7Uc/X0guHViDV8=
dependencies:
babel-runtime "^6.3.19"
dateformat "^1.0.12"
@@ -7507,7 +7959,7 @@ remotedev-inspector-monitor@^0.10.2:
lodash.debounce "^4.0.3"
react-base16-styling "^0.4.1"
react-dragula "^1.1.17"
- react-json-tree "0.10.0"
+ react-json-tree "^0.10.7"
react-pure-render "^1.0.2"
redux-devtools-themes "^1.0.0"
@@ -7527,12 +7979,12 @@ remotedev-monitor-components@^0.0.5:
codemirror "^5.21.0"
styled-components "^1.1.1"
-remotedev-serialize@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/remotedev-serialize/-/remotedev-serialize-0.1.2.tgz#2dd6bcd9af57bd1dc4fb720d3364ac531c7c1e91"
- integrity sha512-oFUMLf92AjR/StREwTpmMTYcZ4q1+T0jviEiWf36BEb8nBnZh6Cx94j6I/qeOhWN/JFN3Jo5QyJ43Nu/OxGC7g==
+remotedev-serialize@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/remotedev-serialize/-/remotedev-serialize-0.1.8.tgz#c99cb184e7f71a906162abc404be8ce33810205f"
+ integrity sha512-3YG/FDcOmiK22bl5oMRM8RRnbGrFEuPGjbcDG+z2xi5aQaNQNZ8lqoRnZTwXVfaZtutXuiAQOgPRrogzQk8edg==
dependencies:
- jsan "^3.1.11"
+ jsan "^3.1.13"
remotedev-slider@1.1.3, remotedev-slider@^1.1.1:
version "1.1.3"
@@ -7726,16 +8178,6 @@ request@~2.74.0:
tough-cookie "~2.3.0"
tunnel-agent "~0.4.1"
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
-require-main-filename@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
- integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
-
resolve-dir@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
@@ -7801,6 +8243,13 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@~2.
dependencies:
glob "^7.0.5"
+rimraf@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
+ integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
+ dependencies:
+ glob "^7.0.5"
+
rimraf@~2.2.6:
version "2.2.8"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
@@ -7833,6 +8282,13 @@ run-async@^0.1.0:
dependencies:
once "^1.3.0"
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
rx-lite@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
@@ -7896,6 +8352,23 @@ schema-utils@^0.3.0:
dependencies:
ajv "^5.0.0"
+schema-utils@^0.4.4:
+ version "0.4.7"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
+ integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
selenium-webdriver@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7"
@@ -7931,7 +8404,12 @@ sequencify@~0.0.7:
resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c"
integrity sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=
-set-blocking@^2.0.0, set-blocking@~2.0.0:
+serialize-javascript@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe"
+ integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==
+
+set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
@@ -7973,6 +8451,11 @@ setimmediate@^1.0.4, setimmediate@^1.0.5:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+settle-promise@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/settle-promise/-/settle-promise-1.0.0.tgz#697adb58b821f387ce2757c06efc9de5f0ee33d8"
+ integrity sha1-aXrbWLgh84fOJ1fAbvyd5fDuM9g=
+
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.10"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b"
@@ -7989,18 +8472,6 @@ sha@~2.0.1:
graceful-fs "^4.1.2"
readable-stream "^2.0.2"
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
shelljs@^0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.5.3.tgz#c54982b996c76ef0c1e6b59fbdc5825f5b713113"
@@ -8159,6 +8630,14 @@ source-map-support@^0.4.2:
dependencies:
source-map "^0.5.3"
+source-map-support@~0.5.6:
+ version "0.5.9"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
+ integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
source-map-url@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
@@ -8176,6 +8655,11 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
source-map@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
@@ -8183,11 +8667,6 @@ source-map@~0.2.0:
dependencies:
amdefine ">=0.0.4"
-source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
sparkles@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
@@ -8243,6 +8722,13 @@ sshpk@^1.7.0:
jsbn "~0.1.0"
tweetnacl "~0.14.0"
+ssri@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+ integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -8264,6 +8750,14 @@ stream-consume@~0.1.0:
resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f"
integrity sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
stream-http@^2.7.2:
version "2.8.0"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10"
@@ -8275,6 +8769,11 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+ integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+
string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -8284,14 +8783,6 @@ string-width@^1.0.1:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string-width@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
- integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
- dependencies:
- is-fullwidth-code-point "^2.0.0"
- strip-ansi "^4.0.0"
-
string_decoder@^1.0.0, string_decoder@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
@@ -8304,6 +8795,13 @@ string_decoder@~0.10.x:
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
stringstream@~0.0.4, stringstream@~0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
@@ -8323,13 +8821,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1, strip-ansi@~3.0.1:
dependencies:
ansi-regex "^2.0.0"
-strip-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
- integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
- dependencies:
- ansi-regex "^3.0.0"
-
strip-bom@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794"
@@ -8345,16 +8836,6 @@ strip-bom@^2.0.0:
dependencies:
is-utf8 "^0.2.0"
-strip-bom@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
- integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-
-strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
- integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-
strip-indent@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
@@ -8419,12 +8900,12 @@ supports-color@^2.0.0:
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-supports-color@^4.2.1:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
- integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
- has-flag "^2.0.0"
+ has-flag "^3.0.0"
symbol-observable@^0.2.4:
version "0.2.4"
@@ -8441,10 +8922,10 @@ symbol-observable@^1.0.2:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.1.tgz#8549dd1d01fa9f893c18cc9ab0b106b4d9b168cb"
integrity sha1-hUndHQH6n4k8GMyasLEGtNmxaMs=
-tapable@^0.2.7:
- version "0.2.8"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
- integrity sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=
+tapable@^1.0.0, tapable@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e"
+ integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==
tar-pack@~3.3.0:
version "3.3.0"
@@ -8477,6 +8958,29 @@ temp@^0.8.3:
os-tmpdir "^1.0.0"
rimraf "~2.2.6"
+terser-webpack-plugin@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528"
+ integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==
+ dependencies:
+ cacache "^11.0.2"
+ find-cache-dir "^2.0.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^1.4.0"
+ source-map "^0.6.1"
+ terser "^3.8.1"
+ webpack-sources "^1.1.0"
+ worker-farm "^1.5.2"
+
+terser@^3.8.1:
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-3.11.0.tgz#60782893e1f4d6788acc696351f40636d0e37af0"
+ integrity sha512-5iLMdhEPIq3zFWskpmbzmKwMQixKmTYwY3Ox9pjtSklBLnHiuQ0GKJLhL1HSYtyffHM3/lDIFBnb82m9D7ewwQ==
+ dependencies:
+ commander "~2.17.1"
+ source-map "~0.6.1"
+ source-map-support "~0.5.6"
+
text-table@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -8584,7 +9088,7 @@ to-regex-range@^2.1.0:
is-number "^3.0.0"
repeat-string "^1.6.1"
-to-regex@^3.0.1:
+to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
@@ -8633,6 +9137,11 @@ tryit@^1.0.1:
resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
integrity sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=
+tslib@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+ integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
+
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -8682,7 +9191,7 @@ uglify-js@^2.6:
uglify-to-browserify "~1.0.0"
yargs "~3.10.0"
-uglify-js@^2.6.1, uglify-js@^2.8.29:
+uglify-js@^2.6.1:
version "2.8.29"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0=
@@ -8697,15 +9206,6 @@ uglify-to-browserify@~1.0.0:
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
-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"
- integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=
- dependencies:
- source-map "^0.5.6"
- uglify-js "^2.8.29"
- webpack-sources "^1.0.1"
-
uid-number@0.0.6, uid-number@~0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
@@ -8748,6 +9248,13 @@ union-value@^1.0.0:
is-extendable "^0.1.1"
set-value "^0.4.3"
+unique-filename@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
unique-filename@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3"
@@ -8935,10 +9442,10 @@ warning@3.0.0, warning@^3.0.0:
dependencies:
loose-envify "^1.0.0"
-watchpack@^1.4.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed"
- integrity sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==
+watchpack@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
+ integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
dependencies:
chokidar "^2.0.2"
graceful-fs "^4.1.2"
@@ -8956,41 +9463,43 @@ webidl-conversions@^3.0.0, webidl-conversions@^3.0.1:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
-webpack-sources@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
- integrity sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==
+webpack-sources@^1.1.0, webpack-sources@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85"
+ integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==
dependencies:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^3.1.0:
- version "3.11.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894"
- integrity sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg==
- dependencies:
- acorn "^5.0.0"
- acorn-dynamic-import "^2.0.0"
+webpack@^4.27.1:
+ version "4.27.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.27.1.tgz#5f2e2db446d2266376fa15d7d2277a1a9c2e12bb"
+ integrity sha512-WArHiLvHrlfyRM8i7f+2SFbr/XbQ0bXqTkPF8JpHOzub5482Y3wx7rEO8stuLGOKOgZJcqcisLhD7LrM/+fVMw==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.11"
+ "@webassemblyjs/helper-module-context" "1.7.11"
+ "@webassemblyjs/wasm-edit" "1.7.11"
+ "@webassemblyjs/wasm-parser" "1.7.11"
+ acorn "^5.6.2"
+ acorn-dynamic-import "^3.0.0"
ajv "^6.1.0"
ajv-keywords "^3.1.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"
+ chrome-trace-event "^1.0.0"
+ enhanced-resolve "^4.1.0"
+ eslint-scope "^4.0.0"
+ json-parse-better-errors "^1.0.2"
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"
- webpack-sources "^1.0.1"
- yargs "^8.0.2"
+ schema-utils "^0.4.4"
+ tapable "^1.1.0"
+ terser-webpack-plugin "^1.1.0"
+ watchpack "^1.5.0"
+ webpack-sources "^1.3.0"
whatwg-encoding@^1.0.1:
version "1.0.1"
@@ -9012,11 +9521,6 @@ whatwg-url@^4.1.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-which-module@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
- integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
which@1, which@^1.2.12, which@^1.2.9, which@~1.2.11, which@~1.2.4:
version "1.2.12"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192"
@@ -9059,13 +9563,12 @@ wordwrap@~1.0.0:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-wrap-ansi@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
- integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
+worker-farm@^1.5.2:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
+ integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==
dependencies:
- string-width "^1.0.1"
- strip-ansi "^3.0.1"
+ errno "~0.1.7"
wrappy@1, wrappy@~1.0.1, wrappy@~1.0.2:
version "1.0.2"
@@ -9133,41 +9636,20 @@ xtend@~2.1.1:
dependencies:
object-keys "~0.4.0"
-y18n@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
- integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
yallist@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4"
integrity sha1-MGxUODXwnuGkyyO3vOmrNByRzdQ=
-yargs-parser@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
- integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k=
- dependencies:
- camelcase "^4.1.0"
-
-yargs@^8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
- integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A=
- dependencies:
- camelcase "^4.1.0"
- cliui "^3.2.0"
- decamelize "^1.1.1"
- get-caller-file "^1.0.1"
- os-locale "^2.0.0"
- read-pkg-up "^2.0.0"
- require-directory "^2.1.1"
- require-main-filename "^1.0.1"
- set-blocking "^2.0.0"
- string-width "^2.0.0"
- which-module "^2.0.0"
- y18n "^3.2.1"
- yargs-parser "^7.0.0"
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
yargs@~3.10.0:
version "3.10.0"