Mathieu Acthernoene před 5 roky
rodič
revize
4b800f92f4

+ 179
- 142
README.md Zobrazit soubor

@@ -6,28 +6,28 @@
6 6
 ![MIT](https://img.shields.io/dub/l/vibe-d.svg)
7 7
 [![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
8 8
 
9
-Check and request user permissions in React Native
9
+An unified permissions API for React Native on iOS and Android.
10 10
 
11 11
 ## Support
12 12
 
13 13
 | version | react-native version |
14 14
 | ------- | -------------------- |
15 15
 | 2.0.0+  | 0.60.0+              |
16
-| 1.1.1   | 0.40.0 - 0.52.2      |
16
+| 1.2.1   | 0.56.0 - 0.59.10     |
17 17
 
18
-For 2.0.0 with 0.59-, you can use [`jetify -r`](https://github.com/mikehardy/jetifier/blob/master/README.md#to-reverse-jetify--convert-node_modules-dependencies-to-support-libraries)
18
+_You can use 2.0.0 with 0.59.10- with the [`jetify -r`](https://github.com/mikehardy/jetifier/blob/master/README.md#to-reverse-jetify--convert-node_modules-dependencies-to-support-libraries) `postinstall` command._
19 19
 
20 20
 ## Setup
21 21
 
22 22
 ```bash
23
-$ npm install --save react-native-permissions@next
23
+$ npm install --save react-native-permissions
24 24
 # --- or ---
25
-$ yarn add react-native-permissions@next
25
+$ yarn add react-native-permissions
26 26
 ```
27 27
 
28 28
 ### iOS
29 29
 
30
-By default no permission handler is installed. Update your `Podfile` by choosing the ones you want then run `pod install`.
30
+By default no permission handler is installed. Update your `Podfile` by choosing the ones you want to check or request, then run `pod install`.
31 31
 
32 32
 ```ruby
33 33
 target 'YourAwesomeProject' do
@@ -56,7 +56,7 @@ target 'YourAwesomeProject' do
56 56
 end
57 57
 ```
58 58
 
59
-Then update your `Info.plist` with wanted permissions usage descriptions.
59
+Then update your `Info.plist` with wanted permissions usage descriptions:
60 60
 
61 61
 ```xml
62 62
 <?xml version="1.0" encoding="UTF-8"?>
@@ -64,38 +64,38 @@ Then update your `Info.plist` with wanted permissions usage descriptions.
64 64
 <plist version="1.0">
65 65
 <dict>
66 66
 
67
-  <!-- 🚨 keep only the permissions used in your app! 🚨 -->
67
+  <!-- 🚨 Keep only the permissions used in your app 🚨 -->
68 68
 
69 69
   <key>NSAppleMusicUsageDescription</key>
70
-  <string>TEXT</string>
70
+  <string>YOUR TEXT</string>
71 71
   <key>NSBluetoothAlwaysUsageDescription</key>
72
-  <string>TEXT</string>
72
+  <string>YOUR TEXT</string>
73 73
   <key>NSBluetoothPeripheralUsageDescription</key>
74
-  <string>TEXT</string>
74
+  <string>YOUR TEXT</string>
75 75
   <key>NSCalendarsUsageDescription</key>
76
-  <string>TEXT</string>
76
+  <string>YOUR TEXT</string>
77 77
   <key>NSCameraUsageDescription</key>
78
-  <string>TEXT</string>
78
+  <string>YOUR TEXT</string>
79 79
   <key>NSContactsUsageDescription</key>
80
-  <string>TEXT</string>
80
+  <string>YOUR TEXT</string>
81 81
   <key>NSFaceIDUsageDescription</key>
82
-  <string>TEXT</string>
82
+  <string>YOUR TEXT</string>
83 83
   <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
84
-  <string>TEXT</string>
84
+  <string>YOUR TEXT</string>
85 85
   <key>NSLocationAlwaysUsageDescription</key>
86
-  <string>TEXT</string>
86
+  <string>YOUR TEXT</string>
87 87
   <key>NSLocationWhenInUseUsageDescription</key>
88
-  <string>TEXT</string>
88
+  <string>YOUR TEXT</string>
89 89
   <key>NSMicrophoneUsageDescription</key>
90
-  <string>TEXT</string>
90
+  <string>YOUR TEXT</string>
91 91
   <key>NSMotionUsageDescription</key>
92
-  <string>TEXT</string>
92
+  <string>YOUR TEXT</string>
93 93
   <key>NSPhotoLibraryUsageDescription</key>
94
-  <string>TEXT</string>
94
+  <string>YOUR TEXT</string>
95 95
   <key>NSRemindersUsageDescription</key>
96
-  <string>TEXT</string>
96
+  <string>YOUR TEXT</string>
97 97
   <key>NSSpeechRecognitionUsageDescription</key>
98
-  <string>TEXT</string>
98
+  <string>YOUR TEXT</string>
99 99
 
100 100
   <!-- … -->
101 101
 
@@ -105,13 +105,13 @@ Then update your `Info.plist` with wanted permissions usage descriptions.
105 105
 
106 106
 ### Android
107 107
 
108
-Add all wanted permissions to your app `android/app/src/main/res/AndroidManifest.xml`.
108
+Add all wanted permissions to your app `android/app/src/main/res/AndroidManifest.xml` file:
109 109
 
110 110
 ```xml
111 111
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
112 112
   package="com.myawesomeapp">
113 113
 
114
-  <!-- 🚨 keep only the permissions used in your app! 🚨 -->
114
+  <!-- 🚨 Keep only the permissions used in your app 🚨 -->
115 115
 
116 116
   <uses-permission android:name="android.permission.ACCEPT_HANDOVER" />
117 117
   <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
@@ -150,10 +150,10 @@ Add all wanted permissions to your app `android/app/src/main/res/AndroidManifest
150 150
 
151 151
 ## 🆘 Manual linking
152 152
 
153
-Because this package targets React Native 0.60+, you will probably don't need to link it. Otherwise if you follow all the previous steps and it still doesn't work, try to link this library manually.
153
+Because this package targets React Native 0.60.0+, you will probably don't need to link it manually. Otherwise if it's not the case, follow this additional instructions:
154 154
 
155 155
 <details>
156
-  <summary>👀 See manual linking instructions</summary>
156
+  <summary><b>👀 See manual linking instructions</b></summary>
157 157
 
158 158
 ### iOS
159 159
 
@@ -208,18 +208,111 @@ public class MainApplication extends Application implements ReactApplication {
208 208
 
209 209
 </details>
210 210
 
211
-## API
211
+## Understanding permission flow
212 212
 
213
-### Permissions statuses
213
+As permissions are not handled in the same way on iOS and Android, this library provides an abstraction over the two platforms behaviors. To understand it a little better, take a look to these two flowcharts:
214 214
 
215
-Promises resolve into one of these statuses:
215
+### iOS flow
216 216
 
217
-| Return value          | Notes                                                             |
218
-| --------------------- | ----------------------------------------------------------------- |
219
-| `RESULTS.UNAVAILABLE` | This feature is not available (on this device / in this context)  |
220
-| `RESULTS.DENIED`      | The permission has not been requested / is denied but requestable |
221
-| `RESULTS.GRANTED`     | The permission is granted                                         |
222
-| `RESULTS.BLOCKED`     | The permission is denied and not requestable anymore              |
217
+```
218
+   ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
219
+   ┃ check(PERMISSIONS.IOS.CAMERA) ┃
220
+   ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
221
+                   │
222
+       Is the feature available
223
+           on this device ?
224
+                   │           ╔════╗
225
+                   ├───────────║ NO ║──────────────┐
226
+                   │           ╚════╝              │
227
+                ╔═════╗                            ▼
228
+                ║ YES ║                 ┌─────────────────────┐
229
+                ╚═════╝                 │ RESULTS.UNAVAILABLE │
230
+                   │                    └─────────────────────┘
231
+           Is the permission
232
+             requestable ?
233
+                   │           ╔════╗
234
+                   ├───────────║ NO ║──────────────┐
235
+                   │           ╚════╝              │
236
+                ╔═════╗                            ▼
237
+                ║ YES ║                  ┌───────────────────┐
238
+                ╚═════╝                  │ RESULTS.BLOCKED / │
239
+                   │                     │  RESULTS.GRANTED  │
240
+                   ▼                     └───────────────────┘
241
+          ┌────────────────┐
242
+          │ RESULTS.DENIED │
243
+          └────────────────┘
244
+                   │
245
+                   ▼
246
+  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
247
+  ┃ request(PERMISSIONS.IOS.CAMERA) ┃
248
+  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
249
+                   │
250
+        Does the user accepted
251
+            the request ?
252
+                   │           ╔════╗
253
+                   ├───────────║ NO ║──────────────┐
254
+                   │           ╚════╝              │
255
+                ╔═════╗                            ▼
256
+                ║ YES ║                   ┌─────────────────┐
257
+                ╚═════╝                   │ RESULTS.BLOCKED │
258
+                   │                      └─────────────────┘
259
+                   ▼
260
+          ┌─────────────────┐
261
+          │ RESULTS.GRANTED │
262
+          └─────────────────┘
263
+```
264
+
265
+### Android flow
266
+
267
+```
268
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
269
+ ┃ check(PERMISSIONS.ANDROID.CAMERA) ┃
270
+ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
271
+                   │
272
+       Is the feature available
273
+           on this device ?
274
+                   │           ╔════╗
275
+                   ├───────────║ NO ║──────────────┐
276
+                   │           ╚════╝              │
277
+                ╔═════╗                            ▼
278
+                ║ YES ║                 ┌─────────────────────┐
279
+                ╚═════╝                 │ RESULTS.UNAVAILABLE │
280
+                   │                    └─────────────────────┘
281
+           Is the permission
282
+             requestable ?
283
+                   │           ╔════╗
284
+                   ├───────────║ NO ║──────────────┐
285
+                   │           ╚════╝              │
286
+                ╔═════╗                            ▼
287
+                ║ YES ║                  ┌───────────────────┐
288
+                ╚═════╝                  │ RESULTS.BLOCKED / │
289
+                   │                     │  RESULTS.GRANTED  │
290
+                   ▼                     └───────────────────┘
291
+          ┌────────────────┐
292
+          │ RESULTS.DENIED │◀──────────────────────┐
293
+          └────────────────┘                       │
294
+                   │                               │
295
+                   ▼                               │
296
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓         ╔════╗
297
+┃ request(PERMISSIONS.ANDROID.CAMERA) ┃         ║ NO ║
298
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛         ╚════╝
299
+                   │                               │
300
+        Does the user accepted                     │
301
+            the request ?                          │
302
+                   │           ╔════╗    Does the user checked
303
+                   ├───────────║ NO ║─────"Never ask again" ?
304
+                   │           ╚════╝              │
305
+                ╔═════╗                         ╔═════╗
306
+                ║ YES ║                         ║ YES ║
307
+                ╚═════╝                         ╚═════╝
308
+                   │                               │
309
+                   ▼                               ▼
310
+          ┌─────────────────┐             ┌─────────────────┐
311
+          │ RESULTS.GRANTED │             │ RESULTS.BLOCKED │
312
+          └─────────────────┘             └─────────────────┘
313
+```
314
+
315
+## API
223 316
 
224 317
 ### Supported permissions
225 318
 
@@ -277,11 +370,21 @@ PERMISSIONS.IOS.SPEECH_RECOGNITION;
277 370
 PERMISSIONS.IOS.STOREKIT;
278 371
 ```
279 372
 
280
-### Methods
373
+### Permissions statuses
281 374
 
282
-_types used in usage examples_
375
+Permission checks and requests resolve into one of these statuses:
376
+
377
+| Return value          | Notes                                                             |
378
+| --------------------- | ----------------------------------------------------------------- |
379
+| `RESULTS.UNAVAILABLE` | This feature is not available (on this device / in this context)  |
380
+| `RESULTS.DENIED`      | The permission has not been requested / is denied but requestable |
381
+| `RESULTS.GRANTED`     | The permission is granted                                         |
382
+| `RESULTS.BLOCKED`     | The permission is denied and not requestable anymore              |
383
+
384
+### Methods
283 385
 
284 386
 ```ts
387
+// type used in usage examples
285 388
 type PermissionStatus = 'unavailable' | 'denied' | 'blocked' | 'granted';
286 389
 ```
287 390
 
@@ -300,16 +403,20 @@ check(PERMISSIONS.IOS.LOCATION_ALWAYS)
300 403
   .then(result => {
301 404
     switch (result) {
302 405
       case RESULTS.UNAVAILABLE:
303
-        console.log('the feature is not available');
304
-        break;
305
-      case RESULTS.GRANTED:
306
-        console.log('permission is granted');
406
+        console.log(
407
+          'This feature is not available (on this device / in this context)',
408
+        );
307 409
         break;
308 410
       case RESULTS.DENIED:
309
-        console.log('permission is denied and / or requestable');
411
+        console.log(
412
+          'The permission has not been requested / is denied but requestable',
413
+        );
414
+        break;
415
+      case RESULTS.GRANTED:
416
+        console.log('The permission is granted');
310 417
         break;
311 418
       case RESULTS.BLOCKED:
312
-        console.log('permission is denied and not requestable');
419
+        console.log('The permission is denied and not requestable anymore');
313 420
         break;
314 421
     }
315 422
   })
@@ -351,7 +458,7 @@ request(PERMISSIONS.IOS.LOCATION_ALWAYS).then(result => {
351 458
 
352 459
 #### checkNotifications
353 460
 
354
-Check notifications permission status and get settings values.
461
+Check notifications permission status and get notifications settings values.
355 462
 
356 463
 ```ts
357 464
 interface NotificationSettings {
@@ -384,7 +491,7 @@ checkNotifications().then(({status, settings}) => {
384 491
 
385 492
 #### requestNotifications
386 493
 
387
-Request notifications permission status and get settings values.
494
+Request notifications permission status and get notifications settings values.
388 495
 
389 496
 ```ts
390 497
 // only used on iOS
@@ -440,106 +547,36 @@ import {openSettings} from 'react-native-permissions';
440 547
 openSettings().catch(() => console.warn('cannot open settings'));
441 548
 ```
442 549
 
443
-## Understanding lifecycle
550
+## Additional recipes
444 551
 
445
-As permissions are not handled in the same way on iOS and Android, this library provides an abstraction over the two platforms behaviors. To understand it a little better, have a look to these two flowcharts:
552
+#### Check multiples permissions
446 553
 
447
-### iOS
554
+```js
555
+import {check, PERMISSIONS} from 'react-native-permissions';
448 556
 
449
-```
450
-   ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
451
-   ┃ check(PERMISSIONS.IOS.CAMERA) ┃
452
-   ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
453
-                   │
454
-       Is the feature available
455
-           on this device ?
456
-                   │           ╔════╗
457
-                   ├───────────║ NO ║──────────────┐
458
-                   │           ╚════╝              │
459
-                ╔═════╗                            ▼
460
-                ║ YES ║                 ┌─────────────────────┐
461
-                ╚═════╝                 │ RESULTS.UNAVAILABLE │
462
-                   │                    └─────────────────────┘
463
-           Is the permission
464
-             requestable ?
465
-                   │           ╔════╗
466
-                   ├───────────║ NO ║──────────────┐
467
-                   │           ╚════╝              │
468
-                ╔═════╗                            ▼
469
-                ║ YES ║                  ┌───────────────────┐
470
-                ╚═════╝                  │ RESULTS.BLOCKED / │
471
-                   │                     │  RESULTS.GRANTED  │
472
-                   ▼                     └───────────────────┘
473
-          ┌────────────────┐
474
-          │ RESULTS.DENIED │
475
-          └────────────────┘
476
-                   │
477
-                   ▼
478
-  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
479
-  ┃ request(PERMISSIONS.IOS.CAMERA) ┃
480
-  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
481
-                   │
482
-        Does the user accepted
483
-            the request ?
484
-                   │           ╔════╗
485
-                   ├───────────║ NO ║──────────────┐
486
-                   │           ╚════╝              │
487
-                ╔═════╗                            ▼
488
-                ║ YES ║                   ┌─────────────────┐
489
-                ╚═════╝                   │ RESULTS.BLOCKED │
490
-                   │                      └─────────────────┘
491
-                   ▼
492
-          ┌─────────────────┐
493
-          │ RESULTS.GRANTED │
494
-          └─────────────────┘
557
+// can be done in parallel
558
+Promise.all([
559
+  check(PERMISSIONS.IOS.CAMERA),
560
+  check(PERMISSIONS.IOS.CONTACTS),
561
+  // …
562
+]).then(([cameraStatus, contactsStatus /* … */]) => {
563
+  console.log({cameraStatus, contactsStatus});
564
+});
495 565
 ```
496 566
 
497
-### Android
567
+#### Request multiples permissions
498 568
 
499
-```
500
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
501
- ┃ check(PERMISSIONS.ANDROID.CAMERA) ┃
502
- ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
503
-                   │
504
-       Is the feature available
505
-           on this device ?
506
-                   │           ╔════╗
507
-                   ├───────────║ NO ║──────────────┐
508
-                   │           ╚════╝              │
509
-                ╔═════╗                            ▼
510
-                ║ YES ║                 ┌─────────────────────┐
511
-                ╚═════╝                 │ RESULTS.UNAVAILABLE │
512
-                   │                    └─────────────────────┘
513
-           Is the permission
514
-             requestable ?
515
-                   │           ╔════╗
516
-                   ├───────────║ NO ║──────────────┐
517
-                   │           ╚════╝              │
518
-                ╔═════╗                            ▼
519
-                ║ YES ║                  ┌───────────────────┐
520
-                ╚═════╝                  │ RESULTS.BLOCKED / │
521
-                   │                     │  RESULTS.GRANTED  │
522
-                   ▼                     └───────────────────┘
523
-          ┌────────────────┐
524
-          │ RESULTS.DENIED │◀──────────────────────┐
525
-          └────────────────┘                       │
526
-                   │                               │
527
-                   ▼                               │
528
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓         ╔════╗
529
-┃ request(PERMISSIONS.ANDROID.CAMERA) ┃         ║ NO ║
530
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛         ╚════╝
531
-                   │                               │
532
-        Does the user accepted                     │
533
-            the request ?                          │
534
-                   │           ╔════╗    Does the user checked
535
-                   ├───────────║ NO ║─────"Never ask again" ?
536
-                   │           ╚════╝              │
537
-                ╔═════╗                         ╔═════╗
538
-                ║ YES ║                         ║ YES ║
539
-                ╚═════╝                         ╚═════╝
540
-                   │                               │
541
-                   ▼                               ▼
542
-          ┌─────────────────┐             ┌─────────────────┐
543
-          │ RESULTS.GRANTED │             │ RESULTS.BLOCKED │
544
-          └─────────────────┘             └─────────────────┘
569
+_⚠️  It's a very bad UX pattern, avoid doing it!_
570
+
571
+```js
572
+import {check, request, PERMISSIONS} from 'react-native-permissions';
573
+
574
+// should be done in sequence
575
+async function requestAll() {
576
+  const cameraStatus = await request(PERMISSIONS.IOS.CAMERA);
577
+  const contactsStatus = await request(PERMISSIONS.IOS.CONTACTS);
578
+  return {cameraStatus, contactsStatus};
579
+}
580
+
581
+console.log(requestAll());
545 582
 ```

+ 2
- 0
example/android/app/src/main/java/com/rnpermissionsexample/MainApplication.java Zobrazit soubor

@@ -2,11 +2,13 @@ package com.rnpermissionsexample;
2 2
 
3 3
 import android.app.Application;
4 4
 import android.content.Context;
5
+
5 6
 import com.facebook.react.PackageList;
6 7
 import com.facebook.react.ReactApplication;
7 8
 import com.facebook.react.ReactNativeHost;
8 9
 import com.facebook.react.ReactPackage;
9 10
 import com.facebook.soloader.SoLoader;
11
+
10 12
 import java.lang.reflect.InvocationTargetException;
11 13
 import java.util.List;
12 14
 

+ 0
- 1
example/android/build.gradle Zobrazit soubor

@@ -34,6 +34,5 @@ allprojects {
34 34
 
35 35
         google()
36 36
         jcenter()
37
-        maven { url 'https://jitpack.io' }
38 37
     }
39 38
 }

+ 9
- 9
package.json Zobrazit soubor

@@ -1,6 +1,6 @@
1 1
 {
2 2
   "name": "react-native-permissions",
3
-  "version": "2.0.0-rc.1",
3
+  "version": "2.0.0",
4 4
   "license": "MIT",
5 5
   "description": "Check and request user permissions in React Native",
6 6
   "author": "Mathieu Acthernoene <zoontek@gmail.com>",
@@ -64,20 +64,20 @@
64 64
     "react-native": ">=0.60.0"
65 65
   },
66 66
   "devDependencies": {
67
-    "@babel/core": "7.6.0",
67
+    "@babel/core": "7.6.2",
68 68
     "@react-native-community/bob": "0.7.0",
69 69
     "@react-native-community/eslint-config": "0.0.5",
70
-    "@types/react-native": "0.60.15",
71
-    "@typescript-eslint/eslint-plugin": "2.3.0",
72
-    "@typescript-eslint/parser": "2.3.0",
70
+    "@types/react-native": "0.60.17",
71
+    "@typescript-eslint/eslint-plugin": "2.3.1",
72
+    "@typescript-eslint/parser": "2.3.1",
73 73
     "eslint": "6.4.0",
74 74
     "eslint-config-prettier": "6.3.0",
75 75
     "eslint-plugin-prettier": "3.1.1",
76
-    "husky": "3.0.5",
77
-    "lint-staged": "9.2.5",
76
+    "husky": "3.0.7",
77
+    "lint-staged": "9.4.0",
78 78
     "prettier": "1.18.2",
79
-    "react": "16.8.6",
80
-    "react-native": "0.60.5",
79
+    "react": "16.9.0",
80
+    "react-native": "0.61.1",
81 81
     "typescript": "3.6.3"
82 82
   }
83 83
 }

+ 225
- 183
yarn.lock Zobrazit soubor

@@ -16,7 +16,27 @@
16 16
   dependencies:
17 17
     "@babel/highlight" "^7.0.0"
18 18
 
19
-"@babel/core@7.6.0", "@babel/core@^7.0.0":
19
+"@babel/core@7.6.2":
20
+  version "7.6.2"
21
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.2.tgz#069a776e8d5e9eefff76236bc8845566bd31dd91"
22
+  integrity sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ==
23
+  dependencies:
24
+    "@babel/code-frame" "^7.5.5"
25
+    "@babel/generator" "^7.6.2"
26
+    "@babel/helpers" "^7.6.2"
27
+    "@babel/parser" "^7.6.2"
28
+    "@babel/template" "^7.6.0"
29
+    "@babel/traverse" "^7.6.2"
30
+    "@babel/types" "^7.6.0"
31
+    convert-source-map "^1.1.0"
32
+    debug "^4.1.0"
33
+    json5 "^2.1.0"
34
+    lodash "^4.17.13"
35
+    resolve "^1.3.2"
36
+    semver "^5.4.1"
37
+    source-map "^0.5.0"
38
+
39
+"@babel/core@^7.0.0":
20 40
   version "7.6.0"
21 41
   resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48"
22 42
   integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw==
@@ -78,6 +98,16 @@
78 98
     source-map "^0.5.0"
79 99
     trim-right "^1.0.1"
80 100
 
101
+"@babel/generator@^7.6.2":
102
+  version "7.6.2"
103
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.2.tgz#dac8a3c2df118334c2a29ff3446da1636a8f8c03"
104
+  integrity sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==
105
+  dependencies:
106
+    "@babel/types" "^7.6.0"
107
+    jsesc "^2.5.1"
108
+    lodash "^4.17.13"
109
+    source-map "^0.5.0"
110
+
81 111
 "@babel/helper-annotate-as-pure@^7.0.0":
82 112
   version "7.0.0"
83 113
   resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
@@ -288,6 +318,15 @@
288 318
     "@babel/traverse" "^7.6.0"
289 319
     "@babel/types" "^7.6.0"
290 320
 
321
+"@babel/helpers@^7.6.2":
322
+  version "7.6.2"
323
+  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153"
324
+  integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==
325
+  dependencies:
326
+    "@babel/template" "^7.6.0"
327
+    "@babel/traverse" "^7.6.2"
328
+    "@babel/types" "^7.6.0"
329
+
291 330
 "@babel/highlight@^7.0.0":
292 331
   version "7.5.0"
293 332
   resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
@@ -307,6 +346,11 @@
307 346
   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b"
308 347
   integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==
309 348
 
349
+"@babel/parser@^7.6.2":
350
+  version "7.6.2"
351
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.2.tgz#205e9c95e16ba3b8b96090677a67c9d6075b70a1"
352
+  integrity sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==
353
+
310 354
 "@babel/plugin-external-helpers@^7.0.0":
311 355
   version "7.2.0"
312 356
   resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4"
@@ -732,6 +776,21 @@
732 776
     globals "^11.1.0"
733 777
     lodash "^4.17.13"
734 778
 
779
+"@babel/traverse@^7.6.2":
780
+  version "7.6.2"
781
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.2.tgz#b0e2bfd401d339ce0e6c05690206d1e11502ce2c"
782
+  integrity sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==
783
+  dependencies:
784
+    "@babel/code-frame" "^7.5.5"
785
+    "@babel/generator" "^7.6.2"
786
+    "@babel/helper-function-name" "^7.1.0"
787
+    "@babel/helper-split-export-declaration" "^7.4.4"
788
+    "@babel/parser" "^7.6.2"
789
+    "@babel/types" "^7.6.0"
790
+    debug "^4.1.0"
791
+    globals "^11.1.0"
792
+    lodash "^4.17.13"
793
+
735 794
 "@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.5.0":
736 795
   version "7.5.0"
737 796
   resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab"
@@ -874,10 +933,10 @@
874 933
   optionalDependencies:
875 934
     jetifier "^1.0.0-beta04.2"
876 935
 
877
-"@react-native-community/cli-platform-android@^2.6.0", "@react-native-community/cli-platform-android@^2.9.0":
878
-  version "2.9.0"
879
-  resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-2.9.0.tgz#28831e61ce565a2c7d1905852fce1eecfd33cb5e"
880
-  integrity sha512-VEQs4Q6R5tnlYFrQIFoPEWjLc43whRHC9HeH+idbFymwDqysLVUffQbb9D6PJUj+C/AvrDhBhU6S3tDjGbSsag==
936
+"@react-native-community/cli-platform-android@^3.0.0-alpha.1", "@react-native-community/cli-platform-android@^3.0.0-alpha.2":
937
+  version "3.0.0-alpha.2"
938
+  resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-3.0.0-alpha.2.tgz#63cb00060c58a87d04b46229ef7140e056551dfa"
939
+  integrity sha512-9HxWvBiK29AJQjavug658rEWHXVsqdAdL7rzMK9+gOid5zFoHrb1GoIeJm3byEowNZvqoy09nVcQvrUea41kQQ==
881 940
   dependencies:
882 941
     "@react-native-community/cli-tools" "^2.8.3"
883 942
     chalk "^2.4.2"
@@ -887,10 +946,10 @@
887 946
     slash "^3.0.0"
888 947
     xmldoc "^1.1.2"
889 948
 
890
-"@react-native-community/cli-platform-ios@^2.4.1", "@react-native-community/cli-platform-ios@^2.9.0":
891
-  version "2.9.0"
892
-  resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-2.9.0.tgz#21adb8ee813d6ca6fd9d4d9be63f92024f7e2fe7"
893
-  integrity sha512-vg6EOamtFaaQ02FiWu+jzJTfeTJ0OVjJSAoR2rhJKNye6RgJLoQlfp0Hg3waF6XrO72a7afYZsPdKSlN3ewlHg==
949
+"@react-native-community/cli-platform-ios@^3.0.0-alpha.1", "@react-native-community/cli-platform-ios@^3.0.0-alpha.2":
950
+  version "3.0.0-alpha.2"
951
+  resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-3.0.0-alpha.2.tgz#c89e1a164f1dab62a8a024ae38b47eb0281e6ab9"
952
+  integrity sha512-37FtnrWTUP0EzQ83raplcnOUlEzRCsDrsxGsUnBso33fNPBAJ4Ei6L/BuJPJZ+sCAWFbyO1XhVED0c1QuP0cww==
894 953
   dependencies:
895 954
     "@react-native-community/cli-tools" "^2.8.3"
896 955
     chalk "^2.4.2"
@@ -906,14 +965,14 @@
906 965
     mime "^2.4.1"
907 966
     node-fetch "^2.5.0"
908 967
 
909
-"@react-native-community/cli@^2.6.0":
910
-  version "2.9.0"
911
-  resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-2.9.0.tgz#f0d18dc3e5a8f68e3d6ad353c444dc2f08d3fbdc"
912
-  integrity sha512-6TYkrR1pwIEPpiPZnOYscCGr5Xh8RijqBPVAOGTaEdpQQpc/J7GDPrePwbyTzwmCPtiK6XT+T5+1AiAK5bz/sw==
968
+"@react-native-community/cli@^3.0.0-alpha.1":
969
+  version "3.0.0-alpha.2"
970
+  resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-3.0.0-alpha.2.tgz#0f5b8aad800ab2633e699b3883534420e7926692"
971
+  integrity sha512-bPl+Y3qX63QUTBnYYk2IAbNYjQnBeBPJz5jCBcxnOi8CWx4XQz7tN7Hh+vtqlwGoLQWs1hn7tMVh15sNmLYigw==
913 972
   dependencies:
914 973
     "@hapi/joi" "^15.0.3"
915
-    "@react-native-community/cli-platform-android" "^2.9.0"
916
-    "@react-native-community/cli-platform-ios" "^2.9.0"
974
+    "@react-native-community/cli-platform-android" "^3.0.0-alpha.2"
975
+    "@react-native-community/cli-platform-ios" "^3.0.0-alpha.2"
917 976
     "@react-native-community/cli-tools" "^2.8.3"
918 977
     chalk "^2.4.2"
919 978
     commander "^2.19.0"
@@ -929,10 +988,10 @@
929 988
     graceful-fs "^4.1.3"
930 989
     inquirer "^3.0.6"
931 990
     lodash "^4.17.5"
932
-    metro "^0.54.1"
933
-    metro-config "^0.54.1"
934
-    metro-core "^0.54.1"
935
-    metro-react-native-babel-transformer "^0.54.1"
991
+    metro "^0.56.0"
992
+    metro-config "^0.56.0"
993
+    metro-core "^0.56.0"
994
+    metro-react-native-babel-transformer "^0.56.0"
936 995
     minimist "^1.2.0"
937 996
     mkdirp "^0.5.1"
938 997
     morgan "^1.9.0"
@@ -1033,10 +1092,10 @@
1033 1092
   resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6"
1034 1093
   integrity sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==
1035 1094
 
1036
-"@types/react-native@0.60.15":
1037
-  version "0.60.15"
1038
-  resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.15.tgz#fe502d9fca6e292e54ea3d527004f21d9b806370"
1039
-  integrity sha512-HcPSAlpFRiFqJ647YfUgzpr0aeMrH2SXkGPsLjkiG53oDj1upRvArVt/yBWRY+aykOs7C44EtZ5puzesO/U7HA==
1095
+"@types/react-native@0.60.17":
1096
+  version "0.60.17"
1097
+  resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.60.17.tgz#3a4c2f3ebe1942fb267bba9374f0533c0ece261c"
1098
+  integrity sha512-dvPdLYxrU74bU14GvGV+f1EMjyD6L2iDenEzDfUBWhxn7KKRgkWb289r2EIN+10XqvRP+H7YBgl+AoEHEfkcTA==
1040 1099
   dependencies:
1041 1100
     "@types/prop-types" "*"
1042 1101
     "@types/react" "*"
@@ -1066,12 +1125,12 @@
1066 1125
   dependencies:
1067 1126
     "@types/yargs-parser" "*"
1068 1127
 
1069
-"@typescript-eslint/eslint-plugin@2.3.0":
1070
-  version "2.3.0"
1071
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.3.0.tgz#6ead12c6b15a9b930430931e396e01a1fe181fcc"
1072
-  integrity sha512-QgO/qmNye+rKsU7dan6pkBTSfpbyrHJidsw9bR3gZCrQNTB9eWQ5+UDkrrev/fu9xg6Qh7ebbx03IVuGnGRmEw==
1128
+"@typescript-eslint/eslint-plugin@2.3.1":
1129
+  version "2.3.1"
1130
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.3.1.tgz#b0b1e6b9b3f84b3e1afbdd338f4194c8ab92db21"
1131
+  integrity sha512-VqVNEsvemviajlaWm03kVMabc6S3xCHGYuY0fReTrIIOZg+3WzB+wfw6fD3KYKerw5lYxmzogmHOZ0i7YKnuwA==
1073 1132
   dependencies:
1074
-    "@typescript-eslint/experimental-utils" "2.3.0"
1133
+    "@typescript-eslint/experimental-utils" "2.3.1"
1075 1134
     eslint-utils "^1.4.2"
1076 1135
     functional-red-black-tree "^1.0.1"
1077 1136
     regexpp "^2.0.1"
@@ -1096,23 +1155,23 @@
1096 1155
     "@typescript-eslint/typescript-estree" "1.12.0"
1097 1156
     eslint-scope "^4.0.0"
1098 1157
 
1099
-"@typescript-eslint/experimental-utils@2.3.0":
1100
-  version "2.3.0"
1101
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.3.0.tgz#19a8e1b8fcee7d7469f3b44691d91830568de140"
1102
-  integrity sha512-ry+fgd0Hh33LyzS30bIhX/a1HJpvtnecjQjWxxsZTavrRa1ymdmX7tz+7lPrPAxB018jnNzwNtog6s3OhxPTAg==
1158
+"@typescript-eslint/experimental-utils@2.3.1":
1159
+  version "2.3.1"
1160
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.3.1.tgz#92f2531d3e7c22e64a2cc10cfe89935deaf00f7c"
1161
+  integrity sha512-FaZEj73o4h6Wd0Lg+R4pZiJGdR0ZYbJr+O2+RbQ1aZjX8bZcfkVDtD+qm74Dv77rfSKkDKE64UTziLBo9UYHQA==
1103 1162
   dependencies:
1104 1163
     "@types/json-schema" "^7.0.3"
1105
-    "@typescript-eslint/typescript-estree" "2.3.0"
1164
+    "@typescript-eslint/typescript-estree" "2.3.1"
1106 1165
     eslint-scope "^5.0.0"
1107 1166
 
1108
-"@typescript-eslint/parser@2.3.0":
1109
-  version "2.3.0"
1110
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.3.0.tgz#d2df1d4bb8827e36125fb7c6274df1b4d4e614f0"
1111
-  integrity sha512-Dc+LAtHts0yDuusxG0NVjGvrpPy2kZauxqPbfFs0fmcMB4JhNs+WwIDMFGWeKjbGoPt/SIUC9XJ7E0ZD/f8InQ==
1167
+"@typescript-eslint/parser@2.3.1":
1168
+  version "2.3.1"
1169
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.3.1.tgz#f2b93b614d9b338825c44e75552a433e2ebf8c33"
1170
+  integrity sha512-ZlWdzhCJ2iZnSp/VBAJ/sowFbyHycIux8t0UEH0JsKgQvfSf7949hLYFMwTXdCMeEnpP1zRTHimrR+YHzs8LIw==
1112 1171
   dependencies:
1113 1172
     "@types/eslint-visitor-keys" "^1.0.0"
1114
-    "@typescript-eslint/experimental-utils" "2.3.0"
1115
-    "@typescript-eslint/typescript-estree" "2.3.0"
1173
+    "@typescript-eslint/experimental-utils" "2.3.1"
1174
+    "@typescript-eslint/typescript-estree" "2.3.1"
1116 1175
     eslint-visitor-keys "^1.1.0"
1117 1176
 
1118 1177
 "@typescript-eslint/parser@^1.5.0":
@@ -1133,10 +1192,10 @@
1133 1192
     lodash.unescape "4.0.1"
1134 1193
     semver "5.5.0"
1135 1194
 
1136
-"@typescript-eslint/typescript-estree@2.3.0":
1137
-  version "2.3.0"
1138
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.3.0.tgz#fd8faff7e4c73795c65e5817c52f9038e33ef29d"
1139
-  integrity sha512-WBxfwsTeCOsmQ7cLjow7lgysviBKUW34npShu7dxJYUQCbSG5nfZWZTgmQPKEc+3flpbSM7tjXjQOgETYp+njQ==
1195
+"@typescript-eslint/typescript-estree@2.3.1":
1196
+  version "2.3.1"
1197
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.3.1.tgz#62c64f149948473d06a129dc33b4fc76e6c051f9"
1198
+  integrity sha512-9SFhUgFuePJBB6jlLkOPPhMkZNiDCr+S8Ft7yAkkP2c5x5bxPhG3pe/exMiQaF8IGyVMDW6Ul0q4/cZ+uF3uog==
1140 1199
   dependencies:
1141 1200
     glob "^7.1.4"
1142 1201
     is-glob "^4.0.1"
@@ -2979,10 +3038,10 @@ has@^1.0.1, has@^1.0.3:
2979 3038
   dependencies:
2980 3039
     function-bind "^1.1.1"
2981 3040
 
2982
-hermesvm@^0.1.0:
2983
-  version "0.1.1"
2984
-  resolved "https://registry.yarnpkg.com/hermesvm/-/hermesvm-0.1.1.tgz#bd1df92b4dc504e261c23df34864daf24b844d03"
2985
-  integrity sha512-EosSDeUqTTGvlc9vQiy5Y/9GBlucEyo6lYuxg/FnukHCD/CP3NYeDAGV54TyZ19FgSqMEoPgOH9cyxvv8epQ1g==
3041
+hermes-engine@^0.2.1:
3042
+  version "0.2.1"
3043
+  resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.2.1.tgz#25c0f1ff852512a92cb5c5cc47cf967e1e722ea2"
3044
+  integrity sha512-eNHUQHuadDMJARpaqvlCZoK/Nitpj6oywq3vQ3wCwEsww5morX34mW5PmKWQTO7aU0ck0hgulxR+EVDlXygGxQ==
2986 3045
 
2987 3046
 hosted-git-info@^2.1.4:
2988 3047
   version "2.7.1"
@@ -3000,10 +3059,10 @@ http-errors@~1.7.2:
3000 3059
     statuses ">= 1.5.0 < 2"
3001 3060
     toidentifier "1.0.0"
3002 3061
 
3003
-husky@3.0.5:
3004
-  version "3.0.5"
3005
-  resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.5.tgz#d7db27c346645a8dc52df02aa534a377ad7925e0"
3006
-  integrity sha512-cKd09Jy9cDyNIvAdN2QQAP/oA21sle4FWXjIMDttailpLAYZuBE7WaPmhrkj+afS8Sj9isghAtFvWSQ0JiwOHg==
3062
+husky@3.0.7:
3063
+  version "3.0.7"
3064
+  resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.7.tgz#05e869006c7d9a31b27893aeda520e730bd125b9"
3065
+  integrity sha512-fIrkaREoQk6DO8KnSX16Aq7Kg9SxqYYQZH/9b+4AxXyXNNgpJLsc8lWlQCShLus1nbujIyZ/WQZBHGwClohK/w==
3007 3066
   dependencies:
3008 3067
     chalk "^2.4.2"
3009 3068
     cosmiconfig "^5.2.1"
@@ -3521,7 +3580,7 @@ js-yaml@^3.13.1:
3521 3580
     argparse "^1.0.7"
3522 3581
     esprima "^4.0.0"
3523 3582
 
3524
-jsc-android@245459.0.0:
3583
+jsc-android@^245459.0.0:
3525 3584
   version "245459.0.0"
3526 3585
   resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-245459.0.0.tgz#e584258dd0b04c9159a27fb104cd5d491fd202c9"
3527 3586
   integrity sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg==
@@ -3660,10 +3719,10 @@ lines-and-columns@^1.1.6:
3660 3719
   resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
3661 3720
   integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
3662 3721
 
3663
-lint-staged@9.2.5:
3664
-  version "9.2.5"
3665
-  resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.2.5.tgz#5a3e1e0a539a403bd7f88542bc3d34ce52efdbb3"
3666
-  integrity sha512-d99gTBFMJ29159+9iRvaMEQstmNcPAbQbhHSYw6D/1FncvFdIj8lWHztaq3Uq+tbZPABHXQ/fyN7Rp1QwF8HIw==
3722
+lint-staged@9.4.0:
3723
+  version "9.4.0"
3724
+  resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.4.0.tgz#dd4abcc9a82539fd290aed1584e3241b8f8af687"
3725
+  integrity sha512-jTu1KoGiGTSffM539wK+3igVqDGVsby3KwDBaXL471YndahkjnavLX+R5Nsk49JwklyMo0ZAXay1BaoyA6d2Jw==
3667 3726
   dependencies:
3668 3727
     chalk "^2.4.2"
3669 3728
     commander "^2.20.0"
@@ -3898,10 +3957,10 @@ merge2@^1.2.3:
3898 3957
   resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.4.tgz#c9269589e6885a60cf80605d9522d4b67ca646e3"
3899 3958
   integrity sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==
3900 3959
 
3901
-metro-babel-register@0.54.1:
3902
-  version "0.54.1"
3903
-  resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.54.1.tgz#7d2bfe444b1ccef8de99aedc7d9330891d806076"
3904
-  integrity sha512-j3VydgncUG8HP6AZala6GTIt3V01nptodnnOke3JMYLqgk8EJ1LOVOdotK9pXi80o7EmmNKFs/LyyH8z+uAJzQ==
3960
+metro-babel-register@0.56.0, metro-babel-register@^0.56.0:
3961
+  version "0.56.0"
3962
+  resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.56.0.tgz#f5eb41b2d7be4297367292dd545fda898e9158a7"
3963
+  integrity sha512-/jkfdFpmmyG8Y1ik01EEgqTBy6Y89exZmJi58ej/bVK7u0hhA7mrcqusOeVRlaH+rboecPG52ouuDxcnNSXwzQ==
3905 3964
   dependencies:
3906 3965
     "@babel/core" "^7.0.0"
3907 3966
     "@babel/plugin-proposal-class-properties" "^7.0.0"
@@ -3916,12 +3975,13 @@ metro-babel-register@0.54.1:
3916 3975
     core-js "^2.2.2"
3917 3976
     escape-string-regexp "^1.0.5"
3918 3977
 
3919
-metro-babel-transformer@0.54.1:
3920
-  version "0.54.1"
3921
-  resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.54.1.tgz#371ffa2d1118b22cc9e40b3c3ea6738c49dae9dc"
3922
-  integrity sha512-2aiAnuYBdcLV1VINb8ENAA4keIaJIepHgR9+iRvIde+9GSjKnexqx4nNmJN392285gRDp1fVZ7uY0uQawK/A5g==
3978
+metro-babel-transformer@0.56.0:
3979
+  version "0.56.0"
3980
+  resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.56.0.tgz#1ee73c7d97aee8671b7f0983a41e928f4802a08e"
3981
+  integrity sha512-8w/NpcKovmzkY4/++zX5v+OLOcBPXC9iygNI0ZdexA9U5/ncAY3U1VaF2ScFKzhrpkb8AJioYYioAgrRMLYStg==
3923 3982
   dependencies:
3924 3983
     "@babel/core" "^7.0.0"
3984
+    metro-source-map "0.56.0"
3925 3985
 
3926 3986
 metro-babel7-plugin-react-transform@0.53.1:
3927 3987
   version "0.53.1"
@@ -3930,49 +3990,42 @@ metro-babel7-plugin-react-transform@0.53.1:
3930 3990
   dependencies:
3931 3991
     "@babel/helper-module-imports" "^7.0.0"
3932 3992
 
3933
-metro-babel7-plugin-react-transform@0.54.1:
3934
-  version "0.54.1"
3935
-  resolved "https://registry.yarnpkg.com/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.54.1.tgz#5335b810284789724886dc483d5bde9c149a1996"
3936
-  integrity sha512-jWm5myuMoZAOhoPsa8ItfDxdTcOzKhTTzzhFlbZnRamE7i9qybeMdrZt8KHQpF7i2p/mKzE9Yhf4ouOz5K/jHg==
3937
-  dependencies:
3938
-    "@babel/helper-module-imports" "^7.0.0"
3939
-
3940
-metro-cache@0.54.1:
3941
-  version "0.54.1"
3942
-  resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.54.1.tgz#2e9017cbd11106837b8c385c9eb8c8175469a8c1"
3943
-  integrity sha512-RxCFoNcANHXZYi4MIQNnqh68gUnC3bMpzCFJY5pBoqqdrkkn8ibYglBweA0/DW7hx1OZTJWelwS1Dp8xxmE2CA==
3993
+metro-cache@0.56.0:
3994
+  version "0.56.0"
3995
+  resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.56.0.tgz#213a8d5fad6c695ece841e8ef961285607295511"
3996
+  integrity sha512-fjfdHGAog3SMEpWF6QE8lTeYUMMpvGYHBfc7DYkDvkEwvEympFzn6dWg7uOeh90F1kjUABtAgkan0SC4CWWF/g==
3944 3997
   dependencies:
3945 3998
     jest-serializer "^24.4.0"
3946
-    metro-core "0.54.1"
3999
+    metro-core "0.56.0"
3947 4000
     mkdirp "^0.5.1"
3948 4001
     rimraf "^2.5.4"
3949 4002
 
3950
-metro-config@0.54.1, metro-config@^0.54.1:
3951
-  version "0.54.1"
3952
-  resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.54.1.tgz#808b4e17625d9f4e9afa34232778fdf8e63cc8dd"
3953
-  integrity sha512-FpxrA+63rGkPGvGI653dvuSreJzU+eOTILItVnnhmqwn2SAK5V00N/qGTOIJe2YIuWEFXwCzw9lXmANrXbwuGg==
4003
+metro-config@0.56.0, metro-config@^0.56.0:
4004
+  version "0.56.0"
4005
+  resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.56.0.tgz#8e4dae8df7bfa3d37b754240bc76db87aebc6348"
4006
+  integrity sha512-R7n41V9pkSeQe/7MdMoM1XiWZGNDHVAKKcR3QPoSdVhYFJkUbV2UsfJDBTohmTML07BkAQ1Bys5dGrQZfgeeNQ==
3954 4007
   dependencies:
3955 4008
     cosmiconfig "^5.0.5"
3956 4009
     jest-validate "^24.7.0"
3957
-    metro "0.54.1"
3958
-    metro-cache "0.54.1"
3959
-    metro-core "0.54.1"
4010
+    metro "0.56.0"
4011
+    metro-cache "0.56.0"
4012
+    metro-core "0.56.0"
3960 4013
     pretty-format "^24.7.0"
3961 4014
 
3962
-metro-core@0.54.1, metro-core@^0.54.1:
3963
-  version "0.54.1"
3964
-  resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.54.1.tgz#17f6ecc167918da8819d4af5726349e55714954b"
3965
-  integrity sha512-8oz3Ck7QFBzW9dG9tKFhrXHKPu2Ajx3R7eatf61Gl6Jf/tF7PNouv3wHxPsJW3oXDFiwKLszd89+OgleTGkB5g==
4015
+metro-core@0.56.0, metro-core@^0.56.0:
4016
+  version "0.56.0"
4017
+  resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.56.0.tgz#ea1175fdfc1685bc62a28eca33edd48ec0030339"
4018
+  integrity sha512-R1RS1ZlBG2sjucjhAbRPb6FDB668as3/FuiARJGEsYXt3kpMz2thOpdgWG86sDygSM/U4qLhU3hQf1FU+NUP2w==
3966 4019
   dependencies:
3967 4020
     jest-haste-map "^24.7.1"
3968 4021
     lodash.throttle "^4.1.1"
3969
-    metro-resolver "0.54.1"
4022
+    metro-resolver "0.56.0"
3970 4023
     wordwrap "^1.0.0"
3971 4024
 
3972
-metro-inspector-proxy@0.54.1:
3973
-  version "0.54.1"
3974
-  resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.54.1.tgz#0ef48ee3feb11c6da47aa100151a9bf2a7c358ee"
3975
-  integrity sha512-sf6kNu7PgFW6U+hU7YGZfbAUKAPVvCJhY8YVu/A1RMKH9nNULrCo+jlWh0gWgmFfWRQiAPCElevROg+5somk8A==
4025
+metro-inspector-proxy@0.56.0:
4026
+  version "0.56.0"
4027
+  resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.56.0.tgz#78a0590f018ea255f86824a425958b7dd74b84df"
4028
+  integrity sha512-p+m6rjB749i3P2N3B9BRy+pAkBnenb+ymFJR8CToLxQdbCk3iRwj1hlf4F2OXoM26eZZdm0AC+Z/zfiOCuePJA==
3976 4029
   dependencies:
3977 4030
     connect "^3.6.5"
3978 4031
     debug "^2.2.0"
@@ -3980,17 +4033,17 @@ metro-inspector-proxy@0.54.1:
3980 4033
     ws "^1.1.5"
3981 4034
     yargs "^9.0.0"
3982 4035
 
3983
-metro-minify-uglify@0.54.1:
3984
-  version "0.54.1"
3985
-  resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.54.1.tgz#54ed1cb349245ce82dba8cc662bbf69fbca142c3"
3986
-  integrity sha512-z+pOPna/8IxD4OhjW6Xo1mV2EszgqqQHqBm1FdmtdF6IpWkQp33qpDBNEi9NGZTOr7pp2bvcxZnvNJdC2lrK9Q==
4036
+metro-minify-uglify@0.56.0:
4037
+  version "0.56.0"
4038
+  resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.56.0.tgz#1a4aa32fb5326deb7c36eb8e0a113dc3daaf287a"
4039
+  integrity sha512-0u2ClTDuaxtWDpAZpnGUEvxJ/X3PzaaSQxPpsGSnBa0g+fqV8xyz8BGtFieQ+Ukuiw7SRwTkUQChkSVi+PAOdA==
3987 4040
   dependencies:
3988 4041
     uglify-es "^3.1.9"
3989 4042
 
3990
-metro-react-native-babel-preset@0.54.1:
3991
-  version "0.54.1"
3992
-  resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.54.1.tgz#b8f03865c381841d7f8912e7ba46804ea3a928b8"
3993
-  integrity sha512-Hfr32+u5yYl3qhYQJU8NQ26g4kQlc3yFMg7keVR/3H8rwBIbFqXgsKt8oe0dOrv7WvrMqBHhDtVdU9ls3sSq8g==
4043
+metro-react-native-babel-preset@0.56.0:
4044
+  version "0.56.0"
4045
+  resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.0.tgz#fa47dfd5f7678e89cffd1249020b8add6938fc48"
4046
+  integrity sha512-MAo1fm0dNn6MVZmylaz6k2HC1MINHLTLfE7O3a9Xz3fAtbGbApisp06rBUfK5uUqIJDmAaKgbiT34lHJSIiE6Q==
3994 4047
   dependencies:
3995 4048
     "@babel/plugin-proposal-class-properties" "^7.0.0"
3996 4049
     "@babel/plugin-proposal-export-default-from" "^7.0.0"
@@ -4026,8 +4079,7 @@ metro-react-native-babel-preset@0.54.1:
4026 4079
     "@babel/plugin-transform-typescript" "^7.0.0"
4027 4080
     "@babel/plugin-transform-unicode-regex" "^7.0.0"
4028 4081
     "@babel/template" "^7.0.0"
4029
-    metro-babel7-plugin-react-transform "0.54.1"
4030
-    react-transform-hmr "^1.0.4"
4082
+    react-refresh "^0.4.0"
4031 4083
 
4032 4084
 metro-react-native-babel-preset@^0.53.1:
4033 4085
   version "0.53.1"
@@ -4071,59 +4123,52 @@ metro-react-native-babel-preset@^0.53.1:
4071 4123
     metro-babel7-plugin-react-transform "0.53.1"
4072 4124
     react-transform-hmr "^1.0.4"
4073 4125
 
4074
-metro-react-native-babel-transformer@0.54.1, metro-react-native-babel-transformer@^0.54.1:
4075
-  version "0.54.1"
4076
-  resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.54.1.tgz#45b56db004421134e10e739f69e8de50775fef17"
4077
-  integrity sha512-ECw7xG91t8dk/PHdiyoC5SP1s9OQzfmJzG5m0YOZaKtHMe534qTDbncxaKfTI3CP99yti2maXFBRVj+xyvph/g==
4126
+metro-react-native-babel-transformer@^0.56.0:
4127
+  version "0.56.0"
4128
+  resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.56.0.tgz#43198b54d9d88acfc9fa6cbdd22fec0e871966da"
4129
+  integrity sha512-9eJ6kzizy80KlqNryg9TjlHdA4PZPWw0TV8Ih7H6RmYmuMzac5gjIW9FUrXsVWI56kQf+L5SdD/dCOWDqez/lQ==
4078 4130
   dependencies:
4079 4131
     "@babel/core" "^7.0.0"
4080 4132
     babel-preset-fbjs "^3.1.2"
4081
-    metro-babel-transformer "0.54.1"
4082
-    metro-react-native-babel-preset "0.54.1"
4133
+    metro-babel-transformer "0.56.0"
4134
+    metro-react-native-babel-preset "0.56.0"
4135
+    metro-source-map "0.56.0"
4083 4136
 
4084
-metro-resolver@0.54.1:
4085
-  version "0.54.1"
4086
-  resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.54.1.tgz#0295b38624b678b88b16bf11d47288845132b087"
4087
-  integrity sha512-Byv1LIawYAASy9CFRwzrncYnqaFGLe8vpw178EtzStqP05Hu6hXSqkNTrfoXa+3V9bPFGCrVzFx2NY3gFp2btg==
4137
+metro-resolver@0.56.0:
4138
+  version "0.56.0"
4139
+  resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.56.0.tgz#e9d69ae2daf8c25c19492f75bc55db85f6ec2b3e"
4140
+  integrity sha512-thI31ZLnRr6l8/uIQ3pemMOp0+5btvj8ntv6qcY0scqqTRxJvJL4OQMM8yNbq8t8kPH5/1U0N+PvvQQ5g2QeIA==
4088 4141
   dependencies:
4089 4142
     absolute-path "^0.0.0"
4090 4143
 
4091
-metro-source-map@0.54.1:
4092
-  version "0.54.1"
4093
-  resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.54.1.tgz#e17bad53c11978197d3c05c9168d799c2e04dcc5"
4094
-  integrity sha512-E9iSYMSUSq5qYi1R2hTQtxH4Mxjzfgr/jaSmQIWi7h3fG2P1qOZNNSzeaeUeTK+s2N/ksVlkcL5kMikol8CDrQ==
4095
-  dependencies:
4096
-    "@babel/traverse" "^7.0.0"
4097
-    "@babel/types" "^7.0.0"
4098
-    source-map "^0.5.6"
4099
-
4100
-metro-source-map@0.55.0, metro-source-map@^0.55.0:
4101
-  version "0.55.0"
4102
-  resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.55.0.tgz#1f6289905f08277c398f2b9b9c13e7e0e5a6f540"
4103
-  integrity sha512-HZODA0KPl5onJNGIztfTHHWurR2nL6Je/X8wwj+bL4ZBB/hSMVeDk7rWReCAvO3twVz7Ztp8Si0jfMmmH4Ruuw==
4144
+metro-source-map@0.56.0, metro-source-map@^0.56.0:
4145
+  version "0.56.0"
4146
+  resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.56.0.tgz#dd2db425d8245661563045336d10c52bc8d4b27d"
4147
+  integrity sha512-W3c91L+CtbQTRxOrcVteCi5XlSXh+L0Zy85YBwm+FkWTKfrYjacr/yW1S9/LutpLgWE0W0VBeQeY++aRHwpx0g==
4104 4148
   dependencies:
4105 4149
     "@babel/traverse" "^7.0.0"
4106 4150
     "@babel/types" "^7.0.0"
4107 4151
     invariant "^2.2.4"
4108
-    metro-symbolicate "0.55.0"
4109
-    ob1 "0.55.0"
4152
+    metro-symbolicate "0.56.0"
4153
+    ob1 "0.56.0"
4110 4154
     source-map "^0.5.6"
4111 4155
     vlq "^1.0.0"
4112 4156
 
4113
-metro-symbolicate@0.55.0:
4114
-  version "0.55.0"
4115
-  resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.55.0.tgz#4086a2adae54b5e44a4911ca572d8a7b03c71fa1"
4116
-  integrity sha512-3r3Gpv5L4U7rBGpIqw5S1nun5MelfUMLRiScJsPRGZVTX3WY1w+zpaQKlWBi5yuHf5dMQ+ZUVbhb02IdrfJ2Fg==
4157
+metro-symbolicate@0.56.0:
4158
+  version "0.56.0"
4159
+  resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.56.0.tgz#694701faee7dafc53bd4d8488495504546e9c5b4"
4160
+  integrity sha512-5gJtwdSS0eYlTYB7PXatohBknz1sWUTfMBhwjn6zbgoyR6Apkpl2t2TfZxwfDTauhcEV1gRLmuodrVENs01r8g==
4117 4161
   dependencies:
4118
-    metro-source-map "0.55.0"
4162
+    invariant "^2.2.4"
4163
+    metro-source-map "0.56.0"
4119 4164
     source-map "^0.5.6"
4120 4165
     through2 "^2.0.1"
4121 4166
     vlq "^1.0.0"
4122 4167
 
4123
-metro@0.54.1, metro@^0.54.1:
4124
-  version "0.54.1"
4125
-  resolved "https://registry.yarnpkg.com/metro/-/metro-0.54.1.tgz#a629be00abee5a450a25a8f71c24745f70cc9b44"
4126
-  integrity sha512-6ODPT4mEo4FCpbExRNnQAcZmf1VeNvYOTMj2Na03FjGqhNODHhI2U/wF/Ul5gqTyJ2dVdkXeyvKW3gl/LrnJRg==
4168
+metro@0.56.0, metro@^0.56.0:
4169
+  version "0.56.0"
4170
+  resolved "https://registry.yarnpkg.com/metro/-/metro-0.56.0.tgz#66b77085ac4cb1e3d72569e851499a3d82d19316"
4171
+  integrity sha512-X0QEeoIgbVX9VdhtzNPd8/+WSIaqnQuRaZ1gA1UL2HHlsA23eMsqxP1LUeLtA7DJ1LGGbiJlp6+FdAF/D8IaNg==
4127 4172
   dependencies:
4128 4173
     "@babel/core" "^7.0.0"
4129 4174
     "@babel/generator" "^7.0.0"
@@ -4152,21 +4197,21 @@ metro@0.54.1, metro@^0.54.1:
4152 4197
     json-stable-stringify "^1.0.1"
4153 4198
     lodash.throttle "^4.1.1"
4154 4199
     merge-stream "^1.0.1"
4155
-    metro-babel-register "0.54.1"
4156
-    metro-babel-transformer "0.54.1"
4157
-    metro-cache "0.54.1"
4158
-    metro-config "0.54.1"
4159
-    metro-core "0.54.1"
4160
-    metro-inspector-proxy "0.54.1"
4161
-    metro-minify-uglify "0.54.1"
4162
-    metro-react-native-babel-preset "0.54.1"
4163
-    metro-resolver "0.54.1"
4164
-    metro-source-map "0.54.1"
4200
+    metro-babel-register "0.56.0"
4201
+    metro-babel-transformer "0.56.0"
4202
+    metro-cache "0.56.0"
4203
+    metro-config "0.56.0"
4204
+    metro-core "0.56.0"
4205
+    metro-inspector-proxy "0.56.0"
4206
+    metro-minify-uglify "0.56.0"
4207
+    metro-react-native-babel-preset "0.56.0"
4208
+    metro-resolver "0.56.0"
4209
+    metro-source-map "0.56.0"
4210
+    metro-symbolicate "0.56.0"
4165 4211
     mime-types "2.1.11"
4166 4212
     mkdirp "^0.5.1"
4167 4213
     node-fetch "^2.2.0"
4168 4214
     nullthrows "^1.1.0"
4169
-    react-transform-hmr "^1.0.4"
4170 4215
     resolve "^1.5.0"
4171 4216
     rimraf "^2.5.4"
4172 4217
     serialize-error "^2.1.0"
@@ -4513,10 +4558,10 @@ number-is-nan@^1.0.0:
4513 4558
   resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
4514 4559
   integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
4515 4560
 
4516
-ob1@0.55.0:
4517
-  version "0.55.0"
4518
-  resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.55.0.tgz#e393b4ae786ef442b3ef2a298ab70d6ec353dbdd"
4519
-  integrity sha512-pfyiMVsUItl8WiRKMT15eCi662pCRAuYTq2+V3UpE+PpFErJI/TvRh/M/l/9TaLlbFr7krJ7gdl+FXJNcybmvw==
4561
+ob1@0.56.0:
4562
+  version "0.56.0"
4563
+  resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.56.0.tgz#70107c65697e617e9e2728fdc03da9e3ab6afef8"
4564
+  integrity sha512-3rvepvXPw+OIkcut4MaRYIoy4thTWvWhTK+Hg4+y9fOBWVF9acpBvtm2NSbH9Vw9UBG/9v+T5euwPxUSUIDPWw==
4520 4565
 
4521 4566
 object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
4522 4567
   version "4.1.1"
@@ -5038,7 +5083,7 @@ react-deep-force-update@^1.0.0:
5038 5083
   resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1"
5039 5084
   integrity sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA==
5040 5085
 
5041
-react-devtools-core@^3.6.1:
5086
+react-devtools-core@^3.6.3:
5042 5087
   version "3.6.3"
5043 5088
   resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.3.tgz#977d95b684c6ad28205f0c62e1e12c5f16675814"
5044 5089
   integrity sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==
@@ -5056,15 +5101,15 @@ react-is@^16.8.4:
5056 5101
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb"
5057 5102
   integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==
5058 5103
 
5059
-react-native@0.60.5:
5060
-  version "0.60.5"
5061
-  resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.60.5.tgz#3c1d9c06a0fbab9807220b6acac09488d39186ee"
5062
-  integrity sha512-cZwI0XzzihACN+7an1Dy46A83FRaAe2Xyd7laCalFFAppZIYeMVphZQWrVljJk5kIZBNtYG35TY1VsghQ0Oc2Q==
5104
+react-native@0.61.1:
5105
+  version "0.61.1"
5106
+  resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.61.1.tgz#ac2559f78f9e689356fedfa93159026a25313d7d"
5107
+  integrity sha512-FjOhAgzjrPr2BjBITmCY+SHzWxfP/bv5ve3oN6ItoIPsVPjJG2QZE8yeByVdI4TzaZrGHU4Ag7/7hX4j39cj2Q==
5063 5108
   dependencies:
5064 5109
     "@babel/runtime" "^7.0.0"
5065
-    "@react-native-community/cli" "^2.6.0"
5066
-    "@react-native-community/cli-platform-android" "^2.6.0"
5067
-    "@react-native-community/cli-platform-ios" "^2.4.1"
5110
+    "@react-native-community/cli" "^3.0.0-alpha.1"
5111
+    "@react-native-community/cli-platform-android" "^3.0.0-alpha.1"
5112
+    "@react-native-community/cli-platform-ios" "^3.0.0-alpha.1"
5068 5113
     abort-controller "^3.0.0"
5069 5114
     art "^0.10.0"
5070 5115
     base64-js "^1.1.2"
@@ -5074,19 +5119,20 @@ react-native@0.60.5:
5074 5119
     event-target-shim "^5.0.1"
5075 5120
     fbjs "^1.0.0"
5076 5121
     fbjs-scripts "^1.1.0"
5077
-    hermesvm "^0.1.0"
5122
+    hermes-engine "^0.2.1"
5078 5123
     invariant "^2.2.4"
5079
-    jsc-android "245459.0.0"
5080
-    metro-babel-register "0.54.1"
5081
-    metro-react-native-babel-transformer "0.54.1"
5082
-    metro-source-map "^0.55.0"
5124
+    jsc-android "^245459.0.0"
5125
+    metro-babel-register "^0.56.0"
5126
+    metro-react-native-babel-transformer "^0.56.0"
5127
+    metro-source-map "^0.56.0"
5083 5128
     nullthrows "^1.1.0"
5084 5129
     pretty-format "^24.7.0"
5085 5130
     promise "^7.1.1"
5086 5131
     prop-types "^15.7.2"
5087
-    react-devtools-core "^3.6.1"
5132
+    react-devtools-core "^3.6.3"
5133
+    react-refresh "^0.4.0"
5088 5134
     regenerator-runtime "^0.13.2"
5089
-    scheduler "0.14.0"
5135
+    scheduler "0.15.0"
5090 5136
     stacktrace-parser "^0.1.3"
5091 5137
     whatwg-fetch "^3.0.0"
5092 5138
 
@@ -5098,6 +5144,11 @@ react-proxy@^1.1.7:
5098 5144
     lodash "^4.6.1"
5099 5145
     react-deep-force-update "^1.0.0"
5100 5146
 
5147
+react-refresh@^0.4.0:
5148
+  version "0.4.2"
5149
+  resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334"
5150
+  integrity sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ==
5151
+
5101 5152
 react-transform-hmr@^1.0.4:
5102 5153
   version "1.0.4"
5103 5154
   resolved "https://registry.yarnpkg.com/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz#e1a40bd0aaefc72e8dfd7a7cda09af85066397bb"
@@ -5106,15 +5157,14 @@ react-transform-hmr@^1.0.4:
5106 5157
     global "^4.3.0"
5107 5158
     react-proxy "^1.1.7"
5108 5159
 
5109
-react@16.8.6:
5110
-  version "16.8.6"
5111
-  resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe"
5112
-  integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==
5160
+react@16.9.0:
5161
+  version "16.9.0"
5162
+  resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa"
5163
+  integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==
5113 5164
   dependencies:
5114 5165
     loose-envify "^1.1.0"
5115 5166
     object-assign "^4.1.1"
5116 5167
     prop-types "^15.6.2"
5117
-    scheduler "^0.13.6"
5118 5168
 
5119 5169
 read-pkg-up@^2.0.0:
5120 5170
   version "2.0.0"
@@ -5403,18 +5453,10 @@ sax@^1.2.1, sax@^1.2.4:
5403 5453
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
5404 5454
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
5405 5455
 
5406
-scheduler@0.14.0:
5407
-  version "0.14.0"
5408
-  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.14.0.tgz#b392c23c9c14bfa2933d4740ad5603cc0d59ea5b"
5409
-  integrity sha512-9CgbS06Kki2f4R9FjLSITjZo5BZxPsryiRNyL3LpvrM9WxcVmhlqAOc9E+KQbeI2nqej4JIIbOsfdL51cNb4Iw==
5410
-  dependencies:
5411
-    loose-envify "^1.1.0"
5412
-    object-assign "^4.1.1"
5413
-
5414
-scheduler@^0.13.6:
5415
-  version "0.13.6"
5416
-  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889"
5417
-  integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==
5456
+scheduler@0.15.0:
5457
+  version "0.15.0"
5458
+  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e"
5459
+  integrity sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==
5418 5460
   dependencies:
5419 5461
     loose-envify "^1.1.0"
5420 5462
     object-assign "^4.1.1"