Thibault Malbranche 5 years ago
parent
commit
9bc43ae551
14 changed files with 949 additions and 279 deletions
  1. 75
    0
      .eslintrc.js
  2. 3
    1
      .gitignore
  3. 10
    0
      .prettierrc.js
  4. 9
    0
      .vscode/settings.json
  5. 7
    0
      index.d.ts
  6. 2
    1
      index.js
  7. 15
    5
      package.json
  8. 113
    100
      src/WebView.android.tsx
  9. 156
    138
      src/WebView.ios.tsx
  10. 1
    3
      src/WebViewShared.ts
  11. 0
    0
      src/WebViewTypes.flow.js
  12. 14
    9
      src/WebViewTypes.ts
  13. 4
    0
      tsconfig.json
  14. 540
    22
      yarn.lock

+ 75
- 0
.eslintrc.js View File

1
+module.exports = {
2
+  // Airbnb is the base, prettier is here so that eslint doesn't conflict with prettier
3
+  extends: ['airbnb', 'prettier', 'prettier/react'],
4
+  parser: '@typescript-eslint/parser',
5
+  plugins: ['react', 'react-native', 'import', '@typescript-eslint'],
6
+  rules: {
7
+    'no-console': 'off',
8
+    // Lines will be broken before binary operators
9
+    'operator-linebreak': ['error', 'before'],
10
+    // Allow imports from dev and peer dependencies
11
+    'import/no-extraneous-dependencies': [
12
+      'error',
13
+      { devDependencies: true, peerDependencies: true },
14
+    ],
15
+    'react/jsx-filename-extension': ['error', { extensions: ['.tsx'] }],
16
+    // This rule doesn't play nice with Prettier
17
+    'react/jsx-one-expression-per-line': 'off',
18
+    // This rule doesn't play nice with Prettier
19
+    'react/jsx-wrap-multilines': 'off',
20
+    // Remove this rule because we only destructure props, but never state
21
+    'react/destructuring-assignment': 'off',
22
+    'react/prop-types': 'off',
23
+    '@typescript-eslint/adjacent-overload-signatures': 'error',
24
+    '@typescript-eslint/array-type': ['error', 'array'],
25
+    '@typescript-eslint/generic-type-naming': ['error', '^[a-zA-Z]+$'],
26
+    '@typescript-eslint/no-angle-bracket-type-assertion': 'error',
27
+    '@typescript-eslint/no-array-constructor': 'error',
28
+    '@typescript-eslint/no-empty-interface': 'error',
29
+    '@typescript-eslint/no-explicit-any': 'error',
30
+    '@typescript-eslint/no-extraneous-class': 'error',
31
+    '@typescript-eslint/no-inferrable-types': 'error',
32
+    '@typescript-eslint/no-misused-new': 'error',
33
+    '@typescript-eslint/no-namespace': 'error',
34
+    '@typescript-eslint/no-non-null-assertion': 'error',
35
+    '@typescript-eslint/no-object-literal-type-assertion': 'error',
36
+    '@typescript-eslint/no-parameter-properties': 'error',
37
+    '@typescript-eslint/no-this-alias': 'error',
38
+    '@typescript-eslint/no-triple-slash-reference': 'error',
39
+    '@typescript-eslint/no-type-alias': [
40
+      'error',
41
+      {
42
+        allowAliases: 'always',
43
+        allowCallbacks: 'always',
44
+        allowMappedTypes: 'always',
45
+      },
46
+    ],
47
+    '@typescript-eslint/no-unused-vars': [
48
+      'error',
49
+      { ignoreRestSiblings: true },
50
+    ],
51
+    '@typescript-eslint/prefer-interface': 'error',
52
+    '@typescript-eslint/prefer-namespace-keyword': 'error',
53
+    '@typescript-eslint/type-annotation-spacing': 'error',
54
+  },
55
+  settings: {
56
+    'import/resolver': {
57
+      node: {
58
+        extensions: [
59
+          '.js',
60
+          '.android.js',
61
+          '.ios.js',
62
+          '.jsx',
63
+          '.android.jsx',
64
+          '.ios.jsx',
65
+          '.tsx',
66
+          '.ts',
67
+          '.android.tsx',
68
+          '.android.ts',
69
+          '.ios.tsx',
70
+          '.ios.ts',
71
+        ],
72
+      },
73
+    },
74
+  },
75
+};

+ 3
- 1
.gitignore View File

51
 
51
 
52
 android/gradle
52
 android/gradle
53
 android/gradlew
53
 android/gradlew
54
-android/gradlew.bat
54
+android/gradlew.bat
55
+
56
+lib/

+ 10
- 0
.prettierrc.js View File

1
+// https://prettier.io/docs/en/options.html
2
+
3
+module.exports = {
4
+  // Enables semicolons at the end of statements
5
+  semi: true,
6
+  // Formats strings with single quotes ('') instead of quotes ("")
7
+  singleQuote: true,
8
+  // Adds a trailing comma at the end of all lists (including function arguments)
9
+  trailingComma: 'all',
10
+};

+ 9
- 0
.vscode/settings.json View File

1
+{
2
+  "typescript.tsdk": "node_modules/typescript/lib",
3
+  "eslint.validate": [
4
+    "javascript",
5
+    "javascriptreact",
6
+    "typescript",
7
+    "typescriptreact"
8
+  ]
9
+}

+ 7
- 0
index.d.ts View File

1
+import WebViewIOS from './lib/WebView.ios';
2
+import WebViewAndroid from './lib/WebView.android';
3
+
4
+declare const WebView: WebViewIOS | WebViewAndroid;
5
+
6
+export { WebView };
7
+export default WebView;

+ 2
- 1
index.js View File

1
-import WebView from './js/WebView';
1
+import WebView from './lib/WebView';
2
 
2
 
3
 export { WebView };
3
 export { WebView };
4
+export default WebView;

+ 15
- 5
package.json View File

11
   "version": "5.3.1",
11
   "version": "5.3.1",
12
   "homepage": "https://github.com/react-native-community/react-native-webview#readme",
12
   "homepage": "https://github.com/react-native-community/react-native-webview#readme",
13
   "scripts": {
13
   "scripts": {
14
-    "test:js": "jest",
15
-    "test:ios:flow": "flow check",
16
-    "test:android:flow": "flow check --flowconfig-name .flowconfig.android",
14
+    "prepare": "yarn tsc",
15
+    "test:js": "yarn jest",
16
+    "test:ts": "yarn tsc --noEmit && yarn eslint ./src --ext .ts,.tsx",
17
     "ci:publish": "yarn semantic-release",
17
     "ci:publish": "yarn semantic-release",
18
-    "ci:test": "yarn ci:test:flow && yarn ci:test:js",
19
-    "ci:test:flow": "yarn test:ios:flow && yarn test:android:flow",
18
+    "ci:test": "yarn ci:test:ts && yarn ci:test:js",
20
     "ci:test:js": "yarn test:js",
19
     "ci:test:js": "yarn test:js",
20
+    "ci:test:ts": "yarn test:ts",
21
     "semantic-release": "semantic-release"
21
     "semantic-release": "semantic-release"
22
   },
22
   },
