瀏覽代碼

feat(android): fix overflow issues and match iOS default renders (#472)

fixes #466 #194

* feat(android): fix overflow issues and match iOS default render error and loading behaviour

* Use babel preset typescript through react-native instead of ts-jest

* Update yarn.lock

* Update README.md
Thibault Malbranche 5 年之前
父節點
當前提交
319a86e236
No account linked to committer's email address
共有 10 個檔案被更改,包括 73 行新增138 行删除
  1. 2
    1
      .eslintignore
  2. 7
    8
      README.md
  3. 10
    12
      babel.config.js
  4. 0
    6
      jest.config.js
  5. 0
    1
      package.json
  6. 9
    11
      src/WebView.android.tsx
  7. 2
    20
      src/WebView.ios.tsx
  8. 5
    3
      src/WebView.styles.ts
  9. 29
    1
      src/WebViewShared.tsx
  10. 9
    75
      yarn.lock

+ 2
- 1
.eslintignore 查看文件

1
-lib/
1
+lib/
2
+babel.config.js

+ 7
- 8
README.md 查看文件

1
 # React Native WebView - a Modern, Cross-Platform WebView for React Native
1
 # React Native WebView - a Modern, Cross-Platform WebView for React Native
2
-[![star this repo](http://githubbadges.com/star.svg?user=react-native-community&repo=react-native-webview&style=flat)](https://github.com/react-native-community/react-native-webview) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors) [![Known Vulnerabilities](https://snyk.io/test/github/react-native-community/react-native-webview/badge.svg?style=flat-square)](https://snyk.io/test/github/react-native-community/react-native-webview) 
2
+
3
+[![star this repo](http://githubbadges.com/star.svg?user=react-native-community&repo=react-native-webview&style=flat)](https://github.com/react-native-community/react-native-webview) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors) [![Known Vulnerabilities](https://snyk.io/test/github/react-native-community/react-native-webview/badge.svg?style=flat-square)](https://snyk.io/test/github/react-native-community/react-native-webview)
3
 
4
 
4
 **React Native WebView** is a modern, well-supported, and cross-platform WebView for React Native. It is intended to be a replacement for the built-in WebView (which will be [removed from core](https://github.com/react-native-community/discussions-and-proposals/pull/3)).
5
 **React Native WebView** is a modern, well-supported, and cross-platform WebView for React Native. It is intended to be a replacement for the built-in WebView (which will be [removed from core](https://github.com/react-native-community/discussions-and-proposals/pull/3)).
5
 
6
 
6
 ## Core Maintainers - Sponsoring companies
7
 ## Core Maintainers - Sponsoring companies
8
+
7
 _This project is maintained for free by these people using both their free time and their company work time._
9
 _This project is maintained for free by these people using both their free time and their company work time._
8
 
10
 
9
 - [Thibault Malbranche](https://github.com/Titozzz) ([Twitter @titozzz](https://twitter.com/titozzz)) from [Brigad](https://brigad.co/about)
11
 - [Thibault Malbranche](https://github.com/Titozzz) ([Twitter @titozzz](https://twitter.com/titozzz)) from [Brigad](https://brigad.co/about)
43
 Import the `WebView` component from `react-native-webview` and use it like so:
45
 Import the `WebView` component from `react-native-webview` and use it like so:
44
 
46
 
45
 ```jsx
47
 ```jsx
46
-import React, { Component } from "react";
47
-import { StyleSheet, Text, View } from "react-native";
48
-import { WebView } from "react-native-webview";
48
+import React, { Component } from 'react';
49
+import { StyleSheet, Text, View } from 'react-native';
50
+import { WebView } from 'react-native-webview';
49
 
51
 
50
 // ...
52
 // ...
51
 class MyWebComponent extends Component {
53
 class MyWebComponent extends Component {
52
   render() {
54
   render() {
53
     return (
55
     return (
54
-      <WebView
55
-        source={{ uri: "https://facebook.github.io/react-native/" }}
56
-      />
56
+      <WebView source={{ uri: 'https://facebook.github.io/react-native/' }} />
57
     );
57
     );
58
   }
58
   }
59
 }
59
 }
64
 ## Common issues
64
 ## Common issues
65
 
65
 
66
 - If you're getting `Invariant Violation: Native component for "RNCWKWebView does not exist"` it likely means you forgot to run `react-native link` or there was some error with the linking process
66
 - If you're getting `Invariant Violation: Native component for "RNCWKWebView does not exist"` it likely means you forgot to run `react-native link` or there was some error with the linking process
67
-- There's a [problem](https://stackoverflow.com/questions/52872045/rendering-webview-on-android-device-overlaps-previous-siblings-from-same-parent) on some Android devices where the webview could overlap previous siblings from same parent. To fix this, wrap the WebView in a View with style `overflow: hidden`.
68
 
67
 
69
 ## Contributing
68
 ## Contributing
70
 
69
 

+ 10
- 12
babel.config.js 查看文件

1
-module.exports = function (api) {
2
-    api && api.cache(false);
3
-    return {
4
-      env: {
5
-        test: {
6
-          presets: [
7
-            "module:metro-react-native-babel-preset"
8
-          ],
9
-        }
10
-      }
11
-    };
12
-  }
1
+module.exports = function(api) {
2
+  api && api.cache(false);
3
+  return {
4
+    env: {
5
+      test: {
6
+        presets: ['module:metro-react-native-babel-preset'],
7
+      },
8
+    },
9
+  };
10
+};

+ 0
- 6
jest.config.js 查看文件

164
   // timers: "real",
164
   // timers: "real",
165
 
165
 
166
   // A map from regular expressions to paths to transformers
166
   // A map from regular expressions to paths to transformers
167
-  transform: {
168
-    '^.+\\.ts(x)?$': 'ts-jest',
169
-    '^.+\\.js$': 'babel-jest',
170
-    '^.+\\.(bmp|gif|jpg|jpeg|mp4|png|psd|svg|webp)$':
171
-      '<rootDir>/node_modules/react-native/jest/assetFileTransformer.js',
172
-  },
173
 
167
 
174
   // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
168
   // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
175
   // transformIgnorePatterns: [
169
   // transformIgnorePatterns: [

+ 0
- 1
package.json 查看文件

50
     "react": "16.8.3",
50
     "react": "16.8.3",
51
     "react-native": "0.59.1",
51
     "react-native": "0.59.1",
52
     "semantic-release": "15.10.3",
52
     "semantic-release": "15.10.3",
53
-    "ts-jest": "24.0.0",
54
     "typescript": "3.3.3333"
53
     "typescript": "3.3.3333"
55
   },
54
   },
56
   "repository": {
55
   "repository": {

+ 9
- 11
src/WebView.android.tsx 查看文件

1
 import React from 'react';
1
 import React from 'react';
2
 
2
 
3
 import {
3
 import {
4
-  ActivityIndicator,
5
   Image,
4
   Image,
6
   requireNativeComponent,
5
   requireNativeComponent,
7
   UIManager as NotTypedUIManager,
6
   UIManager as NotTypedUIManager,
17
   defaultOriginWhitelist,
16
   defaultOriginWhitelist,
18
   createOnShouldStartLoadWithRequest,
17
   createOnShouldStartLoadWithRequest,
19
   getViewManagerConfig,
18
   getViewManagerConfig,
19
+  defaultRenderError,
20
+  defaultRenderLoading,
20
 } from './WebViewShared';
21
 } from './WebViewShared';
21
 import {
22
 import {
22
   WebViewErrorEvent,
23
   WebViewErrorEvent,
38
 ) as typeof NativeWebViewAndroid;
39
 ) as typeof NativeWebViewAndroid;
39
 const { resolveAssetSource } = Image;
40
 const { resolveAssetSource } = Image;
40
 
41
 
41
-const defaultRenderLoading = () => (
42
-  <View style={styles.loadingView}>
43
-    <ActivityIndicator style={styles.loadingProgressBar} />
44
-  </View>
45
-);
46
-
47
 /**
42
 /**
48
  * Renders a native WebView.
43
  * Renders a native WebView.
49
  */
44
  */
228
       nativeConfig = {},
223
       nativeConfig = {},
229
       ...otherProps
224
       ...otherProps
230
     } = this.props;
225
     } = this.props;
226
+
231
     let otherView = null;
227
     let otherView = null;
232
 
228
 
233
     if (this.state.viewState === 'LOADING') {
229
     if (this.state.viewState === 'LOADING') {
235
     } else if (this.state.viewState === 'ERROR') {
231
     } else if (this.state.viewState === 'ERROR') {
236
       const errorEvent = this.state.lastErrorEvent;
232
       const errorEvent = this.state.lastErrorEvent;
237
       invariant(errorEvent != null, 'lastErrorEvent expected to be non-null');
233
       invariant(errorEvent != null, 'lastErrorEvent expected to be non-null');
238
-      otherView
239
-        = renderError
240
-        && renderError(errorEvent.domain, errorEvent.code, errorEvent.description);
234
+      otherView = (renderError || defaultRenderError)(
235
+        errorEvent.domain,
236
+        errorEvent.code,
237
+        errorEvent.description,
238
+      );
241
     } else if (this.state.viewState !== 'IDLE') {
239
     } else if (this.state.viewState !== 'IDLE') {
242
       console.error(
240
       console.error(
243
         `RNCWebView invalid state encountered: ${this.state.viewState}`,
241
         `RNCWebView invalid state encountered: ${this.state.viewState}`,
244
       );
242
       );
245
     }
243
     }
246
 
244
 
247
-    const webViewStyles = [styles.container, style];
245
+    const webViewStyles = [styles.container, styles.webView, style];
248
     if (
246
     if (
249
       this.state.viewState === 'LOADING'
247
       this.state.viewState === 'LOADING'
250
       || this.state.viewState === 'ERROR'
248
       || this.state.viewState === 'ERROR'

+ 2
- 20
src/WebView.ios.tsx 查看文件

1
 import React from 'react';
1
 import React from 'react';
2
 import {
2
 import {
3
-  ActivityIndicator,
4
-  Text,
5
   UIManager as NotTypedUIManager,
3
   UIManager as NotTypedUIManager,
6
   View,
4
   View,
7
   requireNativeComponent,
5
   requireNativeComponent,
16
   defaultOriginWhitelist,
14
   defaultOriginWhitelist,
17
   createOnShouldStartLoadWithRequest,
15
   createOnShouldStartLoadWithRequest,
18
   getViewManagerConfig,
16
   getViewManagerConfig,
17
+  defaultRenderError,
18
+  defaultRenderLoading,
19
 } from './WebViewShared';
19
 } from './WebViewShared';
20
 import {
20
 import {
21
   WebViewErrorEvent,
21
   WebViewErrorEvent,
60
   'RNCWKWebView',
60
   'RNCWKWebView',
61
 );
61
 );
62
 
62
 
63
-const defaultRenderLoading = () => (
64
-  <View style={styles.loadingView}>
65
-    <ActivityIndicator />
66
-  </View>
67
-);
68
-const defaultRenderError = (
69
-  errorDomain: string | undefined,
70
-  errorCode: number,
71
-  errorDesc: string,
72
-) => (
73
-  <View style={styles.errorContainer}>
74
-    <Text style={styles.errorTextTitle}>Error loading page</Text>
75
-    <Text style={styles.errorText}>{`Domain: ${errorDomain}`}</Text>
76
-    <Text style={styles.errorText}>{`Error Code: ${errorCode}`}</Text>
77
-    <Text style={styles.errorText}>{`Description: ${errorDesc}`}</Text>
78
-  </View>
79
-);
80
-
81
 class WebView extends React.Component<IOSWebViewProps, State> {
63
 class WebView extends React.Component<IOSWebViewProps, State> {
82
   static defaultProps = {
64
   static defaultProps = {
83
     useWebKit: true,
65
     useWebKit: true,

+ 5
- 3
src/WebView.styles.ts 查看文件

11
   loadingProgressBar: ViewStyle;
11
   loadingProgressBar: ViewStyle;
12
 }
12
 }
13
 
13
 
14
-const BGWASH = 'rgba(255,255,255,0.8)';
15
-
16
 const styles = StyleSheet.create<Styles>({
14
 const styles = StyleSheet.create<Styles>({
17
   container: {
15
   container: {
18
     flex: 1,
16
     flex: 1,
17
+    overflow: 'hidden',
18
+    backgroundColor: 'white',
19
   },
19
   },
20
   errorContainer: {
20
   errorContainer: {
21
     flex: 1,
21
     flex: 1,
22
     justifyContent: 'center',
22
     justifyContent: 'center',
23
     alignItems: 'center',
23
     alignItems: 'center',
24
-    backgroundColor: BGWASH,
24
+    backgroundColor: 'white',
25
   },
25
   },
26
   hidden: {
26
   hidden: {
27
     height: 0,
27
     height: 0,
28
     flex: 0, // disable 'flex:1' when hiding a View
28
     flex: 0, // disable 'flex:1' when hiding a View
29
+    display: 'none',
29
   },
30
   },
30
   loadingView: {
31
   loadingView: {
31
     flex: 1,
32
     flex: 1,
32
     justifyContent: 'center',
33
     justifyContent: 'center',
33
     alignItems: 'center',
34
     alignItems: 'center',
35
+    backgroundColor: 'white',
34
   },
36
   },
35
   loadingProgressBar: {
37
   loadingProgressBar: {
36
     height: 20,
38
     height: 20,

src/WebViewShared.ts → src/WebViewShared.tsx 查看文件

1
 import escapeStringRegexp from 'escape-string-regexp';
1
 import escapeStringRegexp from 'escape-string-regexp';
2
-import { Linking, UIManager as NotTypedUIManager } from 'react-native';
2
+import React from 'react';
3
+import {
4
+  Linking,
5
+  UIManager as NotTypedUIManager,
6
+  View,
7
+  ActivityIndicator,
8
+  Text,
9
+} from 'react-native';
3
 import {
10
 import {
4
   WebViewNavigationEvent,
11
   WebViewNavigationEvent,
5
   OnShouldStartLoadWithRequest,
12
   OnShouldStartLoadWithRequest,
6
   CustomUIManager,
13
   CustomUIManager,
7
 } from './WebViewTypes';
14
 } from './WebViewTypes';
15
+import styles from './WebView.styles';
8
 
16
 
9
 const UIManager = NotTypedUIManager as CustomUIManager;
17
 const UIManager = NotTypedUIManager as CustomUIManager;
10
 
18
 
66
   return UIManager.getViewManagerConfig(viewManagerName);
74
   return UIManager.getViewManagerConfig(viewManagerName);
67
 };
75
 };
68
 
76
 
77
+const defaultRenderLoading = () => (
78
+  <View style={styles.loadingView}>
79
+    <ActivityIndicator />
80
+  </View>
81
+);
82
+const defaultRenderError = (
83
+  errorDomain: string | undefined,
84
+  errorCode: number,
85
+  errorDesc: string,
86
+) => (
87
+  <View style={styles.errorContainer}>
88
+    <Text style={styles.errorTextTitle}>Error loading page</Text>
89
+    <Text style={styles.errorText}>{`Domain: ${errorDomain}`}</Text>
90
+    <Text style={styles.errorText}>{`Error Code: ${errorCode}`}</Text>
91
+    <Text style={styles.errorText}>{`Description: ${errorDesc}`}</Text>
92
+  </View>
93
+);
94
+
69
 export {
95
 export {
70
   defaultOriginWhitelist,
96
   defaultOriginWhitelist,
71
   createOnShouldStartLoadWithRequest,
97
   createOnShouldStartLoadWithRequest,
72
   getViewManagerConfig,
98
   getViewManagerConfig,
99
+  defaultRenderLoading,
100
+  defaultRenderError,
73
 };
101
 };

+ 9
- 75
yarn.lock 查看文件

1774
   dependencies:
1774
   dependencies:
1775
     resolve "1.1.7"
1775
     resolve "1.1.7"
1776
 
1776
 
1777
-bs-logger@0.x:
1778
-  version "0.2.6"
1779
-  resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
1780
-  integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
1781
-  dependencies:
1782
-    fast-json-stable-stringify "2.x"
1783
-
1784
 bser@^2.0.0:
1777
 bser@^2.0.0:
1785
   version "2.0.0"
1778
   version "2.0.0"
1786
   resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
1779
   resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
1798
   resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
1791
   resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
1799
   integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
1792
   integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
1800
 
1793
 
1801
-buffer-from@1.x, buffer-from@^1.0.0:
1794
+buffer-from@^1.0.0:
1802
   version "1.1.1"
1795
   version "1.1.1"
1803
   resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
1796
   resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
1804
   integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
1797
   integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
2509
   dependencies:
2502
   dependencies:
2510
     ms "^2.1.1"
2503
     ms "^2.1.1"
2511
 
2504
 
2512
-debuglog@*, debuglog@^1.0.1:
2505
+debuglog@^1.0.1:
2513
   version "1.0.1"
2506
   version "1.0.1"
2514
   resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
2507
   resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
2515
   integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
2508
   integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
3300
     merge2 "^1.2.3"
3293
     merge2 "^1.2.3"
3301
     micromatch "^3.1.10"
3294
     micromatch "^3.1.10"
3302
 
3295
 
3303
-fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
3296
+fast-json-stable-stringify@^2.0.0:
3304
   version "2.0.0"
3297
   version "2.0.0"
3305
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
3298
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
3306
   integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
3299
   integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
4072
     pkg-dir "^3.0.0"
4065
     pkg-dir "^3.0.0"
4073
     resolve-cwd "^2.0.0"
4066
     resolve-cwd "^2.0.0"
4074
 
4067
 
4075
-imurmurhash@*, imurmurhash@^0.1.4:
4068
+imurmurhash@^0.1.4:
4076
   version "0.1.4"
4069
   version "0.1.4"
4077
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
4070
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
4078
   integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
4071
   integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
5087
   resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
5080
   resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
5088
   integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
5081
   integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
5089
 
5082
 
5090
-json5@2.x, json5@^2.1.0:
5083
+json5@^2.1.0:
5091
   version "2.1.0"
5084
   version "2.1.0"
5092
   resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
5085
   resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
5093
   integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
5086
   integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
5313
   dependencies:
5306
   dependencies:
5314
     signal-exit "^3.0.2"
5307
     signal-exit "^3.0.2"
5315
 
5308
 
5316
-lodash._baseindexof@*:
5317
-  version "3.1.0"
5318
-  resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
5319
-  integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=
5320
-
5321
 lodash._baseuniq@~4.6.0:
5309
 lodash._baseuniq@~4.6.0:
5322
   version "4.6.0"
5310
   version "4.6.0"
5323
   resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
5311
   resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
5326
     lodash._createset "~4.0.0"
5314
     lodash._createset "~4.0.0"
5327
     lodash._root "~3.0.0"
5315
     lodash._root "~3.0.0"
5328
 
5316
 
5329
-lodash._bindcallback@*:
5330
-  version "3.0.1"
5331
-  resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
5332
-  integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4=
5333
-
5334
-lodash._cacheindexof@*:
5335
-  version "3.0.2"
5336
-  resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
5337
-  integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=
5338
-
5339
-lodash._createcache@*:
5340
-  version "3.1.2"
5341
-  resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
5342
-  integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=
5343
-  dependencies:
5344
-    lodash._getnative "^3.0.0"
5345
-
5346
 lodash._createset@~4.0.0:
5317
 lodash._createset@~4.0.0:
5347
   version "4.0.3"
5318
   version "4.0.3"
5348
   resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
5319
   resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
5349
   integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
5320
   integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
5350
 
5321
 
5351
-lodash._getnative@*, lodash._getnative@^3.0.0:
5352
-  version "3.9.1"
5353
-  resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
5354
-  integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
5355
-
5356
 lodash._root@~3.0.0:
5322
 lodash._root@~3.0.0:
5357
   version "3.0.1"
5323
   version "3.0.1"
5358
   resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
5324
   resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
5403
   resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b"
5369
   resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b"
5404
   integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=
5370
   integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=
5405
 
5371
 
5406
-lodash.restparam@*:
5407
-  version "3.6.1"
5408
-  resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
5409
-  integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
5410
-
5411
 lodash.set@^4.3.2:
5372
 lodash.set@^4.3.2:
5412
   version "4.3.2"
5373
   version "4.3.2"
5413
   resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
5374
   resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
5505
   dependencies:
5466
   dependencies:
5506
     pify "^3.0.0"
5467
     pify "^3.0.0"
5507
 
5468
 
5508
-make-error@1.x:
5509
-  version "1.3.5"
5510
-  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
5511
-  integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
5512
-
5513
 "make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1:
5469
 "make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1:
5514
   version "4.0.1"
5470
   version "4.0.1"
5515
   resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083"
5471
   resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083"
6145
     for-in "^1.0.2"
6101
     for-in "^1.0.2"
6146
     is-extendable "^1.0.1"
6102
     is-extendable "^1.0.1"
6147
 
6103
 
6148
-mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
6104
+"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
6149
   version "0.5.1"
6105
   version "0.5.1"
6150
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
6106
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
6151
   integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
6107
   integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
7662
     isarray "0.0.1"
7618
     isarray "0.0.1"
7663
     string_decoder "~0.10.x"
7619
     string_decoder "~0.10.x"
7664
 
7620
 
7665
-readdir-scoped-modules@*, readdir-scoped-modules@^1.0.0:
7621
+readdir-scoped-modules@^1.0.0:
7666
   version "1.0.2"
7622
   version "1.0.2"
7667
   resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
7623
   resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747"
7668
   integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c=
7624
   integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c=
7881
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
7837
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
7882
   integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
7838
   integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
7883
 
7839
 
7884
-resolve@1.x, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
7840
+resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1, resolve@^1.9.0:
7885
   version "1.10.0"
7841
   version "1.10.0"
7886
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
7842
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba"
7887
   integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==
7843
   integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==
8078
   resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9"
8034
   resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9"
8079
   integrity sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=
8035
   integrity sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=
8080
 
8036
 
8081
-"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1:
8037
+"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1:
8082
   version "5.6.0"
8038
   version "5.6.0"
8083
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
8039
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
8084
   integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
8040
   integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
8859
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
8815
   resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
8860
   integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
8816
   integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
8861
 
8817
 
8862
-ts-jest@24.0.0:
8863
-  version "24.0.0"
8864
-  resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.0.tgz#3f26bf2ec1fa584863a5a9c29bd8717d549efbf6"
8865
-  integrity sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw==
8866
-  dependencies:
8867
-    bs-logger "0.x"
8868
-    buffer-from "1.x"
8869
-    fast-json-stable-stringify "2.x"
8870
-    json5 "2.x"
8871
-    make-error "1.x"
8872
-    mkdirp "0.x"
8873
-    resolve "1.x"
8874
-    semver "^5.5"
8875
-    yargs-parser "10.x"
8876
-
8877
 tslib@^1.8.1, tslib@^1.9.0:
8818
 tslib@^1.8.1, tslib@^1.9.0:
8878
   version "1.9.3"
8819
   version "1.9.3"
8879
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
8820
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
9402
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
9343
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
9403
   integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
9344
   integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
9404
 
9345
 
9405
-yargs-parser@10.x:
9406
-  version "10.1.0"
9407
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
9408
-  integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==
9409
-  dependencies:
9410
-    camelcase "^4.1.0"
9411
-
9412
 yargs-parser@^11.1.1:
9346
 yargs-parser@^11.1.1:
9413
   version "11.1.1"
9347
   version "11.1.1"
9414
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
9348
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"