Added Prettier (and formatted code)
Brian Vaughn committed
Jan 23, 2019 at 08:45 UTC
f881c32304c8a42083046c5a9ad71ad2687f26c9
38 files changed
+1263
-492
.eslintignore
new
+6
@@ -0,0 +1,6 @@
1
+node_modules
2
+
3
+shells/dev/build
4
+
5
+package-lock.json
6
+yarn.lock
\ No newline at end of file
.eslintrc
new
+3
@@ -0,0 +1,3 @@
1
+{
2
+ "extends": ["react-app", "plugin:prettier/recommended"]
3
+}
.prettierignore
new
+6
@@ -0,0 +1,6 @@
1
+node_modules
2
+
3
+shells/dev/build
4
+
5
+package-lock.json
6
+yarn.lock
\ No newline at end of file
.prettierrc
new
+4
@@ -0,0 +1,4 @@
1
+{
2
+ "singleQuote": true,
3
+ "trailingComma": "es5"
4
+}
package.json
+55
-34
@@ -1,4 +1,39 @@
1
{
2
+ "repository": "bvaughn/react-devtools-experimental",
3
+ "license": "BSD-3-Clause",
4
+ "private": true,
5
+ "workspaces": [
6
+ "packages/*"
7
+ ],
8
+ "jest": {
9
+ "modulePathIgnorePatterns": [
10
+ "<rootDir>/shells"
11
+ ]
12
+ },
13
+ "scripts": {
14
+ "build:extension": "yarn run build:extension:chrome && yarn run build:extension:firefox",
15
+ "build:extension:chrome": "node ./shells/chrome/build",
16
+ "build:extension:firefox": "node ./shells/firefox/build",
17
+ "build:standalone": "cd packages/react-devtools-core && yarn run build",
18
+ "deploy": "cd ./shells/theme-preview && ./build.sh && gh-pages -d .",
19
+ "linc": "lint-staged",
20
+ "lint": "eslint '**/*.js'",
21
+ "precommit": "lint-staged",
22
+ "prettier": "prettier --write '**/*.{js,json,css}'",
23
+ "start": "cd ./shells/dev && open ./index.html && webpack --config webpack.config.js --watch",
24
+ "test": "jest",
25
+ "test:chrome": "node ./shells/chrome/test",
26
+ "test:firefox": "node ./shells/firefox/test",
27
+ "test:standalone": "cd packages/react-devtools && yarn start",
28
+ "typecheck": "flow check"
29
+ },
30
+ "lint-staged": {
31
+ "{shells,src}/**/*.{js,json,css}": [
32
+ "prettier --write",
33
+ "git add"
34
+ ],
35
+ "**/*.js": "eslint --max-warnings 0"
36
+ },
37
"dependencies": {
38
"@babel/core": "^7.1.6",
39
"@babel/plugin-proposal-class-properties": "^7.1.0",
@@ -8,32 +43,48 @@
43
"@babel/preset-react": "^7.0.0",
44
"adm-zip": "^0.4.7",
45
"babel-core": "^7.0.0-bridge",
11
- "babel-eslint": "6",
46
+ "babel-eslint": "^9.0.0",
47
"babel-jest": "^23.6.0",
48
"babel-loader": "^8.0.4",
49
"child-process-promise": "^2.2.1",
50
+ "chrome-launch": "^1.1.4",
51
"classnames": "2.2.1",
52
"cli-spinners": "^1.0.0",
53
"clipboard-js": "^0.3.3",
54
"css-loader": "^1.0.1",
55
"error-stack-parser": "^2.0.2",
56
"es6-symbol": "3.0.2",
21
- "eslint": "2.10.2",
22
- "eslint-plugin-react": "5.1.1",
57
+ "eslint": "^4.19.1",
58
+ "eslint-config-prettier": "^2.9.0",
59
+ "eslint-config-react-app": "^2.1.0",
60
+ "eslint-config-standard": "^11.0.0",
61
+ "eslint-config-standard-react": "^6.0.0",
62
+ "eslint-plugin-flowtype": "^2.47.1",
63
+ "eslint-plugin-import": "^2.11.0",
64
+ "eslint-plugin-jsx-a11y": "^5",
65
+ "eslint-plugin-node": "^6.0.1",
66
+ "eslint-plugin-prettier": "^2.6.0",
67
+ "eslint-plugin-promise": "^3.7.0",
68
+ "eslint-plugin-react": "^7.7.0",
69
+ "eslint-plugin-standard": "^3.0.1",
70
"events": "^3.0.0",
71
"fbjs": "0.5.1",
72
"fbjs-scripts": "0.7.0",
73
+ "firefox-profile": "^1.0.2",
74
"flow-bin": "^0.91.0",
75
"fs-extra": "^3.0.1",
76
"gh-pages": "^1.0.0",
77
"immutable": "3.7.6",
78
"jest": "22.1.4",
79
+ "lerna": "^2.8.0",
80
+ "lint-staged": "^7.0.5",
81
"log-update": "^2.0.0",
82
"lru-cache": "^4.1.3",
83
"memoize-one": "^3.1.1",
84
"node-libs-browser": "0.5.3",
85
"nullthrows": "^1.0.0",
86
"object-assign": "4.0.1",
87
+ "prettier": "^1.16.1",
88
"prop-types": "^15.6.1",
89
"react": "^16.8.0-alpha.1",
90
"react-color": "^2.11.7",
@@ -43,38 +94,8 @@
94
"react-window": "^1.1.1",
95
"semver": "^5.5.1",
96
"style-loader": "^0.23.1",
97
+ "web-ext": "^1.10.1",
98
"webpack": "^4.26.0",
99
"webpack-cli": "^3.1.2"
48
- },
49
- "license": "BSD-3-Clause",
50
- "repository": "facebook/react-devtools",
51
- "private": true,
52
- "workspaces": [
53
- "packages/*"
54
- ],
55
- "scripts": {
56
- "build:extension": "yarn run build:extension:chrome && yarn run build:extension:firefox",
57
- "build:extension:chrome": "node ./shells/chrome/build",
58
- "build:extension:firefox": "node ./shells/firefox/build",
59
- "build:standalone": "cd packages/react-devtools-core && yarn run build",
60
- "deploy": "cd ./shells/theme-preview && ./build.sh && gh-pages -d .",
61
- "lint": "eslint .",
62
- "start": "cd ./shells/dev && open ./index.html && webpack --config webpack.config.js --watch",
63
- "test": "jest",
64
- "test:chrome": "node ./shells/chrome/test",
65
- "test:firefox": "node ./shells/firefox/test",
66
- "test:standalone": "cd packages/react-devtools && yarn start",
67
- "typecheck": "flow check"
68
- },
69
- "jest": {
70
- "modulePathIgnorePatterns": [
71
- "<rootDir>/shells"
72
- ]
73
- },
74
- "devDependencies": {
75
- "chrome-launch": "^1.1.4",
76
- "firefox-profile": "^1.0.2",
77
- "lerna": "^2.8.0",
78
- "web-ext": "^1.10.1"
100
}
101
}
shells/browser/webpack.backend.js
+2
-13
@@ -1,16 +1,5 @@
1
-/**
2
- * Copyright (c) 2015-present, Facebook, Inc.
3
- * All rights reserved.
4
- *
5
- * This source code is licensed under the BSD-style license found in the
6
- * LICENSE file in the root directory of this source tree. An additional grant
7
- * of patent rights can be found in the PATENTS file in the same directory.
8
- *
9
- */
10
-'use strict';
11
-
12
-const {readFileSync} = require('fs');
13
-const {resolve} = require('path');
1
+const { readFileSync } = require('fs');
2
+const { resolve } = require('path');
3
4
const __DEV__ = process.env.NODE_ENV !== 'production';
5
shells/browser/webpack.config.js
+10
-19
@@ -1,16 +1,5 @@
1
-/**
2
- * Copyright (c) 2015-present, Facebook, Inc.
3
- * All rights reserved.
4
- *
5
- * This source code is licensed under the BSD-style license found in the
6
- * LICENSE file in the root directory of this source tree. An additional grant
7
- * of patent rights can be found in the PATENTS file in the same directory.
8
- *
9
- */
10
-'use strict';
11
-
12
-const {readFileSync} = require('fs');
13
-const {resolve} = require('path');
1
+const { readFileSync } = require('fs');
2
+const { resolve } = require('path');
3
const webpack = require('webpack');
4
5
const __DEV__ = process.env.NODE_ENV !== 'production';
@@ -29,12 +18,14 @@ module.exports = {
18
path: __dirname + '/build',
19
filename: '[name].js',
20
},
32
- plugins: __DEV__ ? [] : [
33
- // Ensure we get production React
34
- new webpack.DefinePlugin({
35
- 'process.env.NODE_ENV': '"production"',
36
- }),
37
- ],
21
+ plugins: __DEV__
22
+ ? []
23
+ : [
24
+ // Ensure we get production React
25
+ new webpack.DefinePlugin({
26
+ 'process.env.NODE_ENV': '"production"',
27
+ }),
28
+ ],
29
module: {
30
rules: [
31
{
shells/createConfig.js
+44
-46
@@ -1,8 +1,8 @@
1
-const path = require('path')
2
-const webpack = require('webpack')
3
-const merge = require('webpack-merge')
4
-const { VueLoaderPlugin } = require('vue-loader')
5
-const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
1
+const path = require('path');
2
+const webpack = require('webpack');
3
+const merge = require('webpack-merge');
4
+const { VueLoaderPlugin } = require('vue-loader');
5
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
6
7
module.exports = (config, target = { chrome: 52, firefox: 48 }) => {
8
const bubleOptions = {
@@ -10,9 +10,9 @@ module.exports = (config, target = { chrome: 52, firefox: 48 }) => {
10
objectAssign: 'Object.assign',
11
transforms: {
12
forOf: false,
13
- modules: false
14
- }
15
- }
13
+ modules: false,
14
+ },
15
+ };
16
17
const baseConfig = {
18
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
@@ -21,8 +21,8 @@ module.exports = (config, target = { chrome: 52, firefox: 48 }) => {
21
src: path.resolve(__dirname, '../src'),
22
views: path.resolve(__dirname, '../src/devtools/views'),
23
components: path.resolve(__dirname, '../src/devtools/components'),
24
- filters: path.resolve(__dirname, '../src/devtools/filters')
25
- }
24
+ filters: path.resolve(__dirname, '../src/devtools/filters'),
25
+ },
26
},
27
module: {
28
rules: [
@@ -30,25 +30,21 @@ module.exports = (config, target = { chrome: 52, firefox: 48 }) => {
30
test: /\.js$/,
31
loader: 'buble-loader',
32
exclude: /node_modules|vue\/dist|vuex\/dist/,
33
- options: bubleOptions
33
+ options: bubleOptions,
34
},
35
{
36
test: /\.vue$/,
37
loader: 'vue-loader',
38
options: {
39
compilerOptions: {
40
- preserveWhitespace: false
40
+ preserveWhitespace: false,
41
},
42
- transpileOptions: bubleOptions
43
- }
42
+ transpileOptions: bubleOptions,
43
+ },
44
},
45
{
46
test: /\.css$/,
47
- use: [
48
- 'vue-style-loader',
49
- 'css-loader',
50
- 'postcss-loader'
51
- ]
47
+ use: ['vue-style-loader', 'css-loader', 'postcss-loader'],
48
},
49
{
50
test: /\.styl(us)?$/,
@@ -61,43 +57,45 @@ module.exports = (config, target = { chrome: 52, firefox: 48 }) => {
57
loader: 'style-resources-loader',
58
options: {
59
patterns: [
64
- path.resolve(__dirname, '../src/devtools/style/imports.styl')
65
- ]
66
- }
67
- }
68
- ]
60
+ path.resolve(__dirname, '../src/devtools/style/imports.styl'),
61
+ ],
62
+ },
63
+ },
64
+ ],
65
},
66
{
67
test: /\.(png|woff2)$/,
72
- loader: 'url-loader?limit=0'
73
- }
74
- ]
68
+ loader: 'url-loader?limit=0',
69
+ },
70
+ ],
71
},
72
performance: {
77
- hints: false
73
+ hints: false,
74
},
75
plugins: [
76
new VueLoaderPlugin(),
77
...(process.env.VUE_DEVTOOL_TEST ? [] : [new FriendlyErrorsPlugin()]),
78
new webpack.DefinePlugin({
83
- 'process.env.RELEASE_CHANNEL': JSON.stringify(process.env.RELEASE_CHANNEL || 'stable')
84
- })
79
+ 'process.env.RELEASE_CHANNEL': JSON.stringify(
80
+ process.env.RELEASE_CHANNEL || 'stable'
81
+ ),
82
+ }),
83
],
84
devServer: {
87
- port: process.env.PORT
85
+ port: process.env.PORT,
86
},
87
stats: {
90
- colors: true
91
- }
92
- }
88
+ colors: true,
89
+ },
90
+ };
91
92
if (process.env.NODE_ENV === 'production') {
95
- const UglifyPlugin = require('uglifyjs-webpack-plugin')
93
+ const UglifyPlugin = require('uglifyjs-webpack-plugin');
94
baseConfig.plugins.push(
95
new webpack.DefinePlugin({
98
- 'process.env.NODE_ENV': '"production"'
96
+ 'process.env.NODE_ENV': '"production"',
97
})
100
- )
98
+ );
99
baseConfig.optimization = {
100
minimizer: [
101
new UglifyPlugin({
@@ -132,19 +130,19 @@ module.exports = (config, target = { chrome: 52, firefox: 48 }) => {
130
// required features to drop conditional branches
131
conditionals: true,
132
dead_code: true,
135
- evaluate: true
133
+ evaluate: true,
134
},
135
mangle: {
138
- safari10: true
139
- }
136
+ safari10: true,
137
+ },
138
},
139
sourceMap: false,
140
cache: true,
143
- parallel: true
144
- })
145
- ]
146
- }
141
+ parallel: true,
142
+ }),
143
+ ],
144
+ };
145
}
146
149
- return merge(baseConfig, config)
150
-}
\ No newline at end of file
147
+ return merge(baseConfig, config);
148
+};
shells/dev/app/App.css
+3
-2
@@ -1,6 +1,7 @@
1
.App {
2
/* GitHub.com frontend fonts */
3
- font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
3
+ font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,
4
+ sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
5
font-size: 14px;
6
line-height: 1.5;
6
-}
\ No newline at end of file
7
+}
shells/dev/app/ElementTypes/index.js
+13
-5
@@ -14,6 +14,9 @@ import React, {
14
Suspense,
15
} from 'react';
16
17
+const Context = createContext('abc');
18
+Context.displayName = 'testContext';
19
+
20
class ClassComponent extends Component<any> {
21
render() {
22
return null;
@@ -30,14 +33,19 @@ const ForwardRefComponent = forwardRef((props, ref) => (
33
<ClassComponent ref={ref} {...props} />
34
));
35
33
-const LazyComponent = lazy(() => Promise.resolve({
34
- default: FunctionComponent,
35
-}));
36
+const LazyComponent = lazy(() =>
37
+ Promise.resolve({
38
+ default: FunctionComponent,
39
+ })
40
+);
41
42
export default function ElementTypes() {
43
return (
44
<Profiler id="test" onRender={() => {}}>
45
<Fragment>
46
+ <Context.Provider value={'def'}>
47
+ <Context.Consumer>{value => null}</Context.Consumer>
48
+ </Context.Provider>
49
<StrictMode>
50
<ConcurrentMode>
51
<Suspense fallback={<div>Loading...</div>}>
@@ -51,5 +59,5 @@ export default function ElementTypes() {
59
</StrictMode>
60
</Fragment>
61
</Profiler>
54
- )
55
-}
\ No newline at end of file
62
+ );
63
+}
shells/dev/app/ToDoList/List.js
+53
-36
@@ -12,56 +12,69 @@ export type Item = {|
12
13
type Props = {||};
14
15
-export default function List({}: Props) {
15
+export default function List(props: Props) {
16
const [newItemText, setNewItemText] = useState<string>('');
17
const [items, setItems] = useState<Array<Item>>([
18
- {id: 1, isComplete: true, text: "First"},
19
- {id: 2, isComplete: true, text: "Second"},
20
- {id: 3, isComplete: false, text: "Third"},
18
+ { id: 1, isComplete: true, text: 'First' },
19
+ { id: 2, isComplete: true, text: 'Second' },
20
+ { id: 3, isComplete: false, text: 'Third' },
21
]);
22
const [uid, setUID] = useState<number>(4);
23
24
const handleClick = useCallback(() => {
25
if (newItemText !== '') {
26
- setItems([...items, {
27
- id: uid,
28
- isComplete: false,
29
- text: newItemText,
30
- }]);
26
+ setItems([
27
+ ...items,
28
+ {
29
+ id: uid,
30
+ isComplete: false,
31
+ text: newItemText,
32
+ },
33
+ ]);
34
setUID(uid + 1);
35
setNewItemText('');
36
}
37
}, [newItemText]);
38
36
- const handleKeyPress = useCallback(event => {
37
- if (event.key === 'Enter') {
38
- handleClick();
39
- }
40
- }, [handleClick]);
39
+ const handleKeyPress = useCallback(
40
+ event => {
41
+ if (event.key === 'Enter') {
42
+ handleClick();
43
+ }
44
+ },
45
+ [handleClick]
46
+ );
47
42
- const handleChange = useCallback(event => {
43
- setNewItemText(event.currentTarget.value);
44
- }, [setNewItemText]);
48
+ const handleChange = useCallback(
49
+ event => {
50
+ setNewItemText(event.currentTarget.value);
51
+ },
52
+ [setNewItemText]
53
+ );
54
46
- const removeItem = useCallback(itemToRemove => {
47
- setItems(
48
- items.filter(item => item !== itemToRemove)
49
- );
50
- }, [items]);
55
+ const removeItem = useCallback(
56
+ itemToRemove => {
57
+ setItems(items.filter(item => item !== itemToRemove));
58
+ },
59
+ [items]
60
+ );
61
52
- const toggleItem = useCallback(itemToToggle => {
53
- const index = items.indexOf(itemToToggle);
62
+ const toggleItem = useCallback(
63
+ itemToToggle => {
64
+ const index = items.indexOf(itemToToggle);
65
55
- setItems(
56
- items
57
- .slice(0, index)
58
- .concat({
59
- ...itemToToggle,
60
- isComplete: !itemToToggle.isComplete,
61
- })
62
- .concat(items.slice(index + 1))
63
- );
64
- }, [items]);
66
+ setItems(
67
+ items
68
+ .slice(0, index)
69
+ .concat({
70
+ ...itemToToggle,
71
+ isComplete: !itemToToggle.isComplete,
72
+ })
73
+ .concat(items.slice(index + 1))
74
+ );
75
+ },
76
+ [items]
77
+ );
78
79
return (
80
<Fragment>
@@ -78,7 +91,11 @@ export default function List({}: Props) {
91
className={styles.IconButton}
92
disabled={newItemText === ''}
93
onClick={handleClick}
81
- >➕</button>
94
+ >
95
+ <span role="img" aria-label="Add item">
96
+ ➕
97
+ </span>
98
+ </button>
99
<ul className={styles.List}>
100
{items.map(item => (
101
<ListItem
@@ -91,4 +108,4 @@ export default function List({}: Props) {
108
</ul>
109
</Fragment>
110
);
94
-}
\ No newline at end of file
111
+}
shells/dev/app/ToDoList/ListItem.js
+9
-6
@@ -1,9 +1,9 @@
1
// @flow
2
3
-import React, { Fragment, useCallback, useState } from 'react';
3
+import React, { useCallback } from 'react';
4
import styles from './ListItem.css';
5
6
-import type {Item} from './List';
6
+import type { Item } from './List';
7
8
type Props = {|
9
item: Item,
@@ -22,15 +22,18 @@ export default function ListItem({ item, removeItem, toggleItem }: Props) {
22
23
return (
24
<li className={styles.ListItem}>
25
- <button className={styles.IconButton} onClick={handleDelete}>🗑</button>
25
+ <button className={styles.IconButton} onClick={handleDelete}>
26
+ 🗑
27
+ </button>
28
<label className={styles.Label}>
29
<input
30
className={styles.Input}
31
checked={item.isComplete}
32
onChange={handleToggle}
33
type="checkbox"
32
- /> {item.text}
34
+ />{' '}
35
+ {item.text}
36
</label>
37
</li>
35
- )
36
-}
\ No newline at end of file
38
+ );
39
+}
shells/dev/app/ToDoList/index.js
+1
-1
@@ -2,4 +2,4 @@
2
3
import List from './List';
4
5
-export default List;
\ No newline at end of file
5
+export default List;
shells/dev/app/app.js
+3
-3
@@ -6,10 +6,10 @@ import ElementTypes from './ElementTypes';
6
import styles from './App.css';
7
8
export default function App() {
9
- return (
9
+ return (
10
<div className={styles.App}>
11
<List />
12
<ElementTypes />
13
</div>
14
- )
15
-}
\ No newline at end of file
14
+ );
15
+}
shells/dev/app/index.js
+1
-1
@@ -8,4 +8,4 @@ const container = document.createElement('div');
8
9
render(createElement(App), container);
10
11
-((document.body: any): HTMLBodyElement).appendChild(container);
\ No newline at end of file
11
+((document.body: any): HTMLBodyElement).appendChild(container);
shells/dev/src/backend.js
+6
-6
@@ -1,19 +1,19 @@
1
/** @flow */
2
3
import Agent from 'src/backend/agent';
4
-import Bridge from 'src/bridge'
4
+import Bridge from 'src/bridge';
5
import { initBackend } from 'src/backend';
6
7
const bridge = new Bridge({
8
- listen (fn) {
8
+ listen(fn) {
9
window.addEventListener('message', event => {
10
fn(event.data);
11
});
12
},
13
- send (data) {
14
- window.parent.postMessage(data, '*')
15
- }
16
-})
13
+ send(data) {
14
+ window.parent.postMessage(data, '*');
15
+ },
16
+});
17
18
const agent = new Agent();
19
agent.addBridge(bridge);
shells/dev/src/devtools.js
+9
-9
@@ -1,7 +1,7 @@
1
/** @flow */
2
3
import { createElement } from 'react';
4
-import {render } from 'react-dom';
4
+import { render } from 'react-dom';
5
import Bridge from 'src/bridge';
6
import { installHook } from 'src/hook';
7
import { initDevTools } from 'src/devtools';
@@ -9,7 +9,7 @@ import App from 'src/devtools/views/App';
9
10
const iframe = ((document.getElementById('target'): any): HTMLIFrameElement);
11
12
-const {contentDocument, contentWindow} = iframe;
12
+const { contentDocument, contentWindow } = iframe;
13
14
installHook(contentWindow);
15
@@ -19,34 +19,34 @@ initDevTools({
19
const bridge = new Bridge({
20
listen(fn) {
21
contentWindow.parent.addEventListener('message', ({ data }) => {
22
- fn(data)
22
+ fn(data);
23
});
24
},
25
send(data) {
26
contentWindow.postMessage(data, '*');
27
- }
27
+ },
28
});
29
30
cb(bridge);
31
32
render(
33
- createElement(App, {bridge}),
34
- ((document.getElementById('devtools'): any): HTMLElement),
33
+ createElement(App, { bridge }),
34
+ ((document.getElementById('devtools'): any): HTMLElement)
35
);
36
});
37
},
38
39
onReload(reloadFn) {
40
iframe.onload = reloadFn;
41
- }
41
+ },
42
});
43
44
inject('./build/app.js');
45
46
function inject(sourcePath, callback) {
47
- const script = contentDocument.createElement('script')
47
+ const script = contentDocument.createElement('script');
48
script.onload = callback;
49
script.src = sourcePath;
50
51
((contentDocument.body: any): HTMLBodyElement).appendChild(script);
52
-}
\ No newline at end of file
52
+}
shells/dev/webpack.config.js
+2
-2
@@ -1,5 +1,5 @@
1
-const {readFileSync} = require('fs');
2
-const {resolve} = require('path');
1
+const { readFileSync } = require('fs');
2
+const { resolve } = require('path');
3
4
// TODO Share Webpack configs like alias
5
src/backend/agent.js
+56
-28
@@ -2,12 +2,17 @@
2
3
import nullthrows from 'nullthrows';
4
import EventEmitter from 'events';
5
-import {guid} from './utils';
6
-import {ElementTypeOtherOrUnknown} from 'src/devtools/types';
7
-
8
-import type {Fiber, RendererData, RendererID, RendererInterface} from './types';
9
-import type {Bridge} from '../types';
10
-import type {Element} from 'src/devtools/types';
5
+import { guid } from './utils';
6
+import { ElementTypeOtherOrUnknown } from 'src/devtools/types';
7
+
8
+import type {
9
+ Fiber,
10
+ RendererData,
11
+ RendererID,
12
+ RendererInterface,
13
+} from './types';
14
+import type { Bridge } from '../types';
15
+import type { Element } from 'src/devtools/types';
16
17
const debug = (methodName, ...args) => {
18
//console.log(`%cAgent %c${methodName}`, 'color: blue; font-weight: bold;', 'font-weight: bold;', ...args);
@@ -22,7 +27,7 @@ export default class Agent extends EventEmitter {
27
_idToRendererData: Map<string, RendererData> = new Map();
28
_idToRendererID: Map<string, RendererID> = new Map();
29
_isRenderInProgress: boolean = false;
25
- _rendererInterfaces: {[key: RendererID]: RendererInterface} = {};
30
+ _rendererInterfaces: { [key: RendererID]: RendererInterface } = {};
31
_roots: Set<RendererID> = new Set();
32
33
// Tree updates are debounced to reduce bridge traffic and improve performance.
@@ -43,7 +48,10 @@ export default class Agent extends EventEmitter {
48
// TODO Add other methods for e.g. profiling.
49
}
50
46
- setRendererInterface(rendererID: RendererID, rendererInterface: RendererInterface) {
51
+ setRendererInterface(
52
+ rendererID: RendererID,
53
+ rendererInterface: RendererInterface
54
+ ) {
55
this._rendererInterfaces[rendererID] = rendererInterface;
56
}
57
@@ -53,20 +61,19 @@ export default class Agent extends EventEmitter {
61
}
62
if (!this._fiberToID.has(fiber)) {
63
this._fiberToID.set(fiber, guid());
56
- this._idToFiber.set(
57
- nullthrows(this._fiberToID.get(fiber)),
58
- fiber
59
- );
64
+ this._idToFiber.set(nullthrows(this._fiberToID.get(fiber)), fiber);
65
}
66
return nullthrows(this._fiberToID.get(fiber));
67
}
68
69
_crawl(parent: Element, id: string): void {
65
- const data: RendererData = ((this._idToRendererData.get(id): any): RendererData);
70
+ const data: RendererData = ((this._idToRendererData.get(
71
+ id
72
+ ): any): RendererData);
73
if (data.type === ElementTypeOtherOrUnknown) {
74
data.children.forEach(childFiber => {
75
if (childFiber !== null) {
69
- this._crawl(parent, this._getId(childFiber))
76
+ this._crawl(parent, this._getId(childFiber));
77
}
78
});
79
} else {
@@ -77,8 +84,7 @@ export default class Agent extends EventEmitter {
84
}
85
86
_crawlPendingRoots(): void {
80
-console.log('_crawlPendingRoots', this._pendingRoots)
81
- this._pendingRoots.forEach(id => this._crawlRoot(id));
87
+ this._pendingRoots.forEach(id => this._crawlRoot(id));
88
this._pendingRoots.clear();
89
this._lastCrawlTime = performance.now();
90
}
@@ -110,12 +116,12 @@ console.log('_crawlPendingRoots', this._pendingRoots)
116
117
data.children.forEach(childFiber => {
118
if (childFiber !== null) {
113
- this._crawl(nextElement, this._getId(childFiber))
119
+ this._crawl(nextElement, this._getId(childFiber));
120
}
121
});
122
123
if (prevElement == null) {
118
- debug('emit("mount")', id, nextElement)
124
+ debug('emit("mount")', id, nextElement);
125
this.emit('mount', nextElement);
126
} else if (!areElementsEqual(prevElement, nextElement)) {
127
debug('emit("update")', id, nextElement);
@@ -123,21 +129,37 @@ console.log('_crawlPendingRoots', this._pendingRoots)
129
}
130
}
131
126
- _maybeCrawlRoot = () => {
132
+ _maybeCrawlRoot = () => {
133
this._pendingRootTimeoutID = null;
134
if (!this._isRenderInProgress) {
135
this._crawlPendingRoots();
136
}
137
};
138
133
- onHookMount = ({data, fiber, renderer}: {data: RendererData, fiber: Fiber, renderer: RendererID}) => {
139
+ onHookMount = ({
140
+ data,
141
+ fiber,
142
+ renderer,
143
+ }: {
144
+ data: RendererData,
145
+ fiber: Fiber,
146
+ renderer: RendererID,
147
+ }) => {
148
const id = this._getId(fiber);
149
150
this._idToRendererData.set(id, data);
151
this._idToRendererID.set(id, renderer);
152
};
153
140
- onHookRootCommitted = ({data, fiber, renderer}: {data: RendererData, fiber: Fiber, renderer: RendererID}) => {
154
+ onHookRootCommitted = ({
155
+ data,
156
+ fiber,
157
+ renderer,
158
+ }: {
159
+ data: RendererData,
160
+ fiber: Fiber,
161
+ renderer: RendererID,
162
+ }) => {
163
const id = this._getId(fiber);
164
165
this._isRenderInProgress = false;
@@ -147,11 +169,14 @@ console.log('_crawlPendingRoots', this._pendingRoots)
169
if (delta >= THROTTLE_BY_MS) {
170
this._crawlPendingRoots();
171
} else if (this._pendingRootTimeoutID === null) {
150
- this._pendingRootTimeoutID = setTimeout(this._maybeCrawlRoot, THROTTLE_BY_MS - delta);
172
+ this._pendingRootTimeoutID = setTimeout(
173
+ this._maybeCrawlRoot,
174
+ THROTTLE_BY_MS - delta
175
+ );
176
}
177
};
178
154
- onHookUnmount = ({fiber}: {fiber: Fiber}) => {
179
+ onHookUnmount = ({ fiber }: { fiber: Fiber }) => {
180
const id = this._getId(fiber);
181
182
if (this._roots.has(id)) {
@@ -170,7 +195,7 @@ console.log('_crawlPendingRoots', this._pendingRoots)
195
this._idToRendererID.delete(id);
196
};
197
173
- onHookUpdate = ({data, fiber}: {data: RendererData, fiber: Fiber}) => {
198
+ onHookUpdate = ({ data, fiber }: { data: RendererData, fiber: Fiber }) => {
199
const id = this._getId(fiber);
200
201
this._isRenderInProgress = true;
@@ -178,8 +203,11 @@ console.log('_crawlPendingRoots', this._pendingRoots)
203
};
204
}
205
181
-function areElementsEqual(prevElement: ?Element, nextElement: ?Element): boolean {
182
- if (!prevElement || !nextElement) {
206
+function areElementsEqual(
207
+ prevElement: ?Element,
208
+ nextElement: ?Element
209
+): boolean {
210
+ if (!prevElement || !nextElement) {
211
return false;
212
}
213
@@ -188,12 +216,12 @@ function areElementsEqual(prevElement: ?Element, nextElement: ?Element): boolean
216
prevElement.displayName !== nextElement.displayName ||
217
prevElement.children.length !== nextElement.children.length ||
218
prevElement.type !== nextElement.type
191
- ) {
219
+ ) {
220
return false;
221
}
222
223
for (let i = 0; i < prevElement.children.length; i++) {
196
- if (prevElement.children[i] !== nextElement.children[i]) {
224
+ if (prevElement.children[i] !== nextElement.children[i]) {
225
return false;
226
}
227
}
src/backend/index.js
+5
-6
@@ -1,14 +1,13 @@
1
// @flow
2
3
-import type {Hook} from './types';
4
-import type {Bridge} from '../types';
3
+import type { Hook } from './types';
4
import Agent from './agent';
5
6
import { attach } from './renderer';
7
8
export function initBackend(hook: Hook, agent: Agent): void {
9
const subs = [
11
- hook.sub('renderer-attached', ({id, renderer, rendererInterface}) => {
10
+ hook.sub('renderer-attached', ({ id, renderer, rendererInterface }) => {
11
agent.setRendererInterface(id, rendererInterface);
12
rendererInterface.walkTree();
13
}),
@@ -27,7 +26,7 @@ export function initBackend(hook: Hook, agent: Agent): void {
26
hook.emit('renderer-attached', {
27
id,
28
renderer,
30
- rendererInterface
29
+ rendererInterface,
30
});
31
};
32
@@ -38,7 +37,7 @@ export function initBackend(hook: Hook, agent: Agent): void {
37
}
38
39
// Connect any new renderers that injected themselves.
41
- hook.on('renderer', ({id, renderer}) => {
40
+ hook.on('renderer', ({ id, renderer }) => {
41
attachRenderer(id, renderer);
42
});
43
@@ -48,4 +47,4 @@ export function initBackend(hook: Hook, agent: Agent): void {
47
subs.forEach(fn => fn());
48
hook.reactDevtoolsAgent = null;
49
});
51
-};
50
+}
src/backend/renderer.js
+49
-56
@@ -1,6 +1,6 @@
1
// @flow
2
3
-import {gte} from 'semver';
3
+import { gte } from 'semver';
4
import {
5
ElementTypeClassOrFunction,
6
ElementTypeContext,
@@ -12,27 +12,17 @@ import {
12
} from 'src/devtools/types';
13
import { getDisplayName } from './utils';
14
15
-import type {Fiber, Hook, ReactRenderer, RendererData, RendererInterface} from './types';
15
+import type {
16
+ Fiber,
17
+ Hook,
18
+ ReactRenderer,
19
+ RendererData,
20
+ RendererInterface,
21
+} from './types';
22
23
// TODO: If we're profiling, process update
24
// TODO: Throttle process update to app tree
25
20
-// Taken from ReactElement.
21
-function resolveDefaultProps(Component: any, baseProps: Object): Object {
22
- if (Component && Component.defaultProps) {
23
- // Resolve default props. Taken from ReactElement
24
- const props = Object.assign({}, baseProps);
25
- const defaultProps = Component.defaultProps;
26
- for (const propName in defaultProps) {
27
- if (props[propName] === undefined) {
28
- props[propName] = defaultProps[propName];
29
- }
30
- }
31
- return props;
32
- }
33
- return baseProps;
34
-}
35
-
26
function getInternalReactConstants(version) {
27
const ReactSymbols = {
28
CONCURRENT_MODE_NUMBER: 0xeacf,
@@ -152,11 +142,14 @@ function getInternalReactConstants(version) {
142
export function attach(
143
hook: Hook,
144
rendererID: string,
155
- renderer: ReactRenderer,
145
+ renderer: ReactRenderer
146
): RendererInterface {
157
- const {overrideProps} = renderer;
158
- const {ReactTypeOfWork, ReactSymbols, ReactTypeOfSideEffect} = getInternalReactConstants(renderer.version);
159
- const {PerformedWork} = ReactTypeOfSideEffect;
147
+ const {
148
+ ReactTypeOfWork,
149
+ ReactSymbols,
150
+ ReactTypeOfSideEffect,
151
+ } = getInternalReactConstants(renderer.version);
152
+ const { PerformedWork } = ReactTypeOfSideEffect;
153
const {
154
FunctionComponent,
155
ClassComponent,
@@ -228,11 +221,9 @@ export function attach(
221
break;
222
case ForwardRef:
223
const functionName = getDisplayName(resolvedType.render, '');
231
- displayName = resolvedType.displayName || (
232
- functionName !== ''
233
- ? `ForwardRef(${functionName})`
234
- : 'ForwardRef'
235
- );
224
+ displayName =
225
+ resolvedType.displayName ||
226
+ (functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef');
227
rendererData = {
228
children: [],
229
displayName,
@@ -269,14 +260,14 @@ export function attach(
260
};
261
break;
262
default:
272
- const symbolOrNumber = typeof type === 'object' && type !== null
273
- ? type.$$typeof
274
- : type;
263
+ const symbolOrNumber =
264
+ typeof type === 'object' && type !== null ? type.$$typeof : type;
265
266
// $FlowFixMe facebook/flow/issues/2362
277
- const switchValue = typeof symbolOrNumber === 'symbol'
278
- ? symbolOrNumber.toString()
279
- : symbolOrNumber;
267
+ const switchValue =
268
+ typeof symbolOrNumber === 'symbol'
269
+ ? symbolOrNumber.toString()
270
+ : symbolOrNumber;
271
272
switch (switchValue) {
273
case CONCURRENT_MODE_NUMBER:
@@ -295,7 +286,8 @@ export function attach(
286
// 16.3.0 exposed the context object as "context"
287
// PR #12501 changed it to "_context" for 16.3.1+
288
resolvedContext = fiber.type._context || fiber.type.context;
298
- displayName = `${resolvedContext.displayName || 'Context'}.Provider`;
289
+ displayName = `${resolvedContext.displayName ||
290
+ 'Context'}.Provider`;
291
292
rendererData = {
293
children: [],
@@ -312,7 +304,8 @@ export function attach(
304
305
// NOTE: TraceUpdatesBackendManager depends on the name ending in '.Consumer'
306
// If you change the name, figure out a more resilient way to detect it.
315
- displayName = `${resolvedContext.displayName || 'Context'}.Consumer`;
307
+ displayName = `${resolvedContext.displayName ||
308
+ 'Context'}.Consumer`;
309
310
rendererData = {
311
children: [],
@@ -366,7 +359,7 @@ export function attach(
359
break;
360
}
361
369
- const {children} = rendererData;
362
+ const { children } = rendererData;
363
if (isTimedOutSuspense) {
364
// The behavior of timed-out Suspense trees is unique.
365
// Rather than unmount the timed out content (and possibly lose important state),
@@ -400,7 +393,7 @@ export function attach(
393
if (primaryFibers.has(fiber)) {
394
return fiber;
395
}
403
- const {alternate} = fiber;
396
+ const { alternate } = fiber;
397
if (alternate != null && primaryFibers.has(alternate)) {
398
return alternate;
399
}
@@ -419,8 +412,8 @@ export function attach(
412
// We don't reflect bailouts (either referential or sCU) in DevTools.
413
// eslint-disable-next-line no-bitwise
414
return (nextFiber.effectTag & PerformedWork) === PerformedWork;
422
- // Note: ContextConsumer only gets PerformedWork effect in 16.3.3+
423
- // so it won't get highlighted with React 16.3.0 to 16.3.2.
415
+ // Note: ContextConsumer only gets PerformedWork effect in 16.3.3+
416
+ // so it won't get highlighted with React 16.3.0 to 16.3.2.
417
default:
418
// For host components and other types, we compare inputs
419
// to determine whether something is an update.
@@ -432,14 +425,15 @@ export function attach(
425
}
426
}
427
435
- function haveProfilerTimesChanged(prevFiber: Fiber, nextFiber: Fiber): boolean {
428
+ function haveProfilerTimesChanged(
429
+ prevFiber: Fiber,
430
+ nextFiber: Fiber
431
+ ): boolean {
432
return (
433
prevFiber.actualDuration !== undefined && // Short-circuit check for non-profiling builds
438
- (
439
- prevFiber.actualDuration !== nextFiber.actualDuration ||
434
+ (prevFiber.actualDuration !== nextFiber.actualDuration ||
435
prevFiber.actualStartTime !== nextFiber.actualStartTime ||
441
- prevFiber.treeBaseDuration !== nextFiber.treeBaseDuration
442
- )
436
+ prevFiber.treeBaseDuration !== nextFiber.treeBaseDuration)
437
);
438
}
439
@@ -476,10 +470,7 @@ export function attach(
470
function enqueueUpdateIfNecessary(fiber, hasChildOrderChanged) {
471
const data = getRendererDataFromFiber(fiber);
472
479
- if (
480
- !hasChildOrderChanged &&
481
- !hasDataChanged(fiber.alternate, fiber)
482
- ) {
473
+ if (!hasChildOrderChanged && !hasDataChanged(fiber.alternate, fiber)) {
474
// If only timing information has changed, we still need to update the nodes.
475
// But we can do it in a faster way since we know it's safe to skip the children.
476
// It's also important to avoid emitting an "update" signal for the node in this case,
@@ -542,7 +533,7 @@ export function attach(
533
continue;
534
}
535
enqueueMount(node);
545
- if (node == fiber) {
536
+ if (node === fiber) {
537
return;
538
}
539
if (node.sibling) {
@@ -553,7 +544,7 @@ export function attach(
544
while (node.return) {
545
node = node.return;
546
enqueueMount(node);
556
- if (node == fiber) {
547
+ if (node === fiber) {
548
return;
549
}
550
if (node.sibling) {
@@ -568,10 +559,9 @@ export function attach(
559
560
function updateFiber(nextFiber, prevFiber) {
561
// Suspense components only have a non-null memoizedState if they're timed-out.
571
- const isTimedOutSuspense = (
562
+ const isTimedOutSuspense =
563
nextFiber.tag === ReactTypeOfWork.SuspenseComponent &&
573
- nextFiber.memoizedState !== null
574
- );
564
+ nextFiber.memoizedState !== null;
565
566
if (isTimedOutSuspense) {
567
// The behavior of timed-out Suspense trees is unique.
@@ -663,8 +653,11 @@ export function attach(
653
654
if (alternate) {
655
// TODO: relying on this seems a bit fishy.
666
- const wasMounted = alternate.memoizedState != null && alternate.memoizedState.element != null;
667
- const isMounted = current.memoizedState != null && current.memoizedState.element != null;
656
+ const wasMounted =
657
+ alternate.memoizedState != null &&
658
+ alternate.memoizedState.element != null;
659
+ const isMounted =
660
+ current.memoizedState != null && current.memoizedState.element != null;
661
if (!wasMounted && isMounted) {
662
// Mount a new root.
663
mountFiber(current);
@@ -715,4 +708,4 @@ export function attach(
708
walkTree,
709
renderer,
710
};
718
-}
\ No newline at end of file
711
+}
src/backend/types.js
+11
-18
@@ -1,22 +1,11 @@
1
// @flow
2
3
-import type {ElementType} from 'src/devtools/types';
3
+import type { ElementType } from 'src/devtools/types';
4
5
type BundleType =
6
- | 0 // PROD
6
+ | 0 // PROD
7
| 1; // DEV
8
9
-type CompositeUpdater = {
10
- canUpdate: boolean,
11
- setInProps: ?(path: Array<string>, value: any) => void,
12
- setInState: ?(path: Array<string>, value: any) => void,
13
- setInContext: ?(path: Array<string>, value: any) => void,
14
-};
15
-
16
-type NativeUpdater = {
17
- setNativeProps: ?(nativeProps: {[key: string]: any}) => void,
18
-};
19
-
9
// TODO: Better type for Fiber
10
export type Fiber = Object;
11
@@ -43,7 +32,11 @@ export type ReactRenderer = {
32
findFiberByHostInstance: (hostInstance: NativeType) => ?Fiber,
33
version: string,
34
bundleType: BundleType,
46
- overrideProps?: ?(fiber: Object, path: Array<string | number>, value: any) => void,
35
+ overrideProps?: ?(
36
+ fiber: Object,
37
+ path: Array<string | number>,
38
+ value: any
39
+ ) => void,
40
};
41
42
export type RendererInterface = {
@@ -58,12 +51,12 @@ export type RendererInterface = {
51
export type Handler = (data: any) => void;
52
53
export type Hook = {
61
- listeners: {[key: string]: Array<Handler>},
62
- rendererInterfaces: {[key: string]: RendererInterface},
63
- renderers: {[key: string]: ReactRenderer},
54
+ listeners: { [key: string]: Array<Handler> },
55
+ rendererInterfaces: { [key: string]: RendererInterface },
56
+ renderers: { [key: string]: ReactRenderer },
57
58
emit: (evt: string, data: any) => void,
66
- getFiberRoots: (rendererID : string) => Set<Object>,
59
+ getFiberRoots: (rendererID: string) => Set<Object>,
60
inject: (renderer: ReactRenderer) => string | null,
61
on: (evt: string, handler: Handler) => void,
62
off: (evt: string, handler: Handler) => void,
src/backend/utils.js
+11
-3
@@ -3,7 +3,10 @@
3
const FB_MODULE_RE = /^(.*) \[from (.*)\]$/;
4
const cachedDisplayNames: WeakMap<Function, string> = new WeakMap();
5
6
-export function getDisplayName(type: Function, fallbackName: string = 'Unknown'): string {
6
+export function getDisplayName(
7
+ type: Function,
8
+ fallbackName: string = 'Unknown'
9
+): string {
10
const nameFromCache = cachedDisplayNames.get(type);
11
if (nameFromCache != null) {
12
return nameFromCache;
@@ -43,5 +46,10 @@ export function getDisplayName(type: Function, fallbackName: string = 'Unknown')
46
}
47
48
export function guid(): string {
46
- return 'g' + Math.random().toString(16).substr(2);
47
-}
\ No newline at end of file
49
+ return (
50
+ 'g' +
51
+ Math.random()
52
+ .toString(16)
53
+ .substr(2)
54
+ );
55
+}
src/bridge.js
+24
-24
@@ -2,7 +2,7 @@
2
3
import EventEmitter from 'events';
4
5
-import type {Wall} from './types';
5
+import type { Wall } from './types';
6
7
const BATCH_DURATION = 100;
8
@@ -18,17 +18,17 @@ export default class Bridge extends EventEmitter {
18
19
wall: Wall;
20
21
- constructor (wall: Wall) {
21
+ constructor(wall: Wall) {
22
super();
23
24
this.wall = wall;
25
wall.listen(messages => {
26
if (Array.isArray(messages)) {
27
- messages.forEach(message => this._emit(message))
27
+ messages.forEach(message => this._emit(message));
28
} else {
29
- this._emit(messages)
29
+ this._emit(messages);
30
}
31
- })
31
+ });
32
}
33
34
/**
@@ -38,23 +38,23 @@ export default class Bridge extends EventEmitter {
38
* @param {*} payload
39
*/
40
41
- send (event: string, payload: any) {
41
+ send(event: string, payload: any) {
42
const time = this._time;
43
44
if (time === null) {
45
- this.wall.send([{ event, payload }])
46
- this._time = Date.now()
45
+ this.wall.send([{ event, payload }]);
46
+ this._time = Date.now();
47
} else {
48
this._messageQueue.push({
49
event,
50
- payload
51
- })
50
+ payload,
51
+ });
52
53
- const now = Date.now()
53
+ const now = Date.now();
54
if (now - time > BATCH_DURATION) {
55
- this._flush()
55
+ this._flush();
56
} else {
57
- this._timeoutID = setTimeout(() => this._flush(), BATCH_DURATION)
57
+ this._timeoutID = setTimeout(() => this._flush(), BATCH_DURATION);
58
}
59
}
60
}
@@ -65,27 +65,27 @@ export default class Bridge extends EventEmitter {
65
* @param {String} message
66
*/
67
68
- log (message: string): void {
69
- this.send('log', message)
68
+ log(message: string): void {
69
+ this.send('log', message);
70
}
71
72
- _flush () {
72
+ _flush() {
73
if (this._messageQueue.length) {
74
- this.wall.send(this._messageQueue)
74
+ this.wall.send(this._messageQueue);
75
}
76
if (this._timeoutID !== null) {
77
- clearTimeout(this._timeoutID)
77
+ clearTimeout(this._timeoutID);
78
this._timeoutID = null;
79
}
80
- this._messageQueue = []
81
- this._time = null
80
+ this._messageQueue = [];
81
+ this._time = null;
82
}
83
84
- _emit (message: string | Message) {
84
+ _emit(message: string | Message) {
85
if (typeof message === 'string') {
86
- this.emit(message)
86
+ this.emit(message);
87
} else {
88
- this.emit(message.event, message.payload)
88
+ this.emit(message.event, message.payload);
89
}
90
}
91
-}
\ No newline at end of file
91
+}
src/devtools/index.js
+1
-1
@@ -11,4 +11,4 @@ export function initDevTools(shell: Shell) {
11
shell.connect((bridge: Bridge) => {
12
// TODO ...
13
});
14
-}
\ No newline at end of file
14
+}
src/devtools/store.js
+3
-3
@@ -37,7 +37,7 @@ class Store extends EventEmitter {
37
}
38
39
onBridgeMount = (element: Element) => {
40
- const {id} = element;
40
+ const { id } = element;
41
debug('onBridgeMount()', element);
42
this._idToElement.set(id, element);
43
@@ -71,7 +71,7 @@ class Store extends EventEmitter {
71
};
72
73
onBridgeUpdated = (element: Element) => {
74
- const {id} = element;
74
+ const { id } = element;
75
debug('onBridgeUpdated()', element);
76
this._idToElement.set(id, element);
77
@@ -79,4 +79,4 @@ class Store extends EventEmitter {
79
};
80
}
81
82
-export default Store;
\ No newline at end of file
82
+export default Store;
src/devtools/types.js
+1
-8
@@ -8,14 +8,7 @@ export const ElementTypeOtherOrUnknown = 5;
8
export const ElementTypeProfiler = 6;
9
export const ElementTypeSuspense = 7;
10
11
-export type ElementType =
12
- | 1
13
- | 2
14
- | 3
15
- | 4
16
- | 5
17
- | 6
18
- | 7;
11
+export type ElementType = 1 | 2 | 3 | 4 | 5 | 6 | 7;
12
13
// TODO: Add profiling node
14
src/devtools/views/App.css
+6
-5
@@ -14,11 +14,11 @@
14
--color-special05: #aa0d91;
15
--color-special06: #ef6632;
16
--color-special07: #777d88;
17
- --color-state00: #0088FA;
17
+ --color-state00: #0088fa;
18
--color-state01: #dadada;
19
--color-state02: #ffffff;
20
--color-state03: #ebf1fb;
21
- --color-state04: #FFFF00;
21
+ --color-state04: #ffff00;
22
--color-state05: #222222;
23
--color-state06: #222222;
24
@@ -31,7 +31,8 @@
31
--line-height-tree-normal: 1.5;
32
33
/* GitHub.com system fonts */
34
- --font-family-monospace: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
34
+ --font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo,
35
+ Courier, monospace;
36
--font-size-tree-compact: 12px;
37
--font-size-tree-normal: 14px;
38
}
@@ -41,9 +42,9 @@
42
height: 100%;
43
overflow: auto;
44
44
- -webkit-font-smoothing: antialiased;
45
+ -webkit-font-smoothing: antialiased;
46
}
47
48
* {
49
box-sizing: border-box;
49
-}
\ No newline at end of file
50
+}
src/devtools/views/App.js
+3
-3
@@ -3,10 +3,10 @@
3
import React, { useMemo } from 'react';
4
import Store from '../store';
5
import Tree from './Tree';
6
-import {StoreContext} from './contexts';
6
+import { StoreContext } from './contexts';
7
import styles from './App.css';
8
9
-import type {Bridge} from '../../types';
9
+import type { Bridge } from '../../types';
10
11
type Props = {|
12
bridge: Bridge,
@@ -22,4 +22,4 @@ export default function App({ bridge }: Props) {
22
</div>
23
</StoreContext.Provider>
24
);
25
-}
\ No newline at end of file
25
+}
src/devtools/views/Element.css
+3
-3
@@ -28,12 +28,12 @@
28
}
29
.Component:before {
30
white-space: nowrap;
31
- content: "<";
31
+ content: '<';
32
color: var(--color-tree-tag);
33
}
34
.Component:after {
35
white-space: nowrap;
36
- content: ">";
36
+ content: '>';
37
color: var(--color-tree-tag);
38
}
39
@@ -43,4 +43,4 @@
43
44
.AttributeValue {
45
color: var(--color-tree-attr-value);
46
-}
\ No newline at end of file
46
+}
src/devtools/views/Element.js
+15
-12
@@ -1,8 +1,8 @@
1
// @flow
2
3
-import React, {Fragment, useContext} from 'react';
4
-import {useElement} from './hooks';
5
-import {StoreContext} from './contexts';
3
+import React, { Fragment, useContext } from 'react';
4
+import { useElement } from './hooks';
5
+import { StoreContext } from './contexts';
6
7
import styles from './Element.css';
8
@@ -11,25 +11,28 @@ type Props = {|
11
id: string,
12
|};
13
14
-export default function Element({depth, id}: Props) {
14
+export default function Element({ depth, id }: Props) {
15
const store = useContext(StoreContext);
16
const element = useElement(store, id);
17
18
- const {children, displayName, key} = element;
18
+ const { children, displayName, key } = element;
19
20
// TODO: Toggle open/close state
21
22
return (
23
<Fragment>
24
- <div className={styles.Element} style={{paddingLeft: `${1 + depth}rem`}}>
25
- {children.length > 0 && (
26
- <span className={styles.ArrowOpen}></span>
27
- )}
24
+ <div
25
+ className={styles.Element}
26
+ style={{ paddingLeft: `${1 + depth}rem` }}
27
+ >
28
+ {children.length > 0 && <span className={styles.ArrowOpen} />}
29
30
<span className={styles.Component}>
30
- {displayName}{key && (
31
+ {displayName}
32
+ {key && (
33
<Fragment>
32
- <span className={styles.AttributeName}>key</span>=<span className={styles.AttributeValue}>"{key}"</span>
34
+ <span className={styles.AttributeName}>key</span>=
35
+ <span className={styles.AttributeValue}>"{key}"</span>
36
</Fragment>
37
)}
38
</span>
@@ -40,4 +43,4 @@ export default function Element({depth, id}: Props) {
43
))}
44
</Fragment>
45
);
43
-}
\ No newline at end of file
46
+}
src/devtools/views/Tree.css
+2
-2
@@ -5,7 +5,7 @@
5
6
font-family: var(--font-family-monospace);
7
font-size: var(--font-size-tree-compact);
8
-
8
+
9
/* TODO */
10
line-height: var(--line-height-tree-compact);
11
-}
\ No newline at end of file
11
+}
src/devtools/views/Tree.js
+9
-7
@@ -1,21 +1,23 @@
1
// @flow
2
3
-import React, {useContext} from 'react';
3
+import React, { useContext } from 'react';
4
import Element from './Element';
5
-import {StoreContext} from './contexts';
6
-import {useElement, useRoots} from './hooks';
5
+import { StoreContext } from './contexts';
6
+import { useElement, useRoots } from './hooks';
7
8
import styles from './Tree.css';
9
10
type TreeProps = {||};
11
12
-export default function Tree({}: TreeProps) {
12
+export default function Tree(props: TreeProps) {
13
const store = useContext(StoreContext);
14
const roots = useRoots(store);
15
16
return (
17
<div className={styles.Tree}>
18
- {roots.map(id => <Root key={id} id={id} />)}
18
+ {roots.map(id => (
19
+ <Root key={id} id={id} />
20
+ ))}
21
</div>
22
);
23
}
@@ -24,11 +26,11 @@ type RootProps = {|
26
id: string,
27
|};
28
27
-function Root({id}: RootProps) {
29
+function Root({ id }: RootProps) {
30
const store = useContext(StoreContext);
31
const element = useElement(store, id);
32
33
return element.children.map(childID => (
34
<Element key={childID} depth={0} id={childID} />
35
));
34
-}
\ No newline at end of file
36
+}
src/devtools/views/contexts.js
+1
-1
@@ -5,4 +5,4 @@ import { createContext } from 'react';
5
import Store from '../store';
6
7
export const RootsContext = createContext<Array<string>>([]);
8
-export const StoreContext = createContext<Store>(((null: any): Store));
\ No newline at end of file
8
+export const StoreContext = createContext<Store>(((null: any): Store));
src/devtools/views/hooks.js
+6
-4
@@ -1,12 +1,14 @@
1
// @flow
2
3
-import {createContext, useLayoutEffect, useRef, useState} from 'react';
3
+import { useLayoutEffect, useState } from 'react';
4
5
-import type {Element} from '../types';
5
+import type { Element } from '../types';
6
import Store from '../store';
7
8
export function useElement(store: Store, id: string): Element {
9
- const [element, setElement] = useState<Element>(((store.getElement(id): any): Element));
9
+ const [element, setElement] = useState<Element>(
10
+ ((store.getElement(id): any): Element)
11
+ );
12
13
useLayoutEffect(() => {
14
const handler = () => setElement(((store.getElement(id): any): Element));
@@ -27,4 +29,4 @@ export function useRoots(store: Store): Array<string> {
29
}, [store]);
30
31
return roots;
30
-}
\ No newline at end of file
32
+}
src/hook.js
+25
-16
@@ -7,12 +7,12 @@
7
* @flow
8
*/
9
10
-import type {Hook} from './types';
10
+import type { Hook } from './types';
11
12
declare var window: any;
13
14
export function installHook(target: any): Hook {
15
- if (target.hasOwnProperty('__REACT_DEVTOOLS_GLOBAL_HOOK__')) return
15
+ if (target.hasOwnProperty('__REACT_DEVTOOLS_GLOBAL_HOOK__')) return;
16
17
function detectReactBuildType(renderer) {
18
try {
@@ -68,12 +68,16 @@ export function installHook(target: any): Hook {
68
}
69
70
function inject(renderer) {
71
- const id = Math.random().toString(16).slice(2);
71
+ const id = Math.random()
72
+ .toString(16)
73
+ .slice(2);
74
renderers[id] = renderer;
75
74
- const reactBuildType = hasDetectedBadDCE ? 'deadcode' : detectReactBuildType(renderer);
76
+ const reactBuildType = hasDetectedBadDCE
77
+ ? 'deadcode'
78
+ : detectReactBuildType(renderer);
79
76
- hook.emit('renderer', {id, renderer, reactBuildType});
80
+ hook.emit('renderer', { id, renderer, reactBuildType });
81
82
return id;
83
}
@@ -130,7 +134,8 @@ export function installHook(target: any): Hook {
134
const mountedRoots = hook.getFiberRoots(rendererID);
135
const current = root.current;
136
const isKnownRoot = mountedRoots.has(root);
133
- const isUnmounting = current.memoizedState == null || current.memoizedState.element == null;
137
+ const isUnmounting =
138
+ current.memoizedState == null || current.memoizedState.element == null;
139
140
// Keep track of mounted roots so we can hydrate when DevTools connect.
141
if (!isKnownRoot && !isUnmounting) {
@@ -149,7 +154,7 @@ export function installHook(target: any): Hook {
154
const listeners = {};
155
const renderers = {};
156
152
- const hook: Hook = ({
157
+ const hook: Hook = {
158
rendererInterfaces,
159
listeners,
160
renderers,
@@ -169,14 +174,18 @@ export function installHook(target: any): Hook {
174
checkDCE,
175
onCommitFiberUnmount,
176
onCommitFiberRoot,
172
- });
173
-
174
- Object.defineProperty(target, '__REACT_DEVTOOLS_GLOBAL_HOOK__', ({
175
- enumerable: false,
176
- get () {
177
- return hook
178
- }
179
- }: Object));
177
+ };
178
+
179
+ Object.defineProperty(
180
+ target,
181
+ '__REACT_DEVTOOLS_GLOBAL_HOOK__',
182
+ ({
183
+ enumerable: false,
184
+ get() {
185
+ return hook;
186
+ },
187
+ }: Object)
188
+ );
189
190
return hook;
182
-}
\ No newline at end of file
191
+}
src/types.js
+1
-1
@@ -9,4 +9,4 @@ export type Hook = any;
9
export type Wall = {|
10
listen: (fn: Function) => void,
11
send: (data: any) => void,
12
-|};
\ No newline at end of file
12
+|};
yarn.lock
+801
-108
@@ -48,6 +48,17 @@
48
source-map "^0.5.0"
49
trim-right "^1.0.1"
50
51
+"@babel/generator@^7.2.2":
52
+ version "7.3.0"
53
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.0.tgz#f663838cd7b542366de3aa608a657b8ccb2a99eb"
54
+ integrity sha512-dZTwMvTgWfhmibq4V9X+LMf6Bgl7zAodRn9PvcPdhlzFMbvUutx74dbEv7Atz3ToeEpevYEJtAwfxq/bDCzHWg==
55
+ dependencies:
56
+ "@babel/types" "^7.3.0"
57
+ jsesc "^2.5.1"
58
+ lodash "^4.17.10"
59
+ source-map "^0.5.0"
60
+ trim-right "^1.0.1"
61
+
62
"@babel/helper-annotate-as-pure@^7.0.0":
63
version "7.0.0"
64
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
@@ -229,6 +240,11 @@
240
esutils "^2.0.2"
241
js-tokens "^4.0.0"
242
243
+"@babel/parser@^7.0.0", "@babel/parser@^7.2.3":
244
+ version "7.3.1"
245
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.1.tgz#8f4ffd45f779e6132780835ffa7a215fa0b2d181"
246
+ integrity sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==
247
+
248
"@babel/parser@^7.1.2", "@babel/parser@^7.1.6":
249
version "7.1.6"
250
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz#16e97aca1ec1062324a01c5a6a7d0df8dd189854"
@@ -667,6 +683,21 @@
683
"@babel/parser" "^7.1.2"
684
"@babel/types" "^7.1.2"
685
686
+"@babel/traverse@^7.0.0":
687
+ version "7.2.3"
688
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8"
689
+ integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==
690
+ dependencies:
691
+ "@babel/code-frame" "^7.0.0"
692
+ "@babel/generator" "^7.2.2"
693
+ "@babel/helper-function-name" "^7.1.0"
694
+ "@babel/helper-split-export-declaration" "^7.0.0"
695
+ "@babel/parser" "^7.2.3"
696
+ "@babel/types" "^7.2.2"
697
+ debug "^4.1.0"
698
+ globals "^11.1.0"
699
+ lodash "^4.17.10"
700
+
701
"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.1.6":
702
version "7.1.6"
703
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz#c8db9963ab4ce5b894222435482bd8ea854b7b5c"
@@ -691,6 +722,22 @@
722
lodash "^4.17.10"
723
to-fast-properties "^2.0.0"
724
725
+"@babel/types@^7.2.2", "@babel/types@^7.3.0":
726
+ version "7.3.0"
727
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.0.tgz#61dc0b336a93badc02bf5f69c4cd8e1353f2ffc0"
728
+ integrity sha512-QkFPw68QqWU1/RVPyBe8SO7lXbPfjtqAxRYQKpFpaB8yMq7X2qAqfwK5LKoQufEkSmO5NQ70O6Kc3Afk03RwXw==
729
+ dependencies:
730
+ esutils "^2.0.2"
731
+ lodash "^4.17.10"
732
+ to-fast-properties "^2.0.0"
733
+
734
+"@samverschueren/stream-to-observable@^0.3.0":
735
+ version "0.3.0"
736
+ resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
737
+ integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
738
+ dependencies:
739
+ any-observable "^0.3.0"
740
+
741
"@webassemblyjs/ast@1.7.11":
742
version "1.7.11"
743
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace"
@@ -888,7 +935,7 @@ acorn-jsx@^3.0.0:
935
dependencies:
936
acorn "^3.0.4"
937
891
-acorn@^3.0.4, acorn@^3.1.0:
938
+acorn@^3.0.4:
939
version "3.3.0"
940
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
941
@@ -900,7 +947,7 @@ acorn@^5.0.1:
947
version "5.1.1"
948
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
949
903
-acorn@^5.6.2:
950
+acorn@^5.5.0, acorn@^5.6.2:
951
version "5.7.3"
952
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
953
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
@@ -954,6 +1001,11 @@ ajv-keywords@^1.0.0:
1001
version "1.5.1"
1002
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
1003
1004
+ajv-keywords@^2.1.0:
1005
+ version "2.1.1"
1006
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
1007
+ integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=
1008
+
1009
ajv-keywords@^3.1.0:
1010
version "3.2.0"
1011
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
@@ -982,7 +1034,7 @@ ajv@^4.9.1:
1034
co "^4.6.0"
1035
json-stable-stringify "^1.0.1"
1036
985
-ajv@^5.1.0:
1037
+ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0:
1038
version "5.5.2"
1039
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
1040
dependencies:
@@ -1062,6 +1114,11 @@ ansi-styles@^3.2.1:
1114
dependencies:
1115
color-convert "^1.9.0"
1116
1117
+any-observable@^0.3.0:
1118
+ version "0.3.0"
1119
+ resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
1120
+ integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
1121
+
1122
any-promise@^1.0.0, any-promise@^1.1.0, any-promise@~1.3.0:
1123
version "1.3.0"
1124
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
@@ -1132,6 +1189,14 @@ argparse@^1.0.7:
1189
dependencies:
1190
sprintf-js "~1.0.2"
1191
1192
+aria-query@^0.7.0:
1193
+ version "0.7.1"
1194
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e"
1195
+ integrity sha1-Jsu1r/ZBRLCoJb4YRuCxbPoAsR4=
1196
+ dependencies:
1197
+ ast-types-flow "0.0.7"
1198
+ commander "^2.11.0"
1199
+
1200
arr-diff@^2.0.0:
1201
version "2.0.0"
1202
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
@@ -1178,6 +1243,14 @@ array-ify@^1.0.0:
1243
version "1.0.0"
1244
resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
1245
1246
+array-includes@^3.0.3:
1247
+ version "3.0.3"
1248
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
1249
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
1250
+ dependencies:
1251
+ define-properties "^1.1.2"
1252
+ es-abstract "^1.7.0"
1253
+
1254
array-map@~0.0.0:
1255
version "0.0.0"
1256
resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
@@ -1252,6 +1325,11 @@ assign-symbols@^1.0.0:
1325
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
1326
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
1327
1328
+ast-types-flow@0.0.7:
1329
+ version "0.0.7"
1330
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
1331
+ integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
1332
+
1333
astral-regex@^1.0.0:
1334
version "1.0.0"
1335
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
@@ -1332,6 +1410,13 @@ aws4@^1.6.0:
1410
version "1.6.0"
1411
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
1412
1413
+axobject-query@^0.1.0:
1414
+ version "0.1.0"
1415
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0"
1416
+ integrity sha1-YvWdvFnJ+SQnWco0mWDnov48NsA=
1417
+ dependencies:
1418
+ ast-types-flow "0.0.7"
1419
+
1420
babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.3.13:
1421
version "6.22.0"
1422
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
@@ -1403,16 +1488,17 @@ babel-core@^7.0.0-bridge:
1488
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece"
1489
integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
1490
1406
-babel-eslint@6:
1407
- version "6.1.2"
1408
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-6.1.2.tgz#5293419fe3672d66598d327da9694567ba6a5f2f"
1409
- integrity sha1-UpNBn+NnLWZZjTJ9qWlFZ7pqXy8=
1491
+babel-eslint@^9.0.0:
1492
+ version "9.0.0"
1493
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-9.0.0.tgz#7d9445f81ed9f60aff38115f838970df9f2b6220"
1494
+ integrity sha512-itv1MwE3TMbY0QtNfeL7wzak1mV47Uy+n6HtSOO4Xd7rvmO+tsGQSgyOEEgo6Y2vHZKZphaoelNeSVj4vkLA1g==
1495
dependencies:
1411
- babel-traverse "^6.0.20"
1412
- babel-types "^6.0.19"
1413
- babylon "^6.0.18"
1414
- lodash.assign "^4.0.0"
1415
- lodash.pickby "^4.0.0"
1496
+ "@babel/code-frame" "^7.0.0"
1497
+ "@babel/parser" "^7.0.0"
1498
+ "@babel/traverse" "^7.0.0"
1499
+ "@babel/types" "^7.0.0"
1500
+ eslint-scope "3.7.1"
1501
+ eslint-visitor-keys "^1.0.0"
1502
1503
babel-generator@^6.18.0:
1504
version "6.26.0"
@@ -1860,7 +1946,7 @@ babel-template@^6.22.0, babel-template@^6.3.13:
1946
babylon "^6.11.0"
1947
lodash "^4.2.0"
1948
1863
-babel-traverse@^6.0.20, babel-traverse@^6.18.0, babel-traverse@^6.26.0:
1949
+babel-traverse@^6.18.0, babel-traverse@^6.26.0:
1950
version "6.26.0"
1951
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
1952
dependencies:
@@ -1888,7 +1974,7 @@ babel-traverse@^6.22.0, babel-traverse@^6.22.1, babel-traverse@^6.3.21:
1974
invariant "^2.2.0"
1975
lodash "^4.2.0"
1976
1891
-babel-types@^6.0.19, babel-types@^6.18.0, babel-types@^6.26.0:
1977
+babel-types@^6.18.0, babel-types@^6.26.0:
1978
version "6.26.0"
1979
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
1980
dependencies:
@@ -1906,14 +1992,14 @@ babel-types@^6.22.0, babel-types@^6.3.21:
1992
lodash "^4.2.0"
1993
to-fast-properties "^1.0.1"
1994
1909
-babylon@^6.0.18, babylon@^6.18.0:
1910
- version "6.18.0"
1911
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
1912
-
1995
babylon@^6.11.0, babylon@^6.15.0, babylon@^6.3.21:
1996
version "6.15.0"
1997
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e"
1998
1999
+babylon@^6.18.0:
2000
+ version "6.18.0"
2001
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
2002
+
2003
balanced-match@^1.0.0:
2004
version "1.0.0"
2005
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
@@ -2258,12 +2344,26 @@ cache-base@^1.0.1:
2344
union-value "^1.0.0"
2345
unset-value "^1.0.0"
2346
2347
+caller-callsite@^2.0.0:
2348
+ version "2.0.0"
2349
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
2350
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
2351
+ dependencies:
2352
+ callsites "^2.0.0"
2353
+
2354
caller-path@^0.1.0:
2355
version "0.1.0"
2356
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
2357
dependencies:
2358
callsites "^0.2.0"
2359
2360
+caller-path@^2.0.0:
2361
+ version "2.0.0"
2362
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
2363
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
2364
+ dependencies:
2365
+ caller-callsite "^2.0.0"
2366
+
2367
callsites@^0.2.0:
2368
version "0.2.0"
2369
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
@@ -2353,6 +2453,15 @@ chalk@^2.0.1:
2453
escape-string-regexp "^1.0.5"
2454
supports-color "^4.0.0"
2455
2456
+chalk@^2.3.1:
2457
+ version "2.4.2"
2458
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
2459
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
2460
+ dependencies:
2461
+ ansi-styles "^3.2.1"
2462
+ escape-string-regexp "^1.0.5"
2463
+ supports-color "^5.3.0"
2464
+
2465
chalk@^2.4.1:
2466
version "2.4.1"
2467
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
@@ -2508,6 +2617,14 @@ cli-spinners@^1.0.0:
2617
version "1.0.0"
2618
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a"
2619
2620
+cli-truncate@^0.2.1:
2621
+ version "0.2.1"
2622
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
2623
+ integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
2624
+ dependencies:
2625
+ slice-ansi "0.0.4"
2626
+ string-width "^1.0.1"
2627
+
2628
cli-width@^2.0.0:
2629
version "2.1.0"
2630
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
@@ -2622,15 +2739,15 @@ commander@2.9.0:
2739
dependencies:
2740
graceful-readlink ">= 1.0.0"
2741
2625
-commander@^2.6.0:
2626
- version "2.11.0"
2627
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
2628
-
2629
-commander@^2.9.0:
2742
+commander@^2.11.0, commander@^2.14.1, commander@^2.9.0:
2743
version "2.19.0"
2744
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
2745
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
2746
2747
+commander@^2.6.0:
2748
+ version "2.11.0"
2749
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
2750
+
2751
commander@~2.17.1:
2752
version "2.17.1"
2753
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
@@ -2667,7 +2784,7 @@ concat-map@0.0.1:
2784
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
2785
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
2786
2670
-concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.5.2:
2787
+concat-stream@^1.4.10, concat-stream@^1.4.7, concat-stream@^1.5.2:
2788
version "1.6.0"
2789
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
2790
dependencies:
@@ -2675,7 +2792,7 @@ concat-stream@^1.4.10, concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream
2792
readable-stream "^2.2.2"
2793
typedarray "^0.0.6"
2794
2678
-concat-stream@^1.5.0:
2795
+concat-stream@^1.5.0, concat-stream@^1.6.0:
2796
version "1.6.2"
2797
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
2798
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -2718,6 +2835,11 @@ constants-browserify@^1.0.0:
2835
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
2836
integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
2837
2838
+contains-path@^0.1.0:
2839
+ version "0.1.0"
2840
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
2841
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
2842
+
2843
content-type-parser@^1.0.2:
2844
version "1.0.2"
2845
resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7"
@@ -2905,6 +3027,16 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
3027
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
3028
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
3029
3030
+cosmiconfig@^5.0.2:
3031
+ version "5.0.7"
3032
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04"
3033
+ integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==
3034
+ dependencies:
3035
+ import-fresh "^2.0.0"
3036
+ is-directory "^0.3.1"
3037
+ js-yaml "^3.9.0"
3038
+ parse-json "^4.0.0"
3039
+
3040
crc32-stream@^2.0.0:
3041
version "2.0.0"
3042
resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4"
@@ -2974,7 +3106,7 @@ cross-spawn@^4.0.0, cross-spawn@^4.0.2:
3106
lru-cache "^4.0.1"
3107
which "^1.2.9"
3108
2977
-cross-spawn@^5.0.1:
3109
+cross-spawn@^5.0.1, cross-spawn@^5.1.0:
3110
version "5.1.0"
3111
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
3112
dependencies:
@@ -3112,6 +3244,11 @@ d@^0.1.1, d@~0.1.1:
3244
dependencies:
3245
es5-ext "~0.10.2"
3246
3247
+damerau-levenshtein@^1.0.0:
3248
+ version "1.0.4"
3249
+ resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514"
3250
+ integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=
3251
+
3252
dargs@^4.0.1:
3253
version "4.1.0"
3254
resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17"
@@ -3125,6 +3262,11 @@ dashdash@^1.12.0:
3262
dependencies:
3263
assert-plus "^1.0.0"
3264
3265
+date-fns@^1.27.2:
3266
+ version "1.30.1"
3267
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
3268
+ integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
3269
+
3270
date-now@^0.1.4:
3271
version "0.1.4"
3272
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
@@ -3151,7 +3293,7 @@ debug@^2.1.1, debug@^2.2.0:
3293
dependencies:
3294
ms "0.7.2"
3295
3154
-debug@^2.1.2, debug@^2.3.3, debug@^2.6.8:
3296
+debug@^2.1.2, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
3297
version "2.6.9"
3298
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
3299
dependencies:
@@ -3318,7 +3460,7 @@ dispensary@0.10.10:
3460
source-map-support "0.4.15"
3461
yargs "^8.0.1"
3462
3321
-doctrine@^1.2.1:
3463
+doctrine@1.5.0:
3464
version "1.5.0"
3465
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
3466
dependencies:
@@ -3332,6 +3474,13 @@ doctrine@^2.0.0:
3474
esutils "^2.0.2"
3475
isarray "^1.0.0"
3476
3477
+doctrine@^2.1.0:
3478
+ version "2.1.0"
3479
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
3480
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
3481
+ dependencies:
3482
+ esutils "^2.0.2"
3483
+
3484
dom-serializer@0, dom-serializer@~0.1.0:
3485
version "0.1.0"
3486
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
@@ -3440,6 +3589,11 @@ electron-to-chromium@^1.3.82:
3589
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz#2e55df59e818f150a9f61b53471ebf4f0feecc65"
3590
integrity sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw==
3591
3592
+elegant-spinner@^1.0.1:
3593
+ version "1.0.1"
3594
+ resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
3595
+ integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
3596
+
3597
elliptic@^6.0.0:
3598
version "6.4.1"
3599
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
@@ -3453,6 +3607,11 @@ elliptic@^6.0.0:
3607
minimalistic-assert "^1.0.0"
3608
minimalistic-crypto-utils "^1.0.0"
3609
3610
+emoji-regex@^6.1.0:
3611
+ version "6.5.1"
3612
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2"
3613
+ integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==
3614
+
3615
emojis-list@^2.0.0:
3616
version "2.1.0"
3617
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
@@ -3515,6 +3674,18 @@ error-stack-parser@^2.0.2:
3674
dependencies:
3675
stackframe "^1.0.4"
3676
3677
+es-abstract@^1.11.0, es-abstract@^1.7.0:
3678
+ version "1.13.0"
3679
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
3680
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
3681
+ dependencies:
3682
+ es-to-primitive "^1.2.0"
3683
+ function-bind "^1.1.1"
3684
+ has "^1.0.3"
3685
+ is-callable "^1.1.4"
3686
+ is-regex "^1.0.4"
3687
+ object-keys "^1.0.12"
3688
+
3689
es-abstract@^1.5.1:
3690
version "1.10.0"
3691
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
@@ -3533,6 +3704,15 @@ es-to-primitive@^1.1.1:
3704
is-date-object "^1.0.1"
3705
is-symbol "^1.0.1"
3706
3707
+es-to-primitive@^1.2.0:
3708
+ version "1.2.0"
3709
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
3710
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
3711
+ dependencies:
3712
+ is-callable "^1.1.4"
3713
+ is-date-object "^1.0.1"
3714
+ is-symbol "^1.0.2"
3715
+
3716
es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.10, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7:
3717
version "0.10.12"
3718
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047"
@@ -3639,15 +3819,149 @@ escope@^3.6.0:
3819
esrecurse "^4.1.0"
3820
estraverse "^4.1.1"
3821
3822
+eslint-config-prettier@^2.9.0:
3823
+ version "2.10.0"
3824
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.10.0.tgz#ec07bc1d01f87d09f61d3840d112dc8a9791e30b"
3825
+ integrity sha512-Mhl90VLucfBuhmcWBgbUNtgBiK955iCDK1+aHAz7QfDQF6wuzWZ6JjihZ3ejJoGlJWIuko7xLqNm8BA5uenKhA==
3826
+ dependencies:
3827
+ get-stdin "^5.0.1"
3828
+
3829
+eslint-config-react-app@^2.1.0:
3830
+ version "2.1.0"
3831
+ resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-2.1.0.tgz#23c909f71cbaff76b945b831d2d814b8bde169eb"
3832
+ integrity sha512-8QZrKWuHVC57Fmu+SsKAVxnI9LycZl7NFQ4H9L+oeISuCXhYdXqsOOIVSjQFW6JF5MXZLFE+21Syhd7mF1IRZQ==
3833
+
3834
+eslint-config-standard-jsx@^5.0.0:
3835
+ version "5.0.0"
3836
+ resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-5.0.0.tgz#4abfac554f38668e0078c664569e7b2384e5d2aa"
3837
+ integrity sha512-rLToPAEqLMPBfWnYTu6xRhm2OWziS2n40QFqJ8jAM8NSVzeVKTa3nclhsU4DpPJQRY60F34Oo1wi/71PN/eITg==
3838
+
3839
+eslint-config-standard-react@^6.0.0:
3840
+ version "6.0.0"
3841
+ resolved "https://registry.yarnpkg.com/eslint-config-standard-react/-/eslint-config-standard-react-6.0.0.tgz#d366d6c3c092426fd3ae794a4ca0b3cb131f2964"
3842
+ integrity sha512-YWlqfvREbH1r6SaRTgFOq+VE3f8/ZQypkfnpDpSmZjztEjxnzznm4xeE2/mDQRx77Okhd/pKHXNZLMsSneJH8A==
3843
+ dependencies:
3844
+ eslint-config-standard-jsx "^5.0.0"
3845
+
3846
+eslint-config-standard@^11.0.0:
3847
+ version "11.0.0"
3848
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz#87ee0d3c9d95382dc761958cbb23da9eea31e0ba"
3849
+ integrity sha512-oDdENzpViEe5fwuRCWla7AXQd++/oyIp8zP+iP9jiUPG6NBj3SHgdgtl/kTn00AjeN+1HNvavTKmYbMo+xMOlw==
3850
+
3851
+eslint-import-resolver-node@^0.3.2:
3852
+ version "0.3.2"
3853
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
3854
+ integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
3855
+ dependencies:
3856
+ debug "^2.6.9"
3857
+ resolve "^1.5.0"
3858
+
3859
+eslint-module-utils@^2.3.0:
3860
+ version "2.3.0"
3861
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49"
3862
+ integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==
3863
+ dependencies:
3864
+ debug "^2.6.8"
3865
+ pkg-dir "^2.0.0"
3866
+
3867
+eslint-plugin-flowtype@^2.47.1:
3868
+ version "2.50.3"
3869
+ resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f"
3870
+ integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ==
3871
+ dependencies:
3872
+ lodash "^4.17.10"
3873
+
3874
+eslint-plugin-import@^2.11.0:
3875
+ version "2.15.0"
3876
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.15.0.tgz#d8f3c28b8988ccde5df964706faa7c1e52f0602a"
3877
+ integrity sha512-LEHqgR+RcnpGqYW7h9WMkPb/tP+ekKxWdQDztfTtZeV43IHF+X8lXU+1HOCcR4oXD24qRgEwNSxIweD5uNKGVg==
3878
+ dependencies:
3879
+ contains-path "^0.1.0"
3880
+ debug "^2.6.9"
3881
+ doctrine "1.5.0"
3882
+ eslint-import-resolver-node "^0.3.2"
3883
+ eslint-module-utils "^2.3.0"
3884
+ has "^1.0.3"
3885
+ lodash "^4.17.11"
3886
+ minimatch "^3.0.4"
3887
+ read-pkg-up "^2.0.0"
3888
+ resolve "^1.9.0"
3889
+
3890
+eslint-plugin-jsx-a11y@^5:
3891
+ version "5.1.1"
3892
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1"
3893
+ integrity sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ==
3894
+ dependencies:
3895
+ aria-query "^0.7.0"
3896
+ array-includes "^3.0.3"
3897
+ ast-types-flow "0.0.7"
3898
+ axobject-query "^0.1.0"
3899
+ damerau-levenshtein "^1.0.0"
3900
+ emoji-regex "^6.1.0"
3901
+ jsx-ast-utils "^1.4.0"
3902
+
3903
eslint-plugin-no-unsafe-innerhtml@1.0.16:
3904
version "1.0.16"
3905
resolved "https://registry.yarnpkg.com/eslint-plugin-no-unsafe-innerhtml/-/eslint-plugin-no-unsafe-innerhtml-1.0.16.tgz#7d02878c8e9bf7916b88836d5ac122b42f151932"
3906
dependencies:
3907
eslint "^3.7.1"
3908
3648
-eslint-plugin-react@5.1.1:
3649
- version "5.1.1"
3650
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-5.1.1.tgz#869b1dc078a34fe7eab1f587c2bc3cd998befdd6"
3909
+eslint-plugin-node@^6.0.1:
3910
+ version "6.0.1"
3911
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz#bf19642298064379315d7a4b2a75937376fa05e4"
3912
+ integrity sha512-Q/Cc2sW1OAISDS+Ji6lZS2KV4b7ueA/WydVWd1BECTQwVvfQy5JAi3glhINoKzoMnfnuRgNP+ZWKrGAbp3QDxw==
3913
+ dependencies:
3914
+ ignore "^3.3.6"
3915
+ minimatch "^3.0.4"
3916
+ resolve "^1.3.3"
3917
+ semver "^5.4.1"
3918
+
3919
+eslint-plugin-prettier@^2.6.0:
3920
+ version "2.7.0"
3921
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904"
3922
+ integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA==
3923
+ dependencies:
3924
+ fast-diff "^1.1.1"
3925
+ jest-docblock "^21.0.0"
3926
+
3927
+eslint-plugin-promise@^3.7.0:
3928
+ version "3.8.0"
3929
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz#65ebf27a845e3c1e9d6f6a5622ddd3801694b621"
3930
+ integrity sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==
3931
+
3932
+eslint-plugin-react@^7.7.0:
3933
+ version "7.12.4"
3934
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c"
3935
+ integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==
3936
+ dependencies:
3937
+ array-includes "^3.0.3"
3938
+ doctrine "^2.1.0"
3939
+ has "^1.0.3"
3940
+ jsx-ast-utils "^2.0.1"
3941
+ object.fromentries "^2.0.0"
3942
+ prop-types "^15.6.2"
3943
+ resolve "^1.9.0"
3944
+
3945
+eslint-plugin-standard@^3.0.1:
3946
+ version "3.1.0"
3947
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz#2a9e21259ba4c47c02d53b2d0c9135d4b1022d47"
3948
+ integrity sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==
3949
+
3950
+eslint-scope@3.7.1:
3951
+ version "3.7.1"
3952
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
3953
+ integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=
3954
+ dependencies:
3955
+ esrecurse "^4.1.0"
3956
+ estraverse "^4.1.1"
3957
+
3958
+eslint-scope@^3.7.1:
3959
+ version "3.7.3"
3960
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
3961
+ integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==
3962
+ dependencies:
3963
+ esrecurse "^4.1.0"
3964
+ estraverse "^4.1.1"
3965
3966
eslint-scope@^4.0.0:
3967
version "4.0.0"
@@ -3657,42 +3971,10 @@ eslint-scope@^4.0.0:
3971
esrecurse "^4.1.0"
3972
estraverse "^4.1.1"
3973
3660
-eslint@2.10.2:
3661
- version "2.10.2"
3662
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.10.2.tgz#b2309482fef043d3203365a321285e6cce01c3d7"
3663
- dependencies:
3664
- chalk "^1.1.3"
3665
- concat-stream "^1.4.6"
3666
- debug "^2.1.1"
3667
- doctrine "^1.2.1"
3668
- es6-map "^0.1.3"
3669
- escope "^3.6.0"
3670
- espree "3.1.4"
3671
- estraverse "^4.2.0"
3672
- esutils "^2.0.2"
3673
- file-entry-cache "^1.1.1"
3674
- glob "^7.0.3"
3675
- globals "^9.2.0"
3676
- ignore "^3.1.2"
3677
- imurmurhash "^0.1.4"
3678
- inquirer "^0.12.0"
3679
- is-my-json-valid "^2.10.0"
3680
- is-resolvable "^1.0.0"
3681
- js-yaml "^3.5.1"
3682
- json-stable-stringify "^1.0.0"
3683
- lodash "^4.0.0"
3684
- mkdirp "^0.5.0"
3685
- optionator "^0.8.1"
3686
- path-is-absolute "^1.0.0"
3687
- path-is-inside "^1.0.1"
3688
- pluralize "^1.2.1"
3689
- progress "^1.1.8"
3690
- require-uncached "^1.0.2"
3691
- shelljs "^0.6.0"
3692
- strip-json-comments "~1.0.1"
3693
- table "^3.7.8"
3694
- text-table "~0.2.0"
3695
- user-home "^2.0.0"
3974
+eslint-visitor-keys@^1.0.0:
3975
+ version "1.0.0"
3976
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
3977
+ integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
3978
3979
eslint@3.19.0, eslint@^3.7.1:
3980
version "3.19.0"
@@ -3734,12 +4016,49 @@ eslint@3.19.0, eslint@^3.7.1:
4016
text-table "~0.2.0"
4017
user-home "^2.0.0"
4018
3737
-espree@3.1.4:
3738
- version "3.1.4"
3739
- resolved "https://registry.yarnpkg.com/espree/-/espree-3.1.4.tgz#0726d7ac83af97a7c8498da9b363a3609d2a68a1"
4019
+eslint@^4.19.1:
4020
+ version "4.19.1"
4021
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
4022
+ integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==
4023
dependencies:
3741
- acorn "^3.1.0"
3742
- acorn-jsx "^3.0.0"
4024
+ ajv "^5.3.0"
4025
+ babel-code-frame "^6.22.0"
4026
+ chalk "^2.1.0"
4027
+ concat-stream "^1.6.0"
4028
+ cross-spawn "^5.1.0"
4029
+ debug "^3.1.0"
4030
+ doctrine "^2.1.0"
4031
+ eslint-scope "^3.7.1"
4032
+ eslint-visitor-keys "^1.0.0"
4033
+ espree "^3.5.4"
4034
+ esquery "^1.0.0"
4035
+ esutils "^2.0.2"
4036
+ file-entry-cache "^2.0.0"
4037
+ functional-red-black-tree "^1.0.1"
4038
+ glob "^7.1.2"
4039
+ globals "^11.0.1"
4040
+ ignore "^3.3.3"
4041
+ imurmurhash "^0.1.4"
4042
+ inquirer "^3.0.6"
4043
+ is-resolvable "^1.0.0"
4044
+ js-yaml "^3.9.1"
4045
+ json-stable-stringify-without-jsonify "^1.0.1"
4046
+ levn "^0.3.0"
4047
+ lodash "^4.17.4"
4048
+ minimatch "^3.0.2"
4049
+ mkdirp "^0.5.1"
4050
+ natural-compare "^1.4.0"
4051
+ optionator "^0.8.2"
4052
+ path-is-inside "^1.0.2"
4053
+ pluralize "^7.0.0"
4054
+ progress "^2.0.0"
4055
+ regexpp "^1.0.1"
4056
+ require-uncached "^1.0.3"
4057
+ semver "^5.3.0"
4058
+ strip-ansi "^4.0.0"
4059
+ strip-json-comments "~2.0.1"
4060
+ table "4.0.2"
4061
+ text-table "~0.2.0"
4062
4063
espree@^3.4.0:
4064
version "3.4.3"
@@ -3748,6 +4067,14 @@ espree@^3.4.0:
4067
acorn "^5.0.1"
4068
acorn-jsx "^3.0.0"
4069
4070
+espree@^3.5.4:
4071
+ version "3.5.4"
4072
+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
4073
+ integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
4074
+ dependencies:
4075
+ acorn "^5.5.0"
4076
+ acorn-jsx "^3.0.0"
4077
+
4078
esprima@3.1.3, esprima@^3.1.3:
4079
version "3.1.3"
4080
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
@@ -3869,6 +4196,19 @@ execa@^0.8.0:
4196
signal-exit "^3.0.0"
4197
strip-eof "^1.0.0"
4198
4199
+execa@^0.9.0:
4200
+ version "0.9.0"
4201
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01"
4202
+ integrity sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==
4203
+ dependencies:
4204
+ cross-spawn "^5.0.1"
4205
+ get-stream "^3.0.0"
4206
+ is-stream "^1.1.0"
4207
+ npm-run-path "^2.0.0"
4208
+ p-finally "^1.0.0"
4209
+ signal-exit "^3.0.0"
4210
+ strip-eof "^1.0.0"
4211
+
4212
exit-hook@^1.0.0:
4213
version "1.1.1"
4214
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
@@ -3998,6 +4338,11 @@ fast-deep-equal@^2.0.1:
4338
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
4339
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
4340
4341
+fast-diff@^1.1.1:
4342
+ version "1.2.0"
4343
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
4344
+ integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
4345
+
4346
fast-json-parse@^1.0.0:
4347
version "1.0.2"
4348
resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.2.tgz#3fb1ca12db68a85933612cc3fab4d7060cfff1d7"
@@ -4083,7 +4428,7 @@ figgy-pudding@^3.1.0, figgy-pudding@^3.5.1:
4428
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
4429
integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
4430
4086
-figures@^1.3.5:
4431
+figures@^1.3.5, figures@^1.7.0:
4432
version "1.7.0"
4433
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
4434
dependencies:
@@ -4096,13 +4441,6 @@ figures@^2.0.0:
4441
dependencies:
4442
escape-string-regexp "^1.0.5"
4443
4099
-file-entry-cache@^1.1.1:
4100
- version "1.3.1"
4101
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8"
4102
- dependencies:
4103
- flat-cache "^1.2.1"
4104
- object-assign "^4.0.1"
4105
-
4444
file-entry-cache@^2.0.0:
4445
version "2.0.0"
4446
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
@@ -4161,6 +4499,11 @@ find-cache-dir@^2.0.0:
4499
make-dir "^1.0.0"
4500
pkg-dir "^3.0.0"
4501
4502
+find-parent-dir@^0.3.0:
4503
+ version "0.3.0"
4504
+ resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
4505
+ integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=
4506
+
4507
find-up@^1.0.0:
4508
version "1.1.2"
4509
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
@@ -4390,6 +4733,11 @@ function-bind@^1.0.2, function-bind@^1.1.1:
4733
version "1.1.1"
4734
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
4735
4736
+functional-red-black-tree@^1.0.1:
4737
+ version "1.0.1"
4738
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
4739
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
4740
+
4741
fx-runner@1.0.7:
4742
version "1.0.7"
4743
resolved "https://registry.yarnpkg.com/fx-runner/-/fx-runner-1.0.7.tgz#c102cfdf21234c2dbd16723dccb1186f99c0b641"
@@ -4433,6 +4781,11 @@ get-caller-file@^1.0.1:
4781
version "1.0.2"
4782
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
4783
4784
+get-own-enumerable-property-symbols@^3.0.0:
4785
+ version "3.0.0"
4786
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
4787
+ integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
4788
+
4789
get-pkg-repo@^1.0.0:
4790
version "1.4.0"
4791
resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d"
@@ -4451,6 +4804,11 @@ get-stdin@^4.0.1:
4804
version "4.0.1"
4805
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
4806
4807
+get-stdin@^5.0.1:
4808
+ version "5.0.1"
4809
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
4810
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
4811
+
4812
get-stream@^2.2.0:
4813
version "2.3.1"
4814
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
@@ -4595,12 +4953,17 @@ global-modules-path@^2.3.0:
4953
resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc"
4954
integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==
4955
4956
+globals@^11.0.1:
4957
+ version "11.10.0"
4958
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50"
4959
+ integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==
4960
+
4961
globals@^11.1.0:
4962
version "11.9.0"
4963
resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249"
4964
integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==
4965
4603
-globals@^9.0.0, globals@^9.2.0:
4966
+globals@^9.0.0:
4967
version "9.14.0"
4968
resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
4969
@@ -4767,6 +5130,11 @@ has-gulplog@^0.1.0:
5130
dependencies:
5131
sparkles "^1.0.0"
5132
5133
+has-symbols@^1.0.0:
5134
+ version "1.0.0"
5135
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
5136
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
5137
+
5138
has-unicode@^2.0.0:
5139
version "2.0.1"
5140
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -4809,6 +5177,13 @@ has@^1.0.1:
5177
dependencies:
5178
function-bind "^1.0.2"
5179
5180
+has@^1.0.3:
5181
+ version "1.0.3"
5182
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
5183
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
5184
+ dependencies:
5185
+ function-bind "^1.1.1"
5186
+
5187
hash-base@^3.0.0:
5188
version "3.0.4"
5189
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
@@ -4972,18 +5347,27 @@ ignore-walk@^3.0.1:
5347
dependencies:
5348
minimatch "^3.0.4"
5349
4975
-ignore@^3.1.2:
4976
- version "3.2.0"
4977
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435"
4978
-
5350
ignore@^3.2.0:
5351
version "3.3.3"
5352
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
5353
5354
+ignore@^3.3.3, ignore@^3.3.6:
5355
+ version "3.3.10"
5356
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
5357
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
5358
+
5359
immutable@3.7.6:
5360
version "3.7.6"
5361
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b"
5362
5363
+import-fresh@^2.0.0:
5364
+ version "2.0.0"
5365
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
5366
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
5367
+ dependencies:
5368
+ caller-path "^2.0.0"
5369
+ resolve-from "^3.0.0"
5370
+
5371
import-lazy@^2.1.0:
5372
version "2.1.0"
5373
resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
@@ -5013,6 +5397,11 @@ indent-string@^2.1.0:
5397
dependencies:
5398
repeating "^2.0.0"
5399
5400
+indent-string@^3.0.0:
5401
+ version "3.2.0"
5402
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
5403
+ integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
5404
+
5405
indexof@0.0.1:
5406
version "0.0.1"
5407
resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
@@ -5062,7 +5451,7 @@ inquirer@^0.12.0:
5451
strip-ansi "^3.0.0"
5452
through "^2.3.6"
5453
5065
-inquirer@^3.2.2:
5454
+inquirer@^3.0.6, inquirer@^3.2.2:
5455
version "3.3.0"
5456
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
5457
dependencies:
@@ -5151,6 +5540,11 @@ is-callable@^1.1.1, is-callable@^1.1.3:
5540
version "1.1.3"
5541
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
5542
5543
+is-callable@^1.1.4:
5544
+ version "1.1.4"
5545
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
5546
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
5547
+
5548
is-ci@^1.0.10:
5549
version "1.1.0"
5550
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
@@ -5193,6 +5587,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
5587
is-data-descriptor "^1.0.0"
5588
kind-of "^6.0.2"
5589
5590
+is-directory@^0.3.1:
5591
+ version "0.3.1"
5592
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
5593
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
5594
+
5595
is-dotfile@^1.0.0:
5596
version "1.0.3"
5597
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
@@ -5315,10 +5714,17 @@ is-number@^4.0.0:
5714
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
5715
integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
5716
5318
-is-obj@^1.0.0:
5717
+is-obj@^1.0.0, is-obj@^1.0.1:
5718
version "1.0.1"
5719
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
5720
5721
+is-observable@^1.1.0:
5722
+ version "1.1.0"
5723
+ resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
5724
+ integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==
5725
+ dependencies:
5726
+ symbol-observable "^1.1.0"
5727
+
5728
is-path-cwd@^1.0.0:
5729
version "1.0.0"
5730
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
@@ -5375,6 +5781,11 @@ is-regex@^1.0.4:
5781
dependencies:
5782
has "^1.0.1"
5783
5784
+is-regexp@^1.0.0:
5785
+ version "1.0.0"
5786
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
5787
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
5788
+
5789
is-relative@^0.1.0:
5790
version "0.1.3"
5791
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82"
@@ -5401,6 +5812,13 @@ is-symbol@^1.0.1:
5812
version "1.0.1"
5813
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
5814
5815
+is-symbol@^1.0.2:
5816
+ version "1.0.2"
5817
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
5818
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
5819
+ dependencies:
5820
+ has-symbols "^1.0.0"
5821
+
5822
is-text-path@^1.0.0:
5823
version "1.0.1"
5824
resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
@@ -5621,6 +6039,11 @@ jest-diff@^22.1.0:
6039
jest-get-type "^22.1.0"
6040
pretty-format "^22.1.0"
6041
6042
+jest-docblock@^21.0.0:
6043
+ version "21.2.0"
6044
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414"
6045
+ integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==
6046
+
6047
jest-docblock@^22.1.0:
6048
version "22.1.0"
6049
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.1.0.tgz#3fe5986d5444cbcb149746eb4b07c57c5a464dfd"
@@ -5790,6 +6213,16 @@ jest-validate@^22.1.2:
6213
leven "^2.1.0"
6214
pretty-format "^22.1.0"
6215
6216
+jest-validate@^23.5.0:
6217
+ version "23.6.0"
6218
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474"
6219
+ integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==
6220
+ dependencies:
6221
+ chalk "^2.0.1"
6222
+ jest-get-type "^22.1.0"
6223
+ leven "^2.1.0"
6224
+ pretty-format "^23.6.0"
6225
+
6226
jest-worker@^22.1.0:
6227
version "22.1.0"
6228
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.1.0.tgz#0987832fe58fbdc205357f4c19b992446368cafb"
@@ -5854,6 +6287,14 @@ js-yaml@^3.7.0:
6287
argparse "^1.0.7"
6288
esprima "^4.0.0"
6289
6290
+js-yaml@^3.9.0, js-yaml@^3.9.1:
6291
+ version "3.12.1"
6292
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600"
6293
+ integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==
6294
+ dependencies:
6295
+ argparse "^1.0.7"
6296
+ esprima "^4.0.0"
6297
+
6298
jsbn@~0.1.0:
6299
version "0.1.1"
6300
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -5927,6 +6368,11 @@ json-schema@0.2.3:
6368
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
6369
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
6370
6371
+json-stable-stringify-without-jsonify@^1.0.1:
6372
+ version "1.0.1"
6373
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
6374
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
6375
+
6376
json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
6377
version "1.0.1"
6378
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
@@ -6005,6 +6451,18 @@ jsprim@^1.2.2:
6451
json-schema "0.2.3"
6452
verror "1.10.0"
6453
6454
+jsx-ast-utils@^1.4.0:
6455
+ version "1.4.1"
6456
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
6457
+ integrity sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=
6458
+
6459
+jsx-ast-utils@^2.0.1:
6460
+ version "2.0.1"
6461
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
6462
+ integrity sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=
6463
+ dependencies:
6464
+ array-includes "^3.0.3"
6465
+
6466
jszip@^2.4.0:
6467
version "2.6.1"
6468
resolved "https://registry.yarnpkg.com/jszip/-/jszip-2.6.1.tgz#b88f3a7b2e67a2a048152982c7a3756d9c4828f0"
@@ -6141,6 +6599,78 @@ levn@^0.3.0, levn@~0.3.0:
6599
prelude-ls "~1.1.2"
6600
type-check "~0.3.2"
6601
6602
+lint-staged@^7.0.5:
6603
+ version "7.3.0"
6604
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d"
6605
+ integrity sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw==
6606
+ dependencies:
6607
+ chalk "^2.3.1"
6608
+ commander "^2.14.1"
6609
+ cosmiconfig "^5.0.2"
6610
+ debug "^3.1.0"
6611
+ dedent "^0.7.0"
6612
+ execa "^0.9.0"
6613
+ find-parent-dir "^0.3.0"
6614
+ is-glob "^4.0.0"
6615
+ is-windows "^1.0.2"
6616
+ jest-validate "^23.5.0"
6617
+ listr "^0.14.1"
6618
+ lodash "^4.17.5"
6619
+ log-symbols "^2.2.0"
6620
+ micromatch "^3.1.8"
6621
+ npm-which "^3.0.1"
6622
+ p-map "^1.1.1"
6623
+ path-is-inside "^1.0.2"
6624
+ pify "^3.0.0"
6625
+ please-upgrade-node "^3.0.2"
6626
+ staged-git-files "1.1.1"
6627
+ string-argv "^0.0.2"
6628
+ stringify-object "^3.2.2"
6629
+
6630
+listr-silent-renderer@^1.1.1:
6631
+ version "1.1.1"
6632
+ resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
6633
+ integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
6634
+
6635
+listr-update-renderer@^0.5.0:
6636
+ version "0.5.0"
6637
+ resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2"
6638
+ integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==
6639
+ dependencies:
6640
+ chalk "^1.1.3"
6641
+ cli-truncate "^0.2.1"
6642
+ elegant-spinner "^1.0.1"
6643
+ figures "^1.7.0"
6644
+ indent-string "^3.0.0"
6645
+ log-symbols "^1.0.2"
6646
+ log-update "^2.3.0"
6647
+ strip-ansi "^3.0.1"
6648
+
6649
+listr-verbose-renderer@^0.5.0:
6650
+ version "0.5.0"
6651
+ resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db"
6652
+ integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==
6653
+ dependencies:
6654
+ chalk "^2.4.1"
6655
+ cli-cursor "^2.1.0"
6656
+ date-fns "^1.27.2"
6657
+ figures "^2.0.0"
6658
+
6659
+listr@^0.14.1:
6660
+ version "0.14.3"
6661
+ resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586"
6662
+ integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==
6663
+ dependencies:
6664
+ "@samverschueren/stream-to-observable" "^0.3.0"
6665
+ is-observable "^1.1.0"
6666
+ is-promise "^2.1.0"
6667
+ is-stream "^1.1.0"
6668
+ listr-silent-renderer "^1.1.1"
6669
+ listr-update-renderer "^0.5.0"
6670
+ listr-verbose-renderer "^0.5.0"
6671
+ p-map "^2.0.0"
6672
+ rxjs "^6.3.3"
6673
+
6674
load-json-file@^1.0.0:
6675
version "1.1.0"
6676
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -6234,11 +6764,6 @@ lodash._root@^3.0.0:
6764
version "3.0.1"
6765
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
6766
6237
-lodash.assign@^4.0.0:
6238
- version "4.2.0"
6239
- resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
6240
- integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=
6241
-
6767
lodash.assignin@^4.0.9:
6768
version "4.2.0"
6769
resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
@@ -6306,11 +6831,6 @@ lodash.pick@^4.2.1:
6831
version "4.4.0"
6832
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
6833
6309
-lodash.pickby@^4.0.0:
6310
- version "4.6.0"
6311
- resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff"
6312
- integrity sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=
6313
-
6834
lodash.reduce@^4.4.0:
6835
version "4.6.0"
6836
resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
@@ -6373,11 +6893,25 @@ lodash@^4.0.0, lodash@^4.0.1, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lod
6893
version "4.17.4"
6894
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
6895
6376
-lodash@^4.17.10, lodash@^4.17.11:
6896
+lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5:
6897
version "4.17.11"
6898
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
6899
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
6900
6901
+log-symbols@^1.0.2:
6902
+ version "1.0.2"
6903
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
6904
+ integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
6905
+ dependencies:
6906
+ chalk "^1.0.0"
6907
+
6908
+log-symbols@^2.2.0:
6909
+ version "2.2.0"
6910
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
6911
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
6912
+ dependencies:
6913
+ chalk "^2.0.1"
6914
+
6915
log-update@^2.0.0:
6916
version "2.0.0"
6917
resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.0.0.tgz#7f4354d7be1be62b724fcbb3c4b94454c0db5e26"
@@ -6386,6 +6920,15 @@ log-update@^2.0.0:
6920
cli-cursor "^2.0.0"
6921
wrap-ansi "^2.1.0"
6922
6923
+log-update@^2.3.0:
6924
+ version "2.3.0"
6925
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
6926
+ integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
6927
+ dependencies:
6928
+ ansi-escapes "^3.0.0"
6929
+ cli-cursor "^2.0.0"
6930
+ wrap-ansi "^3.0.1"
6931
+
6932
longest@^1.0.1:
6933
version "1.0.1"
6934
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
@@ -7011,12 +7554,28 @@ npm-packlist@^1.1.6:
7554
ignore-walk "^3.0.1"
7555
npm-bundled "^1.0.1"
7556
7557
+npm-path@^2.0.2:
7558
+ version "2.0.4"
7559
+ resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
7560
+ integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
7561
+ dependencies:
7562
+ which "^1.2.10"
7563
+
7564
npm-run-path@^2.0.0:
7565
version "2.0.2"
7566
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
7567
dependencies:
7568
path-key "^2.0.0"
7569
7570
+npm-which@^3.0.1:
7571
+ version "3.0.1"
7572
+ resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
7573
+ integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=
7574
+ dependencies:
7575
+ commander "^2.9.0"
7576
+ npm-path "^2.0.2"
7577
+ which "^1.2.10"
7578
+
7579
npmlog@^4.0.2, npmlog@^4.1.2:
7580
version "4.1.2"
7581
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
@@ -7071,6 +7630,11 @@ object-copy@^0.1.0:
7630
define-property "^0.2.5"
7631
kind-of "^3.0.3"
7632
7633
+object-keys@^1.0.12:
7634
+ version "1.0.12"
7635
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
7636
+ integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==
7637
+
7638
object-keys@^1.0.8:
7639
version "1.0.11"
7640
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
@@ -7082,6 +7646,16 @@ object-visit@^1.0.0:
7646
dependencies:
7647
isobject "^3.0.0"
7648
7649
+object.fromentries@^2.0.0:
7650
+ version "2.0.0"
7651
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab"
7652
+ integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==
7653
+ dependencies:
7654
+ define-properties "^1.1.2"
7655
+ es-abstract "^1.11.0"
7656
+ function-bind "^1.1.1"
7657
+ has "^1.0.1"
7658
+
7659
object.getownpropertydescriptors@^2.0.3:
7660
version "2.0.3"
7661
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
@@ -7243,6 +7817,16 @@ p-locate@^3.0.0:
7817
dependencies:
7818
p-limit "^2.0.0"
7819
7820
+p-map@^1.1.1:
7821
+ version "1.2.0"
7822
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
7823
+ integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
7824
+
7825
+p-map@^2.0.0:
7826
+ version "2.0.0"
7827
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.0.0.tgz#be18c5a5adeb8e156460651421aceca56c213a50"
7828
+ integrity sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==
7829
+
7830
p-try@^2.0.0:
7831
version "2.0.0"
7832
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
@@ -7355,7 +7939,7 @@ path-is-absolute@^1.0.0:
7939
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
7940
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
7941
7358
-path-is-inside@^1.0.1:
7942
+path-is-inside@^1.0.1, path-is-inside@^1.0.2:
7943
version "1.0.2"
7944
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
7945
@@ -7367,6 +7951,11 @@ path-parse@^1.0.5:
7951
version "1.0.5"
7952
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
7953
7954
+path-parse@^1.0.6:
7955
+ version "1.0.6"
7956
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
7957
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
7958
+
7959
path-type@^1.0.0:
7960
version "1.1.0"
7961
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
@@ -7460,10 +8049,22 @@ pkg-dir@^3.0.0:
8049
dependencies:
8050
find-up "^3.0.0"
8051
8052
+please-upgrade-node@^3.0.2:
8053
+ version "3.1.1"
8054
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac"
8055
+ integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==
8056
+ dependencies:
8057
+ semver-compare "^1.0.0"
8058
+
8059
pluralize@^1.2.1:
8060
version "1.2.1"
8061
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
8062
8063
+pluralize@^7.0.0:
8064
+ version "7.0.0"
8065
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
8066
+ integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
8067
+
8068
pn@^1.1.0:
8069
version "1.1.0"
8070
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
@@ -7539,6 +8140,11 @@ preserve@^0.2.0:
8140
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
8141
integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
8142
8143
+prettier@^1.16.1:
8144
+ version "1.16.1"
8145
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.1.tgz#534c2c9d7853f8845e5e078384e71973bd74089f"
8146
+ integrity sha512-XXUITwIkGb3CPJ2hforHah/zTINRyie5006Jd2HKy2qz7snEJXl0KLfsJZW/wst9g6R2rFvqba3VpNYdu1hDcA==
8147
+
8148
pretty-format@^22.1.0:
8149
version "22.1.0"
8150
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.1.0.tgz#2277605b40ed4529ae4db51ff62f4be817647914"
@@ -7546,6 +8152,14 @@ pretty-format@^22.1.0:
8152
ansi-regex "^3.0.0"
8153
ansi-styles "^3.2.0"
8154
8155
+pretty-format@^23.6.0:
8156
+ version "23.6.0"
8157
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760"
8158
+ integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==
8159
+ dependencies:
8160
+ ansi-regex "^3.0.0"
8161
+ ansi-styles "^3.2.0"
8162
+
8163
private@^0.1.6:
8164
version "0.1.6"
8165
resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
@@ -7569,6 +8183,11 @@ progress@^1.1.8:
8183
version "1.1.8"
8184
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
8185
8186
+progress@^2.0.0:
8187
+ version "2.0.3"
8188
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
8189
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
8190
+
8191
promise-inflight@^1.0.1:
8192
version "1.0.1"
8193
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
@@ -7993,6 +8612,11 @@ regex-not@^1.0.0, regex-not@^1.0.2:
8612
extend-shallow "^3.0.2"
8613
safe-regex "^1.1.0"
8614
8615
+regexpp@^1.0.1:
8616
+ version "1.1.0"
8617
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
8618
+ integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==
8619
+
8620
regexpu-core@^1.0.0:
8621
version "1.0.0"
8622
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -8184,7 +8808,7 @@ require-main-filename@^1.0.1:
8808
version "1.0.1"
8809
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
8810
8187
-require-uncached@1.0.3, require-uncached@^1.0.2:
8811
+require-uncached@1.0.3, require-uncached@^1.0.2, require-uncached@^1.0.3:
8812
version "1.0.3"
8813
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
8814
dependencies:
@@ -8225,6 +8849,13 @@ resolve@^1.3.2:
8849
dependencies:
8850
path-parse "^1.0.5"
8851
8852
+resolve@^1.3.3, resolve@^1.5.0, resolve@^1.9.0:
8853
+ version "1.10.0"
8854
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
8855
+ integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==
8856
+ dependencies:
8857
+ path-parse "^1.0.6"
8858
+
8859
restore-cursor@^1.0.1:
8860
version "1.0.1"
8861
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
@@ -8315,6 +8946,13 @@ rx-lite@^3.1.2:
8946
version "3.1.2"
8947
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
8948
8949
+rxjs@^6.3.3:
8950
+ version "6.3.3"
8951
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55"
8952
+ integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==
8953
+ dependencies:
8954
+ tslib "^1.9.0"
8955
+
8956
safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
8957
version "5.1.1"
8958
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
@@ -8387,6 +9025,11 @@ schema-utils@^1.0.0:
9025
ajv-errors "^1.0.0"
9026
ajv-keywords "^3.1.0"
9027
9028
+semver-compare@^1.0.0:
9029
+ version "1.0.0"
9030
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
9031
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
9032
+
9033
semver-diff@^2.0.0:
9034
version "2.1.0"
9035
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
@@ -8493,10 +9136,6 @@ shelljs@0.7.7:
9136
interpret "^1.0.0"
9137
rechoir "^0.6.2"
9138
8496
-shelljs@^0.6.0:
8497
- version "0.6.1"
8498
- resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8"
8499
-
9139
shelljs@^0.7.5:
9140
version "0.7.8"
9141
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
@@ -8540,6 +9179,13 @@ slice-ansi@0.0.4:
9179
version "0.0.4"
9180
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
9181
9182
+slice-ansi@1.0.0:
9183
+ version "1.0.0"
9184
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
9185
+ integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
9186
+ dependencies:
9187
+ is-fullwidth-code-point "^2.0.0"
9188
+
9189
slide@^1.1.5:
9190
version "1.1.6"
9191
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
@@ -8749,6 +9395,11 @@ stackframe@^1.0.4:
9395
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b"
9396
integrity sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==
9397
9398
+staged-git-files@1.1.1:
9399
+ version "1.1.1"
9400
+ resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.1.tgz#37c2218ef0d6d26178b1310719309a16a59f8f7b"
9401
+ integrity sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==
9402
+
9403
static-extend@^0.1.1:
9404
version "0.1.2"
9405
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -8815,6 +9466,11 @@ stream-to-promise@2.2.0:
9466
end-of-stream "~1.1.0"
9467
stream-to-array "~2.3.0"
9468
9469
+string-argv@^0.0.2:
9470
+ version "0.0.2"
9471
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
9472
+ integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY=
9473
+
9474
string-length@^2.0.0:
9475
version "2.0.0"
9476
resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
@@ -8863,6 +9519,15 @@ string_decoder@~1.0.3:
9519
dependencies:
9520
safe-buffer "~5.1.0"
9521
9522
+stringify-object@^3.2.2:
9523
+ version "3.3.0"
9524
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
9525
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
9526
+ dependencies:
9527
+ get-own-enumerable-property-symbols "^3.0.0"
9528
+ is-obj "^1.0.1"
9529
+ is-regexp "^1.0.0"
9530
+
9531
stringstream@~0.0.4:
9532
version "0.0.6"
9533
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72"
@@ -8918,10 +9583,6 @@ strip-indent@^1.0.1:
9583
dependencies:
9584
get-stdin "^4.0.1"
9585
8921
-strip-json-comments@~1.0.1:
8922
- version "1.0.4"
8923
- resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
8924
-
9586
strip-json-comments@~2.0.1:
9587
version "2.0.1"
9588
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
@@ -8968,10 +9629,27 @@ supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
9629
dependencies:
9630
has-flag "^3.0.0"
9631
9632
+symbol-observable@^1.1.0:
9633
+ version "1.2.0"
9634
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
9635
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
9636
+
9637
symbol-tree@^3.2.2:
9638
version "3.2.2"
9639
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
9640
9641
+table@4.0.2:
9642
+ version "4.0.2"
9643
+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
9644
+ integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==
9645
+ dependencies:
9646
+ ajv "^5.2.3"
9647
+ ajv-keywords "^2.1.0"
9648
+ chalk "^2.1.0"
9649
+ lodash "^4.17.4"
9650
+ slice-ansi "1.0.0"
9651
+ string-width "^2.1.1"
9652
+
9653
table@^3.7.8:
9654
version "3.8.3"
9655
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -9746,6 +10424,13 @@ which@^1.0.5, which@^1.2.8, which@^1.2.9:
10424
dependencies:
10425
isexe "^1.1.1"
10426
10427
+which@^1.2.10:
10428
+ version "1.3.1"
10429
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
10430
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
10431
+ dependencies:
10432
+ isexe "^2.0.0"
10433
+
10434
which@^1.2.12:
10435
version "1.2.14"
10436
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
@@ -9808,6 +10493,14 @@ wrap-ansi@^2.0.0, wrap-ansi@^2.1.0:
10493
string-width "^1.0.1"
10494
strip-ansi "^3.0.1"
10495
10496
+wrap-ansi@^3.0.1:
10497
+ version "3.0.1"
10498
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
10499
+ integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
10500
+ dependencies:
10501
+ string-width "^2.1.1"
10502
+ strip-ansi "^4.0.0"
10503
+
10504
wrappy@1:
10505
version "1.0.2"
10506
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"