23
   "peerDependencies": {
23
   "peerDependencies": {
35
     "@types/invariant": "^2.2.29",
35
     "@types/invariant": "^2.2.29",
36
     "@types/react": "^16.6.3",
36
     "@types/react": "^16.6.3",
37
     "@types/react-native": "0.57.40",
37
     "@types/react-native": "0.57.40",
38
+    "@typescript-eslint/eslint-plugin": "1.4.2",
39
+    "@typescript-eslint/parser": "1.4.2",
40
+    "babel-eslint": "10.0.1",
38
     "babel-jest": "^24.0.0",
41
     "babel-jest": "^24.0.0",
39
     "flow-bin": "^0.80.0",
42
     "flow-bin": "^0.80.0",
43
+    "eslint": "5.15.1",
44
+    "eslint-config-airbnb": "17.1.0",
45
+    "eslint-config-prettier": "4.1.0",
46
+    "eslint-plugin-import": "2.16.0",
47
+    "eslint-plugin-jsx-a11y": "6.2.1",
48
+    "eslint-plugin-react": "7.12.4",
49
+    "eslint-plugin-react-native": "3.6.0",
40
     "jest": "^24.0.0",
50
     "jest": "^24.0.0",
41
     "metro-react-native-babel-preset": "^0.51.1",
51
     "metro-react-native-babel-preset": "^0.51.1",
42
     "react": "16.6.3",
52
     "react": "16.6.3",

+ 113
- 100
src/WebView.android.tsx View File

34
 
34
 
35
 const UIManager = NotTypedUIManager as CustomUIManager;
35
 const UIManager = NotTypedUIManager as CustomUIManager;
36
 
36
 
37
-const resolveAssetSource = Image.resolveAssetSource;
37
+const RNCWebView = requireNativeComponent(
38
+  'RNCWebView',
39
+) as typeof NativeWebViewAndroid;
40
+const { resolveAssetSource } = Image;
38
 
41
 
39
 const defaultRenderLoading = () => (
42
 const defaultRenderLoading = () => (
40
   <View style={styles.loadingView}>
43
   <View style={styles.loadingView}>
70
 
73
 
71
   webViewRef = React.createRef<NativeWebViewAndroid>();
74
   webViewRef = React.createRef<NativeWebViewAndroid>();
72
 
75
 
73
-  render() {
74
-    const {
75
-      onMessage,
76
-      onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
77
-      originWhitelist,
78
-      renderError,
79
-      renderLoading,
80
-      source,
81
-      style,
82
-      nativeConfig = {},
83
-      ...otherProps
84
-    } = this.props;
85
-    let otherView = null;
86
-
87
-    if (this.state.viewState === 'LOADING') {
88
-      otherView = (renderLoading || defaultRenderLoading)();
89
-    } else if (this.state.viewState === 'ERROR') {
90
-      const errorEvent = this.state.lastErrorEvent;
91
-      invariant(errorEvent != null, 'lastErrorEvent expected to be non-null');
92
-      otherView =
93
-        renderError &&
94
-        renderError(errorEvent.domain, errorEvent.code, errorEvent.description);
95
-    } else if (this.state.viewState !== 'IDLE') {
96
-      console.error(
97
-        'RNCWebView invalid state encountered: ' + this.state.viewState,
98
-      );
99
-    }
100
-
101
-    const webViewStyles = [styles.container, style];
102
-    if (
103
-      this.state.viewState === 'LOADING' ||
104
-      this.state.viewState === 'ERROR'
105
-    ) {
106
-      // if we're in either LOADING or ERROR states, don't show the webView
107
-      webViewStyles.push(styles.hidden);
108
-    }
109
-
110
-    if (
111
-      (source as WebViewUriSource).method === 'POST' &&
112
-      (source as WebViewUriSource).headers
113
-    ) {
114
-      console.warn(
115
-        'WebView: `source.headers` is not supported when using POST.',
116
-      );
117
-    } else if (
118
-      (source as WebViewUriSource).method === 'GET' &&
119
-      (source as WebViewUriSource).body
120
-    ) {
121
-      console.warn('WebView: `source.body` is not supported when using GET.');
122
-    }
123
-
124
-    let NativeWebView =
125
-      (nativeConfig.component as typeof NativeWebViewAndroid) || RNCWebView;
126
-
127
-    const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
128
-      this.onShouldStartLoadWithRequestCallback,
129
-      originWhitelist,
130
-      onShouldStartLoadWithRequestProp,
131
-    );
132
-
133
-    const webView = (
134
-      <NativeWebView
135
-        {...otherProps}
136
-        key="webViewKey"
137
-        messagingEnabled={typeof onMessage === 'function'}
138
-        onLoadingError={this.onLoadingError}
139
-        onLoadingFinish={this.onLoadingFinish}
140
-        onLoadingProgress={this.onLoadingProgress}
141
-        onLoadingStart={this.onLoadingStart}
142
-        onMessage={this.onMessage}
143
-        onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
144
-        ref={this.webViewRef}
145
-        // TODO: find a better way to type this.
146
-        source={resolveAssetSource(source as ImageSourcePropType)}
147
-        style={webViewStyles}
148
-        {...nativeConfig.props}
149
-      />
150
-    );
151
-
152
-    return (
153
-      <View style={styles.container}>
154
-        {webView}
155
-        {otherView}
156
-      </View>
157
-    );
158
-  }
159
-
160
   getCommands = () => getViewManagerConfig('RNCWebView').Commands;
76
   getCommands = () => getViewManagerConfig('RNCWebView').Commands;
161
 
77
 
162
   goForward = () => {
78
   goForward = () => {
236
   };
152
   };
237
 
153
 
238
   onLoadingStart = (event: WebViewNavigationEvent) => {
154
   onLoadingStart = (event: WebViewNavigationEvent) => {
239
-    const onLoadStart = this.props.onLoadStart;
240
-    onLoadStart && onLoadStart(event);
155
+    const { onLoadStart } = this.props;
156
+    if (onLoadStart) {
157
+      onLoadStart(event);
158
+    }
241
     this.updateNavigationState(event);
159
     this.updateNavigationState(event);
242
   };
160
   };
243
 
161
 
244
   onLoadingError = (event: WebViewErrorEvent) => {
162
   onLoadingError = (event: WebViewErrorEvent) => {
245
     event.persist(); // persist this event because we need to store it
163
     event.persist(); // persist this event because we need to store it
246
     const { onError, onLoadEnd } = this.props;
164
     const { onError, onLoadEnd } = this.props;
247
-    onError && onError(event);
248
-    onLoadEnd && onLoadEnd(event);
165
+    if (onError) {
166
+      onError(event);
167
+    }
168
+    if (onLoadEnd) {
169
+      onLoadEnd(event);
170
+    }
249
     console.warn('Encountered an error loading page', event.nativeEvent);
171
     console.warn('Encountered an error loading page', event.nativeEvent);
250
 
172
 
251
     this.setState({
173
     this.setState({
256
 
178
 
257
   onLoadingFinish = (event: WebViewNavigationEvent) => {
179
   onLoadingFinish = (event: WebViewNavigationEvent) => {
258
     const { onLoad, onLoadEnd } = this.props;
180
     const { onLoad, onLoadEnd } = this.props;
259
-    onLoad && onLoad(event);
260
-    onLoadEnd && onLoadEnd(event);
181
+    if (onLoad) {
182
+      onLoad(event);
183
+    }
184
+    if (onLoadEnd) {
185
+      onLoadEnd(event);
186
+    }
261
     this.setState({
187
     this.setState({
262
       viewState: 'IDLE',
188
       viewState: 'IDLE',
263
     });
189
     });
266
 
192
 
267
   onMessage = (event: WebViewMessageEvent) => {
193
   onMessage = (event: WebViewMessageEvent) => {
268
     const { onMessage } = this.props;
194
     const { onMessage } = this.props;
269
-    onMessage && onMessage(event);
195
+    if (onMessage) {
196
+      onMessage(event);
197
+    }
270
   };
198
   };
271
 
199
 
272
   onLoadingProgress = (event: WebViewProgressEvent) => {
200
   onLoadingProgress = (event: WebViewProgressEvent) => {
273
     const { onLoadProgress } = this.props;
201
     const { onLoadProgress } = this.props;
274
-    onLoadProgress && onLoadProgress(event);
202
+    if (onLoadProgress) {
203
+      onLoadProgress(event);
204
+    }
275
   };
205
   };
276
 
206
 
277
   onShouldStartLoadWithRequestCallback = (
207
   onShouldStartLoadWithRequestCallback = (
286
       );
216
       );
287
     }
217
     }
288
   };
218
   };
289
-}
290
 
219
 
291
-const RNCWebView = requireNativeComponent(
292
-  'RNCWebView',
293
-) as typeof NativeWebViewAndroid;
220
+  render() {
221
+    const {
222
+      onMessage,
223
+      onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
224
+      originWhitelist,
225
+      renderError,
226
+      renderLoading,
227
+      source,
228
+      style,
229
+      nativeConfig = {},
230
+      ...otherProps
231
+    } = this.props;
232
+    let otherView = null;
233
+
234
+    if (this.state.viewState === 'LOADING') {
235
+      otherView = (renderLoading || defaultRenderLoading)();
236
+    } else if (this.state.viewState === 'ERROR') {
237
+      const errorEvent = this.state.lastErrorEvent;
238
+      invariant(errorEvent != null, 'lastErrorEvent expected to be non-null');
239
+      otherView
240
+        = renderError
241
+        && renderError(errorEvent.domain, errorEvent.code, errorEvent.description);
242
+    } else if (this.state.viewState !== 'IDLE') {
243
+      console.error(
244
+        `RNCWebView invalid state encountered: ${this.state.viewState}`,
245
+      );
246
+    }
247
+
248
+    const webViewStyles = [styles.container, style];
249
+    if (
250
+      this.state.viewState === 'LOADING'
251
+      || this.state.viewState === 'ERROR'
252
+    ) {
253
+      // if we're in either LOADING or ERROR states, don't show the webView
254
+      webViewStyles.push(styles.hidden);
255
+    }
256
+
257
+    if (
258
+      (source as WebViewUriSource).method === 'POST'
259
+      && (source as WebViewUriSource).headers
260
+    ) {
261
+      console.warn(
262
+        'WebView: `source.headers` is not supported when using POST.',
263
+      );
264
+    } else if (
265
+      (source as WebViewUriSource).method === 'GET'
266
+      && (source as WebViewUriSource).body
267
+    ) {
268
+      console.warn('WebView: `source.body` is not supported when using GET.');
269
+    }
270
+
271
+    const NativeWebView
272
+      = (nativeConfig.component as typeof NativeWebViewAndroid) || RNCWebView;
273
+
274
+    const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
275
+      this.onShouldStartLoadWithRequestCallback,
276
+      originWhitelist,
277
+      onShouldStartLoadWithRequestProp,
278
+    );
279
+
280
+    const webView = (
281
+      <NativeWebView
282
+        {...otherProps}
283
+        key="webViewKey"
284
+        messagingEnabled={typeof onMessage === 'function'}
285
+        onLoadingError={this.onLoadingError}
286
+        onLoadingFinish={this.onLoadingFinish}
287
+        onLoadingProgress={this.onLoadingProgress}
288
+        onLoadingStart={this.onLoadingStart}
289
+        onMessage={this.onMessage}
290
+        onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
291
+        ref={this.webViewRef}
292
+        // TODO: find a better way to type this.
293
+        source={resolveAssetSource(source as ImageSourcePropType)}
294
+        style={webViewStyles}
295
+        {...nativeConfig.props}
296
+      />
297
+    );
298
+
299
+    return (
300
+      <View style={styles.container}>
301
+        {webView}
302
+        {otherView}
303
+      </View>
304
+    );
305
+  }
306
+}
294
 
307
 
295
 module.exports = WebView;
308
 module.exports = WebView;

+ 156
- 138
src/WebView.ios.tsx View File

36
   ViewManager,
36
   ViewManager,
37
   State,
37
   State,
38
   CustomUIManager,
38
   CustomUIManager,
39
+  WebViewNativeConfig,
39
 } from './WebViewTypes';
40
 } from './WebViewTypes';
40
 
41
 
41
 import styles from './WebView.styles';
42
 import styles from './WebView.styles';
42
 
43
 
43
 const UIManager = NotTypedUIManager as CustomUIManager;
44
 const UIManager = NotTypedUIManager as CustomUIManager;
44
 
45
 
45
-const resolveAssetSource = Image.resolveAssetSource;
46
+const { resolveAssetSource } = Image;
46
 let didWarnAboutUIWebViewUsage = false;
47
 let didWarnAboutUIWebViewUsage = false;
47
 // Imported from https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/processDecelerationRate.js
48
 // Imported from https://github.com/facebook/react-native/blob/master/Libraries/Components/ScrollView/processDecelerationRate.js
48
 const processDecelerationRate = (
49
 const processDecelerationRate = (
49
   decelerationRate: DecelerationRateConstant | number | undefined,
50
   decelerationRate: DecelerationRateConstant | number | undefined,
50
 ) => {
51
 ) => {
51
-  if (decelerationRate === 'normal') {
52
-    decelerationRate = 0.998;
53
-  } else if (decelerationRate === 'fast') {
54
-    decelerationRate = 0.99;
52
+  let newDecelerationRate = decelerationRate;
53
+  if (newDecelerationRate === 'normal') {
54
+    newDecelerationRate = 0.998;
55
+  } else if (newDecelerationRate === 'fast') {
56
+    newDecelerationRate = 0.99;
55
   }
57
   }
56
-  return decelerationRate;
58
+  return newDecelerationRate;
57
 };
59
 };
58
 
60
 
59
 const RNCUIWebViewManager = NativeModules.RNCUIWebViewManager as ViewManager;
61
 const RNCUIWebViewManager = NativeModules.RNCUIWebViewManager as ViewManager;
60
 const RNCWKWebViewManager = NativeModules.RNCWKWebViewManager as ViewManager;
62
 const RNCWKWebViewManager = NativeModules.RNCWKWebViewManager as ViewManager;
61
 
63
 
64
+const RNCUIWebView: typeof NativeWebViewIOS = requireNativeComponent(
65
+  'RNCUIWebView',
66
+);
67
+const RNCWKWebView: typeof NativeWebViewIOS = requireNativeComponent(
68
+  'RNCWKWebView',
69
+);
70
+
62
 const defaultRenderLoading = () => (
71
 const defaultRenderLoading = () => (
63
   <View style={styles.loadingView}>
72
   <View style={styles.loadingView}>
64
     <ActivityIndicator />
73
     <ActivityIndicator />
71
 ) => (
80
 ) => (
72
   <View style={styles.errorContainer}>
81
   <View style={styles.errorContainer}>
73
     <Text style={styles.errorTextTitle}>Error loading page</Text>
82
     <Text style={styles.errorTextTitle}>Error loading page</Text>
74
-    <Text style={styles.errorText}>{'Domain: ' + errorDomain}</Text>
75
-    <Text style={styles.errorText}>{'Error Code: ' + errorCode}</Text>
76
-    <Text style={styles.errorText}>{'Description: ' + errorDesc}</Text>
83
+    <Text style={styles.errorText}>{`Domain: ${errorDomain}`}</Text>
84
+    <Text style={styles.errorText}>{`Error Code: ${errorCode}`}</Text>
85
+    <Text style={styles.errorText}>{`Description: ${errorDesc}`}</Text>
77
   </View>
86
   </View>
78
 );
87
 );
79
 
88
 
97
 
106
 
98
   webViewRef = React.createRef<NativeWebViewIOS>();
107
   webViewRef = React.createRef<NativeWebViewIOS>();
99
 
108
 
109
+  // eslint-disable-next-line camelcase
100
   UNSAFE_componentWillMount() {
110
   UNSAFE_componentWillMount() {
101
     if (!this.props.useWebKit && !didWarnAboutUIWebViewUsage) {
111
     if (!this.props.useWebKit && !didWarnAboutUIWebViewUsage) {
102
       didWarnAboutUIWebViewUsage = true;
112
       didWarnAboutUIWebViewUsage = true;
103
       console.warn(
113
       console.warn(
104
-        'UIWebView is deprecated and will be removed soon, please use WKWebView (do not override useWebkit={true} prop),' +
105
-          ' more infos here: https://github.com/react-native-community/react-native-webview/issues/312',
114
+        'UIWebView is deprecated and will be removed soon, please use WKWebView (do not override useWebkit={true} prop),'
115
+          + ' more infos here: https://github.com/react-native-community/react-native-webview/issues/312',
106
       );
116
       );
107
     }
117
     }
108
     if (
118
     if (
109
-      this.props.useWebKit === true &&
110
-      this.props.scalesPageToFit !== undefined
119
+      this.props.useWebKit === true
120
+      && this.props.scalesPageToFit !== undefined
111
     ) {
121
     ) {
112
       console.warn(
122
       console.warn(
113
         'The scalesPageToFit property is not supported when useWebKit = true',
123
         'The scalesPageToFit property is not supported when useWebKit = true',
114
       );
124
       );
115
     }
125
     }
116
     if (
126
     if (
117
-      !this.props.useWebKit &&
118
-      this.props.allowsBackForwardNavigationGestures
127
+      !this.props.useWebKit
128
+      && this.props.allowsBackForwardNavigationGestures
119
     ) {
129
     ) {
120
       console.warn(
130
       console.warn(
121
         'The allowsBackForwardNavigationGestures property is not supported when useWebKit = false',
131
         'The allowsBackForwardNavigationGestures property is not supported when useWebKit = false',
129
     }
139
     }
130
   }
140
   }
131
 
141
 
132
-  render() {
133
-    const {
134
-      decelerationRate: decelerationRateProp,
135
-      nativeConfig = {},
136
-      onMessage,
137
-      onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
138
-      originWhitelist,
139
-      renderError,
140
-      renderLoading,
141
-      scalesPageToFit = this.props.useWebKit ? undefined : true,
142
-      style,
143
-      useWebKit,
144
-      ...otherProps
145
-    } = this.props;
146
-
147
-    let otherView = null;
148
-
149
-    if (this.state.viewState === 'LOADING') {
150
-      otherView = (renderLoading || defaultRenderLoading)();
151
-    } else if (this.state.viewState === 'ERROR') {
152
-      const errorEvent = this.state.lastErrorEvent;
153
-      invariant(errorEvent != null, 'lastErrorEvent expected to be non-null');
154
-      otherView = (renderError || defaultRenderError)(
155
-        errorEvent.domain,
156
-        errorEvent.code,
157
-        errorEvent.description,
158
-      );
159
-    } else if (this.state.viewState !== 'IDLE') {
160
-      console.error(
161
-        'RNCWebView invalid state encountered: ' + this.state.viewState,
162
-      );
163
-    }
164
-
165
-    const webViewStyles = [styles.container, styles.webView, style];
166
-    if (
167
-      this.state.viewState === 'LOADING' ||
168
-      this.state.viewState === 'ERROR'
169
-    ) {
170
-      // if we're in either LOADING or ERROR states, don't show the webView
171
-      webViewStyles.push(styles.hidden);
172
-    }
173
-
174
-    const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
175
-      this.onShouldStartLoadWithRequestCallback,
176
-      originWhitelist,
177
-      onShouldStartLoadWithRequestProp,
178
-    );
179
-
180
-    const decelerationRate = processDecelerationRate(decelerationRateProp);
181
-
182
-    let NativeWebView = nativeConfig.component as typeof NativeWebViewIOS;
183
-
184
-    if (useWebKit) {
185
-      NativeWebView = NativeWebViewIOS || RNCWKWebView;
186
-    } else {
187
-      NativeWebView = NativeWebViewIOS || RNCUIWebView;
188
-    }
189
-
190
-    const webView = (
191
-      <NativeWebView
192
-        {...otherProps}
193
-        decelerationRate={decelerationRate}
194
-        key="webViewKey"
195
-        messagingEnabled={typeof onMessage === 'function'}
196
-        onLoadingError={this._onLoadingError}
197
-        onLoadingFinish={this._onLoadingFinish}
198
-        onLoadingProgress={this._onLoadingProgress}
199
-        onLoadingStart={this._onLoadingStart}
200
-        onMessage={this._onMessage}
201
-        onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
202
-        ref={this.webViewRef}
203
-        scalesPageToFit={scalesPageToFit}
204
-        // TODO: find a better way to type this.
205
-        source={resolveAssetSource(this.props.source as ImageSourcePropType)}
206
-        style={webViewStyles}
207
-        {...nativeConfig.props}
208
-      />
209
-    );
210
-
211
-    return (
212
-      <View style={styles.container}>
213
-        {webView}
214
-        {otherView}
215
-      </View>
216
-    );
217
-  }
218
-
219
-  _getCommands = () =>
142
+  // eslint-disable-next-line react/sort-comp
143
+  getCommands = () =>
220
     !this.props.useWebKit
144
     !this.props.useWebKit
221
       ? getViewManagerConfig('RNCUIWebView').Commands
145
       ? getViewManagerConfig('RNCUIWebView').Commands
222
       : getViewManagerConfig('RNCWKWebView').Commands;
146
       : getViewManagerConfig('RNCWKWebView').Commands;
227
   goForward = () => {
151
   goForward = () => {
228
     UIManager.dispatchViewManagerCommand(
152
     UIManager.dispatchViewManagerCommand(
229
       this.getWebViewHandle(),
153
       this.getWebViewHandle(),
230
-      this._getCommands().goForward,
154
+      this.getCommands().goForward,
231
       null,
155
       null,
232
     );
156
     );
233
   };
157
   };
238
   goBack = () => {
162
   goBack = () => {
239
     UIManager.dispatchViewManagerCommand(
163
     UIManager.dispatchViewManagerCommand(
240
       this.getWebViewHandle(),
164
       this.getWebViewHandle(),
241
-      this._getCommands().goBack,
165
+      this.getCommands().goBack,
242
       null,
166
       null,
243
     );
167
     );
244
   };
168
   };
250
     this.setState({ viewState: 'LOADING' });
174
     this.setState({ viewState: 'LOADING' });
251
     UIManager.dispatchViewManagerCommand(
175
     UIManager.dispatchViewManagerCommand(
252
       this.getWebViewHandle(),
176
       this.getWebViewHandle(),
253
-      this._getCommands().reload,
177
+      this.getCommands().reload,
254
       null,
178
       null,
255
     );
179
     );
256
   };
180
   };
261
   stopLoading = () => {
185
   stopLoading = () => {
262
     UIManager.dispatchViewManagerCommand(
186
     UIManager.dispatchViewManagerCommand(
263
       this.getWebViewHandle(),
187
       this.getWebViewHandle(),
264
-      this._getCommands().stopLoading,
188
+      this.getCommands().stopLoading,
265
       null,
189
       null,
266
     );
190
     );
267
   };
191
   };
279
   postMessage = (data: string) => {
203
   postMessage = (data: string) => {
280
     UIManager.dispatchViewManagerCommand(
204
     UIManager.dispatchViewManagerCommand(
281
       this.getWebViewHandle(),
205
       this.getWebViewHandle(),
282
-      this._getCommands().postMessage,
206
+      this.getCommands().postMessage,
283
       [String(data)],
207
       [String(data)],
284
     );
208
     );
285
   };
209
   };
293
   injectJavaScript = (data: string) => {
217
   injectJavaScript = (data: string) => {
294
     UIManager.dispatchViewManagerCommand(
218
     UIManager.dispatchViewManagerCommand(
295
       this.getWebViewHandle(),
219
       this.getWebViewHandle(),
296
-      this._getCommands().injectJavaScript,
220
+      this.getCommands().injectJavaScript,
297
       [data],
221
       [data],
298
     );
222
     );
299
   };
223
   };
302
    * We return an event with a bunch of fields including:
226
    * We return an event with a bunch of fields including:
303
    *  url, title, loading, canGoBack, canGoForward
227
    *  url, title, loading, canGoBack, canGoForward
304
    */
228
    */
305
-  _updateNavigationState = (event: WebViewNavigationEvent) => {
229
+  updateNavigationState = (event: WebViewNavigationEvent) => {
306
     if (this.props.onNavigationStateChange) {
230
     if (this.props.onNavigationStateChange) {
307
       this.props.onNavigationStateChange(event.nativeEvent);
231
       this.props.onNavigationStateChange(event.nativeEvent);
308
     }
232
     }
317
     return nodeHandle as number;
241
     return nodeHandle as number;
318
   };
242
   };
319
 
243
 
320
-  _onLoadingStart = (event: WebViewNavigationEvent) => {
321
-    const onLoadStart = this.props.onLoadStart;
322
-    onLoadStart && onLoadStart(event);
323
-    this._updateNavigationState(event);
244
+  onLoadingStart = (event: WebViewNavigationEvent) => {
245
+    const { onLoadStart } = this.props;
246
+    if (onLoadStart) {
247
+      onLoadStart(event);
248
+    }
249
+    this.updateNavigationState(event);
324
   };
250
   };
325
 
251
 
326
-  _onLoadingError = (event: WebViewErrorEvent) => {
252
+  onLoadingError = (event: WebViewErrorEvent) => {
327
     event.persist(); // persist this event because we need to store it
253
     event.persist(); // persist this event because we need to store it
328
     const { onError, onLoadEnd } = this.props;
254
     const { onError, onLoadEnd } = this.props;
329
-    onError && onError(event);
330
-    onLoadEnd && onLoadEnd(event);
255
+    if (onLoadEnd) {
256
+      onLoadEnd(event);
257
+    }
258
+    if (onError) {
259
+      onError(event);
260
+    }
331
     console.warn('Encountered an error loading page', event.nativeEvent);
261
     console.warn('Encountered an error loading page', event.nativeEvent);
332
 
262
 
333
     this.setState({
263
     this.setState({
336
     });
266
     });
337
   };
267
   };
338
 
268
 
339
-  _onLoadingFinish = (event: WebViewNavigationEvent) => {
269
+  onLoadingFinish = (event: WebViewNavigationEvent) => {
340
     const { onLoad, onLoadEnd } = this.props;
270
     const { onLoad, onLoadEnd } = this.props;
341
-    onLoad && onLoad(event);
342
-    onLoadEnd && onLoadEnd(event);
271
+    if (onLoad) {
272
+      onLoad(event);
273
+    }
274
+    if (onLoadEnd) {
275
+      onLoadEnd(event);
276
+    }
343
     this.setState({
277
     this.setState({
344
       viewState: 'IDLE',
278
       viewState: 'IDLE',
345
     });
279
     });
346
-    this._updateNavigationState(event);
280
+    this.updateNavigationState(event);
347
   };
281
   };
348
 
282
 
349
-  _onMessage = (event: WebViewMessageEvent) => {
283
+  onMessage = (event: WebViewMessageEvent) => {
350
     const { onMessage } = this.props;
284
     const { onMessage } = this.props;
351
-    onMessage && onMessage(event);
285
+    if (onMessage) {
286
+      onMessage(event);
287
+    }
352
   };
288
   };
353
 
289
 
354
-  _onLoadingProgress = (event: WebViewProgressEvent) => {
290
+  onLoadingProgress = (event: WebViewProgressEvent) => {
355
     const { onLoadProgress } = this.props;
291
     const { onLoadProgress } = this.props;
356
-    onLoadProgress && onLoadProgress(event);
292
+    if (onLoadProgress) {
293
+      onLoadProgress(event);
294
+    }
357
   };
295
   };
358
 
296
 
359
   onShouldStartLoadWithRequestCallback = (
297
   onShouldStartLoadWithRequestCallback = (
361
     _url: string,
299
     _url: string,
362
     lockIdentifier: number,
300
     lockIdentifier: number,
363
   ) => {
301
   ) => {
364
-    let viewManager = (this.props.nativeConfig || {}).viewManager;
302
+    let { viewManager }: WebViewNativeConfig = this.props.nativeConfig || {};
365
 
303
 
366
     if (this.props.useWebKit) {
304
     if (this.props.useWebKit) {
367
       viewManager = viewManager || RNCWKWebViewManager;
305
       viewManager = viewManager || RNCWKWebViewManager;
377
       return;
315
       return;
378
     }
316
     }
379
 
317
 
380
-    this._showRedboxOnPropChanges(prevProps, 'allowsInlineMediaPlayback');
381
-    this._showRedboxOnPropChanges(prevProps, 'incognito');
382
-    this._showRedboxOnPropChanges(prevProps, 'mediaPlaybackRequiresUserAction');
383
-    this._showRedboxOnPropChanges(prevProps, 'dataDetectorTypes');
318
+    this.showRedboxOnPropChanges(prevProps, 'allowsInlineMediaPlayback');
319
+    this.showRedboxOnPropChanges(prevProps, 'incognito');
320
+    this.showRedboxOnPropChanges(prevProps, 'mediaPlaybackRequiresUserAction');
321
+    this.showRedboxOnPropChanges(prevProps, 'dataDetectorTypes');
384
 
322
 
385
     if (this.props.scalesPageToFit !== undefined) {
323
     if (this.props.scalesPageToFit !== undefined) {
386
       console.warn(
324
       console.warn(
389
     }
327
     }
390
   }
328
   }
391
 
329
 
392
-  _showRedboxOnPropChanges(
330
+  showRedboxOnPropChanges(
393
     prevProps: IOSWebViewProps,
331
     prevProps: IOSWebViewProps,
394
     propName: keyof IOSWebViewProps,
332
     propName: keyof IOSWebViewProps,
395
   ) {
333
   ) {
399
       );
337
       );
400
     }
338
     }
401
   }
