diff --git a/package.json b/package.json
index 613fa7fe..8391b82b 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,7 @@
"private": true,
"devDependencies": {
"babel-eslint": "^10.0.0",
+ "eslint-plugin-react": "7.4.0",
"lerna": "3.4.2"
},
"scripts": {
diff --git a/packages/react-json-tree/.babelrc b/packages/react-json-tree/.babelrc
new file mode 100644
index 00000000..6094aeaf
--- /dev/null
+++ b/packages/react-json-tree/.babelrc
@@ -0,0 +1,16 @@
+{
+ "plugins": [
+ "transform-runtime",
+ "transform-es3-property-literals",
+ "transform-es3-member-expression-literals",
+ "transform-object-rest-spread",
+ "transform-class-properties"
+ ],
+ "presets": [[
+ "env",
+ {
+ "loose": true,
+ "shippedProposals": true
+ }
+ ], "react"]
+}
diff --git a/packages/react-json-tree/.eslintignore b/packages/react-json-tree/.eslintignore
new file mode 100644
index 00000000..cd3f61e1
--- /dev/null
+++ b/packages/react-json-tree/.eslintignore
@@ -0,0 +1,5 @@
+lib
+**/node_modules
+**/webpack.config.js
+examples/**/server.js
+examples/src/App.js
diff --git a/packages/react-json-tree/.eslintrc b/packages/react-json-tree/.eslintrc
new file mode 100644
index 00000000..8f30c735
--- /dev/null
+++ b/packages/react-json-tree/.eslintrc
@@ -0,0 +1,53 @@
+{
+ "parser": "babel-eslint",
+ "extends": [
+ "eslint:recommended",
+ "standard",
+ "plugin:react/recommended",
+ "prettier"
+ ],
+ "env": {
+ "browser": true,
+ "mocha": true,
+ "node": true
+ },
+ "rules": {
+ "no-restricted-syntax": 0,
+ "comma-dangle": 0,
+ "no-param-reassign": 0,
+ "space-infix-ops": 0,
+ "react/sort-comp": [
+ 1, {
+ "order": [
+ "static-methods",
+ "constructor",
+ "lifecycle",
+ "everything-else",
+ "render",
+ "/^handle.+$/"
+ ],
+ "groups": {
+ "lifecycle": [
+ "childContextTypes",
+ "getInitialState",
+ "state",
+ "getChildContext",
+ "componentWillMount",
+ "componentDidMount",
+ "componentWillReceiveProps",
+ "shouldComponentUpdate",
+ "componentWillUpdate",
+ "componentDidUpdate",
+ "componentWillUnmount"
+ ]
+ }
+ }
+ ]
+ },
+ "plugins": [
+ "prettier",
+ "standard",
+ "react",
+ "babel"
+ ]
+}
diff --git a/packages/react-json-tree/LICENSE.md b/packages/react-json-tree/LICENSE.md
new file mode 100644
index 00000000..69ccc6cb
--- /dev/null
+++ b/packages/react-json-tree/LICENSE.md
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Shusaku Uesugi, (c) 2016-present Alexander Kuznetsov
+
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/react-json-tree/README.md b/packages/react-json-tree/README.md
new file mode 100644
index 00000000..41727260
--- /dev/null
+++ b/packages/react-json-tree/README.md
@@ -0,0 +1,155 @@
+# react-json-tree
+
+React JSON Viewer Component, Extracted from [redux-devtools](https://github.com/reduxjs/redux-devtools). Supports [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable) objects, such as [Immutable.js](https://facebook.github.io/immutable-js/).
+
+![](https://img.shields.io/npm/v/react-json-tree.svg)
+
+### Usage
+
+```jsx
+import JSONTree from 'react-json-tree'
+// If you're using Immutable.js: `npm i --save immutable`
+import { Map } from 'immutable'
+
+// Inside a React component:
+const json = {
+ array: [1, 2, 3],
+ bool: true,
+ object: {
+ foo: 'bar'
+ },
+ immutable: Map({ key: 'value' })
+}
+
+
+```
+
+#### Result:
+
+![](http://cl.ly/image/3f2C2k2t3D0o/screenshot%202015-08-26%20at%2010.24.12%20AM.png)
+
+Check out [examples](examples) directory for more details.
+
+### Theming
+
+This component now uses [react-base16-styling](https://github.com/alexkuz/react-base16-styling) module, which allows to customize component via `theme` property, which can be the following:
+- [base16](http://chriskempson.github.io/base16) theme data. [The example theme data can be found here](https://github.com/gaearon/redux-devtools/tree/75322b15ee7ba03fddf10ac3399881e302848874/src/react/themes).
+- object that contains style objects, strings (that treated as classnames) or functions. A function is used to extend its first argument `{ style, className }` and should return an object with the same structure. Other arguments depend on particular context (and should be described here). See [createStylingFromTheme.js](https://github.com/alexkuz/react-json-tree/blob/feature-refactor-styling/src/createStylingFromTheme.js) for the list of styling object keys. Also, this object can extend `base16` theme via `extend` property.
+
+Every theme has a light version, which is enabled with `invertTheme` prop.
+
+```jsx
+const theme = {
+ scheme: 'monokai',
+ author: 'wimer hazenberg (http://www.monokai.nl)',
+ base00: '#272822',
+ base01: '#383830',
+ base02: '#49483e',
+ base03: '#75715e',
+ base04: '#a59f85',
+ base05: '#f8f8f2',
+ base06: '#f5f4f1',
+ base07: '#f9f8f5',
+ base08: '#f92672',
+ base09: '#fd971f',
+ base0A: '#f4bf75',
+ base0B: '#a6e22e',
+ base0C: '#a1efe4',
+ base0D: '#66d9ef',
+ base0E: '#ae81ff',
+ base0F: '#cc6633'
+};
+
+
+
+
+
+```
+
+#### Result (Monokai theme, dark background):
+
+![](http://cl.ly/image/330o2L1J3V0h/screenshot%202015-08-26%20at%2010.48.24%20AM.png)
+
+#### Advanced Customization
+
+```jsx
+
+ ({
+ style: {
+ ...style,
+ textTransform: expanded ? 'uppercase' : style.textTransform
+ }
+ })
+ }} />
+
+```
+
+#### Customize Labels for Arrays, Objects, and Iterables
+
+You can pass `getItemString` to customize the way arrays, objects, and iterable nodes are displayed (optional).
+
+By default, it'll be:
+
+```jsx
+ {itemType} {itemString} }
+```
+
+But if you pass the following:
+
+```jsx
+const getItemString = (type, data, itemType, itemString)
+ => ( // {type} );
+```
+
+Then the preview of child elements now look like this:
+
+![](http://cl.ly/image/1J1a0b0T0K3c/screenshot%202015-10-07%20at%203.44.31%20PM.png)
+
+#### Customize Rendering
+
+You can pass the following properties to customize rendered labels and values:
+
+```jsx
+ {raw} }
+ valueRenderer={raw => {raw} }
+/>
+```
+
+In this example the label and value will be rendered with `` and `` wrappers respectively.
+
+For `labelRenderer`, you can provide a full path - [see this PR](https://github.com/chibicode/react-json-tree/pull/32).
+
+#### More Options
+
+- `shouldExpandNode: function(keyName, data, level)` - determines if node should be expanded (root is expanded by default)
+- `hideRoot: Boolean` - if `true`, the root node is hidden.
+- `sortObjectKeys: Boolean | function(a, b)` - sorts object keys with compare function (optional). Isn't applied to iterable maps like `Immutable.Map`.
+
+### Credits
+
+- All credits to [Dave Vedder](http://www.eskimospy.com/) ([veddermatic@gmail.com](mailto:veddermatic@gmail.com)), who wrote the original code as [JSONViewer](https://bitbucket.org/davevedder/react-json-viewer/).
+- Extracted from [redux-devtools](https://github.com/gaearon/redux-devtools), which contained ES6 + inline style port of [JSONViewer](https://bitbucket.org/davevedder/react-json-viewer/) by [Daniele Zannotti](http://www.github.com/dzannotti) ([dzannotti@me.com](mailto:dzannotti@me.com))
+- [Iterable support](https://github.com/gaearon/redux-devtools/pull/79) thanks to [Daniel K](https://github.com/FredyC).
+- npm package created by [Shu Uesugi](http://github.com/chibicode) ([shu@chibicode.com](mailto:shu@chibicode.com)) per [this issue](https://github.com/gaearon/redux-devtools/issues/85).
+- Improved and maintained by [Alexander Kuznetsov](https://github.com/alexkuz). The repository was merged into [`redux-devtools` monorepo](https://github.com/reduxjs/redux-devtools) from [`alexkuz/react-json-tree`](https://github.com/alexkuz/react-json-tree).
+
+### Similar Libraries
+
+- [react-treeview](https://github.com/chenglou/react-treeview)
+- [react-json-inspector](https://github.com/Lapple/react-json-inspector)
+- [react-object-inspector](https://github.com/xyc/react-object-inspector)
+- [react-json-view](https://github.com/mac-s-g/react-json-view)
+
+### License
+
+MIT
diff --git a/packages/react-json-tree/examples/.babelrc b/packages/react-json-tree/examples/.babelrc
new file mode 100755
index 00000000..422b2d38
--- /dev/null
+++ b/packages/react-json-tree/examples/.babelrc
@@ -0,0 +1,9 @@
+{
+ "plugins": [
+ "transform-object-rest-spread",
+ "transform-class-properties"
+ ],
+ "presets": [
+ "env", "react"
+ ]
+}
diff --git a/packages/react-json-tree/examples/.eslintrc b/packages/react-json-tree/examples/.eslintrc
new file mode 100755
index 00000000..1208b32d
--- /dev/null
+++ b/packages/react-json-tree/examples/.eslintrc
@@ -0,0 +1,25 @@
+{
+ "extends": [
+ "eslint:recommended",
+ "standard",
+ "plugin:react/recommended",
+ "prettier"
+ ],
+ "env": {
+ "browser": true,
+ "node": true
+ },
+ "parser": "babel-eslint",
+ "rules": {
+ "quotes": [2, "single"],
+ "strict": [2, "never"],
+ "react/jsx-uses-react": 2,
+ "react/jsx-uses-vars": 2,
+ "react/react-in-jsx-scope": 2
+ },
+ "plugins": [
+ "prettier",
+ "standard",
+ "react"
+ ]
+}
diff --git a/packages/react-json-tree/examples/LICENSE b/packages/react-json-tree/examples/LICENSE
new file mode 100755
index 00000000..44a03c28
--- /dev/null
+++ b/packages/react-json-tree/examples/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Dan Abramov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/react-json-tree/examples/README.md b/packages/react-json-tree/examples/README.md
new file mode 100755
index 00000000..4b77be16
--- /dev/null
+++ b/packages/react-json-tree/examples/README.md
@@ -0,0 +1,47 @@
+react-hot-boilerplate
+=====================
+
+The minimal dev environment to enable live-editing React components.
+
+### Usage
+
+```
+npm install
+npm start
+open http://localhost:3000
+```
+
+Now edit `src/App.js`.
+Your changes will appear without reloading the browser like in [this video](http://vimeo.com/100010922).
+
+### Linting
+
+This boilerplate project includes React-friendly ESLint configuration.
+
+```
+npm run lint
+```
+
+### Using `0.0.0.0` as Host
+
+You may want to change the host in `server.js` and `webpack.config.js` from `localhost` to `0.0.0.0` to allow access from same WiFi network. This is not enabled by default because it is reported to cause problems on Windows. This may also be useful if you're using a VM.
+
+### Missing Features
+
+This boilerplate is purposefully simple to show the minimal configuration for React Hot Loader. For a real project, you'll want to add a separate config for production with hot reloading disabled and minification enabled. You'll also want to add a router, styles and maybe combine dev server with an existing server. This is out of scope of this boilerplate, but you may want to look into [other starter kits](https://github.com/gaearon/react-hot-loader/blob/master/docs/README.md#starter-kits).
+
+### Dependencies
+
+* React
+* Webpack
+* [webpack-dev-server](https://github.com/webpack/webpack-dev-server)
+* [babel-loader](https://github.com/babel/babel-loader)
+* [react-hot-loader](https://github.com/gaearon/react-hot-loader)
+
+### Resources
+
+* [Demo video](http://vimeo.com/100010922)
+* [react-hot-loader on Github](https://github.com/gaearon/react-hot-loader)
+* [Integrating JSX live reload into your workflow](http://gaearon.github.io/react-hot-loader/getstarted/)
+* [Troubleshooting guide](https://github.com/gaearon/react-hot-loader/blob/master/docs/Troubleshooting.md)
+* Ping dan_abramov on Twitter or #reactjs IRC
diff --git a/packages/react-json-tree/examples/index.html b/packages/react-json-tree/examples/index.html
new file mode 100755
index 00000000..1118d62a
--- /dev/null
+++ b/packages/react-json-tree/examples/index.html
@@ -0,0 +1,17 @@
+
+
+ Sample App
+
+
+
+
+
+
+
+
diff --git a/packages/react-json-tree/examples/package.json b/packages/react-json-tree/examples/package.json
new file mode 100644
index 00000000..e3b6df2b
--- /dev/null
+++ b/packages/react-json-tree/examples/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "react-json-tree-example",
+ "version": "1.0.0",
+ "description": "React-Json-Tree example",
+ "scripts": {
+ "start": "node server.js",
+ "lint": "eslint src",
+ "stats": "NODE_ENV=production webpack --json > dist/stats.json"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/gaearon/react-hot-boilerplate.git"
+ },
+ "keywords": [
+ "react",
+ "reactjs",
+ "boilerplate",
+ "hot",
+ "reload",
+ "hmr",
+ "live",
+ "edit",
+ "webpack"
+ ],
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/gaearon/react-hot-boilerplate/issues"
+ },
+ "homepage": "https://github.com/gaearon/react-hot-boilerplate",
+ "devDependencies": {
+ "babel-core": "^6.26.0",
+ "babel-eslint": "^8.0.1",
+ "babel-loader": "^7.1.2",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
+ "babel-preset-react": "^6.5.0",
+ "eslint": "^4.10.0",
+ "eslint-plugin-babel": "^4.1.2",
+ "eslint-plugin-import": "^2.8.0",
+ "eslint-plugin-jsx-a11y": "^6.0.2",
+ "eslint-plugin-react": "^7.4.0",
+ "webpack": "^3.8.1",
+ "webpack-dev-server": "^2.4.1"
+ },
+ "dependencies": {
+ "immutable": "^3.8.1",
+ "react": "^16.0.0",
+ "react-base16-styling": "^0.5.3",
+ "react-dom": "^16.0.0"
+ }
+}
diff --git a/packages/react-json-tree/examples/server.js b/packages/react-json-tree/examples/server.js
new file mode 100755
index 00000000..5ac2b33b
--- /dev/null
+++ b/packages/react-json-tree/examples/server.js
@@ -0,0 +1,15 @@
+var webpack = require('webpack');
+var WebpackDevServer = require('webpack-dev-server');
+var config = require('./webpack.config');
+
+new WebpackDevServer(webpack(config), {
+ publicPath: config.output.publicPath,
+ hot: true,
+ historyApiFallback: true
+}).listen(3000, 'localhost', function (err, result) {
+ if (err) {
+ console.log(err);
+ }
+
+ console.log('Listening at localhost:3000');
+});
diff --git a/packages/react-json-tree/examples/src/App.js b/packages/react-json-tree/examples/src/App.js
new file mode 100755
index 00000000..c9293f77
--- /dev/null
+++ b/packages/react-json-tree/examples/src/App.js
@@ -0,0 +1,193 @@
+import React from 'react';
+import { Map } from 'immutable';
+import JSONTree from '../../src';
+
+const getLabelStyle = ({ style }, nodeType, expanded) => ({
+ style: {
+ ...style,
+ textTransform: expanded ? 'uppercase' : style.textTransform
+ }
+});
+
+const getBoolStyle = ({ style }, nodeType) => ({
+ style: {
+ ...style,
+ border: nodeType === 'Boolean' ? '1px solid #DD3333' : style.border,
+ borderRadius: nodeType === 'Boolean' ? 3 : style.borderRadius
+ }
+});
+
+const getItemString = type => (
+
+ {' // '}
+ {type}
+
+);
+
+const getValueLabelStyle = ({ style }, nodeType, keyPath) => ({
+ style: {
+ ...style,
+ color:
+ !Number.isNaN(keyPath[0]) && !(parseInt(keyPath, 10) % 2)
+ ? '#33F'
+ : style.color
+ }
+});
+
+// eslint-disable-next-line max-len
+const longString =
+ 'Loremipsumdolorsitamet,consecteturadipiscingelit.Namtempusipsumutfelisdignissimauctor.Maecenasodiolectus,finibusegetultricesvel,aliquamutelit.Loremipsumdolorsitamet,consecteturadipiscingelit.Namtempusipsumutfelisdignissimauctor.Maecenasodiolectus,finibusegetultricesvel,aliquamutelit.Loremipsumdolorsitamet,consecteturadipiscingelit.Namtempusipsumutfelisdignissimauctor.Maecenasodiolectus,finibusegetultricesvel,aliquamutelit.';
+
+const Custom = function(value) {
+ this.value = value;
+};
+Custom.prototype[Symbol.toStringTag] = 'Custom';
+
+const data = {
+ array: [1, 2, 3],
+ emptyArray: [],
+ bool: true,
+ date: new Date(),
+ error: new Error(longString),
+ object: {
+ foo: {
+ bar: 'baz',
+ nested: {
+ moreNested: {
+ evenMoreNested: {
+ veryNested: {
+ insanelyNested: {
+ ridiculouslyDeepValue: 'Hello'
+ }
+ }
+ }
+ }
+ }
+ },
+ baz: undefined,
+ func: function User() {}
+ },
+ emptyObject: {},
+ symbol: Symbol('value'),
+ // eslint-disable-next-line new-cap
+ immutable: Map([
+ ['key', 'value'],
+ [{ objectKey: 'value' }, { objectKey: 'value' }]
+ ]),
+ map: new window.Map([
+ ['key', 'value'],
+ [0, 'value'],
+ [{ objectKey: 'value' }, { objectKey: 'value' }]
+ ]),
+ weakMap: new window.WeakMap([
+ [{ objectKey: 'value' }, { objectKey: 'value' }]
+ ]),
+ set: new window.Set(['value', 0, { objectKey: 'value' }]),
+ weakSet: new window.WeakSet([
+ { objectKey: 'value1' },
+ { objectKey: 'value2' }
+ ]),
+ hugeArray: Array.from({ length: 10000 }).map((_, i) => `item #${i}`),
+ customProfile: {
+ avatar: new Custom('placehold.it/50x50'),
+ name: new Custom('Name')
+ },
+ longString
+};
+
+const theme = {
+ scheme: 'monokai',
+ author: 'wimer hazenberg (http://www.monokai.nl)',
+ base00: '#272822',
+ base01: '#383830',
+ base02: '#49483e',
+ base03: '#75715e',
+ base04: '#a59f85',
+ base05: '#f8f8f2',
+ base06: '#f5f4f1',
+ base07: '#f9f8f5',
+ base08: '#f92672',
+ base09: '#fd971f',
+ base0A: '#f4bf75',
+ base0B: '#a6e22e',
+ base0C: '#a1efe4',
+ base0D: '#66d9ef',
+ base0E: '#ae81ff',
+ base0F: '#cc6633'
+};
+
+const App = () => (
+
+
+
+
Dark Theme
+
+
+
Hidden Root
+
+
+
Base16 Greenscreen Theme
+
+
Inverted Theme
+
+
+
Style Customization
+
+
+ Label changes between uppercase/lowercase based on the expanded state.
+
+ Array keys are styled based on their parity.
+
+ The labels of objects, arrays, and iterables are customized as "//
+ type".
+
+ See code for details.
+
+
+
+
+
More Fine Grained Rendering
+
+ Pass labelRenderer
or valueRenderer
.
+
+
+ (({raw})): }
+ valueRenderer={raw => (
+
+
+ 😐
+ {' '}
+ {raw}{' '}
+
+ 😐
+
+
+ )}
+ />
+
+
+ Sort object keys with sortObjectKeys
prop.
+
+
+
+
+
Collapsed root node
+
+ false} />
+
+
+);
+
+export default App;
diff --git a/packages/react-json-tree/examples/src/index.js b/packages/react-json-tree/examples/src/index.js
new file mode 100755
index 00000000..aca61f2f
--- /dev/null
+++ b/packages/react-json-tree/examples/src/index.js
@@ -0,0 +1,5 @@
+import { render } from 'react-dom';
+import React from 'react';
+import App from './App';
+
+render( , document.getElementById('root'));
diff --git a/packages/react-json-tree/examples/webpack.config.js b/packages/react-json-tree/examples/webpack.config.js
new file mode 100755
index 00000000..8c781525
--- /dev/null
+++ b/packages/react-json-tree/examples/webpack.config.js
@@ -0,0 +1,51 @@
+var path = require('path');
+var webpack = require('webpack');
+
+var isProduction = process.env.NODE_ENV === 'production';
+
+module.exports = {
+ devtool: 'source-map',
+ entry: [
+ !isProduction && 'webpack-dev-server/client?http://localhost:3000',
+ !isProduction && 'webpack/hot/only-dev-server',
+ './src/index'
+ ].filter(Boolean),
+ output: {
+ path: path.join(__dirname, 'dist'),
+ filename: 'bundle.js',
+ publicPath: '/static/'
+ },
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.env': {
+ NODE_ENV: JSON.stringify(process.env.NODE_ENV)
+ }
+ }),
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.NoEmitOnErrorsPlugin(),
+ isProduction && new webpack.optimize.UglifyJsPlugin({
+ compress: { warnings: false },
+ output: { comments: false },
+ sourceMap: true
+ })
+ ].filter(Boolean),
+ resolve: {
+ alias: {
+ 'react-json-tree/lib': path.join(__dirname, '..', 'src'),
+ 'react-json-tree': path.join(__dirname, '..', 'src'),
+ 'react': path.join(__dirname, 'node_modules', 'react')
+ },
+ extensions: ['.js']
+ },
+ module: {
+ loaders: [{
+ test: /\.js$/,
+ loaders: ['babel-loader'].filter(Boolean),
+ include: path.join(__dirname, 'src')
+ }, {
+ test: /\.js$/,
+ loaders: ['babel-loader'].filter(Boolean),
+ include: path.join(__dirname, '..', 'src')
+ }]
+ }
+};
diff --git a/packages/react-json-tree/package.json b/packages/react-json-tree/package.json
new file mode 100644
index 00000000..96a32529
--- /dev/null
+++ b/packages/react-json-tree/package.json
@@ -0,0 +1,85 @@
+{
+ "name": "react-json-tree",
+ "version": "0.11.1",
+ "description": "React JSON Viewer Component, Extracted from redux-devtools",
+ "main": "lib/index.js",
+ "scripts": {
+ "clean": "rimraf lib",
+ "build": "babel src --out-dir lib",
+ "lint": "eslint --max-warnings=0 src test examples/src",
+ "test":
+ "npm run lint && NODE_ENV=test mocha --compilers js:babel-core/register --recursive",
+ "test:watch":
+ "NODE_ENV=test mocha --compilers js:babel-core/register --recursive --watch",
+ "test:cov":
+ "babel-node ./node_modules/.bin/isparta cover ./node_modules/.bin/_mocha -- --recursive",
+ "prepare": "npm run build",
+ "prepublishOnly": "npm run test && npm run clean && npm run build",
+ "start": "cd examples && npm start",
+ "precommit": "lint-staged"
+ },
+ "files": [
+ "lib",
+ "src"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/reduxjs/redux-devtools.git"
+ },
+ "keywords": ["react", "json viewer"],
+ "author": "Shu Uesugi (http://github.com/chibicode)",
+ "contributors": [
+ "Alexander Kuznetsov (http://kuzya.org/)",
+ "Dave Vedder (http://www.eskimospy.com/)",
+ "Daniele Zannotti (http://www.github.com/dzannotti)"
+ ],
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/reduxjs/redux-devtools/issues"
+ },
+ "homepage": "https://github.com/reduxjs/redux-devtools",
+ "devDependencies": {
+ "babel-cli": "^6.26.0",
+ "babel-core": "^6.26.0",
+ "babel-eslint": "^8.0.1",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-es3-member-expression-literals": "^6.22.0",
+ "babel-plugin-transform-es3-property-literals": "^6.22.0",
+ "babel-plugin-transform-object-rest-spread": "^6.26.0",
+ "babel-plugin-transform-runtime": "^6.23.0",
+ "babel-preset-env": "^1.6.1",
+ "babel-preset-react": "^6.5.0",
+ "eslint": "^4.10",
+ "eslint-config-prettier": "^2.6.0",
+ "eslint-config-standard": "^10.2.1",
+ "eslint-plugin-babel": "^4.1.2",
+ "eslint-plugin-import": "^2.8.0",
+ "eslint-plugin-node": "^5.2.1",
+ "eslint-plugin-prettier": "^2.3.1",
+ "eslint-plugin-promise": "^3.6.0",
+ "eslint-plugin-react": "7.4.0",
+ "eslint-plugin-standard": "^3.0.1",
+ "expect": "^21.2.1",
+ "husky": "^0.14.3",
+ "isparta": "^4.0.0",
+ "lint-staged": "^4.3.0",
+ "mocha": "^4.0.1",
+ "prettier": "^1.7.4",
+ "react": "^16.0.0",
+ "react-dom": "^16.0.0",
+ "react-test-renderer": "^16.0.0",
+ "rimraf": "^2.5.2"
+ },
+ "peerDependencies": {
+ "react": "^15.0.0 || ^16.0.0",
+ "react-dom": "^15.0.0 || ^16.0.0"
+ },
+ "dependencies": {
+ "babel-runtime": "^6.6.1",
+ "prop-types": "^15.5.8",
+ "react-base16-styling": "^0.5.1"
+ },
+ "lint-staged": {
+ "*.{js,json,css}": ["prettier --single-quote --write", "git add"]
+ }
+}
diff --git a/packages/react-json-tree/src/ItemRange.js b/packages/react-json-tree/src/ItemRange.js
new file mode 100644
index 00000000..f7ed29a8
--- /dev/null
+++ b/packages/react-json-tree/src/ItemRange.js
@@ -0,0 +1,48 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import JSONArrow from './JSONArrow';
+
+export default class ItemRange extends React.Component {
+ static propTypes = {
+ styling: PropTypes.func.isRequired,
+ from: PropTypes.number.isRequired,
+ to: PropTypes.number.isRequired,
+ renderChildNodes: PropTypes.func.isRequired,
+ nodeType: PropTypes.string.isRequired
+ };
+
+ constructor(props) {
+ super(props);
+ this.state = { expanded: false };
+
+ this.handleClick = this.handleClick.bind(this);
+ }
+
+ render() {
+ const { styling, from, to, renderChildNodes, nodeType } = this.props;
+
+ return this.state.expanded ? (
+
+ {renderChildNodes(this.props, from, to)}
+
+ ) : (
+
+
+ {`${from} ... ${to}`}
+
+ );
+ }
+
+ handleClick() {
+ this.setState({ expanded: !this.state.expanded });
+ }
+}
diff --git a/packages/react-json-tree/src/JSONArrayNode.js b/packages/react-json-tree/src/JSONArrayNode.js
new file mode 100644
index 00000000..98a95b84
--- /dev/null
+++ b/packages/react-json-tree/src/JSONArrayNode.js
@@ -0,0 +1,27 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import JSONNestedNode from './JSONNestedNode';
+
+// Returns the "n Items" string for this node,
+// generating and caching it if it hasn't been created yet.
+function createItemString(data) {
+ return `${data.length} ${data.length !== 1 ? 'items' : 'item'}`;
+}
+
+// Configures to render an Array
+const JSONArrayNode = ({ data, ...props }) => (
+ 0}
+ />
+);
+
+JSONArrayNode.propTypes = {
+ data: PropTypes.array
+};
+
+export default JSONArrayNode;
diff --git a/packages/react-json-tree/src/JSONArrow.js b/packages/react-json-tree/src/JSONArrow.js
new file mode 100644
index 00000000..138374e0
--- /dev/null
+++ b/packages/react-json-tree/src/JSONArrow.js
@@ -0,0 +1,27 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+const JSONArrow = ({ styling, arrowStyle, expanded, nodeType, onClick }) => (
+
+
+ {'\u25B6'}
+ {arrowStyle === 'double' && (
+
{'\u25B6'}
+ )}
+
+
+);
+
+JSONArrow.propTypes = {
+ styling: PropTypes.func.isRequired,
+ arrowStyle: PropTypes.oneOf(['single', 'double']),
+ expanded: PropTypes.bool.isRequired,
+ nodeType: PropTypes.string.isRequired,
+ onClick: PropTypes.func.isRequired
+};
+
+JSONArrow.defaultProps = {
+ arrowStyle: 'single'
+};
+
+export default JSONArrow;
diff --git a/packages/react-json-tree/src/JSONIterableNode.js b/packages/react-json-tree/src/JSONIterableNode.js
new file mode 100644
index 00000000..f252481c
--- /dev/null
+++ b/packages/react-json-tree/src/JSONIterableNode.js
@@ -0,0 +1,34 @@
+import React from 'react';
+import JSONNestedNode from './JSONNestedNode';
+
+// Returns the "n Items" string for this node,
+// generating and caching it if it hasn't been created yet.
+function createItemString(data, limit) {
+ let count = 0;
+ let hasMore = false;
+ if (Number.isSafeInteger(data.size)) {
+ count = data.size;
+ } else {
+ // eslint-disable-next-line no-unused-vars
+ for (const entry of data) {
+ if (limit && count + 1 > limit) {
+ hasMore = true;
+ break;
+ }
+ count += 1;
+ }
+ }
+ return `${hasMore ? '>' : ''}${count} ${count !== 1 ? 'entries' : 'entry'}`;
+}
+
+// Configures to render an iterable
+export default function JSONIterableNode({ ...props }) {
+ return (
+
+ );
+}
diff --git a/packages/react-json-tree/src/JSONNestedNode.js b/packages/react-json-tree/src/JSONNestedNode.js
new file mode 100644
index 00000000..e19aa253
--- /dev/null
+++ b/packages/react-json-tree/src/JSONNestedNode.js
@@ -0,0 +1,204 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import JSONArrow from './JSONArrow';
+import getCollectionEntries from './getCollectionEntries';
+import JSONNode from './JSONNode';
+import ItemRange from './ItemRange';
+
+/**
+ * Renders nested values (eg. objects, arrays, lists, etc.)
+ */
+
+function renderChildNodes(props, from, to) {
+ const {
+ nodeType,
+ data,
+ collectionLimit,
+ circularCache,
+ keyPath,
+ postprocessValue,
+ sortObjectKeys
+ } = props;
+ const childNodes = [];
+
+ getCollectionEntries(
+ nodeType,
+ data,
+ sortObjectKeys,
+ collectionLimit,
+ from,
+ to
+ ).forEach(entry => {
+ if (entry.to) {
+ childNodes.push(
+
+ );
+ } else {
+ const { key, value } = entry;
+ const isCircular = circularCache.indexOf(value) !== -1;
+
+ const node = (
+
+ );
+
+ if (node !== false) {
+ childNodes.push(node);
+ }
+ }
+ });
+
+ return childNodes;
+}
+
+function getStateFromProps(props) {
+ // calculate individual node expansion if necessary
+ const expanded =
+ props.shouldExpandNode && !props.isCircular
+ ? props.shouldExpandNode(props.keyPath, props.data, props.level)
+ : false;
+ return {
+ expanded
+ };
+}
+
+export default class JSONNestedNode extends React.Component {
+ static propTypes = {
+ getItemString: PropTypes.func.isRequired,
+ nodeTypeIndicator: PropTypes.any,
+ nodeType: PropTypes.string.isRequired,
+ data: PropTypes.any,
+ hideRoot: PropTypes.bool.isRequired,
+ createItemString: PropTypes.func.isRequired,
+ styling: PropTypes.func.isRequired,
+ collectionLimit: PropTypes.number,
+ keyPath: PropTypes.arrayOf(
+ PropTypes.oneOfType([PropTypes.string, PropTypes.number])
+ ).isRequired,
+ labelRenderer: PropTypes.func.isRequired,
+ shouldExpandNode: PropTypes.func,
+ level: PropTypes.number.isRequired,
+ sortObjectKeys: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
+ isCircular: PropTypes.bool,
+ expandable: PropTypes.bool
+ };
+
+ static defaultProps = {
+ data: [],
+ circularCache: [],
+ level: 0,
+ expandable: true
+ };
+
+ constructor(props) {
+ super(props);
+ this.state = getStateFromProps(props);
+ }
+
+ componentWillReceiveProps(nextProps) {
+ const nextState = getStateFromProps(nextProps);
+ if (getStateFromProps(this.props).expanded !== nextState.expanded) {
+ this.setState(nextState);
+ }
+ }
+
+ shouldComponentUpdate(nextProps, nextState) {
+ return (
+ !!Object.keys(nextProps).find(
+ key =>
+ key !== 'circularCache' &&
+ (key === 'keyPath'
+ ? nextProps[key].join('/') !== this.props[key].join('/')
+ : nextProps[key] !== this.props[key])
+ ) || nextState.expanded !== this.state.expanded
+ );
+ }
+
+ render() {
+ const {
+ getItemString,
+ nodeTypeIndicator,
+ nodeType,
+ data,
+ hideRoot,
+ createItemString,
+ styling,
+ collectionLimit,
+ keyPath,
+ labelRenderer,
+ expandable
+ } = this.props;
+ const { expanded } = this.state;
+ const renderedChildren =
+ expanded || (hideRoot && this.props.level === 0)
+ ? renderChildNodes({ ...this.props, level: this.props.level + 1 })
+ : null;
+
+ const itemType = (
+
+ {nodeTypeIndicator}
+
+ );
+ const renderedItemString = getItemString(
+ nodeType,
+ data,
+ itemType,
+ createItemString(data, collectionLimit)
+ );
+ const stylingArgs = [keyPath, nodeType, expanded, expandable];
+
+ return hideRoot ? (
+
+
+
+ ) : (
+
+ {expandable && (
+
+ )}
+
+ {labelRenderer(...stylingArgs)}
+
+
+ {renderedItemString}
+
+
+
+ );
+ }
+
+ handleClick = () => {
+ if (this.props.expandable) {
+ this.setState({ expanded: !this.state.expanded });
+ }
+ };
+}
diff --git a/packages/react-json-tree/src/JSONNode.js b/packages/react-json-tree/src/JSONNode.js
new file mode 100644
index 00000000..d8509bc2
--- /dev/null
+++ b/packages/react-json-tree/src/JSONNode.js
@@ -0,0 +1,106 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import objType from './objType';
+import JSONObjectNode from './JSONObjectNode';
+import JSONArrayNode from './JSONArrayNode';
+import JSONIterableNode from './JSONIterableNode';
+import JSONValueNode from './JSONValueNode';
+
+const JSONNode = ({
+ getItemString,
+ keyPath,
+ labelRenderer,
+ styling,
+ value,
+ valueRenderer,
+ isCustomNode,
+ ...rest
+}) => {
+ const nodeType = isCustomNode(value) ? 'Custom' : objType(value);
+
+ const simpleNodeProps = {
+ getItemString,
+ key: keyPath[0],
+ keyPath,
+ labelRenderer,
+ nodeType,
+ styling,
+ value,
+ valueRenderer
+ };
+
+ const nestedNodeProps = {
+ ...rest,
+ ...simpleNodeProps,
+ data: value,
+ isCustomNode
+ };
+
+ switch (nodeType) {
+ case 'Object':
+ case 'Error':
+ case 'WeakMap':
+ case 'WeakSet':
+ return ;
+ case 'Array':
+ return ;
+ case 'Iterable':
+ case 'Map':
+ case 'Set':
+ return ;
+ case 'String':
+ return (
+ `"${raw}"`} />
+ );
+ case 'Number':
+ return ;
+ case 'Boolean':
+ return (
+ (raw ? 'true' : 'false')}
+ />
+ );
+ case 'Date':
+ return (
+ raw.toISOString()}
+ />
+ );
+ case 'Null':
+ return 'null'} />;
+ case 'Undefined':
+ return (
+ 'undefined'} />
+ );
+ case 'Function':
+ case 'Symbol':
+ return (
+ raw.toString()}
+ />
+ );
+ case 'Custom':
+ return ;
+ default:
+ return (
+ `<${nodeType}>`} />
+ );
+ }
+};
+
+JSONNode.propTypes = {
+ getItemString: PropTypes.func.isRequired,
+ keyPath: PropTypes.arrayOf(
+ PropTypes.oneOfType([PropTypes.string, PropTypes.number])
+ ).isRequired,
+ labelRenderer: PropTypes.func.isRequired,
+ styling: PropTypes.func.isRequired,
+ value: PropTypes.any,
+ valueRenderer: PropTypes.func.isRequired,
+ isCustomNode: PropTypes.func.isRequired
+};
+
+export default JSONNode;
diff --git a/packages/react-json-tree/src/JSONObjectNode.js b/packages/react-json-tree/src/JSONObjectNode.js
new file mode 100644
index 00000000..a8e55827
--- /dev/null
+++ b/packages/react-json-tree/src/JSONObjectNode.js
@@ -0,0 +1,29 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import JSONNestedNode from './JSONNestedNode';
+
+// Returns the "n Items" string for this node,
+// generating and caching it if it hasn't been created yet.
+function createItemString(data) {
+ const len = Object.getOwnPropertyNames(data).length;
+ return `${len} ${len !== 1 ? 'keys' : 'key'}`;
+}
+
+// Configures to render an Object
+const JSONObjectNode = ({ data, ...props }) => (
+ 0}
+ />
+);
+
+JSONObjectNode.propTypes = {
+ data: PropTypes.object,
+ nodeType: PropTypes.string
+};
+
+export default JSONObjectNode;
diff --git a/packages/react-json-tree/src/JSONValueNode.js b/packages/react-json-tree/src/JSONValueNode.js
new file mode 100644
index 00000000..1dd7e93b
--- /dev/null
+++ b/packages/react-json-tree/src/JSONValueNode.js
@@ -0,0 +1,43 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+
+/**
+ * Renders simple values (eg. strings, numbers, booleans, etc)
+ */
+
+const JSONValueNode = ({
+ nodeType,
+ styling,
+ labelRenderer,
+ keyPath,
+ valueRenderer,
+ value,
+ valueGetter
+}) => (
+
+
+ {labelRenderer(keyPath, nodeType, false, false)}
+
+
+ {valueRenderer(valueGetter(value), value, ...keyPath)}
+
+
+);
+
+JSONValueNode.propTypes = {
+ nodeType: PropTypes.string.isRequired,
+ styling: PropTypes.func.isRequired,
+ labelRenderer: PropTypes.func.isRequired,
+ keyPath: PropTypes.arrayOf(
+ PropTypes.oneOfType([PropTypes.string, PropTypes.number])
+ ).isRequired,
+ valueRenderer: PropTypes.func.isRequired,
+ value: PropTypes.any,
+ valueGetter: PropTypes.func
+};
+
+JSONValueNode.defaultProps = {
+ valueGetter: value => value
+};
+
+export default JSONValueNode;
diff --git a/packages/react-json-tree/src/createStylingFromTheme.js b/packages/react-json-tree/src/createStylingFromTheme.js
new file mode 100644
index 00000000..deb86ff4
--- /dev/null
+++ b/packages/react-json-tree/src/createStylingFromTheme.js
@@ -0,0 +1,189 @@
+import { createStyling } from 'react-base16-styling';
+import solarized from './themes/solarized';
+
+const colorMap = theme => ({
+ BACKGROUND_COLOR: theme.base00,
+ TEXT_COLOR: theme.base07,
+ STRING_COLOR: theme.base0B,
+ DATE_COLOR: theme.base0B,
+ NUMBER_COLOR: theme.base09,
+ BOOLEAN_COLOR: theme.base09,
+ NULL_COLOR: theme.base08,
+ UNDEFINED_COLOR: theme.base08,
+ FUNCTION_COLOR: theme.base08,
+ SYMBOL_COLOR: theme.base08,
+ LABEL_COLOR: theme.base0D,
+ ARROW_COLOR: theme.base0D,
+ ITEM_STRING_COLOR: theme.base0B,
+ ITEM_STRING_EXPANDED_COLOR: theme.base03
+});
+
+const valueColorMap = colors => ({
+ String: colors.STRING_COLOR,
+ Date: colors.DATE_COLOR,
+ Number: colors.NUMBER_COLOR,
+ Boolean: colors.BOOLEAN_COLOR,
+ Null: colors.NULL_COLOR,
+ Undefined: colors.UNDEFINED_COLOR,
+ Function: colors.FUNCTION_COLOR,
+ Symbol: colors.SYMBOL_COLOR
+});
+
+const getDefaultThemeStyling = theme => {
+ const colors = colorMap(theme);
+
+ return {
+ tree: {
+ border: 0,
+ padding: 0,
+ marginTop: '0.5em',
+ marginBottom: '0.5em',
+ marginLeft: '0.125em',
+ marginRight: 0,
+ listStyle: 'none',
+ MozUserSelect: 'none',
+ WebkitUserSelect: 'none',
+ backgroundColor: colors.BACKGROUND_COLOR
+ },
+
+ value: ({ style }, nodeType, keyPath) => ({
+ style: {
+ ...style,
+ paddingTop: '0.25em',
+ paddingRight: 0,
+ marginLeft: '0.875em',
+ WebkitUserSelect: 'text',
+ MozUserSelect: 'text',
+ wordWrap: 'break-word',
+ paddingLeft: keyPath.length > 1 ? '2.125em' : '1.25em',
+ textIndent: '-0.5em',
+ wordBreak: 'break-all'
+ }
+ }),
+
+ label: {
+ display: 'inline-block',
+ color: colors.LABEL_COLOR
+ },
+
+ valueLabel: {
+ margin: '0 0.5em 0 0'
+ },
+
+ valueText: ({ style }, nodeType) => ({
+ style: {
+ ...style,
+ color: valueColorMap(colors)[nodeType]
+ }
+ }),
+
+ itemRange: (styling, expanded) => ({
+ style: {
+ paddingTop: expanded ? 0 : '0.25em',
+ cursor: 'pointer',
+ color: colors.LABEL_COLOR
+ }
+ }),
+
+ arrow: ({ style }, nodeType, expanded) => ({
+ style: {
+ ...style,
+ marginLeft: 0,
+ transition: '150ms',
+ WebkitTransition: '150ms',
+ MozTransition: '150ms',
+ WebkitTransform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',
+ MozTransform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',
+ transform: expanded ? 'rotateZ(90deg)' : 'rotateZ(0deg)',
+ transformOrigin: '45% 50%',
+ WebkitTransformOrigin: '45% 50%',
+ MozTransformOrigin: '45% 50%',
+ position: 'relative',
+ lineHeight: '1.1em',
+ fontSize: '0.75em'
+ }
+ }),
+
+ arrowContainer: ({ style }, arrowStyle) => ({
+ style: {
+ ...style,
+ display: 'inline-block',
+ paddingRight: '0.5em',
+ paddingLeft: arrowStyle === 'double' ? '1em' : 0,
+ cursor: 'pointer'
+ }
+ }),
+
+ arrowSign: {
+ color: colors.ARROW_COLOR
+ },
+
+ arrowSignInner: {
+ position: 'absolute',
+ top: 0,
+ left: '-0.4em'
+ },
+
+ nestedNode: ({ style }, keyPath, nodeType, expanded, expandable) => ({
+ style: {
+ ...style,
+ position: 'relative',
+ paddingTop: '0.25em',
+ marginLeft: keyPath.length > 1 ? '0.875em' : 0,
+ paddingLeft: !expandable ? '1.125em' : 0
+ }
+ }),
+
+ rootNode: {
+ padding: 0,
+ margin: 0
+ },
+
+ nestedNodeLabel: ({ style }, keyPath, nodeType, expanded, expandable) => ({
+ style: {
+ ...style,
+ margin: 0,
+ padding: 0,
+ WebkitUserSelect: expandable ? 'inherit' : 'text',
+ MozUserSelect: expandable ? 'inherit' : 'text',
+ cursor: expandable ? 'pointer' : 'default'
+ }
+ }),
+
+ nestedNodeItemString: ({ style }, keyPath, nodeType, expanded) => ({
+ style: {
+ ...style,
+ paddingLeft: '0.5em',
+ cursor: 'default',
+ color: expanded
+ ? colors.ITEM_STRING_EXPANDED_COLOR
+ : colors.ITEM_STRING_COLOR
+ }
+ }),
+
+ nestedNodeItemType: {
+ marginLeft: '0.3em',
+ marginRight: '0.3em'
+ },
+
+ nestedNodeChildren: ({ style }, nodeType, expanded) => ({
+ style: {
+ ...style,
+ padding: 0,
+ margin: 0,
+ listStyle: 'none',
+ display: expanded ? 'block' : 'none'
+ }
+ }),
+
+ rootNodeChildren: {
+ padding: 0,
+ margin: 0,
+ listStyle: 'none'
+ }
+ };
+};
+
+export default createStyling(getDefaultThemeStyling, {
+ defaultBase16: solarized
+});
diff --git a/packages/react-json-tree/src/getCollectionEntries.js b/packages/react-json-tree/src/getCollectionEntries.js
new file mode 100644
index 00000000..2579bbe8
--- /dev/null
+++ b/packages/react-json-tree/src/getCollectionEntries.js
@@ -0,0 +1,139 @@
+function getLength(type, collection) {
+ if (type === 'Object') {
+ return Object.keys(collection).length;
+ } else if (type === 'Array') {
+ return collection.length;
+ }
+
+ return Infinity;
+}
+
+function isIterableMap(collection) {
+ return typeof collection.set === 'function';
+}
+
+function getEntries(type, collection, sortObjectKeys, from = 0, to = Infinity) {
+ let res;
+
+ if (type === 'Object') {
+ let keys = Object.getOwnPropertyNames(collection);
+
+ if (sortObjectKeys) {
+ keys.sort(sortObjectKeys === true ? undefined : sortObjectKeys);
+ }
+
+ keys = keys.slice(from, to + 1);
+
+ res = {
+ entries: keys.map(key => ({ key, value: collection[key] }))
+ };
+ } else if (type === 'Array') {
+ res = {
+ entries: collection
+ .slice(from, to + 1)
+ .map((val, idx) => ({ key: idx + from, value: val }))
+ };
+ } else {
+ let idx = 0;
+ const entries = [];
+ let done = true;
+
+ const isMap = isIterableMap(collection);
+
+ for (const item of collection) {
+ if (idx > to) {
+ done = false;
+ break;
+ }
+ if (from <= idx) {
+ if (isMap && Array.isArray(item)) {
+ if (typeof item[0] === 'string' || typeof item[0] === 'number') {
+ entries.push({ key: item[0], value: item[1] });
+ } else {
+ entries.push({
+ key: `[entry ${idx}]`,
+ value: {
+ '[key]': item[0],
+ '[value]': item[1]
+ }
+ });
+ }
+ } else {
+ entries.push({ key: idx, value: item });
+ }
+ }
+ idx++;
+ }
+
+ res = {
+ hasMore: !done,
+ entries
+ };
+ }
+
+ return res;
+}
+
+function getRanges(from, to, limit) {
+ const ranges = [];
+ while (to - from > limit * limit) {
+ limit = limit * limit;
+ }
+ for (let i = from; i <= to; i += limit) {
+ ranges.push({ from: i, to: Math.min(to, i + limit - 1) });
+ }
+
+ return ranges;
+}
+
+export default function getCollectionEntries(
+ type,
+ collection,
+ sortObjectKeys,
+ limit,
+ from = 0,
+ to = Infinity
+) {
+ const getEntriesBound = getEntries.bind(
+ null,
+ type,
+ collection,
+ sortObjectKeys
+ );
+
+ if (!limit) {
+ return getEntriesBound().entries;
+ }
+
+ const isSubset = to < Infinity;
+ const length = Math.min(to - from, getLength(type, collection));
+
+ if (type !== 'Iterable') {
+ if (length <= limit || limit < 7) {
+ return getEntriesBound(from, to).entries;
+ }
+ } else {
+ if (length <= limit && !isSubset) {
+ return getEntriesBound(from, to).entries;
+ }
+ }
+
+ let limitedEntries;
+ if (type === 'Iterable') {
+ const { hasMore, entries } = getEntriesBound(from, from + limit - 1);
+
+ limitedEntries = hasMore
+ ? [...entries, ...getRanges(from + limit, from + 2 * limit - 1, limit)]
+ : entries;
+ } else {
+ limitedEntries = isSubset
+ ? getRanges(from, to, limit)
+ : [
+ ...getEntriesBound(0, limit - 5).entries,
+ ...getRanges(limit - 4, length - 5, limit),
+ ...getEntriesBound(length - 4, length - 1).entries
+ ];
+ }
+
+ return limitedEntries;
+}
diff --git a/packages/react-json-tree/src/index.js b/packages/react-json-tree/src/index.js
new file mode 100644
index 00000000..d5587e8d
--- /dev/null
+++ b/packages/react-json-tree/src/index.js
@@ -0,0 +1,151 @@
+// ES6 + inline style port of JSONViewer https://bitbucket.org/davevedder/react-json-viewer/
+// all credits and original code to the author
+// Dave Vedder http://www.eskimospy.com/
+// port by Daniele Zannotti http://www.github.com/dzannotti
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import JSONNode from './JSONNode';
+import createStylingFromTheme from './createStylingFromTheme';
+import { invertTheme } from 'react-base16-styling';
+
+const identity = value => value;
+const expandRootNode = (keyName, data, level) => level === 0;
+const defaultItemString = (type, data, itemType, itemString) => (
+
+ {itemType} {itemString}
+
+);
+const defaultLabelRenderer = ([label]) => {label}: ;
+const noCustomNode = () => false;
+
+function checkLegacyTheming(theme, props) {
+ const deprecatedStylingMethodsMap = {
+ getArrowStyle: 'arrow',
+ getListStyle: 'nestedNodeChildren',
+ getItemStringStyle: 'nestedNodeItemString',
+ getLabelStyle: 'label',
+ getValueStyle: 'valueText'
+ };
+
+ const deprecatedStylingMethods = Object.keys(
+ deprecatedStylingMethodsMap
+ ).filter(name => props[name]);
+
+ if (deprecatedStylingMethods.length > 0) {
+ if (typeof theme === 'string') {
+ theme = {
+ extend: theme
+ };
+ } else {
+ theme = { ...theme };
+ }
+
+ deprecatedStylingMethods.forEach(name => {
+ // eslint-disable-next-line no-console
+ console.error(
+ `Styling method "${name}" is deprecated, use "theme" property instead`
+ );
+
+ theme[deprecatedStylingMethodsMap[name]] = ({ style }, ...args) => ({
+ style: {
+ ...style,
+ ...props[name](...args)
+ }
+ });
+ });
+ }
+
+ return theme;
+}
+
+function getStateFromProps(props) {
+ let theme = checkLegacyTheming(props.theme, props);
+ if (props.invertTheme) {
+ if (typeof theme === 'string') {
+ theme = `${theme}:inverted`;
+ } else if (theme && theme.extend) {
+ if (typeof theme === 'string') {
+ theme = { ...theme, extend: `${theme.extend}:inverted` };
+ } else {
+ theme = { ...theme, extend: invertTheme(theme.extend) };
+ }
+ } else if (theme) {
+ theme = invertTheme(theme);
+ }
+ }
+ return {
+ styling: createStylingFromTheme(theme)
+ };
+}
+
+export default class JSONTree extends React.Component {
+ static propTypes = {
+ data: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired,
+ hideRoot: PropTypes.bool,
+ theme: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
+ invertTheme: PropTypes.bool,
+ keyPath: PropTypes.arrayOf(
+ PropTypes.oneOfType([PropTypes.string, PropTypes.number])
+ ),
+ postprocessValue: PropTypes.func,
+ sortObjectKeys: PropTypes.oneOfType([PropTypes.func, PropTypes.bool])
+ };
+
+ static defaultProps = {
+ shouldExpandNode: expandRootNode,
+ hideRoot: false,
+ keyPath: ['root'],
+ getItemString: defaultItemString,
+ labelRenderer: defaultLabelRenderer,
+ valueRenderer: identity,
+ postprocessValue: identity,
+ isCustomNode: noCustomNode,
+ collectionLimit: 50,
+ invertTheme: true
+ };
+
+ constructor(props) {
+ super(props);
+ this.state = getStateFromProps(props);
+ }
+
+ componentWillReceiveProps(nextProps) {
+ if (['theme', 'invertTheme'].find(k => nextProps[k] !== this.props[k])) {
+ this.setState(getStateFromProps(nextProps));
+ }
+ }
+
+ shouldComponentUpdate(nextProps) {
+ return !!Object.keys(nextProps).find(
+ k =>
+ k === 'keyPath'
+ ? nextProps[k].join('/') !== this.props[k].join('/')
+ : nextProps[k] !== this.props[k]
+ );
+ }
+
+ render() {
+ const {
+ data: value,
+ keyPath,
+ postprocessValue,
+ hideRoot,
+ theme, // eslint-disable-line no-unused-vars
+ invertTheme: _, // eslint-disable-line no-unused-vars
+ ...rest
+ } = this.props;
+
+ const { styling } = this.state;
+
+ return (
+
+ );
+ }
+}
diff --git a/packages/react-json-tree/src/objType.js b/packages/react-json-tree/src/objType.js
new file mode 100644
index 00000000..023718ec
--- /dev/null
+++ b/packages/react-json-tree/src/objType.js
@@ -0,0 +1,13 @@
+export default function objType(obj) {
+ const type = Object.prototype.toString.call(obj).slice(8, -1);
+ if (type === 'Object' && typeof obj[Symbol.iterator] === 'function') {
+ return 'Iterable';
+ }
+
+ if (type === 'Custom' && obj.constructor !== Object && obj instanceof Object) {
+ // For projects implementing objects overriding `.prototype[Symbol.toStringTag]`
+ return 'Object';
+ }
+
+ return type;
+}
diff --git a/packages/react-json-tree/src/themes/solarized.js b/packages/react-json-tree/src/themes/solarized.js
new file mode 100644
index 00000000..b601e859
--- /dev/null
+++ b/packages/react-json-tree/src/themes/solarized.js
@@ -0,0 +1,20 @@
+export default {
+ scheme: 'solarized',
+ author: 'ethan schoonover (http://ethanschoonover.com/solarized)',
+ base00: '#002b36',
+ base01: '#073642',
+ base02: '#586e75',
+ base03: '#657b83',
+ base04: '#839496',
+ base05: '#93a1a1',
+ base06: '#eee8d5',
+ base07: '#fdf6e3',
+ base08: '#dc322f',
+ base09: '#cb4b16',
+ base0A: '#b58900',
+ base0B: '#859900',
+ base0C: '#2aa198',
+ base0D: '#268bd2',
+ base0E: '#6c71c4',
+ base0F: '#d33682'
+};
diff --git a/packages/react-json-tree/src/utils/hexToRgb.js b/packages/react-json-tree/src/utils/hexToRgb.js
new file mode 100644
index 00000000..08a29b26
--- /dev/null
+++ b/packages/react-json-tree/src/utils/hexToRgb.js
@@ -0,0 +1,10 @@
+export default function(hex) {
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+ return result
+ ? {
+ r: parseInt(result[1], 16),
+ g: parseInt(result[2], 16),
+ b: parseInt(result[3], 16)
+ }
+ : null;
+}
diff --git a/packages/react-json-tree/test/index.spec.js b/packages/react-json-tree/test/index.spec.js
new file mode 100644
index 00000000..550e484c
--- /dev/null
+++ b/packages/react-json-tree/test/index.spec.js
@@ -0,0 +1,23 @@
+import React from 'react';
+import expect from 'expect';
+import { createRenderer } from 'react-test-renderer/shallow';
+
+import JSONTree from '../src/index';
+import JSONNode from '../src/JSONNode';
+
+const BASIC_DATA = { a: 1, b: 'c' };
+
+function render(component) {
+ const renderer = createRenderer();
+ renderer.render(component);
+ return renderer.getRenderOutput();
+}
+
+describe('JSONTree', () => {
+ it('should render basic tree', () => {
+ const result = render( );
+
+ expect(result.type).toBe('ul');
+ expect(result.props.children.type.name).toBe(JSONNode.name);
+ });
+});
diff --git a/packages/react-json-tree/test/objType.spec.js b/packages/react-json-tree/test/objType.spec.js
new file mode 100644
index 00000000..70b19bf5
--- /dev/null
+++ b/packages/react-json-tree/test/objType.spec.js
@@ -0,0 +1,23 @@
+import expect from 'expect';
+
+import objType from '../src/objType';
+
+describe('objType', () => {
+ it('should determine the correct type', () => {
+ expect(objType({})).toBe('Object');
+ expect(objType([])).toBe('Array');
+ expect(objType(new Map())).toBe('Map');
+ expect(objType(new WeakMap())).toBe('WeakMap');
+ expect(objType(new Set())).toBe('Set');
+ expect(objType(new WeakSet())).toBe('WeakSet');
+ expect(objType(new Error())).toBe('Error');
+ expect(objType(new Date())).toBe('Date');
+ expect(objType(() => {})).toBe('Function');
+ expect(objType('')).toBe('String');
+ expect(objType(true)).toBe('Boolean');
+ expect(objType(null)).toBe('Null');
+ expect(objType(undefined)).toBe('Undefined');
+ expect(objType(10)).toBe('Number');
+ expect(objType(Symbol.iterator)).toBe('Symbol');
+ });
+});
diff --git a/packages/redux-devtools-trace-monitor/package.json b/packages/redux-devtools-trace-monitor/package.json
index 28138166..37d46994 100644
--- a/packages/redux-devtools-trace-monitor/package.json
+++ b/packages/redux-devtools-trace-monitor/package.json
@@ -44,7 +44,7 @@
"eslint-plugin-flowtype": "3.2.0",
"eslint-plugin-import": "2.14.0",
"eslint-plugin-jsx-a11y": "6.1.1",
- "eslint-plugin-react": "7.11.1",
+ "eslint-plugin-react": "7.4.0",
"jest": "^23.6.0",
"react-addons-test-utils": "^15.4.0",
"react-dom": "^15.4.0",
diff --git a/yarn.lock b/yarn.lock
index 14dc5bec..9ab1cee7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,13 @@
# yarn lockfile v1
+"@babel/code-frame@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
+ integrity sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==
+ dependencies:
+ "@babel/highlight" "7.0.0-beta.44"
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
@@ -9,6 +16,17 @@
dependencies:
"@babel/highlight" "^7.0.0"
+"@babel/generator@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42"
+ integrity sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==
+ dependencies:
+ "@babel/types" "7.0.0-beta.44"
+ jsesc "^2.5.1"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+ trim-right "^1.0.1"
+
"@babel/generator@^7.1.6":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.0.tgz#eaf3821fa0301d9d4aef88e63d4bcc19b73ba16c"
@@ -20,6 +38,15 @@
source-map "^0.5.0"
trim-right "^1.0.1"
+"@babel/helper-function-name@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd"
+ integrity sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==
+ dependencies:
+ "@babel/helper-get-function-arity" "7.0.0-beta.44"
+ "@babel/template" "7.0.0-beta.44"
+ "@babel/types" "7.0.0-beta.44"
+
"@babel/helper-function-name@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
@@ -29,6 +56,13 @@
"@babel/template" "^7.1.0"
"@babel/types" "^7.0.0"
+"@babel/helper-get-function-arity@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15"
+ integrity sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==
+ dependencies:
+ "@babel/types" "7.0.0-beta.44"
+
"@babel/helper-get-function-arity@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
@@ -36,6 +70,13 @@
dependencies:
"@babel/types" "^7.0.0"
+"@babel/helper-split-export-declaration@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc"
+ integrity sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==
+ dependencies:
+ "@babel/types" "7.0.0-beta.44"
+
"@babel/helper-split-export-declaration@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813"
@@ -43,6 +84,15 @@
dependencies:
"@babel/types" "^7.0.0"
+"@babel/highlight@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5"
+ integrity sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^3.0.0"
+
"@babel/highlight@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
@@ -57,6 +107,16 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.0.tgz#02d01dbc330b6cbf36b76ac93c50752c69027065"
integrity sha512-M74+GvK4hn1eejD9lZ7967qAwvqTZayQa3g10ag4s9uewgR7TKjeaT0YMyoq+gVfKYABiWZ4MQD701/t5e1Jhg==
+"@babel/template@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f"
+ integrity sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==
+ dependencies:
+ "@babel/code-frame" "7.0.0-beta.44"
+ "@babel/types" "7.0.0-beta.44"
+ babylon "7.0.0-beta.44"
+ lodash "^4.2.0"
+
"@babel/template@^7.1.0":
version "7.1.2"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644"
@@ -66,6 +126,22 @@
"@babel/parser" "^7.1.2"
"@babel/types" "^7.1.2"
+"@babel/traverse@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966"
+ integrity sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==
+ dependencies:
+ "@babel/code-frame" "7.0.0-beta.44"
+ "@babel/generator" "7.0.0-beta.44"
+ "@babel/helper-function-name" "7.0.0-beta.44"
+ "@babel/helper-split-export-declaration" "7.0.0-beta.44"
+ "@babel/types" "7.0.0-beta.44"
+ babylon "7.0.0-beta.44"
+ debug "^3.1.0"
+ globals "^11.1.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
"@babel/traverse@^7.0.0":
version "7.1.6"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz#c8db9963ab4ce5b894222435482bd8ea854b7b5c"
@@ -81,6 +157,15 @@
globals "^11.1.0"
lodash "^4.17.10"
+"@babel/types@7.0.0-beta.44":
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757"
+ integrity sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^2.0.0"
+
"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.6", "@babel/types@^7.2.0":
version "7.2.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.0.tgz#7941c5b2d8060e06f9601d6be7c223eef906d5d8"
@@ -716,6 +801,13 @@ acorn-globals@^4.1.0:
acorn "^6.0.1"
acorn-walk "^6.0.1"
+acorn-jsx@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
+ integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
+ dependencies:
+ acorn "^3.0.4"
+
acorn-jsx@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
@@ -741,12 +833,12 @@ acorn@^2.1.0, acorn@^2.4.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=
-acorn@^3.0.0:
+acorn@^3.0.0, acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
-acorn@^5.2.1, acorn@^5.5.3:
+acorn@^5.2.1, acorn@^5.5.0, acorn@^5.5.3:
version "5.7.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
@@ -775,6 +867,21 @@ airbnb-style@2.0.0:
resolved "https://registry.yarnpkg.com/airbnb-style/-/airbnb-style-2.0.0.tgz#aea1b7d45042726fb59fa72c33aa03cfebdad17b"
integrity sha1-rqG31FBCcm+1n6csM6oDz+va0Xs=
+ajv-keywords@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
+ integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=
+
+ajv@^5.2.3, ajv@^5.3.0:
+ version "5.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
+ integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
+ dependencies:
+ co "^4.6.0"
+ fast-deep-equal "^1.0.0"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.3.0"
+
ajv@^6.5.3, ajv@^6.5.5, ajv@^6.6.1:
version "6.6.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.1.tgz#6360f5ed0d80f232cc2b294c362d5dc2e538dd61"
@@ -811,7 +918,7 @@ anser@^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:
+ansi-escapes@^1.0.0, ansi-escapes@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
integrity sha1-06ioOzGapneTZisT52HHkRQiMG4=
@@ -874,6 +981,11 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
+app-root-path@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.1.0.tgz#98bf6599327ecea199309866e8140368fd2e646a"
+ integrity sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=
+
append-transform@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
@@ -1118,7 +1230,7 @@ axobject-query@^2.0.1:
dependencies:
ast-types-flow "0.0.7"
-babel-cli@^6.10.1, babel-cli@^6.3.15, babel-cli@^6.3.17:
+babel-cli@^6.10.1, babel-cli@^6.26.0, babel-cli@^6.3.15, babel-cli@^6.3.17:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1"
integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE=
@@ -1140,7 +1252,7 @@ babel-cli@^6.10.1, babel-cli@^6.3.15, babel-cli@^6.3.17:
optionalDependencies:
chokidar "^1.6.1"
-babel-code-frame@^6.26.0:
+babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
@@ -1201,7 +1313,7 @@ babel-core@^5.1.8, babel-core@^5.8.25, babel-core@^5.8.33:
trim-right "^1.0.0"
try-resolve "^1.0.0"
-babel-core@^6.0.0, babel-core@^6.1.20, babel-core@^6.26.0, babel-core@^6.3.17:
+babel-core@^6.0.0, babel-core@^6.1.20, babel-core@^6.1.4, babel-core@^6.26.0, babel-core@^6.3.17:
version "6.26.3"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==
@@ -1268,6 +1380,18 @@ babel-eslint@^5.0.0-beta4:
lodash.assign "^3.2.0"
lodash.pick "^3.1.0"
+babel-eslint@^8.0.1:
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.6.tgz#6270d0c73205628067c0f7ae1693a9e797acefd9"
+ integrity sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==
+ dependencies:
+ "@babel/code-frame" "7.0.0-beta.44"
+ "@babel/traverse" "7.0.0-beta.44"
+ "@babel/types" "7.0.0-beta.44"
+ babylon "7.0.0-beta.44"
+ eslint-scope "3.7.1"
+ eslint-visitor-keys "^1.0.0"
+
babel-generator@^6.18.0, babel-generator@^6.26.0:
version "6.26.1"
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
@@ -1890,6 +2014,20 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es20
babel-runtime "^6.22.0"
regexpu-core "^2.0.0"
+babel-plugin-transform-es3-member-expression-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz#733d3444f3ecc41bef8ed1a6a4e09657b8969ebb"
+ integrity sha1-cz00RPPsxBvvjtGmpOCWV7iWnrs=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es3-property-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz#b2078d5842e22abf40f73e8cde9cd3711abd5758"
+ integrity sha1-sgeNWELiKr9A9z6M3pzTcRq9V1g=
+ dependencies:
+ babel-runtime "^6.22.0"
+
babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
@@ -1923,7 +2061,7 @@ babel-plugin-transform-function-bind@^6.22.0:
babel-plugin-syntax-function-bind "^6.8.0"
babel-runtime "^6.22.0"
-babel-plugin-transform-object-rest-spread@6.26.0, babel-plugin-transform-object-rest-spread@^6.22.0:
+babel-plugin-transform-object-rest-spread@6.26.0, babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
@@ -1977,7 +2115,7 @@ babel-plugin-transform-regenerator@6.26.0, babel-plugin-transform-regenerator@^6
dependencies:
regenerator-transform "^0.10.0"
-babel-plugin-transform-runtime@6.23.0:
+babel-plugin-transform-runtime@6.23.0, babel-plugin-transform-runtime@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
integrity sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=
@@ -2049,7 +2187,7 @@ babel-preset-env@1.6.1:
invariant "^2.2.2"
semver "^5.3.0"
-babel-preset-env@^1.7.0:
+babel-preset-env@^1.6.1, babel-preset-env@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a"
integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==
@@ -2265,7 +2403,7 @@ babel-runtime@^5.0.0:
dependencies:
core-js "^1.0.0"
-babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0:
+babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0, babel-runtime@^6.6.1:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
@@ -2309,6 +2447,11 @@ babel-types@^6.0.0, babel-types@^6.0.19, babel-types@^6.18.0, babel-types@^6.19.
lodash "^4.17.4"
to-fast-properties "^1.0.3"
+babylon@7.0.0-beta.44:
+ version "7.0.0-beta.44"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d"
+ integrity sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==
+
babylon@^5.8.38:
version "5.8.38"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-5.8.38.tgz#ec9b120b11bf6ccd4173a18bf217e60b79859ffd"
@@ -2446,6 +2589,11 @@ browser-resolve@^1.11.3:
dependencies:
resolve "1.1.7"
+browser-stdout@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
+ integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8=
+
browserify-aes@0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
@@ -2684,6 +2832,11 @@ chalk@~0.4.0:
has-color "~0.1.0"
strip-ansi "~0.1.0"
+chardet@^0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+ integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
+
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@@ -2742,7 +2895,7 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-cli-cursor@^1.0.1:
+cli-cursor@^1.0.1, cli-cursor@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
@@ -2756,6 +2909,19 @@ cli-cursor@^2.1.0:
dependencies:
restore-cursor "^2.0.0"
+cli-spinners@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
+ integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=
+
+cli-truncate@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
+ integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
+ dependencies:
+ slice-ansi "0.0.4"
+ string-width "^1.0.1"
+
cli-width@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-1.1.1.tgz#a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d"
@@ -2852,12 +3018,17 @@ commander@0.6.1:
resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06"
integrity sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=
+commander@2.11.0:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
+ integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==
+
commander@2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=
-commander@^2.11.0, commander@^2.5.0:
+commander@^2.11.0, commander@^2.5.0, commander@^2.9.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
@@ -3072,6 +3243,20 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+cosmiconfig@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-1.1.0.tgz#0dea0f9804efdfb929fbb1b188e25553ea053d37"
+ integrity sha1-DeoPmATv37kp+7GxiOJVU+oFPTc=
+ dependencies:
+ graceful-fs "^4.1.2"
+ js-yaml "^3.4.3"
+ minimist "^1.2.0"
+ object-assign "^4.0.1"
+ os-homedir "^1.0.1"
+ parse-json "^2.2.0"
+ pinkie-promise "^2.0.0"
+ require-from-string "^1.1.0"
+
cosmiconfig@^5.0.2:
version "5.0.7"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04"
@@ -3106,7 +3291,7 @@ cross-spawn@^3.0.1:
lru-cache "^4.0.1"
which "^1.2.9"
-cross-spawn@^5.0.1:
+cross-spawn@^5.0.1, cross-spawn@^5.1.0:
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=
@@ -3226,6 +3411,11 @@ data-urls@^1.0.0:
whatwg-mimetype "^2.2.0"
whatwg-url "^7.0.0"
+date-fns@^1.27.2:
+ version "1.30.1"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
+ integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+
date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
@@ -3440,6 +3630,11 @@ diff@1.4.0:
resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf"
integrity sha1-fyjS657nsVqX79ic5j3P2qPMur8=
+diff@3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
+ integrity sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==
+
diff@^2.2.1:
version "2.2.3"
resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99"
@@ -3487,7 +3682,7 @@ doctrine@^0.7.1:
esutils "^1.1.6"
isarray "0.0.1"
-doctrine@^2.1.0:
+doctrine@^2.0.0, doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
@@ -3589,6 +3784,11 @@ electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.47:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.90.tgz#b4c51b8303beff18f2b74817402bf4898e09558a"
integrity sha512-IjJZKRhFbWSOX1w0sdIXgp4CMRguu6UYcTckyFF/Gjtemsu/25eZ+RXwFlV+UWcIueHyQA1UnRJxocTpH5NdGA==
+elegant-spinner@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
+ integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
+
emoji-regex@^6.5.1:
version "6.5.1"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
@@ -3803,7 +4003,7 @@ escape-string-regexp@1.0.2:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1"
integrity sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=
-escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
@@ -3854,6 +4054,18 @@ eslint-config-airbnb@0.0.6:
resolve "1.1.6"
strip-json-comments "1.0.2"
+eslint-config-prettier@^2.6.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.10.0.tgz#ec07bc1d01f87d09f61d3840d112dc8a9791e30b"
+ integrity sha512-Mhl90VLucfBuhmcWBgbUNtgBiK955iCDK1+aHAz7QfDQF6wuzWZ6JjihZ3ejJoGlJWIuko7xLqNm8BA5uenKhA==
+ dependencies:
+ get-stdin "^5.0.1"
+
+eslint-config-standard@^10.2.1:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591"
+ integrity sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=
+
eslint-import-resolver-node@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
@@ -3870,6 +4082,11 @@ eslint-module-utils@^2.2.0:
debug "^2.6.8"
pkg-dir "^1.0.0"
+eslint-plugin-babel@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz#79202a0e35757dd92780919b2336f1fa2fe53c1e"
+ integrity sha1-eSAqDjV1fdkngJGbIzbx+i/lPB4=
+
eslint-plugin-flowtype@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.2.0.tgz#824364ed5940a404b91326fdb5a313a2a74760df"
@@ -3877,7 +4094,7 @@ eslint-plugin-flowtype@3.2.0:
dependencies:
lodash "^4.17.10"
-eslint-plugin-import@2.14.0:
+eslint-plugin-import@2.14.0, eslint-plugin-import@^2.8.0:
version "2.14.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8"
integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==
@@ -3907,21 +4124,43 @@ eslint-plugin-jsx-a11y@6.1.1:
has "^1.0.3"
jsx-ast-utils "^2.0.1"
+eslint-plugin-node@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz#80df3253c4d7901045ec87fa660a284e32bdca29"
+ integrity sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==
+ dependencies:
+ ignore "^3.3.6"
+ minimatch "^3.0.4"
+ resolve "^1.3.3"
+ semver "5.3.0"
+
+eslint-plugin-prettier@^2.3.1:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904"
+ integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA==
+ dependencies:
+ fast-diff "^1.1.1"
+ jest-docblock "^21.0.0"
+
+eslint-plugin-promise@^3.6.0:
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz#65ebf27a845e3c1e9d6f6a5622ddd3801694b621"
+ integrity sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==
+
eslint-plugin-react@2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-2.3.0.tgz#2d793a4dff1b73fb111796e463b48acd06420001"
integrity sha1-LXk6Tf8bc/sRF5bkY7SKzQZCAAE=
-eslint-plugin-react@7.11.1:
- version "7.11.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c"
- integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==
+eslint-plugin-react@7.4.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a"
+ integrity sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==
dependencies:
- array-includes "^3.0.3"
- doctrine "^2.1.0"
- has "^1.0.3"
- jsx-ast-utils "^2.0.1"
- prop-types "^15.6.2"
+ doctrine "^2.0.0"
+ has "^1.0.1"
+ jsx-ast-utils "^2.0.0"
+ prop-types "^15.5.10"
eslint-plugin-react@^2.3.0:
version "2.7.1"
@@ -3933,6 +4172,11 @@ eslint-plugin-react@^3.6.3:
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-3.16.1.tgz#262d96b77d7c4a42af809a73c0e527a58612293c"
integrity sha1-Ji2Wt318SkKvgJpzwOUnpYYSKTw=
+eslint-plugin-standard@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz#2a9e21259ba4c47c02d53b2d0c9135d4b1022d47"
+ integrity sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==
+
eslint-scope@3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
@@ -3941,6 +4185,14 @@ eslint-scope@3.7.1:
esrecurse "^4.1.0"
estraverse "^4.1.1"
+eslint-scope@^3.7.1:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
+ integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
eslint-scope@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
@@ -4081,6 +4333,50 @@ eslint@^0.24:
user-home "^1.0.0"
xml-escape "~1.0.0"
+eslint@^4.10:
+ version "4.19.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
+ integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==
+ dependencies:
+ ajv "^5.3.0"
+ babel-code-frame "^6.22.0"
+ chalk "^2.1.0"
+ concat-stream "^1.6.0"
+ cross-spawn "^5.1.0"
+ debug "^3.1.0"
+ doctrine "^2.1.0"
+ eslint-scope "^3.7.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^3.5.4"
+ esquery "^1.0.0"
+ esutils "^2.0.2"
+ file-entry-cache "^2.0.0"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^11.0.1"
+ ignore "^3.3.3"
+ imurmurhash "^0.1.4"
+ inquirer "^3.0.6"
+ is-resolvable "^1.0.0"
+ js-yaml "^3.9.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.4"
+ minimatch "^3.0.2"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ pluralize "^7.0.0"
+ progress "^2.0.0"
+ regexpp "^1.0.1"
+ require-uncached "^1.0.3"
+ semver "^5.3.0"
+ strip-ansi "^4.0.0"
+ strip-json-comments "~2.0.1"
+ table "4.0.2"
+ text-table "~0.2.0"
+
eslint@^5.0.0:
version "5.10.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.10.0.tgz#24adcbe92bf5eb1fc2d2f2b1eebe0c5e0713903a"
@@ -4129,6 +4425,14 @@ espree@^2.0.1, espree@^2.2.4:
resolved "https://registry.yarnpkg.com/espree/-/espree-2.2.5.tgz#df691b9310889402aeb29cc066708c56690b854b"
integrity sha1-32kbkxCIlAKuspzAZnCMVmkLhUs=
+espree@^3.5.4:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
+ integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
+ dependencies:
+ acorn "^5.5.0"
+ acorn-jsx "^3.0.0"
+
espree@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c"
@@ -4163,7 +4467,7 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.0.1:
+esquery@^1.0.0, esquery@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
@@ -4258,6 +4562,19 @@ execa@^0.7.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
+execa@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da"
+ integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=
+ 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"
+
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
@@ -4321,6 +4638,18 @@ expect@^1.6.0:
object-keys "^1.0.9"
tmatch "^2.0.1"
+expect@^21.2.1:
+ version "21.2.1"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-21.2.1.tgz#003ac2ac7005c3c29e73b38a272d4afadd6d1d7b"
+ integrity sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==
+ dependencies:
+ ansi-styles "^3.2.0"
+ jest-diff "^21.2.1"
+ jest-get-type "^21.2.0"
+ jest-matcher-utils "^21.2.1"
+ jest-message-util "^21.2.1"
+ jest-regex-util "^21.2.0"
+
expect@^23.6.0:
version "23.6.0"
resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98"
@@ -4353,6 +4682,15 @@ extend@~3.0.2:
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+external-editor@^2.0.4:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
+ integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==
+ dependencies:
+ chardet "^0.4.0"
+ iconv-lite "^0.4.17"
+ tmp "^0.0.33"
+
external-editor@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
@@ -4393,11 +4731,21 @@ extsprintf@^1.2.0:
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+fast-deep-equal@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
+ integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
+
fast-deep-equal@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+fast-diff@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+
fast-glob@^2.0.2:
version "2.2.4"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.4.tgz#e54f4b66d378040e0e4d6a68ec36bbc5b04363c0"
@@ -4461,7 +4809,7 @@ figgy-pudding@^3.1.0, figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
-figures@^1.3.5, figures@^1.4.0:
+figures@^1.3.5, figures@^1.4.0, figures@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
@@ -4737,6 +5085,11 @@ get-caller-file@^1.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
+ integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
+
get-pkg-repo@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d"
@@ -4758,6 +5111,11 @@ get-stdin@^4.0.1:
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+get-stdin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
+
get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
@@ -4852,6 +5210,18 @@ glob@3.2.11:
inherits "2"
minimatch "0.3"
+glob@7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+ integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
+ 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@^5.0.14, glob@^5.0.15, glob@~5.0.3:
version "5.0.15"
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
@@ -4875,7 +5245,7 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-globals@^11.1.0, globals@^11.7.0:
+globals@^11.0.1, globals@^11.1.0, globals@^11.7.0:
version "11.9.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249"
integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==
@@ -4913,6 +5283,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
+growl@1.10.3:
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f"
+ integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==
+
growl@1.9.2:
version "1.9.2"
resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
@@ -4964,6 +5339,11 @@ 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"
@@ -5017,6 +5397,11 @@ has@^1.0.1, has@^1.0.3, has@~1.0.1:
dependencies:
function-bind "^1.1.1"
+he@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+ integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
+
hoist-non-react-statics@^2.5.0:
version "2.5.5"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
@@ -5122,7 +5507,16 @@ humanize-ms@^1.2.1:
dependencies:
ms "^2.0.0"
-iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13:
+husky@^0.14.3:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3"
+ integrity sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==
+ dependencies:
+ is-ci "^1.0.10"
+ normalize-path "^1.0.0"
+ strip-indent "^2.0.0"
+
+iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -5146,7 +5540,7 @@ ignore-walk@^3.0.1:
dependencies:
minimatch "^3.0.4"
-ignore@^3.3.5:
+ignore@^3.3.3, ignore@^3.3.5, ignore@^3.3.6:
version "3.3.10"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
@@ -5269,6 +5663,26 @@ inquirer@^0.8.2:
rx "^2.4.3"
through "^2.3.6"
+inquirer@^3.0.6:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
+ integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==
+ dependencies:
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^2.0.4"
+ figures "^2.0.0"
+ lodash "^4.3.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rx-lite "^4.0.8"
+ rx-lite-aggregates "^4.0.8"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
+ through "^2.3.6"
+
inquirer@^6.1.0, inquirer@^6.2.0:
version "6.2.1"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.1.tgz#9943fc4882161bdb0b0c9276769c75b32dbfcd52"
@@ -5293,7 +5707,7 @@ interpret@^0.6.4:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
integrity sha1-/s16GOfOXKar+5U+H4YhOknxYls=
-invariant@^2.0.0, invariant@^2.2.2, invariant@^2.2.4:
+invariant@^2.0.0, invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -5567,7 +5981,7 @@ is-number@^4.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
-is-obj@^1.0.0:
+is-obj@^1.0.0, is-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
@@ -5611,6 +6025,11 @@ is-regex@^1.0.3, is-regex@^1.0.4:
dependencies:
has "^1.0.1"
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
is-resolvable@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
@@ -5711,6 +6130,21 @@ isparta@^3.0.3:
source-map "^0.5.0"
which "^1.0.9"
+isparta@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/isparta/-/isparta-4.1.1.tgz#c92e49672946914ec5407c801160f3374e0b7cb4"
+ integrity sha512-kGwkNqmALQzdfGhgo5o8kOA88p14R3Lwg0nfQ/qzv4IhB4rXarT9maPMaYbo6cms4poWbeulrlFlURLUR6rDwQ==
+ dependencies:
+ babel-core "^6.1.4"
+ escodegen "^1.6.1"
+ esprima "^4.0.0"
+ istanbul "0.4.5"
+ mkdirp "^0.5.0"
+ nomnomnomnom "^2.0.0"
+ object-assign "^4.0.1"
+ source-map "^0.5.0"
+ which "^1.0.9"
+
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -5786,7 +6220,7 @@ istanbul-reports@^1.5.1:
dependencies:
handlebars "^4.0.3"
-istanbul@^0.4.0:
+istanbul@0.4.5, istanbul@^0.4.0:
version "0.4.5"
resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=
@@ -5883,6 +6317,16 @@ jest-config@^23.6.0:
micromatch "^2.3.11"
pretty-format "^23.6.0"
+jest-diff@^21.2.1:
+ version "21.2.1"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.2.1.tgz#46cccb6cab2d02ce98bc314011764bb95b065b4f"
+ integrity sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==
+ dependencies:
+ chalk "^2.0.1"
+ diff "^3.2.0"
+ jest-get-type "^21.2.0"
+ pretty-format "^21.2.1"
+
jest-diff@^23.6.0:
version "23.6.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d"
@@ -5893,6 +6337,11 @@ jest-diff@^23.6.0:
jest-get-type "^22.1.0"
pretty-format "^23.6.0"
+jest-docblock@^21.0.0:
+ version "21.2.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"
+ integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==
+
jest-docblock@^23.2.0:
version "23.2.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7"
@@ -5925,6 +6374,11 @@ jest-environment-node@^23.4.0:
jest-mock "^23.2.0"
jest-util "^23.4.0"
+jest-get-type@^21.2.0:
+ version "21.2.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23"
+ integrity sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==
+
jest-get-type@^22.1.0:
version "22.4.3"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
@@ -5969,6 +6423,15 @@ jest-leak-detector@^23.6.0:
dependencies:
pretty-format "^23.6.0"
+jest-matcher-utils@^21.2.1:
+ version "21.2.1"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz#72c826eaba41a093ac2b4565f865eb8475de0f64"
+ integrity sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==
+ dependencies:
+ chalk "^2.0.1"
+ jest-get-type "^21.2.0"
+ pretty-format "^21.2.1"
+
jest-matcher-utils@^23.6.0:
version "23.6.0"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80"
@@ -5978,6 +6441,15 @@ jest-matcher-utils@^23.6.0:
jest-get-type "^22.1.0"
pretty-format "^23.6.0"
+jest-message-util@^21.2.1:
+ version "21.2.1"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.2.1.tgz#bfe5d4692c84c827d1dcf41823795558f0a1acbe"
+ integrity sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==
+ dependencies:
+ chalk "^2.0.1"
+ micromatch "^2.3.11"
+ slash "^1.0.0"
+
jest-message-util@^23.4.0:
version "23.4.0"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f"
@@ -5994,6 +6466,11 @@ jest-mock@^23.2.0:
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134"
integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=
+jest-regex-util@^21.2.0:
+ version "21.2.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.2.0.tgz#1b1e33e63143babc3e0f2e6c9b5ba1eb34b2d530"
+ integrity sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==
+
jest-regex-util@^23.3.0:
version "23.3.0"
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5"
@@ -6097,6 +6574,16 @@ jest-util@^23.4.0:
slash "^1.0.0"
source-map "^0.6.0"
+jest-validate@^21.1.0:
+ version "21.2.1"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7"
+ integrity sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==
+ dependencies:
+ chalk "^2.0.1"
+ jest-get-type "^21.2.0"
+ leven "^2.1.0"
+ pretty-format "^21.2.1"
+
jest-validate@^23.6.0:
version "23.6.0"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474"
@@ -6136,16 +6623,16 @@ js-tokens@1.0.1:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-1.0.1.tgz#cc435a5c8b94ad15acb7983140fc80182c89aeae"
integrity sha1-zENaXIuUrRWst5gxQPyAGCyJrq4=
+js-tokens@^3.0.0, js-tokens@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+ integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
+
"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-tokens@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
- integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-
js-yaml@3.4.5:
version "3.4.5"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.4.5.tgz#c3403797df12b91866574f2de23646fe8cafb44d"
@@ -6154,7 +6641,7 @@ js-yaml@3.4.5:
argparse "^1.0.2"
esprima "^2.6.0"
-js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.7.0, js-yaml@^3.9.0:
+js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
version "3.12.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==
@@ -6241,6 +6728,11 @@ json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1:
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+json-schema-traverse@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
+ integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
+
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
@@ -6321,7 +6813,7 @@ jstransform@^11.0.3:
object-assign "^2.0.0"
source-map "^0.4.2"
-jsx-ast-utils@^2.0.1:
+jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
integrity sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=
@@ -6440,6 +6932,78 @@ libnpmaccess@^3.0.0:
npm-package-arg "^6.1.0"
npm-registry-fetch "^3.8.0"
+lint-staged@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.3.0.tgz#ed0779ad9a42c0dc62bb3244e522870b41125879"
+ integrity sha512-C/Zxslg0VRbsxwmCu977iIs+QyrmW2cyRCPUV5NDFYOH/jtRFHH8ch7ua2fH0voI/nVC3Tpg7DykfgMZySliKw==
+ dependencies:
+ app-root-path "^2.0.0"
+ chalk "^2.1.0"
+ commander "^2.11.0"
+ cosmiconfig "^1.1.0"
+ execa "^0.8.0"
+ is-glob "^4.0.0"
+ jest-validate "^21.1.0"
+ listr "^0.12.0"
+ lodash "^4.17.4"
+ log-symbols "^2.0.0"
+ minimatch "^3.0.0"
+ npm-which "^3.0.1"
+ p-map "^1.1.1"
+ staged-git-files "0.0.4"
+ stringify-object "^3.2.0"
+
+listr-silent-renderer@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
+ integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
+
+listr-update-renderer@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz#ca80e1779b4e70266807e8eed1ad6abe398550f9"
+ integrity sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=
+ dependencies:
+ chalk "^1.1.3"
+ cli-truncate "^0.2.1"
+ elegant-spinner "^1.0.1"
+ figures "^1.7.0"
+ indent-string "^3.0.0"
+ log-symbols "^1.0.2"
+ log-update "^1.0.2"
+ strip-ansi "^3.0.1"
+
+listr-verbose-renderer@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35"
+ integrity sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=
+ dependencies:
+ chalk "^1.1.3"
+ cli-cursor "^1.0.2"
+ date-fns "^1.27.2"
+ figures "^1.7.0"
+
+listr@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/listr/-/listr-0.12.0.tgz#6bce2c0f5603fa49580ea17cd6a00cc0e5fa451a"
+ integrity sha1-a84sD1YD+klYDqF81qAMwOX6RRo=
+ dependencies:
+ chalk "^1.1.3"
+ cli-truncate "^0.2.1"
+ figures "^1.7.0"
+ indent-string "^2.1.0"
+ is-promise "^2.1.0"
+ is-stream "^1.1.0"
+ listr-silent-renderer "^1.1.1"
+ listr-update-renderer "^0.2.0"
+ listr-verbose-renderer "^0.4.0"
+ log-symbols "^1.0.2"
+ log-update "^1.0.2"
+ ora "^0.2.3"
+ p-map "^1.1.1"
+ rxjs "^5.0.0-beta.11"
+ stream-to-observable "^0.1.0"
+ strip-ansi "^3.0.1"
+
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -6657,6 +7221,11 @@ lodash.clonedeep@^3.0.1:
lodash._baseclone "^3.0.0"
lodash._bindcallback "^3.0.0"
+lodash.curry@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170"
+ integrity sha1-JI42By7ekGUB11lmIAqG2riyMXA=
+
lodash.escape@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98"
@@ -6667,6 +7236,11 @@ lodash.flattendeep@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
+lodash.flow@^3.3.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a"
+ integrity sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=
+
lodash.isarguments@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
@@ -6802,11 +7376,33 @@ lodash@^3.10.0, lodash@^3.3.1, lodash@^3.6.0, lodash@^3.9.3:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
-lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.6.1:
+lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1:
version "4.17.11"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+log-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
+ integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
+ dependencies:
+ chalk "^1.0.0"
+
+log-symbols@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+log-update@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1"
+ integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=
+ dependencies:
+ ansi-escapes "^1.0.0"
+ cli-cursor "^1.0.2"
+
longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
@@ -7045,7 +7641,7 @@ minimatch@0.3:
lru-cache "2"
sigmund "~1.0.0"
-"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.3, minimatch@^3.0.4:
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, 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==
@@ -7154,6 +7750,22 @@ mocha@^2.2.5:
supports-color "1.2.0"
to-iso-string "0.0.2"
+mocha@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794"
+ integrity sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==
+ dependencies:
+ browser-stdout "1.3.0"
+ commander "2.11.0"
+ debug "3.1.0"
+ diff "3.3.1"
+ escape-string-regexp "1.0.5"
+ glob "7.1.2"
+ growl "1.10.3"
+ he "1.1.1"
+ mkdirp "0.5.1"
+ supports-color "4.4.0"
+
modify-babel-preset@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/modify-babel-preset/-/modify-babel-preset-1.2.0.tgz#d1b7c8c24896e19dbc4847347213e6b7144d1bc7"
@@ -7445,6 +8057,11 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
+normalize-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379"
+ integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=
+
normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
@@ -7489,6 +8106,13 @@ npm-packlist@^1.1.12, npm-packlist@^1.1.6:
ignore-walk "^3.0.1"
npm-bundled "^1.0.1"
+npm-path@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
+ integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
+ dependencies:
+ which "^1.2.10"
+
npm-pick-manifest@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40"
@@ -7517,6 +8141,15 @@ npm-run-path@^2.0.0:
dependencies:
path-key "^2.0.0"
+npm-which@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
+ integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=
+ dependencies:
+ commander "^2.9.0"
+ npm-path "^2.0.2"
+ which "^1.2.10"
+
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2, npmlog@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
@@ -7716,6 +8349,16 @@ optionator@^0.8.1, optionator@^0.8.2:
type-check "~0.3.2"
wordwrap "~1.0.0"
+ora@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
+ integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=
+ dependencies:
+ chalk "^1.1.1"
+ cli-cursor "^1.0.2"
+ cli-spinners "^0.1.2"
+ object-assign "^4.0.1"
+
os-browserify@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
@@ -7726,7 +8369,7 @@ os-browserify@~0.1.2:
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54"
integrity sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=
-os-homedir@^1.0.0:
+os-homedir@^1.0.0, os-homedir@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
@@ -7828,7 +8471,7 @@ p-map-series@^1.0.0:
dependencies:
p-reduce "^1.0.0"
-p-map@^1.2.0:
+p-map@^1.1.1, p-map@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
@@ -8006,7 +8649,7 @@ path-key@^2.0.0, path-key@^2.0.1:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-path-parse@^1.0.5:
+path-parse@^1.0.5, path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
@@ -8110,6 +8753,19 @@ preserve@^0.2.0:
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+prettier@^1.7.4:
+ version "1.15.3"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a"
+ integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==
+
+pretty-format@^21.2.1:
+ version "21.2.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36"
+ integrity sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==
+ dependencies:
+ ansi-regex "^3.0.0"
+ ansi-styles "^3.2.0"
+
pretty-format@^23.6.0:
version "23.6.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760"
@@ -8182,7 +8838,7 @@ promzard@^0.3.0:
dependencies:
read "1"
-prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.6.2:
+prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.2:
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==
@@ -8257,6 +8913,11 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+pure-color@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e"
+ integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=
+
q@^1.1.2, q@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -8341,6 +9002,16 @@ react-addons-test-utils@^15.4.0:
resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.2.tgz#c12b6efdc2247c10da7b8770d185080a7b047156"
integrity sha1-wStu/cIkfBDae4dw0YUICnsEcVY=
+react-base16-styling@^0.5.1:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.5.3.tgz#3858f24e9c4dd8cbd3f702f3f74d581ca2917269"
+ integrity sha1-OFjyTpxN2MvT9wLz901YHKKRcmk=
+ dependencies:
+ base16 "^1.0.0"
+ lodash.curry "^4.0.1"
+ lodash.flow "^3.3.0"
+ pure-color "^1.2.0"
+
react-dom@^0.14.0:
version "0.14.9"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.14.9.tgz#05064a3dcf0fb1880a3b2bfc9d58c55d8d9f6293"
@@ -8356,11 +9027,26 @@ react-dom@^15.4.0:
object-assign "^4.1.0"
prop-types "^15.5.10"
+react-dom@^16.0.0:
+ version "16.7.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8"
+ integrity sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ scheduler "^0.12.0"
+
react-is@^16.6.1:
version "16.6.3"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.3.tgz#d2d7462fcfcbe6ec0da56ad69047e47e56e7eac0"
integrity sha512-u7FDWtthB4rWibG/+mFbVd5FvdI20yde86qKGx4lVUTWmPlSWQ4QxbBIrrs+HnXGbxOUlUzTAP/VDmvCwaP2yA==
+react-is@^16.7.0:
+ version "16.7.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.7.0.tgz#c1bd21c64f1f1364c6f70695ec02d69392f41bfa"
+ integrity sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g==
+
react-redux@^4.0.0:
version "4.4.9"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-4.4.9.tgz#8ca6d4670925a454ce67086c2305e9630670909a"
@@ -8381,6 +9067,16 @@ react-test-renderer@^15.3.2:
fbjs "^0.8.9"
object-assign "^4.1.0"
+react-test-renderer@^16.0.0:
+ version "16.7.0"
+ resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.7.0.tgz#1ca96c2b450ab47c36ba92cd8c03fcefc52ea01c"
+ integrity sha512-tFbhSjknSQ6+ttzmuGdv+SjQfmvGcq3PFKyPItohwhhOBmRoTf1We3Mlt3rJtIn85mjPXOkKV+TaKK4irvk9Yg==
+ dependencies:
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ react-is "^16.7.0"
+ scheduler "^0.12.0"
+
react@^0.14.9:
version "0.14.9"
resolved "https://registry.yarnpkg.com/react/-/react-0.14.9.tgz#9110a6497c49d44ba1c0edd317aec29c2e0d91d1"
@@ -8400,6 +9096,16 @@ react@^15.4.0:
object-assign "^4.1.0"
prop-types "^15.5.10"
+react@^16.0.0:
+ version "16.7.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381"
+ integrity sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+ prop-types "^15.6.2"
+ scheduler "^0.12.0"
+
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"
@@ -8685,6 +9391,11 @@ regex-not@^1.0.0, regex-not@^1.0.2:
extend-shallow "^3.0.2"
safe-regex "^1.1.0"
+regexpp@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
+ integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==
+
regexpp@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
@@ -8798,6 +9509,11 @@ require-directory@^2.1.1:
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+require-from-string@^1.1.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
+ integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=
+
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"
@@ -8860,6 +9576,13 @@ resolve@^1.1.6, resolve@^1.5.0, resolve@^1.6.0:
dependencies:
path-parse "^1.0.5"
+resolve@^1.3.3:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06"
+ integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==
+ dependencies:
+ path-parse "^1.0.6"
+
restore-cursor@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
@@ -8946,6 +9669,18 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
+rx-lite-aggregates@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
+ integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=
+ dependencies:
+ rx-lite "*"
+
+rx-lite@*, rx-lite@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
+ integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
+
rx-lite@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
@@ -8956,7 +9691,7 @@ rx@^2.4.3:
resolved "https://registry.yarnpkg.com/rx/-/rx-2.5.3.tgz#21adc7d80f02002af50dae97fd9dbf248755f566"
integrity sha1-Ia3H2A8CACr1Da6X/Z2/JIdV9WY=
-rxjs@^5.0.0-beta.6:
+rxjs@^5.0.0-beta.11, rxjs@^5.0.0-beta.6:
version "5.5.12"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc"
integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==
@@ -9008,12 +9743,20 @@ sax@^1.2.4:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+scheduler@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.12.0.tgz#8ab17699939c0aedc5a196a657743c496538647b"
+ integrity sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
-semver@~5.3.0:
+semver@5.3.0, semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
@@ -9110,6 +9853,18 @@ slash@^1.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+slice-ansi@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+ integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
+
+slice-ansi@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
+ integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+
slice-ansi@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7"
@@ -9340,6 +10095,11 @@ stack-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
+staged-git-files@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-0.0.4.tgz#d797e1b551ca7a639dec0237dc6eb4bb9be17d35"
+ integrity sha1-15fhtVHKemOd7AI33G60u5vhfTU=
+
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -9393,6 +10153,11 @@ stream-shift@^1.0.0:
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+stream-to-observable@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe"
+ integrity sha1-Rb8dny19wJvtgfHDB8Qw5ouEz/4=
+
string-length@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
@@ -9446,6 +10211,15 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringify-object@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
stringmap@~0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1"
@@ -9548,6 +10322,13 @@ supports-color@1.2.0:
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e"
integrity sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=
+supports-color@4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e"
+ integrity sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==
+ dependencies:
+ has-flag "^2.0.0"
+
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -9582,6 +10363,18 @@ symbol-observable@^1.0.2, symbol-observable@^1.0.3, symbol-observable@^1.2.0:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
+table@4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
+ integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==
+ dependencies:
+ ajv "^5.2.3"
+ ajv-keywords "^2.1.0"
+ chalk "^2.1.0"
+ lodash "^4.17.4"
+ slice-ansi "1.0.0"
+ string-width "^2.1.1"
+
table@^5.0.2:
version "5.1.1"
resolved "https://registry.yarnpkg.com/table/-/table-5.1.1.tgz#92030192f1b7b51b6eeab23ed416862e47b70837"
@@ -10269,7 +11062,7 @@ which-module@^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.0.9, which@^1.1.1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1:
+which@1, which@^1.0.9, which@^1.1.1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==