@samitouri / QOS-React-2 / commits / f881c32304

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 - &nbsp;<span className={styles.AttributeName}>key</span>=<span className={styles.AttributeValue}>"{key}"</span>
34 + &nbsp;<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"