339
   }
402
-}
403
 
340
 
404
-const RNCUIWebView: typeof NativeWebViewIOS = requireNativeComponent(
405
-  'RNCUIWebView',
406
-);
407
-const RNCWKWebView: typeof NativeWebViewIOS = requireNativeComponent(
408
-  'RNCWKWebView',
409
-);
341
+  render() {
342
+    const {
343
+      decelerationRate: decelerationRateProp,
344
+      nativeConfig = {},
345
+      onMessage,
346
+      onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
347
+      originWhitelist,
348
+      renderError,
349
+      renderLoading,
350
+      scalesPageToFit = this.props.useWebKit ? undefined : true,
351
+      style,
352
+      useWebKit,
353
+      ...otherProps
354
+    } = this.props;
355
+
356
+    let otherView = null;
357
+
358
+    if (this.state.viewState === 'LOADING') {
359
+      otherView = (renderLoading || defaultRenderLoading)();
360
+    } else if (this.state.viewState === 'ERROR') {
361
+      const errorEvent = this.state.lastErrorEvent;
362
+      invariant(errorEvent != null, 'lastErrorEvent expected to be non-null');
363
+      otherView = (renderError || defaultRenderError)(
364
+        errorEvent.domain,
365
+        errorEvent.code,
366
+        errorEvent.description,
367
+      );
368
+    } else if (this.state.viewState !== 'IDLE') {
369
+      console.error(
370
+        `RNCWebView invalid state encountered: ${this.state.viewState}`,
371
+      );
372
+    }
373
+
374
+    const webViewStyles = [styles.container, styles.webView, style];
375
+    if (
376
+      this.state.viewState === 'LOADING'
377
+      || this.state.viewState === 'ERROR'
378
+    ) {
379
+      // if we're in either LOADING or ERROR states, don't show the webView
380
+      webViewStyles.push(styles.hidden);
381
+    }
382
+
383
+    const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
384
+      this.onShouldStartLoadWithRequestCallback,
385
+      originWhitelist,
386
+      onShouldStartLoadWithRequestProp,
387
+    );
388
+
389
+    const decelerationRate = processDecelerationRate(decelerationRateProp);
390
+
391
+    let NativeWebView = nativeConfig.component as typeof NativeWebViewIOS;
392
+
393
+    if (useWebKit) {
394
+      NativeWebView = NativeWebViewIOS || RNCWKWebView;
395
+    } else {
396
+      NativeWebView = NativeWebViewIOS || RNCUIWebView;
397
+    }
398
+
399
+    const webView = (
400
+      <NativeWebView
401
+        {...otherProps}
402
+        decelerationRate={decelerationRate}
403
+        key="webViewKey"
404
+        messagingEnabled={typeof onMessage === 'function'}
405
+        onLoadingError={this.onLoadingError}
406
+        onLoadingFinish={this.onLoadingFinish}
407
+        onLoadingProgress={this.onLoadingProgress}
408
+        onLoadingStart={this.onLoadingStart}
409
+        onMessage={this.onMessage}
410
+        onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
411
+        ref={this.webViewRef}
412
+        scalesPageToFit={scalesPageToFit}
413
+        // TODO: find a better way to type this.
414
+        source={resolveAssetSource(this.props.source as ImageSourcePropType)}
415
+        style={webViewStyles}
416
+        {...nativeConfig.props}
417
+      />
418
+    );
419
+
420
+    return (
421
+      <View style={styles.container}>
422
+        {webView}
423
+        {otherView}
424
+      </View>
425
+    );
426
+  }
427
+}
410
 
428
 
411
 module.exports = WebView;
429
 module.exports = WebView;

+ 1
- 3
src/WebViewShared.ts View File

4
  * This source code is licensed under the MIT license found in the
4
  * This source code is licensed under the MIT license found in the
5
  * LICENSE file in the root directory of this source tree.
5
  * LICENSE file in the root directory of this source tree.
6
  *
6
  *
7
- * @format
8
- * @flow
9
  */
7
  */
10
 
8
 
11
 import escapeStringRegexp from 'escape-string-regexp';
9
 import escapeStringRegexp from 'escape-string-regexp';
21
 const defaultOriginWhitelist = ['http://*', 'https://*'];
19
 const defaultOriginWhitelist = ['http://*', 'https://*'];
22
 
20
 
23
 const extractOrigin = (url: string): string => {
21
 const extractOrigin = (url: string): string => {
24
-  const result = /^[A-Za-z][A-Za-z0-9\+\-\.]+:(\/\/)?[^/]*/.exec(url);
22
+  const result = /^[A-Za-z][A-Za-z0-9+\-.]+:(\/\/)?[^/]*/.exec(url);
25
   return result === null ? '' : result[0];
23
   return result === null ? '' : result[0];
26
 };
24
 };
27
 
25
 

src/WebViewTypes.js → src/WebViewTypes.flow.js View File


+ 14
- 9
src/WebViewTypes.ts View File

6
  *
6
  *
7
  */
7
  */
8
 
8
 
9
+/* eslint-disable react/no-multi-comp */
10
+
9
 import { ReactNode, ReactElement, Component } from 'react';
11
 import { ReactNode, ReactElement, Component } from 'react';
10
 import {
12
 import {
11
   NativeSyntheticEvent,
13
   NativeSyntheticEvent,
17
   UIManagerStatic,
19
   UIManagerStatic,
18
 } from 'react-native';
20
 } from 'react-native';
19
 
21
 
20
-interface WebViewCommands {
22
+export interface WebViewCommands {
21
   goForward: Function;
23
   goForward: Function;
22
   goBack: Function;
24
   goBack: Function;
23
   reload: Function;
25
   reload: Function;
35
   };
37
   };
36
   dispatchViewManagerCommand: (
38
   dispatchViewManagerCommand: (
37
     viewHandle: number,
39
     viewHandle: number,
38
-    command: any,
39
-    params: any,
40
+    command: Function,
41
+    params: object | null,
40
   ) => void;
42
   ) => void;
41
   RNCUIWebView: {
43
   RNCUIWebView: {
42
     Commands: WebViewCommands;
44
     Commands: WebViewCommands;
67
 
69
 
68
 export type State = NormalState | ErrorState;
70
 export type State = NormalState | ErrorState;
69
 
71
 
72
+// eslint-disable-next-line react/prefer-stateless-function
70
 declare class NativeWebViewIOSComponent extends Component<
73
 declare class NativeWebViewIOSComponent extends Component<
71
   IOSNativeWebViewProps
74
   IOSNativeWebViewProps
72
 > {}
75
 > {}
74
   typeof NativeWebViewIOSComponent;
77
   typeof NativeWebViewIOSComponent;
75
 export class NativeWebViewIOS extends NativeWebViewIOSBase {}
78
 export class NativeWebViewIOS extends NativeWebViewIOSBase {}
76
 
79
 
80
+// eslint-disable-next-line react/prefer-stateless-function
77
 declare class NativeWebViewAndroidComponent extends Component<
81
 declare class NativeWebViewAndroidComponent extends Component<
78
   AndroidNativeWebViewProps
82
   AndroidNativeWebViewProps
79
 > {}
83
 > {}
134
 
138
 
135
 export type WebViewErrorEvent = NativeSyntheticEvent<WebViewError>;
139
 export type WebViewErrorEvent = NativeSyntheticEvent<WebViewError>;
136
 
140
 
137
-export type DataDetectorTypes =
138
-  | 'phoneNumber'
141
+export type DataDetectorTypes
142
+  = | 'phoneNumber'
139
   | 'link'
143
   | 'link'
140
   | 'address'
144
   | 'address'
141
   | 'calendarEvent'
145
   | 'calendarEvent'
191
   startLoadWithResult: Function;
195
   startLoadWithResult: Function;
192
 }
196
 }
193
 
197
 
194
-export type WebViewNativeConfig = {
198
+export interface WebViewNativeConfig {
195
   /**
199
   /**
196
    * The native component used to render the WebView.
200
    * The native component used to render the WebView.
197
    */
201
    */
206
    * @platform ios
210
    * @platform ios
207
    */
211
    */
208
   viewManager?: ViewManager;
212
   viewManager?: ViewManager;
209
-};
213
+}
210
 
214
 
211
 export type OnShouldStartLoadWithRequest = (
215
 export type OnShouldStartLoadWithRequest = (
212
   event: WebViewNavigation,
216
   event: WebViewNavigation,
227
   showsHorizontalScrollIndicator?: boolean;
231
   showsHorizontalScrollIndicator?: boolean;
228
   showsVerticalScrollIndicator?: boolean;
232
   showsVerticalScrollIndicator?: boolean;
229
   // TODO: find a better way to type this.
233
   // TODO: find a better way to type this.
234
+  // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
   source: any;
235
   source: any;
231
   userAgent?: string;
236
   userAgent?: string;
232
 }
237
 }
511
     errorDomain: string | undefined,
516
     errorDomain: string | undefined,
512
     errorCode: number,
517
     errorCode: number,
513
     errorDesc: string,
518
     errorDesc: string,
514
-  ) => ReactElement<any>; // view to show if there's an error
519
+  ) => ReactElement; // view to show if there's an error
515
 
520
 
516
   /**
521
   /**
517
    * Function that returns a loading indicator.
522
    * Function that returns a loading indicator.
518
    */
523
    */
519
-  renderLoading: () => ReactElement<any>;
524
+  renderLoading: () => ReactElement;
520
 
525
 
521
   /**
526
   /**
522
    * Function that is invoked when the `WebView` has finished loading.
527
    * Function that is invoked when the `WebView` has finished loading.

+ 4
- 0
tsconfig.json View File

1
 {
1
 {
2
+  "include": ["src/*"],
2
   "compilerOptions": {
3
   "compilerOptions": {
3
     "baseUrl": "./src/",
4
     "baseUrl": "./src/",
4
     "jsx": "react-native",
5
     "jsx": "react-native",
5
     "module": "esnext",
6
     "module": "esnext",
6
     "moduleResolution": "node",
7
     "moduleResolution": "node",
7
     "lib": ["es2017"],
8
     "lib": ["es2017"],
9
+    "declaration": true,
10
+    "declarationMap": true,
11
+    "outDir": "lib",
8
     "allowSyntheticDefaultImports": true,
12
     "allowSyntheticDefaultImports": true,
9
     "esModuleInterop": true,
13
     "esModuleInterop": true,
10
     "forceConsistentCasingInFileNames": true,
14
     "forceConsistentCasingInFileNames": true,

+ 540
- 22
yarn.lock View File

841
     "@types/prop-types" "*"
841
     "@types/prop-types" "*"
842
     csstype "^2.2.0"
842
     csstype "^2.2.0"
843
 
843
 
844
+"@typescript-eslint/eslint-plugin@1.4.2":
845
+  version "1.4.2"
846
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.4.2.tgz#370bc32022d1cc884a5dcf62624ef2024182769d"
847
+  integrity sha512-6WInypy/cK4rM1dirKbD5p7iFW28DbSRKT/+PGn+DYzBWEvHq5KnZAqQ5cX25JBc0qMkFxJNxNfBbFXJyyzVcw==
848
+  dependencies:
849
+    "@typescript-eslint/parser" "1.4.2"
850
+    "@typescript-eslint/typescript-estree" "1.4.2"
851
+    requireindex "^1.2.0"
852
+    tsutils "^3.7.0"
853
+
854
+"@typescript-eslint/parser@1.4.2":
855
+  version "1.4.2"
856
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.4.2.tgz#acfdee2019958a41d308d768e53ded975ef90ce8"
857
+  integrity sha512-OqLkY9295DXXaWToItUv3olO2//rmzh6Th6Sc7YjFFEpEuennsm5zhygLLvHZjPxPlzrQgE8UDaOPurDylaUuw==
858
+  dependencies:
859
+    "@typescript-eslint/typescript-estree" "1.4.2"
860
+    eslint-scope "^4.0.0"
861
+    eslint-visitor-keys "^1.0.0"
862
+
863
+"@typescript-eslint/typescript-estree@1.4.2":
864
+  version "1.4.2"
865
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.4.2.tgz#b16bc36c9a4748a7fca92cba4c2d73c5325c8a85"
866
+  integrity sha512-wKgi/w6k1v3R4b6oDc20cRWro2gBzp0wn6CAeYC8ExJMfvXMfiaXzw2tT9ilxdONaVWMCk7B9fMdjos7bF/CWw==
867
+  dependencies:
868
+    lodash.unescape "4.0.1"
869
+    semver "5.5.0"
870
+
844
 JSONStream@^1.0.4, JSONStream@^1.3.4:
871
 JSONStream@^1.0.4, JSONStream@^1.3.4:
845
   version "1.3.5"
872
   version "1.3.5"
846
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
873
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
880
     acorn "^6.0.1"
907
     acorn "^6.0.1"
881
     acorn-walk "^6.0.1"
908
     acorn-walk "^6.0.1"
882
 
909
 
910
+acorn-jsx@^5.0.0:
911
+  version "5.0.1"
912
+  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
913
+  integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
914
+
883
 acorn-walk@^6.0.1:
915
 acorn-walk@^6.0.1:
884
   version "6.1.1"
916
   version "6.1.1"
885
   resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
917
   resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
890
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
922
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
891
   integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
923
   integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
892
 
924
 
893
-acorn@^6.0.1:
925
+acorn@^6.0.1, acorn@^6.0.7:
894
   version "6.1.1"
926
   version "6.1.1"
895
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
927
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
896
   integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
928
   integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
925
     clean-stack "^2.0.0"
957
     clean-stack "^2.0.0"
926
     indent-string "^3.0.0"
958
     indent-string "^3.0.0"
927
 
959
 
928
-ajv@^6.5.5:
960
+ajv@^6.5.5, ajv@^6.9.1:
929
   version "6.10.0"
961
   version "6.10.0"
930
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
962
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
931
   integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
963
   integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
956
   dependencies:
988
   dependencies:
957
     ansi-wrap "0.1.0"
989
     ansi-wrap "0.1.0"
958
 
990
 
959
-ansi-escapes@^3.0.0, ansi-escapes@^3.1.0:
991
+ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0:
960
   version "3.2.0"
992
   version "3.2.0"
961
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
993
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
962
   integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
994
   integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
990
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9"
1022
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9"
991
   integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==
1023
   integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==
992
 
1024
 
1025
+ansi-regex@^4.1.0:
1026
+  version "4.1.0"
1027
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
1028
+  integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
1029
+
993
 ansi-styles@^2.2.1:
1030
 ansi-styles@^2.2.1:
994
   version "2.2.1"
1031
   version "2.2.1"
995
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
1032
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
1072
   resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9"
1109
   resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9"
1073
   integrity sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=
1110
   integrity sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=
1074
 
1111
 
1112
+aria-query@^3.0.0:
1113
+  version "3.0.0"
1114
+  resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc"
1115
+  integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=
1116
+  dependencies:
1117
+    ast-types-flow "0.0.7"
1118
+    commander "^2.11.0"
1119
+
1075
 arr-diff@^1.0.1:
1120
 arr-diff@^1.0.1:
1076
   version "1.1.0"
1121
   version "1.1.0"
1077
   resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a"
1122
   resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a"
1127
   resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
1172
   resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
1128
   integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
1173
   integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
1129
 
1174
 
1175
+array-includes@^3.0.3:
1176
+  version "3.0.3"
1177
+  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
1178
+  integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
1179
+  dependencies:
1180
+    define-properties "^1.1.2"
1181
+    es-abstract "^1.7.0"
1182
+
1130
 array-map@~0.0.0:
1183
 array-map@~0.0.0:
1131
   version "0.0.0"
1184
   version "0.0.0"
1132
   resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
1185
   resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
1196
   resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
1249
   resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
1197
   integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
1250
   integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
1198
 
1251
 
1252
+ast-types-flow@0.0.7, ast-types-flow@^0.0.7:
1253
+  version "0.0.7"
1254
+  resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
1255
+  integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
1256
+
1199
 astral-regex@^1.0.0:
1257
 astral-regex@^1.0.0:
1200
   version "1.0.0"
1258
   version "1.0.0"
1201
   resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
1259
   resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
1233
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
1291
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
1234
   integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
1292
   integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
1235
 
1293
 
1294
+axobject-query@^2.0.2:
1295
+  version "2.0.2"
1296
+  resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9"
1297
+  integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==
1298
+  dependencies:
1299
+    ast-types-flow "0.0.7"
1300
+
1301
+babel-eslint@10.0.1:
1302
+  version "10.0.1"
1303
+  resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed"
1304
+  integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==
1305
+  dependencies:
1306
+    "@babel/code-frame" "^7.0.0"
1307
+    "@babel/parser" "^7.0.0"
1308
+    "@babel/traverse" "^7.0.0"
1309
+    "@babel/types" "^7.0.0"
1310
+    eslint-scope "3.7.1"
1311
+    eslint-visitor-keys "^1.0.0"
1312
+
1236
 babel-jest@^24.0.0, babel-jest@^24.1.0:
1313
 babel-jest@^24.0.0, babel-jest@^24.1.0:
1237
   version "24.1.0"
1314
   version "24.1.0"
1238
   resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190"
1315
   resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190"
1640
     strip-ansi "^3.0.0"
1717
     strip-ansi "^3.0.0"
1641
     supports-color "^2.0.0"
1718
     supports-color "^2.0.0"
1642
 
1719
 
1643
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2:
1720
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2:
1644
   version "2.4.2"
1721
   version "2.4.2"
1645
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1722
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1646
   integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1723
   integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1654
   resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
1731
   resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
1655
   integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
1732
   integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
1656
 
1733
 
1734
+chardet@^0.7.0:
1735
+  version "0.7.0"
1736
+  resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
1737
+  integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
1738
+
1657
 chownr@^1.0.1, chownr@^1.1.1:
1739
 chownr@^1.0.1, chownr@^1.1.1:
1658
   version "1.1.1"
1740
   version "1.1.1"
1659
   resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
1741
   resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
1834
   dependencies:
1916
   dependencies:
1835
     delayed-stream "~1.0.0"
1917
     delayed-stream "~1.0.0"
1836
 
1918
 
1837
-commander@^2.9.0:
1919
+commander@^2.11.0, commander@^2.9.0:
1838
   version "2.19.0"
1920
   version "2.19.0"
1839
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
1921
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
1840
   integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
1922
   integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
1942
   resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
2024
   resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
1943
   integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
2025
   integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
1944
 
2026
 
2027
+contains-path@^0.1.0:
2028
+  version "0.1.0"
2029
+  resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
2030
+  integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
2031
+
1945
 conventional-changelog-angular@^5.0.0:
2032
 conventional-changelog-angular@^5.0.0:
1946
   version "5.0.3"
2033
   version "5.0.3"
1947
   resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0"
2034
   resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0"
2062
     shebang-command "^1.2.0"
2149
     shebang-command "^1.2.0"
2063
     which "^1.2.9"
2150
     which "^1.2.9"
2064
 
2151
 
2065
-cross-spawn@^6.0.0:
2152
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
2066
   version "6.0.5"
2153
   version "6.0.5"
2067
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
2154
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
2068
   integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
2155
   integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
2107
   resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
2194
   resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
2108
   integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
2195
   integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
2109
 
2196
 
2197
+damerau-levenshtein@^1.0.4:
2198
+  version "1.0.4"
2199
+  resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514"
2200
+  integrity sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=
2201
+
2110
 dashdash@^1.12.0:
2202
 dashdash@^1.12.0:
2111
   version "1.14.1"
2203
   version "1.14.1"
2112
   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
2204
   resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
2128
   resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
2220
   resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
2129
   integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
2221
   integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
2130
 
2222
 
2131
-debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
2223
+debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
2132
   version "2.6.9"
2224
   version "2.6.9"
2133
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
2225
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
2134
   integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
2226
   integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
2149
   dependencies:
2241
   dependencies:
2150
     ms "^2.1.1"
2242
     ms "^2.1.1"
2151
 
2243
 
2152
-debug@^4.0.0, debug@^4.1.0, debug@^4.1.1:
2244
+debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
2153
   version "4.1.1"
2245
   version "4.1.1"
2154
   resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
2246
   resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
2155
   integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
2247
   integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
2208
   dependencies:
2300
   dependencies:
2209
     clone "^1.0.2"
2301
     clone "^1.0.2"
2210
 
2302
 
2211
-define-properties@^1.1.2:
2303
+define-properties@^1.1.2, define-properties@^1.1.3:
2212
   version "1.1.3"
2304
   version "1.1.3"
2213
   resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
2305
   resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
2214
   integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
2306
   integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
2310
   dependencies:
2402
   dependencies:
2311
     path-type "^3.0.0"
2403
     path-type "^3.0.0"
2312
 
2404
 
2405
+doctrine@1.5.0:
2406
+  version "1.5.0"
2407
+  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
2408
+  integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
2409
+  dependencies:
2410
+    esutils "^2.0.2"
2411
+    isarray "^1.0.0"
2412
+
2413
+doctrine@^2.1.0:
2414
+  version "2.1.0"
2415
+  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
2416
+  integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
2417
+  dependencies:
2418
+    esutils "^2.0.2"
2419
+
2420
+doctrine@^3.0.0:
2421
+  version "3.0.0"
2422
+  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
2423
+  integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
2424
+  dependencies:
2425
+    esutils "^2.0.2"
2426
+
2313
 dom-walk@^0.1.0:
2427
 dom-walk@^0.1.0:
2314
   version "0.1.1"
2428
   version "0.1.1"
2315
   resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
2429
   resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018"
2381
   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
2495
   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
2382
   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
2496
   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
2383
 
2497
 
2498
+emoji-regex@^7.0.1, emoji-regex@^7.0.2:
2499
+  version "7.0.3"
2500
+  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
2501
+  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
2502
+
2384
 encodeurl@~1.0.1, encodeurl@~1.0.2:
2503
 encodeurl@~1.0.1, encodeurl@~1.0.2:
2385
   version "1.0.2"
2504
   version "1.0.2"
2386
   resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
2505
   resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
2440
     accepts "~1.3.3"
2559
     accepts "~1.3.3"
2441
     escape-html "~1.0.3"
2560
     escape-html "~1.0.3"
2442
 
2561
 
2443
-es-abstract@^1.5.1:
2562
+es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
2444
   version "1.13.0"
2563
   version "1.13.0"
2445
   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
2564
   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
2446
   integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
2565
   integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
2495
   optionalDependencies:
2614
   optionalDependencies:
2496
     source-map "~0.6.1"
2615
     source-map "~0.6.1"
2497
 
2616
 
2617
+eslint-config-airbnb-base@^13.1.0:
2618
+  version "13.1.0"
2619
+  resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz#b5a1b480b80dfad16433d6c4ad84e6605052c05c"
2620
+  integrity sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==
2621
+  dependencies:
2622
+    eslint-restricted-globals "^0.1.1"
2623
+    object.assign "^4.1.0"
2624
+    object.entries "^1.0.4"
2625
+
2626
+eslint-config-airbnb@17.1.0:
2627
+  version "17.1.0"
2628
+  resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-17.1.0.tgz#3964ed4bc198240315ff52030bf8636f42bc4732"
2629
+  integrity sha512-R9jw28hFfEQnpPau01NO5K/JWMGLi6aymiF6RsnMURjTk+MqZKllCqGK/0tOvHkPi/NWSSOU2Ced/GX++YxLnw==
2630
+  dependencies:
2631
+    eslint-config-airbnb-base "^13.1.0"
2632
+    object.assign "^4.1.0"
2633
+    object.entries "^1.0.4"
2634
+
2635
+eslint-config-prettier@4.1.0:
2636
+  version "4.1.0"
2637
+  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.1.0.tgz#181364895899fff9fd3605fecb5c4f20e7d5f395"
2638
+  integrity sha512-zILwX9/Ocz4SV2vX7ox85AsrAgXV3f2o2gpIicdMIOra48WYqgUnWNH/cR/iHtmD2Vb3dLSC3LiEJnS05Gkw7w==
2639
+  dependencies:
2640
+    get-stdin "^6.0.0"
2641
+
2642
+eslint-import-resolver-node@^0.3.2:
2643
+  version "0.3.2"
2644
+  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
2645
+  integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
2646
+  dependencies:
2647
+    debug "^2.6.9"
2648
+    resolve "^1.5.0"
2649
+
2650
+eslint-module-utils@^2.3.0:
2651
+  version "2.3.0"
2652
+  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz#546178dab5e046c8b562bbb50705e2456d7bda49"
2653
+  integrity sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==
2654
+  dependencies:
2655
+    debug "^2.6.8"
2656
+    pkg-dir "^2.0.0"
2657
+
2658
+eslint-plugin-import@2.16.0:
2659
+  version "2.16.0"
2660
+  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz#97ac3e75d0791c4fac0e15ef388510217be7f66f"
2661
+  integrity sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A==
2662
+  dependencies:
2663
+    contains-path "^0.1.0"
2664
+    debug "^2.6.9"
2665
+    doctrine "1.5.0"
2666
+    eslint-import-resolver-node "^0.3.2"
2667
+    eslint-module-utils "^2.3.0"
2668
+    has "^1.0.3"
2669
+    lodash "^4.17.11"
2670
+    minimatch "^3.0.4"
2671
+    read-pkg-up "^2.0.0"
2672
+    resolve "^1.9.0"
2673
+
2674
+eslint-plugin-jsx-a11y@6.2.1:
2675
+  version "6.2.1"
2676
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c"
2677
+  integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w==
2678
+  dependencies:
2679
+    aria-query "^3.0.0"
2680
+    array-includes "^3.0.3"
2681
+    ast-types-flow "^0.0.7"
2682
+    axobject-query "^2.0.2"
2683
+    damerau-levenshtein "^1.0.4"
2684
+    emoji-regex "^7.0.2"
2685
+    has "^1.0.3"
2686
+    jsx-ast-utils "^2.0.1"
2687
+
2688
+eslint-plugin-react-hooks@1.5.0:
2689
+  version "1.5.0"
2690
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.5.0.tgz#cdd958cfff55bd5fa4f84db90d1490fb5ca4ae2b"
2691
+  integrity sha512-iwDuWR2ReRgvJsNm8fXPtTKdg78IVQF8I4+am3ntztPf/+nPnWZfArFu6aXpaC75/iCYRrkqI8nPCYkxJstmpA==
2692
+
2693
+eslint-plugin-react-native-globals@^0.1.1:
2694
+  version "0.1.2"
2695
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz#ee1348bc2ceb912303ce6bdbd22e2f045ea86ea2"
2696
+  integrity sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==
2697
+
2698
+eslint-plugin-react-native@3.6.0:
2699
+  version "3.6.0"
2700
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-3.6.0.tgz#7cad3b7c6159df6d26fe3252c6c5417a17f27b4b"
2701
+  integrity sha512-BEQcHZ06hZSBYWFVuNEq0xuui5VEsWpHDsZGBtfadHfCRqRMUrkYPgdDb3bpc60qShHE83kqIv59uKdinEg91Q==
2702
+  dependencies:
2703
+    eslint-plugin-react-native-globals "^0.1.1"
2704
+
2705
+eslint-plugin-react@7.12.4:
2706
+  version "7.12.4"
2707
+  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz#b1ecf26479d61aee650da612e425c53a99f48c8c"
2708
+  integrity sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==
2709
+  dependencies:
2710
+    array-includes "^3.0.3"
2711
+    doctrine "^2.1.0"
2712
+    has "^1.0.3"
2713
+    jsx-ast-utils "^2.0.1"
2714
+    object.fromentries "^2.0.0"
2715
+    prop-types "^15.6.2"
2716
+    resolve "^1.9.0"
2717
+
2718
+eslint-restricted-globals@^0.1.1:
2719
+  version "0.1.1"
2720
+  resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7"
2721
+  integrity sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=
2722
+
2723
+eslint-scope@3.7.1:
2724
+  version "3.7.1"
2725
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
2726
+  integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=
2727
+  dependencies:
2728
+    esrecurse "^4.1.0"
2729
+    estraverse "^4.1.1"
2730
+
2731
+eslint-scope@^4.0.0, eslint-scope@^4.0.2:
2732
+  version "4.0.2"
2733
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.2.tgz#5f10cd6cabb1965bf479fa65745673439e21cb0e"
2734
+  integrity sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==
2735
+  dependencies:
2736
+    esrecurse "^4.1.0"
2737
+    estraverse "^4.1.1"
2738
+
2739
+eslint-utils@^1.3.1:
2740
+  version "1.3.1"
2741
+  resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512"
2742
+  integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==
2743
+
2744
+eslint-visitor-keys@^1.0.0:
2745
+  version "1.0.0"
2746
+  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
2747
+  integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
2748
+
2749
+eslint@5.15.1:
2750
+  version "5.15.1"
2751
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.15.1.tgz#8266b089fd5391e0009a047050795b1d73664524"
2752
+  integrity sha512-NTcm6vQ+PTgN3UBsALw5BMhgO6i5EpIjQF/Xb5tIh3sk9QhrFafujUOczGz4J24JBlzWclSB9Vmx8d+9Z6bFCg==
2753
+  dependencies:
2754
+    "@babel/code-frame" "^7.0.0"
2755
+    ajv "^6.9.1"
2756
+    chalk "^2.1.0"
2757
+    cross-spawn "^6.0.5"
2758
+    debug "^4.0.1"
2759
+    doctrine "^3.0.0"
2760
+    eslint-scope "^4.0.2"
2761
+    eslint-utils "^1.3.1"
2762
+    eslint-visitor-keys "^1.0.0"
2763
+    espree "^5.0.1"
2764
+    esquery "^1.0.1"
2765
+    esutils "^2.0.2"
2766
+    file-entry-cache "^5.0.1"
2767
+    functional-red-black-tree "^1.0.1"
2768
+    glob "^7.1.2"
2769
+    globals "^11.7.0"
2770
+    ignore "^4.0.6"
2771
+    import-fresh "^3.0.0"
2772
+    imurmurhash "^0.1.4"
2773
+    inquirer "^6.2.2"
2774
+    js-yaml "^3.12.0"
2775
+    json-stable-stringify-without-jsonify "^1.0.1"
2776
+    levn "^0.3.0"
2777
+    lodash "^4.17.11"
2778
+    minimatch "^3.0.4"
2779
+    mkdirp "^0.5.1"
2780
+    natural-compare "^1.4.0"
2781
+    optionator "^0.8.2"
2782
+    path-is-inside "^1.0.2"
2783
+    progress "^2.0.0"
2784
+    regexpp "^2.0.1"
2785
+    semver "^5.5.1"
2786
+    strip-ansi "^4.0.0"
2787
+    strip-json-comments "^2.0.1"
2788
+    table "^5.2.3"
2789
+    text-table "^0.2.0"
2790
+
2791
+espree@^5.0.1:
2792
+  version "5.0.1"
2793
+  resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
2794
+  integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
2795
+  dependencies:
2796
+    acorn "^6.0.7"
2797
+    acorn-jsx "^5.0.0"
2798
+    eslint-visitor-keys "^1.0.0"
2799
+
2498
 esprima@^3.1.3:
2800
 esprima@^3.1.3:
2499
   version "3.1.3"
2801
   version "3.1.3"
2500
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
2802
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
2505
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
2807
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
2506
   integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
2808
   integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
2507
 
2809
 
2508
-estraverse@^4.2.0:
2810
+esquery@^1.0.1:
2811
+  version "1.0.1"
2812
+  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
2813
+  integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
2814
+  dependencies:
2815
+    estraverse "^4.0.0"
2816
+
2817
+esrecurse@^4.1.0:
2818
+  version "4.2.1"
2819
+  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
2820
+  integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
2821
+  dependencies:
2822
+    estraverse "^4.1.0"
2823
+
2824
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
2509
   version "4.2.0"
2825
   version "4.2.0"
2510
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
2826
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
2511
   integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
2827
   integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
2655
     iconv-lite "^0.4.17"
2971
     iconv-lite "^0.4.17"
2656
     tmp "^0.0.33"
2972
     tmp "^0.0.33"
2657
 
2973
 
2974
+external-editor@^3.0.3:
2975
+  version "3.0.3"
2976
+  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
2977
+  integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==
2978
+  dependencies:
2979
+    chardet "^0.7.0"
2980
+    iconv-lite "^0.4.24"
2981
+    tmp "^0.0.33"
2982
+
2658
 extglob@^0.3.1:
2983
 extglob@^0.3.1:
2659
   version "0.3.2"
2984
   version "0.3.2"
2660
   resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
2985
   resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
2790
   dependencies:
3115
   dependencies:
2791
     escape-string-regexp "^1.0.5"
3116
     escape-string-regexp "^1.0.5"
2792
 
3117
 
3118
+file-entry-cache@^5.0.1:
3119
+  version "5.0.1"
3120
+  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
3121
+  integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
3122
+  dependencies:
3123
+    flat-cache "^2.0.1"
3124
+
2793
 filename-regex@^2.0.0:
3125
 filename-regex@^2.0.0:
2794
   version "2.0.1"
3126
   version "2.0.1"
2795
   resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
3127
   resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
2873
     array-uniq "^1.0.0"
3205
     array-uniq "^1.0.0"
2874
     semver-regex "^1.0.0"
3206
     semver-regex "^1.0.0"
2875
 
3207
 
3208
+flat-cache@^2.0.1:
3209
+  version "2.0.1"
3210
+  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
3211
+  integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
3212
+  dependencies:
3213
+    flatted "^2.0.0"
3214
+    rimraf "2.6.3"
3215
+    write "1.0.3"
3216
+
3217
+flatted@^2.0.0:
3218
+  version "2.0.0"
3219
+  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916"
3220
+  integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==
3221
+
2876
 flow-bin@^0.80.0:
3222
 flow-bin@^0.80.0:
2877
   version "0.80.0"
3223
   version "0.80.0"
2878
   resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.80.0.tgz#04cc1ee626a6f50786f78170c92ebe1745235403"
3224
   resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.80.0.tgz#04cc1ee626a6f50786f78170c92ebe1745235403"
3012
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
3358
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
3013
   integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
3359
   integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
3014
 
3360
 
3361
+functional-red-black-tree@^1.0.1:
3362
+  version "1.0.1"
3363
+  resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
3364
+  integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
3365
+
3015
 gauge@~1.2.5:
3366
 gauge@~1.2.5:
3016
   version "1.2.7"
3367
   version "1.2.7"
3017
   resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93"
3368
   resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93"
3061
   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
3412
   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
3062
   integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
3413
   integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
3063
 
3414
 
3415
+get-stdin@^6.0.0:
3416
+  version "6.0.0"
3417
+  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
3418
+  integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
3419
+
3064
 get-stream@^3.0.0:
3420
 get-stream@^3.0.0:
3065
   version "3.0.0"
3421
   version "3.0.0"
3066
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
3422
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
3167
     min-document "^2.19.0"
3523
     min-document "^2.19.0"
3168
     process "~0.5.1"
3524
     process "~0.5.1"
3169
 
3525
 
3170
-globals@^11.1.0:
3526
+globals@^11.1.0, globals@^11.7.0:
3171
   version "11.11.0"
3527
   version "11.11.0"
3172
   resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
3528
   resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
3173
   integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==
3529
   integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==
3384
   dependencies:
3740
   dependencies:
3385
     ms "^2.0.0"
3741
     ms "^2.0.0"
3386
 
3742
 
3387
-iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
3743
+iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
3388
   version "0.4.24"
3744
   version "0.4.24"
3389
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
3745
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
3390
   integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
3746
   integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
3413
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
3769
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
3414
   integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
3770
   integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
3415
 
3771
 
3416
-ignore@^4.0.3:
3772
+ignore@^4.0.3, ignore@^4.0.6:
3417
   version "4.0.6"
3773
   version "4.0.6"
3418
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
3774
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
3419
   integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
3775
   integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
3431
     caller-path "^2.0.0"
3787
     caller-path "^2.0.0"
3432
     resolve-from "^3.0.0"
3788
     resolve-from "^3.0.0"
3433
 
3789
 
3790
+import-fresh@^3.0.0:
3791
+  version "3.0.0"
3792
+  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390"
3793
+  integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==
3794
+  dependencies:
3795
+    parent-module "^1.0.0"
3796
+    resolve-from "^4.0.0"
3797
+
3434
 import-from@^2.1.0:
3798
 import-from@^2.1.0:
3435
   version "2.1.0"
3799
   version "2.1.0"
3436
   resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
3800
   resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
3513
     strip-ansi "^4.0.0"
3877
     strip-ansi "^4.0.0"
3514
     through "^2.3.6"
3878
     through "^2.3.6"
3515
 
3879
 
3880
+inquirer@^6.2.2:
3881
+  version "6.2.2"
3882
+  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406"
3883
+  integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==
3884
+  dependencies:
3885
+    ansi-escapes "^3.2.0"
3886
+    chalk "^2.4.2"
3887
+    cli-cursor "^2.1.0"
3888
+    cli-width "^2.0.0"
3889
+    external-editor "^3.0.3"
3890
+    figures "^2.0.0"
3891
+    lodash "^4.17.11"
3892
+    mute-stream "0.0.7"
3893
+    run-async "^2.2.0"
3894
+    rxjs "^6.4.0"
3895
+    string-width "^2.1.0"
3896
+    strip-ansi "^5.0.0"
3897
+    through "^2.3.6"
3898
+
3516
 into-stream@^4.0.0:
3899
 into-stream@^4.0.0:
3517
   version "4.0.0"
3900
   version "4.0.0"
3518
   resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-4.0.0.tgz#ef10ee2ffb6f78af34c93194bbdc36c35f7d8a9d"
3901
   resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-4.0.0.tgz#ef10ee2ffb6f78af34c93194bbdc36c35f7d8a9d"
3858
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
4241
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
3859
   integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
4242
   integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
3860
 
4243
 
3861
-isarray@1.0.0, isarray@~1.0.0:
4244
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
3862
   version "1.0.0"
4245
   version "1.0.0"
3863
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
4246
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
3864
   integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
4247
   integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
4417
   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
4800
   resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
4418
   integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
4801
   integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
4419
 
4802
 
4803
+json-stable-stringify-without-jsonify@^1.0.1:
4804
+  version "1.0.1"
4805
+  resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
4806
+  integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
4807
+
4420
 json-stable-stringify@^1.0.1:
4808
 json-stable-stringify@^1.0.1:
4421
   version "1.0.1"
4809
   version "1.0.1"
4422
   resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
4810
   resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
4470
     json-schema "0.2.3"
4858
     json-schema "0.2.3"
4471
     verror "1.10.0"
4859
     verror "1.10.0"
4472
 
4860
 
4861
+jsx-ast-utils@^2.0.1:
4862
+  version "2.0.1"
4863
+  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
4864
+  integrity sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=
4865
+  dependencies:
4866
+    array-includes "^3.0.3"
4867
+
4473
 kind-of@^1.1.0:
4868
 kind-of@^1.1.0:
4474
   version "1.1.0"
4869
   version "1.1.0"
4475
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44"
4870
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44"
4547
   resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
4942
   resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
4548
   integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
4943
   integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
4549
 
4944
 
4550
-levn@~0.3.0:
4945
+levn@^0.3.0, levn@~0.3.0:
4551
   version "0.3.0"
4946
   version "0.3.0"
4552
   resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
4947
   resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
4553
   integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
4948
   integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
4731
   resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
5126
   resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
4732
   integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE=
5127
   integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE=
4733
 
5128
 
5129
+lodash.unescape@4.0.1:
5130
+  version "4.0.1"
5131
+  resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
5132
+  integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
5133
+
4734
 lodash.union@~4.6.0:
5134
 lodash.union@~4.6.0:
4735
   version "4.6.0"
5135
   version "4.6.0"
4736
   resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
5136
   resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
5897
     define-property "^0.2.5"
6297
     define-property "^0.2.5"
5898
     kind-of "^3.0.3"
6298
     kind-of "^3.0.3"
5899
 
6299
 
5900
-object-keys@^1.0.12:
6300
+object-keys@^1.0.11, object-keys@^1.0.12:
5901
   version "1.1.0"
6301
   version "1.1.0"
5902
   resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032"
6302
   resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032"
5903
   integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==
6303
   integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==
5909
   dependencies:
6309
   dependencies:
5910
     isobject "^3.0.0"
6310
     isobject "^3.0.0"
5911
 
6311
 
6312
+object.assign@^4.1.0:
6313
+  version "4.1.0"
6314
+  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
6315
+  integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
6316
+  dependencies:
6317
+    define-properties "^1.1.2"
6318
+    function-bind "^1.1.1"
6319
+    has-symbols "^1.0.0"
6320
+    object-keys "^1.0.11"
6321
+
6322
+object.entries@^1.0.4:
6323
+  version "1.1.0"
6324
+  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519"
6325
+  integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==
6326
+  dependencies:
6327
+    define-properties "^1.1.3"
6328
+    es-abstract "^1.12.0"
6329
+    function-bind "^1.1.1"
6330
+    has "^1.0.3"
6331
+
6332
+object.fromentries@^2.0.0:
6333
+  version "2.0.0"
6334
+  resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab"
6335
+  integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==
6336
+  dependencies:
6337
+    define-properties "^1.1.2"
6338
+    es-abstract "^1.11.0"
6339
+    function-bind "^1.1.1"
6340
+    has "^1.0.1"
6341
+
5912
 object.getownpropertydescriptors@^2.0.3:
6342
 object.getownpropertydescriptors@^2.0.3:
5913
   version "2.0.3"
6343
   version "2.0.3"
5914
   resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
6344
   resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
5983
     minimist "~0.0.1"
6413
     minimist "~0.0.1"
5984
     wordwrap "~0.0.2"
6414
     wordwrap "~0.0.2"
5985
 
6415
 
5986
-optionator@^0.8.1:
6416
+optionator@^0.8.1, optionator@^0.8.2:
5987
   version "0.8.2"
6417
   version "0.8.2"
5988
   resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
6418
   resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
5989
   integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
6419
   integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
6178
     inherits "^2.0.3"
6608
     inherits "^2.0.3"
6179
     readable-stream "^2.1.5"
6609
     readable-stream "^2.1.5"
6180
 
6610
 
6611
+parent-module@^1.0.0:
6612
+  version "1.0.0"
6613
+  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5"
6614
+  integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==
6615
+  dependencies:
6616
+    callsites "^3.0.0"
6617
+
6181
 parse-github-url@^1.0.1:
6618
 parse-github-url@^1.0.1:
6182
   version "1.0.2"
6619
   version "1.0.2"
6183
   resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395"
6620
   resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395"
6429
   resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
6866
   resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
6430
   integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=
6867
   integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=
6431
 
6868
 
6869
+progress@^2.0.0:
6870
+  version "2.0.3"
6871
+  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
6872
+  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
6873
+
6432
 promise-inflight@^1.0.1, promise-inflight@~1.0.1:
6874
 promise-inflight@^1.0.1, promise-inflight@~1.0.1:
6433
   version "1.0.1"
6875
   version "1.0.1"
6434
   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
6876
   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
6918
     extend-shallow "^3.0.2"
7360
     extend-shallow "^3.0.2"
6919
     safe-regex "^1.1.0"
7361
     safe-regex "^1.1.0"
6920
 
7362
 
7363
+regexpp@^2.0.1:
7364
+  version "2.0.1"
7365
+  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
7366
+  integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
7367
+
6921
 regexpu-core@^4.1.3:
7368
 regexpu-core@^4.1.3:
6922
   version "4.5.3"
7369
   version "4.5.3"
6923
   resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.3.tgz#72f572e03bb8b9f4f4d895a0ccc57e707f4af2e4"
7370
   resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.3.tgz#72f572e03bb8b9f4f4d895a0ccc57e707f4af2e4"
7024
   resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
7471
   resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
7025
   integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
7472
   integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
7026
 
7473
 
7474
+requireindex@^1.2.0:
7475
+  version "1.2.0"
7476
+  resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef"
7477
+  integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==
7478
+
7027
 resolve-cwd@^2.0.0:
7479
 resolve-cwd@^2.0.0:
7028
   version "2.0.0"
7480
   version "2.0.0"
7029
   resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
7481
   resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
7051
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
7503
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
7052
   integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
7504
   integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
7053
 
7505
 
7054
-resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
7506
+resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
7055
   version "1.10.0"
7507
   version "1.10.0"
7056
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
7508
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
7057
   integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==
7509
   integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==
7081
   resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
7533
   resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
7082
   integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
7534
   integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
7083
 
7535
 
7084
-rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
7536
+rimraf@2, rimraf@2.6.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
7085
   version "2.6.3"
7537
   version "2.6.3"
7086
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
7538
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
7087
   integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
7539
   integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
7124
   resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
7576
   resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
7125
   integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
7577
   integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
7126
 
7578
 
7579
+rxjs@^6.4.0:
7580
+  version "6.4.0"
7581
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504"
7582
+  integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==
7583
+  dependencies:
7584
+    tslib "^1.9.0"
7585
+
7127
 safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
7586
 safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
7128
   version "5.1.2"
7587
   version "5.1.2"
7129
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
7588
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
7242
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
7701
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
7243
   integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
7702
   integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
7244
 
7703
 
7704
+semver@5.5.0:
7705
+  version "5.5.0"
7706
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
7707
+  integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
7708
+
7245
 semver@~5.3.0:
7709
 semver@~5.3.0:
7246
   version "5.3.0"
7710
   version "5.3.0"
7247
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
7711
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
7389
   resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
7853
   resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
7390
   integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
7854
   integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
7391
 
7855
 
7856
+slice-ansi@^2.1.0:
7857
+  version "2.1.0"
7858
+  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
7859
+  integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
7860
+  dependencies:
7861
+    ansi-styles "^3.2.0"
7862
+    astral-regex "^1.0.0"
7863
+    is-fullwidth-code-point "^2.0.0"
7864
+
7392
 slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6:
7865
 slide@^1.1.3, slide@^1.1.5, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6:
7393
   version "1.1.6"
7866
   version "1.1.6"
7394
   resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
7867
   resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
7720
     is-fullwidth-code-point "^2.0.0"
8193
     is-fullwidth-code-point "^2.0.0"
7721
     strip-ansi "^4.0.0"
8194
     strip-ansi "^4.0.0"
7722
 
8195
 
8196
+string-width@^3.0.0:
8197
+  version "3.1.0"
8198
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
8199
+  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
8200
+  dependencies:
8201
+    emoji-regex "^7.0.1"
8202
+    is-fullwidth-code-point "^2.0.0"
8203
+    strip-ansi "^5.1.0"
8204
+
7723
 string_decoder@~0.10.x:
8205
 string_decoder@~0.10.x:
7724
   version "0.10.31"
8206
   version "0.10.31"
7725
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
8207
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
7758
   dependencies:
8240
   dependencies:
7759
     ansi-regex "^4.0.0"
8241
     ansi-regex "^4.0.0"
7760
 
8242
 
8243
+strip-ansi@^5.1.0:
8244
+  version "5.1.0"
8245
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.1.0.tgz#55aaa54e33b4c0649a7338a43437b1887d153ec4"
8246
+  integrity sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==
8247
+  dependencies:
8248
+    ansi-regex "^4.1.0"
8249
+
7761
 strip-bom@^3.0.0:
8250
 strip-bom@^3.0.0:
7762
   version "3.0.0"
8251
   version "3.0.0"
7763
   resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
8252
   resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
7773
   resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
8262
   resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
7774
   integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
8263
   integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
7775
 
8264
 
7776
-strip-json-comments@~2.0.1:
8265
+strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
7777
   version "2.0.1"
8266
   version "2.0.1"
7778
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
8267
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
7779
   integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
8268
   integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
7810
   resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
8299
   resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
7811
   integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
8300
   integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
7812
 
8301
 
8302
+table@^5.2.3:
8303
+  version "5.2.3"
8304
+  resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2"
8305
+  integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==
8306
+  dependencies:
8307
+    ajv "^6.9.1"
8308
+    lodash "^4.17.11"
8309
+    slice-ansi "^2.1.0"
8310
+    string-width "^3.0.0"
8311
+
7813
 tar@^2.0.0:
8312
 tar@^2.0.0:
7814
   version "2.2.1"
8313
   version "2.2.1"
7815
   resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
8314
   resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
7862
   resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
8361
   resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
7863
   integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
8362
   integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
7864
 
8363
 
7865
-text-table@~0.2.0:
8364
+text-table@^0.2.0, text-table@~0.2.0:
7866
   version "0.2.0"
8365
   version "0.2.0"
7867
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
8366
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
7868
   integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
8367
   integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
7985
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
8484
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
7986
   integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
8485
   integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
7987
 
8486
 
8487
+tslib@^1.8.1, tslib@^1.9.0:
8488
+  version "1.9.3"
8489
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
8490
+  integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
8491
+
8492
+tsutils@^3.7.0:
8493
+  version "3.9.1"
8494
+  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.9.1.tgz#2a40dc742943c71eca6d5c1994fcf999956be387"
8495
+  integrity sha512-hrxVtLtPqQr//p8/msPT1X1UYXUjizqSit5d9AQ5k38TcV38NyecL5xODNxa73cLe/5sdiJ+w1FqzDhRBA/anA==
8496
+  dependencies:
8497
+    tslib "^1.8.1"
8498
+
7988
 tunnel-agent@^0.6.0:
8499
 tunnel-agent@^0.6.0:
7989
   version "0.6.0"
8500
   version "0.6.0"
7990
   resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
8501
   resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
8405
     imurmurhash "^0.1.4"
8916
     imurmurhash "^0.1.4"
8406
     signal-exit "^3.0.2"
8917
     signal-exit "^3.0.2"
8407
 
8918
 
8919
+write@1.0.3:
8920
+  version "1.0.3"
8921
+  resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
8922
+  integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
8923
+  dependencies:
8924
+    mkdirp "^0.5.1"
8925
+
8408
 ws@^1.1.0, ws@^1.1.5:
8926
 ws@^1.1.0, ws@^1.1.5:
8409
   version "1.1.5"
8927
   version "1.1.5"
8410
   resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"
8928
   resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51"