Browse Source

Merge branch 'tomun/example' into tomun/macos

Tom Underhill 4 years ago
parent
commit
fc4013f20b
62 changed files with 2636 additions and 1854 deletions
  1. 4
    1
      README.md
  2. 1
    0
      example/.gitattributes
  3. 64
    0
      example/.gitignore
  4. 6
    0
      example/.prettierrc.js
  5. 1
    0
      example/.watchmanconfig
  6. 0
    10
      example/App.tsx
  7. 2
    2
      example/android/app/_BUCK
  8. 51
    37
      example/android/app/build.gradle
  9. BIN
      example/android/app/debug.keystore
  10. BIN
      example/android/app/exampleAsyncStorage.keystore
  11. 0
    7
      example/android/app/proguard-rules.pro
  12. 0
    25
      example/android/app/scripts/CI.gradle
  13. 0
    24
      example/android/app/src/androidTest/java/com/webviewexample/DetoxTest.java
  14. 4
    5
      example/android/app/src/debug/AndroidManifest.xml
  15. 1
    1
      example/android/app/src/main/AndroidManifest.xml
  16. 15
    0
      example/android/app/src/main/java/com/example/MainActivity.java
  17. 76
    0
      example/android/app/src/main/java/com/example/MainApplication.java
  18. 0
    15
      example/android/app/src/main/java/com/webviewexample/MainActivity.java
  19. 0
    47
      example/android/app/src/main/java/com/webviewexample/MainApplication.java
  20. 1
    1
      example/android/app/src/main/res/values/strings.xml
  21. 1
    0
      example/android/app/src/main/res/values/styles.xml
  22. 12
    12
      example/android/build.gradle
  23. 0
    6
      example/android/gradle.properties
  24. BIN
      example/android/gradle/wrapper/gradle-wrapper.jar
  25. 1
    2
      example/android/gradle/wrapper/gradle-wrapper.properties
  26. 17
    1
      example/android/gradlew
  27. 100
    84
      example/android/gradlew.bat
  28. 0
    8
      example/android/keystores/BUCK
  29. 0
    4
      example/android/keystores/debug.keystore.properties
  30. 4
    6
      example/android/settings.gradle
  31. 2
    2
      example/app.json
  32. 3
    0
      example/babel.config.js
  33. 0
    10
      example/examples/Alerts.tsx
  34. 0
    10
      example/examples/Background.tsx
  35. 0
    10
      example/examples/Scrolling.tsx
  36. 1
    7
      example/index.js
  37. 56
    0
      example/ios/Podfile
  38. 344
    0
      example/ios/Podfile.lock
  39. 0
    1106
      example/ios/RNCWebViewExample.xcodeproj/project.pbxproj
  40. 53
    0
      example/ios/example-tvOS/Info.plist
  41. 24
    0
      example/ios/example-tvOSTests/Info.plist
  42. 925
    0
      example/ios/example.xcodeproj/project.pbxproj
  43. 129
    0
      example/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme
  44. 48
    11
      example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme
  45. 10
    0
      example/ios/example.xcworkspace/contents.xcworkspacedata
  46. 8
    0
      example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  47. 0
    1
      example/ios/example/AppDelegate.h
  48. 8
    12
      example/ios/example/AppDelegate.m
  49. 1
    1
      example/ios/example/Base.lproj/LaunchScreen.xib
  50. 0
    15
      example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json
  51. 0
    0
      example/ios/example/Images.xcassets/Contents.json
  52. 1
    14
      example/ios/example/Info.plist
  53. 0
    0
      example/ios/example/main.m
  54. 24
    0
      example/ios/exampleTests/Info.plist
  55. 72
    0
      example/ios/exampleTests/exampleTests.m
  56. 62
    0
      example/tsconfig.json
  57. 138
    132
      ios/RNCWebView.m
  58. 0
    13
      ios/RNCWebViewManager.m
  59. 7
    9
      package.json
  60. 10
    4
      src/WebViewShared.tsx
  61. 80
    8
      src/__tests__/WebViewShared-test.js
  62. 269
    191
      yarn.lock

+ 4
- 1
README.md View File

@@ -4,7 +4,8 @@
4 4
 [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
5 5
 [![All Contributors](https://img.shields.io/badge/all_contributors-16-orange.svg?style=flat-square)](#contributors)
6 6
 [![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)
7
-<a href="https://www.npmjs.com/package/react-native-webview"><img src="https://img.shields.io/npm/v/react-native-webview.svg"></a>
7
+[![NPM Version](https://img.shields.io/npm/v/react-native-webview.svg?style=flat-square)](https://www.npmjs.com/package/react-native-webview)
8
+[![Lean Core Extracted](https://img.shields.io/badge/Lean%20Core-Extracted-brightgreen.svg?style=flat-square)][lean-core-issue]
8 9
 
9 10
 **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)).
10 11
 
@@ -101,3 +102,5 @@ MIT
101 102
 This readme is available in:
102 103
 
103 104
 - [Brazilian portuguese](docs/README.portuguese.md)
105
+
106
+[lean-core-issue]: https://github.com/facebook/react-native/issues/23313

+ 1
- 0
example/.gitattributes View File

@@ -0,0 +1 @@
1
+*.pbxproj -text

+ 64
- 0
example/.gitignore View File

@@ -0,0 +1,64 @@
1
+# OSX
2
+#
3
+.DS_Store
4
+
5
+# Xcode
6
+#
7
+build/
8
+*.pbxuser
9
+!default.pbxuser
10
+*.mode1v3
11
+!default.mode1v3
12
+*.mode2v3
13
+!default.mode2v3
14
+*.perspectivev3
15
+!default.perspectivev3
16
+xcuserdata
17
+*.xccheckout
18
+*.moved-aside
19
+DerivedData
20
+*.hmap
21
+*.ipa
22
+*.xcuserstate
23
+project.xcworkspace
24
+
25
+# Android/IntelliJ
26
+#
27
+build/
28
+.idea
29
+.gradle
30
+local.properties
31
+*.iml
32
+
33
+# Visual Studio Code
34
+#
35
+.vscode/
36
+
37
+# node.js
38
+#
39
+node_modules/
40
+npm-debug.log
41
+yarn-error.log
42
+
43
+# BUCK
44
+buck-out/
45
+\.buckd/
46
+*.keystore
47
+!debug.keystore
48
+
49
+# fastlane
50
+#
51
+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
52
+# screenshots whenever they are needed.
53
+# For more information about the recommended setup visit:
54
+# https://docs.fastlane.tools/best-practices/source-control/
55
+
56
+*/fastlane/report.xml
57
+*/fastlane/Preview.html
58
+*/fastlane/screenshots
59
+
60
+# Bundle artifact
61
+*.jsbundle
62
+
63
+# CocoaPods
64
+/ios/Pods/

+ 6
- 0
example/.prettierrc.js View File

@@ -0,0 +1,6 @@
1
+module.exports = {
2
+  bracketSpacing: false,
3
+  jsxBracketSameLine: true,
4
+  singleQuote: true,
5
+  trailingComma: 'all',
6
+};

+ 1
- 0
example/.watchmanconfig View File

@@ -0,0 +1 @@
1
+{}

example/App.js → example/App.tsx View File

@@ -1,13 +1,3 @@
1
-/**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow
9
- */
10
-
11 1
 import React, {Component} from 'react';
12 2
 import {
13 3
   StyleSheet,

example/android/app/BUCK → example/android/app/_BUCK View File

@@ -35,12 +35,12 @@ android_library(
35 35
 
36 36
 android_build_config(
37 37
     name = "build_config",
38
-    package = "com.webviewexample",
38
+    package = "com.example",
39 39
 )
40 40
 
41 41
 android_resource(
42 42
     name = "res",
43
-    package = "com.webviewexample",
43
+    package = "com.example",
44 44
     res = "src/main/res",
45 45
 )
46 46
 

+ 51
- 37
example/android/app/build.gradle View File

@@ -18,6 +18,9 @@ import com.android.build.OutputFile
18 18
  *   // the entry file for bundle generation
19 19
  *   entryFile: "index.android.js",
20 20
  *
21
+ *   // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format
22
+ *   bundleCommand: "ram-bundle",
23
+ *
21 24
  *   // whether to bundle JS and assets in debug mode
22 25
  *   bundleInDebug: false,
23 26
  *
@@ -72,16 +75,13 @@ import com.android.build.OutputFile
72 75
  * ]
73 76
  */
74 77
 
75
-
76 78
 project.ext.react = [
77
-        cliPath: "./node_modules/react-native/local-cli/cli.js",
78
-        enableHermes: false,
79
-        entryFile: "./example/index.js",
80
-        root: "../../../"
79
+    cliPath: "../../../node_modules/react-native/local-cli/cli.js",
80
+    entryFile: "./example/index.js",
81
+    root: "../../../",
82
+    enableHermes: false,  // clean and rebuild if changing
81 83
 ]
82 84
 
83
-
84
-apply from: "./scripts/CI.gradle"
85 85
 apply from: "../../../node_modules/react-native/react.gradle"
86 86
 
87 87
 /**
@@ -99,6 +99,28 @@ def enableSeparateBuildPerCPUArchitecture = false
99 99
  */
100 100
 def enableProguardInReleaseBuilds = false
101 101
 
102
+/**
103
+ * The preferred build flavor of JavaScriptCore.
104
+ *
105
+ * For example, to use the international variant, you can use:
106
+ * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
107
+ *
108
+ * The international variant includes ICU i18n library and necessary data
109
+ * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
110
+ * give correct results when using with locales other than en-US.  Note that
111
+ * this variant is about 6MiB larger per architecture than default.
112
+ */
113
+def jscFlavor = 'org.webkit:android-jsc:+'
114
+
115
+/**
116
+ * Whether to enable the Hermes VM.
117
+ *
118
+ * This should be set on project.ext.react and mirrored here.  If it is not set
119
+ * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
120
+ * and the benefits of using Hermes will therefore be sharply reduced.
121
+ */
122
+def enableHermes = project.ext.react.get("enableHermes", false);
123
+
102 124
 android {
103 125
     compileSdkVersion rootProject.ext.compileSdkVersion
104 126
 
@@ -107,23 +129,12 @@ android {
107 129
         targetCompatibility JavaVersion.VERSION_1_8
108 130
     }
109 131
 
110
-    signingConfigs {
111
-        release {
112
-            storeFile file("exampleWebView.keystore")
113
-            keyAlias "webview"
114
-            keyPassword "webview"
115
-            storePassword "webview"
116
-        }
117
-    }
118
-
119 132
     defaultConfig {
120
-        applicationId "com.webviewexample"
133
+        applicationId "com.example"
121 134
         minSdkVersion rootProject.ext.minSdkVersion
122 135
         targetSdkVersion rootProject.ext.targetSdkVersion
123 136
         versionCode 1
124 137
         versionName "1.0"
125
-        testBuildType System.getProperty('testBuildType', 'debug')
126
-        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
127 138
     }
128 139
     splits {
129 140
         abi {
@@ -133,48 +144,49 @@ android {
133 144
             include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
134 145
         }
135 146
     }
147
+    signingConfigs {
148
+        debug {
149
+            storeFile file('debug.keystore')
150
+            storePassword 'android'
151
+            keyAlias 'androiddebugkey'
152
+            keyPassword 'android'
153
+        }
154
+    }
136 155
     buildTypes {
156
+        debug {
157
+            signingConfig signingConfigs.debug
158
+        }
137 159
         release {
160
+            // Caution! In production, you need to generate your own keystore file.
161
+            // see https://facebook.github.io/react-native/docs/signed-apk-android.
162
+            signingConfig signingConfigs.debug
138 163
             minifyEnabled enableProguardInReleaseBuilds
139 164
             proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
140
-            proguardFile "${rootProject.projectDir}/../node_modules/detox/android/detox/proguard-rules-app.pro"
141
-            signingConfig signingConfigs.release
142
-            matchingFallbacks = ['release']
143 165
         }
144 166
     }
145 167
     // applicationVariants are e.g. debug, release
146 168
     applicationVariants.all { variant ->
147 169
         variant.outputs.each { output ->
148 170
             // For each separate APK per architecture, set a unique version code as described here:
149
-            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
150
-            def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4]
171
+            // https://developer.android.com/studio/build/configure-apk-splits.html
172
+            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
151 173
             def abi = output.getFilter(OutputFile.ABI)
152 174
             if (abi != null) {  // null for the universal-debug, universal-release variants
153 175
                 output.versionCodeOverride =
154 176
                         versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
155 177
             }
178
+
156 179
         }
157 180
     }
158 181
 }
159 182
 
160
-def jscFlavor = 'org.webkit:android-jsc:+'
161
-
162
-def enableHermes = project.ext.react.get("enableHermes", false);
163
-
164 183
 dependencies {
165
-    implementation project(':ReactNativeWebView')
166
-    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
184
+    implementation project(':rnWebView')
167 185
     implementation fileTree(dir: "libs", include: ["*.jar"])
168 186
     implementation "com.facebook.react:react-native:+"  // From node_modules
169 187
 
170
-    // tests
171
-    androidTestImplementation ('com.wix:detox:+') { transitive = true }
172
-    androidTestImplementation 'junit:junit:4.12'
173
-
174 188
     if (enableHermes) {
175
-        // For RN 0.60.x
176
-        def hermesPath = "${rootProject.projectDir}/../node_modules/hermesvm/android/"
177
-
189
+        def hermesPath = "../../../node_modules/hermes-engine/android/";
178 190
         debugImplementation files(hermesPath + "hermes-debug.aar")
179 191
         releaseImplementation files(hermesPath + "hermes-release.aar")
180 192
     } else {
@@ -188,3 +200,5 @@ task copyDownloadableDepsToLibs(type: Copy) {
188 200
     from configurations.compile
189 201
     into 'libs'
190 202
 }
203
+
204
+apply from: file("../../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)

BIN
example/android/app/debug.keystore View File


BIN
example/android/app/exampleAsyncStorage.keystore View File


+ 0
- 7
example/android/app/proguard-rules.pro View File

@@ -8,10 +8,3 @@
8 8
 #   http://developer.android.com/guide/developing/tools/proguard.html
9 9
 
10 10
 # Add any project specific keep options here:
11
-
12
-# If your project uses WebView with JS, uncomment the following
13
-# and specify the fully qualified class name to the JavaScript interface
14
-# class:
15
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16
-#   public *;
17
-#}

+ 0
- 25
example/android/app/scripts/CI.gradle View File

@@ -1,25 +0,0 @@
1
-// Fetch all dependencies upfront
2
-task fetchDependencies() {
3
-    description 'Download all dependencies to the Gradle cache'
4
-    group 'android'
5
-    doLast {
6
-        project.rootProject.allprojects.each { subProject ->
7
-            subProject.buildscript.configurations.each {config ->
8
-                if(config.canBeResolved) {
9
-                    config.files
10
-                }
11
-            }
12
-            subProject.configurations.each {config ->
13
-                if(config.canBeResolved) {
14
-                    // DefaultLenientConfiguration$ArtifactResolveException
15
-                    try {
16
-                        config.files
17
-                    } catch(e) {
18
-                        println e
19
-                    }
20
-
21
-                }
22
-            }
23
-        }
24
-    }
25
-}

+ 0
- 24
example/android/app/src/androidTest/java/com/webviewexample/DetoxTest.java View File

@@ -1,24 +0,0 @@
1
-package com.webviewexample;
2
-
3
-import androidx.test.filters.LargeTest;
4
-import androidx.test.rule.ActivityTestRule;
5
-import androidx.test.runner.AndroidJUnit4;
6
-
7
-import com.wix.detox.Detox;
8
-
9
-import org.junit.Rule;
10
-import org.junit.Test;
11
-import org.junit.runner.RunWith;
12
-
13
-@RunWith(AndroidJUnit4.class)
14
-@LargeTest
15
-public class DetoxTest {
16
-
17
-    @Rule
18
-    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false);
19
-
20
-    @Test
21
-    public void runDetoxTests() throws InterruptedException {
22
-        Detox.runTests(mActivityRule);
23
-    }
24
-}

+ 4
- 5
example/android/app/src/debug/AndroidManifest.xml View File

@@ -1,9 +1,8 @@
1 1
 <?xml version="1.0" encoding="utf-8"?>
2 2
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
-          xmlns:tools="http://schemas.android.com/tools">
3
+    xmlns:tools="http://schemas.android.com/tools">
4
+
4 5
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
5
-    <application
6
-    	android:usesCleartextTraffic="true"
7
-    	tools:targetApi="28"
8
-    	tools:ignore="GoogleAppIndexingWarning"/>
6
+
7
+    <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
9 8
 </manifest>

+ 1
- 1
example/android/app/src/main/AndroidManifest.xml View File

@@ -1,5 +1,5 @@
1 1
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
-    package="com.webviewexample">
2
+  package="com.example">
3 3
 
4 4
     <uses-permission android:name="android.permission.INTERNET" />
5 5
 

+ 15
- 0
example/android/app/src/main/java/com/example/MainActivity.java View File

@@ -0,0 +1,15 @@
1
+package com.example;
2
+
3
+import com.facebook.react.ReactActivity;
4
+
5
+public class MainActivity extends ReactActivity {
6
+
7
+  /**
8
+   * Returns the name of the main component registered from JavaScript. This is used to schedule
9
+   * rendering of the component.
10
+   */
11
+  @Override
12
+  protected String getMainComponentName() {
13
+    return "example";
14
+  }
15
+}

+ 76
- 0
example/android/app/src/main/java/com/example/MainApplication.java View File

@@ -0,0 +1,76 @@
1
+package com.example;
2
+
3
+import android.app.Application;
4
+import android.content.Context;
5
+import com.facebook.react.PackageList;
6
+import com.facebook.react.ReactApplication;
7
+import com.facebook.react.ReactNativeHost;
8
+import com.facebook.react.ReactPackage;
9
+import com.facebook.soloader.SoLoader;
10
+import com.reactnativecommunity.webview.RNCWebViewPackage;
11
+import java.lang.reflect.InvocationTargetException;
12
+import java.util.List;
13
+
14
+public class MainApplication extends Application implements ReactApplication {
15
+
16
+  private final ReactNativeHost mReactNativeHost =
17
+      new ReactNativeHost(this) {
18
+        @Override
19
+        public boolean getUseDeveloperSupport() {
20
+          return BuildConfig.DEBUG;
21
+        }
22
+
23
+        @Override
24
+        protected List<ReactPackage> getPackages() {
25
+          @SuppressWarnings("UnnecessaryLocalVariable")
26
+          List<ReactPackage> packages = new PackageList(this).getPackages();
27
+          // Packages that cannot be autolinked yet can be added manually here, for example:
28
+          // packages.add(new MyReactNativePackage());
29
+          packages.add(new RNCWebViewPackage());
30
+          return packages;
31
+        }
32
+
33
+        @Override
34
+        protected String getJSMainModuleName() {
35
+          return "example/index";
36
+        }
37
+      };
38
+
39
+  @Override
40
+  public ReactNativeHost getReactNativeHost() {
41
+    return mReactNativeHost;
42
+  }
43
+
44
+  @Override
45
+  public void onCreate() {
46
+    super.onCreate();
47
+    SoLoader.init(this, /* native exopackage */ false);
48
+    initializeFlipper(this); // Remove this line if you don't want Flipper enabled
49
+  }
50
+
51
+  /**
52
+   * Loads Flipper in React Native templates.
53
+   *
54
+   * @param context
55
+   */
56
+  private static void initializeFlipper(Context context) {
57
+    if (BuildConfig.DEBUG) {
58
+      try {
59
+        /*
60
+         We use reflection here to pick up the class that initializes Flipper,
61
+        since Flipper library is not available in release mode
62
+        */
63
+        Class<?> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper");
64
+        aClass.getMethod("initializeFlipper", Context.class).invoke(null, context);
65
+      } catch (ClassNotFoundException e) {
66
+        e.printStackTrace();
67
+      } catch (NoSuchMethodException e) {
68
+        e.printStackTrace();
69
+      } catch (IllegalAccessException e) {
70
+        e.printStackTrace();
71
+      } catch (InvocationTargetException e) {
72
+        e.printStackTrace();
73
+      }
74
+    }
75
+  }
76
+}

+ 0
- 15
example/android/app/src/main/java/com/webviewexample/MainActivity.java View File

@@ -1,15 +0,0 @@
1
-package com.webviewexample;
2
-
3
-import com.facebook.react.ReactActivity;
4
-
5
-public class MainActivity extends ReactActivity {
6
-
7
-    /**
8
-     * Returns the name of the main component registered from JavaScript.
9
-     * This is used to schedule rendering of the component.
10
-     */
11
-    @Override
12
-    protected String getMainComponentName() {
13
-        return "RNCWebViewExample";
14
-    }
15
-}

+ 0
- 47
example/android/app/src/main/java/com/webviewexample/MainApplication.java View File

@@ -1,47 +0,0 @@
1
-package com.webviewexample;
2
-
3
-import android.app.Application;
4
-
5
-import com.facebook.react.ReactApplication;
6
-import com.facebook.react.ReactNativeHost;
7
-import com.facebook.react.ReactPackage;
8
-import com.facebook.react.shell.MainReactPackage;
9
-import com.facebook.soloader.SoLoader;
10
-import com.reactnativecommunity.webview.RNCWebViewPackage;
11
-
12
-import java.util.Arrays;
13
-import java.util.List;
14
-
15
-public class MainApplication extends Application implements ReactApplication {
16
-
17
-    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
18
-        @Override
19
-        public boolean getUseDeveloperSupport() {
20
-            return BuildConfig.DEBUG;
21
-        }
22
-
23
-        @Override
24
-        protected List<ReactPackage> getPackages() {
25
-            return Arrays.<ReactPackage>asList(
26
-                    new MainReactPackage(),
27
-                    new RNCWebViewPackage()
28
-            );
29
-        }
30
-
31
-        @Override
32
-        protected String getJSMainModuleName() {
33
-            return "example/index";
34
-        }
35
-    };
36
-
37
-    @Override
38
-    public ReactNativeHost getReactNativeHost() {
39
-        return mReactNativeHost;
40
-    }
41
-
42
-    @Override
43
-    public void onCreate() {
44
-        super.onCreate();
45
-        SoLoader.init(this, /* native exopackage */ false);
46
-    }
47
-}

+ 1
- 1
example/android/app/src/main/res/values/strings.xml View File

@@ -1,3 +1,3 @@
1 1
 <resources>
2
-    <string name="app_name">WebViewExample</string>
2
+    <string name="app_name">example</string>
3 3
 </resources>

+ 1
- 0
example/android/app/src/main/res/values/styles.xml View File

@@ -3,6 +3,7 @@
3 3
     <!-- Base application theme. -->
4 4
     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
5 5
         <!-- Customize your theme here. -->
6
+        <item name="android:textColor">#000000</item>
6 7
     </style>
7 8
 
8 9
 </resources>

+ 12
- 12
example/android/build.gradle View File

@@ -2,37 +2,37 @@
2 2
 
3 3
 buildscript {
4 4
     ext {
5
-        kotlinVersion = '1.3.10'
6 5
         buildToolsVersion = "28.0.3"
7
-        minSdkVersion = 19
6
+        minSdkVersion = 16
8 7
         compileSdkVersion = 28
9 8
         targetSdkVersion = 28
10
-        supportLibVersion = "28.0.0"
11
-        detoxKotlinVersion = kotlinVersion
12 9
     }
13 10
     repositories {
14 11
         google()
15 12
         jcenter()
16 13
     }
17 14
     dependencies {
18
-        classpath 'com.android.tools.build:gradle:3.4.1'
19
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
15
+        classpath("com.android.tools.build:gradle:3.4.2")
16
+
17
+        // NOTE: Do not place your application dependencies here; they belong
18
+        // in the individual module build.gradle files
20 19
     }
21 20
 }
22 21
 
23 22
 allprojects {
24 23
     repositories {
25 24
         mavenLocal()
26
-        google()
27
-        jcenter()
28 25
         maven {
29 26
             // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
30
-            url "$rootDir/../../node_modules/react-native/android"
31
-            }
27
+            url("$rootDir/../../node_modules/react-native/android")
28
+        }
32 29
         maven {
33 30
             // Android JSC is installed from npm
34
-            url "$rootDir/../../node_modules/jsc-android/dist"
31
+            url("$rootDir/../../node_modules/jsc-android/dist")
35 32
         }
36
-        maven { url "$rootDir/../../node_modules/detox/Detox-android" }
33
+
34
+        google()
35
+        jcenter()
36
+        maven { url 'https://jitpack.io' }
37 37
     }
38 38
 }

+ 0
- 6
example/android/gradle.properties View File

@@ -17,11 +17,5 @@
17 17
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 18
 # org.gradle.parallel=true
19 19
 
20
-# This is an example of how you can change default DB size (6MB) to 10MB
21
-# WebView_db_size_in_MB=10
22
-
23
-# Enable dedicated thread pool executor
24
-WebView_dedicatedExecutor=true
25 20
 android.useAndroidX=true
26 21
 android.enableJetifier=true
27
-

BIN
example/android/gradle/wrapper/gradle-wrapper.jar View File


+ 1
- 2
example/android/gradle/wrapper/gradle-wrapper.properties View File

@@ -1,6 +1,5 @@
1 1
 distributionBase=GRADLE_USER_HOME
2 2
 distributionPath=wrapper/dists
3
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
3 4
 zipStoreBase=GRADLE_USER_HOME
4 5
 zipStorePath=wrapper/dists
5
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
6
-

+ 17
- 1
example/android/gradlew View File

@@ -1,5 +1,21 @@
1 1
 #!/usr/bin/env sh
2 2
 
3
+#
4
+# Copyright 2015 the original author or authors.
5
+#
6
+# Licensed under the Apache License, Version 2.0 (the "License");
7
+# you may not use this file except in compliance with the License.
8
+# You may obtain a copy of the License at
9
+#
10
+#      http://www.apache.org/licenses/LICENSE-2.0
11
+#
12
+# Unless required by applicable law or agreed to in writing, software
13
+# distributed under the License is distributed on an "AS IS" BASIS,
14
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+# See the License for the specific language governing permissions and
16
+# limitations under the License.
17
+#
18
+
3 19
 ##############################################################################
4 20
 ##
5 21
 ##  Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
28 44
 APP_BASE_NAME=`basename "$0"`
29 45
 
30 46
 # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31
-DEFAULT_JVM_OPTS=""
47
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
32 48
 
33 49
 # Use the maximum available, or set MAX_FD != -1 to use that value.
34 50
 MAX_FD="maximum"

+ 100
- 84
example/android/gradlew.bat View File

@@ -1,84 +1,100 @@
1
-@if "%DEBUG%" == "" @echo off
2
-@rem ##########################################################################
3
-@rem
4
-@rem  Gradle startup script for Windows
5
-@rem
6
-@rem ##########################################################################
7
-
8
-@rem Set local scope for the variables with windows NT shell
9
-if "%OS%"=="Windows_NT" setlocal
10
-
11
-set DIRNAME=%~dp0
12
-if "%DIRNAME%" == "" set DIRNAME=.
13
-set APP_BASE_NAME=%~n0
14
-set APP_HOME=%DIRNAME%
15
-
16
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17
-set DEFAULT_JVM_OPTS=
18
-
19
-@rem Find java.exe
20
-if defined JAVA_HOME goto findJavaFromJavaHome
21
-
22
-set JAVA_EXE=java.exe
23
-%JAVA_EXE% -version >NUL 2>&1
24
-if "%ERRORLEVEL%" == "0" goto init
25
-
26
-echo.
27
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28
-echo.
29
-echo Please set the JAVA_HOME variable in your environment to match the
30
-echo location of your Java installation.
31
-
32
-goto fail
33
-
34
-:findJavaFromJavaHome
35
-set JAVA_HOME=%JAVA_HOME:"=%
36
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37
-
38
-if exist "%JAVA_EXE%" goto init
39
-
40
-echo.
41
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42
-echo.
43
-echo Please set the JAVA_HOME variable in your environment to match the
44
-echo location of your Java installation.
45
-
46
-goto fail
47
-
48
-:init
49
-@rem Get command-line arguments, handling Windows variants
50
-
51
-if not "%OS%" == "Windows_NT" goto win9xME_args
52
-
53
-:win9xME_args
54
-@rem Slurp the command line arguments.
55
-set CMD_LINE_ARGS=
56
-set _SKIP=2
57
-
58
-:win9xME_args_slurp
59
-if "x%~1" == "x" goto execute
60
-
61
-set CMD_LINE_ARGS=%*
62
-
63
-:execute
64
-@rem Setup the command line
65
-
66
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
67
-
68
-@rem Execute Gradle
69
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
70
-
71
-:end
72
-@rem End local scope for the variables with windows NT shell
73
-if "%ERRORLEVEL%"=="0" goto mainEnd
74
-
75
-:fail
76
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
77
-rem the _cmd.exe /c_ return code!
78
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
79
-exit /b 1
80
-
81
-:mainEnd
82
-if "%OS%"=="Windows_NT" endlocal
83
-
84
-:omega
1
+@rem
2
+@rem Copyright 2015 the original author or authors.
3
+@rem
4
+@rem Licensed under the Apache License, Version 2.0 (the "License");
5
+@rem you may not use this file except in compliance with the License.
6
+@rem You may obtain a copy of the License at
7
+@rem
8
+@rem      http://www.apache.org/licenses/LICENSE-2.0
9
+@rem
10
+@rem Unless required by applicable law or agreed to in writing, software
11
+@rem distributed under the License is distributed on an "AS IS" BASIS,
12
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+@rem See the License for the specific language governing permissions and
14
+@rem limitations under the License.
15
+@rem
16
+
17
+@if "%DEBUG%" == "" @echo off
18
+@rem ##########################################################################
19
+@rem
20
+@rem  Gradle startup script for Windows
21
+@rem
22
+@rem ##########################################################################
23
+
24
+@rem Set local scope for the variables with windows NT shell
25
+if "%OS%"=="Windows_NT" setlocal
26
+
27
+set DIRNAME=%~dp0
28
+if "%DIRNAME%" == "" set DIRNAME=.
29
+set APP_BASE_NAME=%~n0
30
+set APP_HOME=%DIRNAME%
31
+
32
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
33
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
34
+
35
+@rem Find java.exe
36
+if defined JAVA_HOME goto findJavaFromJavaHome
37
+
38
+set JAVA_EXE=java.exe
39
+%JAVA_EXE% -version >NUL 2>&1
40
+if "%ERRORLEVEL%" == "0" goto init
41
+
42
+echo.
43
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
44
+echo.
45
+echo Please set the JAVA_HOME variable in your environment to match the
46
+echo location of your Java installation.
47
+
48
+goto fail
49
+
50
+:findJavaFromJavaHome
51
+set JAVA_HOME=%JAVA_HOME:"=%
52
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
53
+
54
+if exist "%JAVA_EXE%" goto init
55
+
56
+echo.
57
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
58
+echo.
59
+echo Please set the JAVA_HOME variable in your environment to match the
60
+echo location of your Java installation.
61
+
62
+goto fail
63
+
64
+:init
65
+@rem Get command-line arguments, handling Windows variants
66
+
67
+if not "%OS%" == "Windows_NT" goto win9xME_args
68
+
69
+:win9xME_args
70
+@rem Slurp the command line arguments.
71
+set CMD_LINE_ARGS=
72
+set _SKIP=2
73
+
74
+:win9xME_args_slurp
75
+if "x%~1" == "x" goto execute
76
+
77
+set CMD_LINE_ARGS=%*
78
+
79
+:execute
80
+@rem Setup the command line
81
+
82
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
83
+
84
+@rem Execute Gradle
85
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
86
+
87
+:end
88
+@rem End local scope for the variables with windows NT shell
89
+if "%ERRORLEVEL%"=="0" goto mainEnd
90
+
91
+:fail
92
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
93
+rem the _cmd.exe /c_ return code!
94
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
95
+exit /b 1
96
+
97
+:mainEnd
98
+if "%OS%"=="Windows_NT" endlocal
99
+
100
+:omega

+ 0
- 8
example/android/keystores/BUCK View File

@@ -1,8 +0,0 @@
1
-keystore(
2
-    name = "debug",
3
-    properties = "debug.keystore.properties",
4
-    store = "debug.keystore",
5
-    visibility = [
6
-        "PUBLIC",
7
-    ],
8
-)

+ 0
- 4
example/android/keystores/debug.keystore.properties View File

@@ -1,4 +0,0 @@
1
-key.store=debug.keystore
2
-key.alias=androiddebugkey
3
-key.store.password=android
4
-key.alias.password=android

+ 4
- 6
example/android/settings.gradle View File

@@ -1,7 +1,5 @@
1
-rootProject.name = 'WebViewExample'
2
-
1
+rootProject.name = 'example'
2
+apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
3 3
 include ':app'
4
-include ':ReactNativeWebView'
5
-
6
-
7
-project(':ReactNativeWebView').projectDir = new File(rootProject.projectDir, '../../android')
4
+include ':rnWebView'
5
+project(':rnWebView').projectDir = new File(rootProject.projectDir, '../../android')

+ 2
- 2
example/app.json View File

@@ -1,4 +1,4 @@
1 1
 {
2
-  "name": "RNCWebViewExample",
3
-  "displayName": "RNCWebViewExample"
2
+  "name": "example",
3
+  "displayName": "example"
4 4
 }

+ 3
- 0
example/babel.config.js View File

@@ -0,0 +1,3 @@
1
+module.exports = {
2
+  presets: ['module:metro-react-native-babel-preset'],
3
+};

example/examples/Alerts.js → example/examples/Alerts.tsx View File

@@ -1,13 +1,3 @@
1
-/**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow
9
- */
10
-
11 1
 import React, {Component} from 'react';
12 2
 import {Text, View} from 'react-native';
13 3
 

example/examples/Background.js → example/examples/Background.tsx View File

@@ -1,13 +1,3 @@
1
-/**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow
9
- */
10
-
11 1
 import React, {Component} from 'react';
12 2
 import {Text, View} from 'react-native';
13 3
 

example/examples/Scrolling.js → example/examples/Scrolling.tsx View File

@@ -1,13 +1,3 @@
1
-/**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow
9
- */
10
-
11 1
 import React, {Component} from 'react';
12 2
 import {Button, Text, View} from 'react-native';
13 3
 

+ 1
- 7
example/index.js View File

@@ -1,15 +1,9 @@
1 1
 /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7 2
  * @format
8
- * @flow
9 3
  */
10 4
 
11 5
 import {AppRegistry} from 'react-native';
12 6
 import App from './App';
13 7
 import {name as appName} from './app.json';
14 8
 
15
-AppRegistry.registerComponent(appName, () => App);
9
+AppRegistry.registerComponent(appName, () => App);

+ 56
- 0
example/ios/Podfile View File

@@ -0,0 +1,56 @@
1
+platform :ios, '9.0'
2
+require_relative '../../node_modules/@react-native-community/cli-platform-ios/native_modules'
3
+
4
+project './example.xcodeproj'
5
+
6
+target 'example' do
7
+  # Pods for example
8
+  pod 'react-native-webview', :path => "../.."
9
+  pod 'FBLazyVector', :path => "../../node_modules/react-native/Libraries/FBLazyVector"
10
+  pod 'FBReactNativeSpec', :path => "../../node_modules/react-native/Libraries/FBReactNativeSpec"
11
+  pod 'RCTRequired', :path => "../../node_modules/react-native/Libraries/RCTRequired"
12
+  pod 'RCTTypeSafety', :path => "../../node_modules/react-native/Libraries/TypeSafety"
13
+  pod 'React', :path => '../../node_modules/react-native/'
14
+  pod 'React-Core', :path => '../../node_modules/react-native/'
15
+  pod 'React-CoreModules', :path => '../../node_modules/react-native/React/CoreModules'
16
+  pod 'React-Core/DevSupport', :path => '../../node_modules/react-native/'
17
+  pod 'React-RCTActionSheet', :path => '../../node_modules/react-native/Libraries/ActionSheetIOS'
18
+  pod 'React-RCTAnimation', :path => '../../node_modules/react-native/Libraries/NativeAnimation'
19
+  pod 'React-RCTBlob', :path => '../../node_modules/react-native/Libraries/Blob'
20
+  pod 'React-RCTImage', :path => '../../node_modules/react-native/Libraries/Image'
21
+  pod 'React-RCTLinking', :path => '../../node_modules/react-native/Libraries/LinkingIOS'
22
+  pod 'React-RCTNetwork', :path => '../../node_modules/react-native/Libraries/Network'
23
+  pod 'React-RCTSettings', :path => '../../node_modules/react-native/Libraries/Settings'
24
+  pod 'React-RCTText', :path => '../../node_modules/react-native/Libraries/Text'
25
+  pod 'React-RCTVibration', :path => '../../node_modules/react-native/Libraries/Vibration'
26
+  pod 'React-Core/RCTWebSocket', :path => '../../node_modules/react-native/'
27
+
28
+  pod 'React-cxxreact', :path => '../../node_modules/react-native/ReactCommon/cxxreact'
29
+  pod 'React-jsi', :path => '../../node_modules/react-native/ReactCommon/jsi'
30
+  pod 'React-jsiexecutor', :path => '../../node_modules/react-native/ReactCommon/jsiexecutor'
31
+  pod 'React-jsinspector', :path => '../../node_modules/react-native/ReactCommon/jsinspector'
32
+  pod 'ReactCommon/jscallinvoker', :path => "../../node_modules/react-native/ReactCommon"
33
+  pod 'ReactCommon/turbomodule/core', :path => "../../node_modules/react-native/ReactCommon"
34
+  pod 'Yoga', :path => '../../node_modules/react-native/ReactCommon/yoga'
35
+
36
+  pod 'DoubleConversion', :podspec => '../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
37
+  pod 'glog', :podspec => '../../node_modules/react-native/third-party-podspecs/glog.podspec'
38
+  pod 'Folly', :podspec => '../../node_modules/react-native/third-party-podspecs/Folly.podspec'
39
+
40
+  target 'exampleTests' do
41
+    inherit! :search_paths
42
+    # Pods for testing
43
+  end
44
+
45
+  use_native_modules!
46
+end
47
+
48
+target 'example-tvOS' do
49
+  # Pods for example-tvOS
50
+
51
+  target 'example-tvOSTests' do
52
+    inherit! :search_paths
53
+    # Pods for testing
54
+  end
55
+
56
+end

+ 344
- 0
example/ios/Podfile.lock View File

@@ -0,0 +1,344 @@
1
+PODS:
2
+  - boost-for-react-native (1.63.0)
3
+  - DoubleConversion (1.1.6)
4
+  - FBLazyVector (0.61.5)
5
+  - FBReactNativeSpec (0.61.5):
6
+    - Folly (= 2018.10.22.00)
7
+    - RCTRequired (= 0.61.5)
8
+    - RCTTypeSafety (= 0.61.5)
9
+    - React-Core (= 0.61.5)
10
+    - React-jsi (= 0.61.5)
11
+    - ReactCommon/turbomodule/core (= 0.61.5)
12
+  - Folly (2018.10.22.00):
13
+    - boost-for-react-native
14
+    - DoubleConversion
15
+    - Folly/Default (= 2018.10.22.00)
16
+    - glog
17
+  - Folly/Default (2018.10.22.00):
18
+    - boost-for-react-native
19
+    - DoubleConversion
20
+    - glog
21
+  - glog (0.3.5)
22
+  - RCTRequired (0.61.5)
23
+  - RCTTypeSafety (0.61.5):
24
+    - FBLazyVector (= 0.61.5)
25
+    - Folly (= 2018.10.22.00)
26
+    - RCTRequired (= 0.61.5)
27
+    - React-Core (= 0.61.5)
28
+  - React (0.61.5):
29
+    - React-Core (= 0.61.5)
30
+    - React-Core/DevSupport (= 0.61.5)
31
+    - React-Core/RCTWebSocket (= 0.61.5)
32
+    - React-RCTActionSheet (= 0.61.5)
33
+    - React-RCTAnimation (= 0.61.5)
34
+    - React-RCTBlob (= 0.61.5)
35
+    - React-RCTImage (= 0.61.5)
36
+    - React-RCTLinking (= 0.61.5)
37
+    - React-RCTNetwork (= 0.61.5)
38
+    - React-RCTSettings (= 0.61.5)
39
+    - React-RCTText (= 0.61.5)
40
+    - React-RCTVibration (= 0.61.5)
41
+  - React-Core (0.61.5):
42
+    - Folly (= 2018.10.22.00)
43
+    - glog
44
+    - React-Core/Default (= 0.61.5)
45
+    - React-cxxreact (= 0.61.5)
46
+    - React-jsi (= 0.61.5)
47
+    - React-jsiexecutor (= 0.61.5)
48
+    - Yoga
49
+  - React-Core/CoreModulesHeaders (0.61.5):
50
+    - Folly (= 2018.10.22.00)
51
+    - glog
52
+    - React-Core/Default
53
+    - React-cxxreact (= 0.61.5)
54
+    - React-jsi (= 0.61.5)
55
+    - React-jsiexecutor (= 0.61.5)
56
+    - Yoga
57
+  - React-Core/Default (0.61.5):
58
+    - Folly (= 2018.10.22.00)
59
+    - glog
60
+    - React-cxxreact (= 0.61.5)
61
+    - React-jsi (= 0.61.5)
62
+    - React-jsiexecutor (= 0.61.5)
63
+    - Yoga
64
+  - React-Core/DevSupport (0.61.5):
65
+    - Folly (= 2018.10.22.00)
66
+    - glog
67
+    - React-Core/Default (= 0.61.5)
68
+    - React-Core/RCTWebSocket (= 0.61.5)
69
+    - React-cxxreact (= 0.61.5)
70
+    - React-jsi (= 0.61.5)
71
+    - React-jsiexecutor (= 0.61.5)
72
+    - React-jsinspector (= 0.61.5)
73
+    - Yoga
74
+  - React-Core/RCTActionSheetHeaders (0.61.5):
75
+    - Folly (= 2018.10.22.00)
76
+    - glog
77
+    - React-Core/Default
78
+    - React-cxxreact (= 0.61.5)
79
+    - React-jsi (= 0.61.5)
80
+    - React-jsiexecutor (= 0.61.5)
81
+    - Yoga
82
+  - React-Core/RCTAnimationHeaders (0.61.5):
83
+    - Folly (= 2018.10.22.00)
84
+    - glog
85
+    - React-Core/Default
86
+    - React-cxxreact (= 0.61.5)
87
+    - React-jsi (= 0.61.5)
88
+    - React-jsiexecutor (= 0.61.5)
89
+    - Yoga
90
+  - React-Core/RCTBlobHeaders (0.61.5):
91
+    - Folly (= 2018.10.22.00)
92
+    - glog
93
+    - React-Core/Default
94
+    - React-cxxreact (= 0.61.5)
95
+    - React-jsi (= 0.61.5)
96
+    - React-jsiexecutor (= 0.61.5)
97
+    - Yoga
98
+  - React-Core/RCTImageHeaders (0.61.5):
99
+    - Folly (= 2018.10.22.00)
100
+    - glog
101
+    - React-Core/Default
102
+    - React-cxxreact (= 0.61.5)
103
+    - React-jsi (= 0.61.5)
104
+    - React-jsiexecutor (= 0.61.5)
105
+    - Yoga
106
+  - React-Core/RCTLinkingHeaders (0.61.5):
107
+    - Folly (= 2018.10.22.00)
108
+    - glog
109
+    - React-Core/Default
110
+    - React-cxxreact (= 0.61.5)
111
+    - React-jsi (= 0.61.5)
112
+    - React-jsiexecutor (= 0.61.5)
113
+    - Yoga
114
+  - React-Core/RCTNetworkHeaders (0.61.5):
115
+    - Folly (= 2018.10.22.00)
116
+    - glog
117
+    - React-Core/Default
118
+    - React-cxxreact (= 0.61.5)
119
+    - React-jsi (= 0.61.5)
120
+    - React-jsiexecutor (= 0.61.5)
121
+    - Yoga
122
+  - React-Core/RCTSettingsHeaders (0.61.5):
123
+    - Folly (= 2018.10.22.00)
124
+    - glog
125
+    - React-Core/Default
126
+    - React-cxxreact (= 0.61.5)
127
+    - React-jsi (= 0.61.5)
128
+    - React-jsiexecutor (= 0.61.5)
129
+    - Yoga
130
+  - React-Core/RCTTextHeaders (0.61.5):
131
+    - Folly (= 2018.10.22.00)
132
+    - glog
133
+    - React-Core/Default
134
+    - React-cxxreact (= 0.61.5)
135
+    - React-jsi (= 0.61.5)
136
+    - React-jsiexecutor (= 0.61.5)
137
+    - Yoga
138
+  - React-Core/RCTVibrationHeaders (0.61.5):
139
+    - Folly (= 2018.10.22.00)
140
+    - glog
141
+    - React-Core/Default
142
+    - React-cxxreact (= 0.61.5)
143
+    - React-jsi (= 0.61.5)
144
+    - React-jsiexecutor (= 0.61.5)
145
+    - Yoga
146
+  - React-Core/RCTWebSocket (0.61.5):
147
+    - Folly (= 2018.10.22.00)
148
+    - glog
149
+    - React-Core/Default (= 0.61.5)
150
+    - React-cxxreact (= 0.61.5)
151
+    - React-jsi (= 0.61.5)
152
+    - React-jsiexecutor (= 0.61.5)
153
+    - Yoga
154
+  - React-CoreModules (0.61.5):
155
+    - FBReactNativeSpec (= 0.61.5)
156
+    - Folly (= 2018.10.22.00)
157
+    - RCTTypeSafety (= 0.61.5)
158
+    - React-Core/CoreModulesHeaders (= 0.61.5)
159
+    - React-RCTImage (= 0.61.5)
160
+    - ReactCommon/turbomodule/core (= 0.61.5)
161
+  - React-cxxreact (0.61.5):
162
+    - boost-for-react-native (= 1.63.0)
163
+    - DoubleConversion
164
+    - Folly (= 2018.10.22.00)
165
+    - glog
166
+    - React-jsinspector (= 0.61.5)
167
+  - React-jsi (0.61.5):
168
+    - boost-for-react-native (= 1.63.0)
169
+    - DoubleConversion
170
+    - Folly (= 2018.10.22.00)
171
+    - glog
172
+    - React-jsi/Default (= 0.61.5)
173
+  - React-jsi/Default (0.61.5):
174
+    - boost-for-react-native (= 1.63.0)
175
+    - DoubleConversion
176
+    - Folly (= 2018.10.22.00)
177
+    - glog
178
+  - React-jsiexecutor (0.61.5):
179
+    - DoubleConversion
180
+    - Folly (= 2018.10.22.00)
181
+    - glog
182
+    - React-cxxreact (= 0.61.5)
183
+    - React-jsi (= 0.61.5)
184
+  - React-jsinspector (0.61.5)
185
+  - react-native-webview (8.0.4):
186
+    - React
187
+  - React-RCTActionSheet (0.61.5):
188
+    - React-Core/RCTActionSheetHeaders (= 0.61.5)
189
+  - React-RCTAnimation (0.61.5):
190
+    - React-Core/RCTAnimationHeaders (= 0.61.5)
191
+  - React-RCTBlob (0.61.5):
192
+    - React-Core/RCTBlobHeaders (= 0.61.5)
193
+    - React-Core/RCTWebSocket (= 0.61.5)
194
+    - React-jsi (= 0.61.5)
195
+    - React-RCTNetwork (= 0.61.5)
196
+  - React-RCTImage (0.61.5):
197
+    - React-Core/RCTImageHeaders (= 0.61.5)
198
+    - React-RCTNetwork (= 0.61.5)
199
+  - React-RCTLinking (0.61.5):
200
+    - React-Core/RCTLinkingHeaders (= 0.61.5)
201
+  - React-RCTNetwork (0.61.5):
202
+    - React-Core/RCTNetworkHeaders (= 0.61.5)
203
+  - React-RCTSettings (0.61.5):
204
+    - React-Core/RCTSettingsHeaders (= 0.61.5)
205
+  - React-RCTText (0.61.5):
206
+    - React-Core/RCTTextHeaders (= 0.61.5)
207
+  - React-RCTVibration (0.61.5):
208
+    - React-Core/RCTVibrationHeaders (= 0.61.5)
209
+  - ReactCommon/jscallinvoker (0.61.5):
210
+    - DoubleConversion
211
+    - Folly (= 2018.10.22.00)
212
+    - glog
213
+    - React-cxxreact (= 0.61.5)
214
+  - ReactCommon/turbomodule/core (0.61.5):
215
+    - DoubleConversion
216
+    - Folly (= 2018.10.22.00)
217
+    - glog
218
+    - React-Core (= 0.61.5)
219
+    - React-cxxreact (= 0.61.5)
220
+    - React-jsi (= 0.61.5)
221
+    - ReactCommon/jscallinvoker (= 0.61.5)
222
+  - Yoga (1.14.0)
223
+
224
+DEPENDENCIES:
225
+  - DoubleConversion (from `../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
226
+  - FBLazyVector (from `../../node_modules/react-native/Libraries/FBLazyVector`)
227
+  - FBReactNativeSpec (from `../../node_modules/react-native/Libraries/FBReactNativeSpec`)
228
+  - Folly (from `../../node_modules/react-native/third-party-podspecs/Folly.podspec`)
229
+  - glog (from `../../node_modules/react-native/third-party-podspecs/glog.podspec`)
230
+  - RCTRequired (from `../../node_modules/react-native/Libraries/RCTRequired`)
231
+  - RCTTypeSafety (from `../../node_modules/react-native/Libraries/TypeSafety`)
232
+  - React (from `../../node_modules/react-native/`)
233
+  - React-Core (from `../../node_modules/react-native/`)
234
+  - React-Core/DevSupport (from `../../node_modules/react-native/`)
235
+  - React-Core/RCTWebSocket (from `../../node_modules/react-native/`)
236
+  - React-CoreModules (from `../../node_modules/react-native/React/CoreModules`)
237
+  - React-cxxreact (from `../../node_modules/react-native/ReactCommon/cxxreact`)
238
+  - React-jsi (from `../../node_modules/react-native/ReactCommon/jsi`)
239
+  - React-jsiexecutor (from `../../node_modules/react-native/ReactCommon/jsiexecutor`)
240
+  - React-jsinspector (from `../../node_modules/react-native/ReactCommon/jsinspector`)
241
+  - react-native-webview (from `../..`)
242
+  - React-RCTActionSheet (from `../../node_modules/react-native/Libraries/ActionSheetIOS`)
243
+  - React-RCTAnimation (from `../../node_modules/react-native/Libraries/NativeAnimation`)
244
+  - React-RCTBlob (from `../../node_modules/react-native/Libraries/Blob`)
245
+  - React-RCTImage (from `../../node_modules/react-native/Libraries/Image`)
246
+  - React-RCTLinking (from `../../node_modules/react-native/Libraries/LinkingIOS`)
247
+  - React-RCTNetwork (from `../../node_modules/react-native/Libraries/Network`)
248
+  - React-RCTSettings (from `../../node_modules/react-native/Libraries/Settings`)
249
+  - React-RCTText (from `../../node_modules/react-native/Libraries/Text`)
250
+  - React-RCTVibration (from `../../node_modules/react-native/Libraries/Vibration`)
251
+  - ReactCommon/jscallinvoker (from `../../node_modules/react-native/ReactCommon`)
252
+  - ReactCommon/turbomodule/core (from `../../node_modules/react-native/ReactCommon`)
253
+  - Yoga (from `../../node_modules/react-native/ReactCommon/yoga`)
254
+
255
+SPEC REPOS:
256
+  trunk:
257
+    - boost-for-react-native
258
+
259
+EXTERNAL SOURCES:
260
+  DoubleConversion:
261
+    :podspec: "../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
262
+  FBLazyVector:
263
+    :path: "../../node_modules/react-native/Libraries/FBLazyVector"
264
+  FBReactNativeSpec:
265
+    :path: "../../node_modules/react-native/Libraries/FBReactNativeSpec"
266
+  Folly:
267
+    :podspec: "../../node_modules/react-native/third-party-podspecs/Folly.podspec"
268
+  glog:
269
+    :podspec: "../../node_modules/react-native/third-party-podspecs/glog.podspec"
270
+  RCTRequired:
271
+    :path: "../../node_modules/react-native/Libraries/RCTRequired"
272
+  RCTTypeSafety:
273
+    :path: "../../node_modules/react-native/Libraries/TypeSafety"
274
+  React:
275
+    :path: "../../node_modules/react-native/"
276
+  React-Core:
277
+    :path: "../../node_modules/react-native/"
278
+  React-CoreModules:
279
+    :path: "../../node_modules/react-native/React/CoreModules"
280
+  React-cxxreact:
281
+    :path: "../../node_modules/react-native/ReactCommon/cxxreact"
282
+  React-jsi:
283
+    :path: "../../node_modules/react-native/ReactCommon/jsi"
284
+  React-jsiexecutor:
285
+    :path: "../../node_modules/react-native/ReactCommon/jsiexecutor"
286
+  React-jsinspector:
287
+    :path: "../../node_modules/react-native/ReactCommon/jsinspector"
288
+  react-native-webview:
289
+    :path: "../.."
290
+  React-RCTActionSheet:
291
+    :path: "../../node_modules/react-native/Libraries/ActionSheetIOS"
292
+  React-RCTAnimation:
293
+    :path: "../../node_modules/react-native/Libraries/NativeAnimation"
294
+  React-RCTBlob:
295
+    :path: "../../node_modules/react-native/Libraries/Blob"
296
+  React-RCTImage:
297
+    :path: "../../node_modules/react-native/Libraries/Image"
298
+  React-RCTLinking:
299
+    :path: "../../node_modules/react-native/Libraries/LinkingIOS"
300
+  React-RCTNetwork:
301
+    :path: "../../node_modules/react-native/Libraries/Network"
302
+  React-RCTSettings:
303
+    :path: "../../node_modules/react-native/Libraries/Settings"
304
+  React-RCTText:
305
+    :path: "../../node_modules/react-native/Libraries/Text"
306
+  React-RCTVibration:
307
+    :path: "../../node_modules/react-native/Libraries/Vibration"
308
+  ReactCommon:
309
+    :path: "../../node_modules/react-native/ReactCommon"
310
+  Yoga:
311
+    :path: "../../node_modules/react-native/ReactCommon/yoga"
312
+
313
+SPEC CHECKSUMS:
314
+  boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
315
+  DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
316
+  FBLazyVector: aaeaf388755e4f29cd74acbc9e3b8da6d807c37f
317
+  FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75
318
+  Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
319
+  glog: 1f3da668190260b06b429bb211bfbee5cd790c28
320
+  RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1
321
+  RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320
322
+  React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78
323
+  React-Core: 688b451f7d616cc1134ac95295b593d1b5158a04
324
+  React-CoreModules: d04f8494c1a328b69ec11db9d1137d667f916dcb
325
+  React-cxxreact: d0f7bcafa196ae410e5300736b424455e7fb7ba7
326
+  React-jsi: cb2cd74d7ccf4cffb071a46833613edc79cdf8f7
327
+  React-jsiexecutor: d5525f9ed5f782fdbacb64b9b01a43a9323d2386
328
+  React-jsinspector: fa0ecc501688c3c4c34f28834a76302233e29dc0
329
+  react-native-webview: 3f5aa91c3cb083ea4762e006b9653291a96a777a
330
+  React-RCTActionSheet: 600b4d10e3aea0913b5a92256d2719c0cdd26d76
331
+  React-RCTAnimation: 791a87558389c80908ed06cc5dfc5e7920dfa360
332
+  React-RCTBlob: d89293cc0236d9cb0933d85e430b0bbe81ad1d72
333
+  React-RCTImage: 6b8e8df449eb7c814c99a92d6b52de6fe39dea4e
334
+  React-RCTLinking: 121bb231c7503cf9094f4d8461b96a130fabf4a5
335
+  React-RCTNetwork: fb353640aafcee84ca8b78957297bd395f065c9a
336
+  React-RCTSettings: 8db258ea2a5efee381fcf7a6d5044e2f8b68b640
337
+  React-RCTText: 9ccc88273e9a3aacff5094d2175a605efa854dbe
338
+  React-RCTVibration: a49a1f42bf8f5acf1c3e297097517c6b3af377ad
339
+  ReactCommon: 198c7c8d3591f975e5431bec1b0b3b581aa1c5dd
340
+  Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b
341
+
342
+PODFILE CHECKSUM: 2b0bdb79b803eefe541da6f9be6b06e99063bbfd
343
+
344
+COCOAPODS: 1.8.4

+ 0
- 1106
example/ios/RNCWebViewExample.xcodeproj/project.pbxproj
File diff suppressed because it is too large
View File


+ 53
- 0
example/ios/example-tvOS/Info.plist View File

@@ -0,0 +1,53 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>en</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>$(PRODUCT_NAME)</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>APPL</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>1.0</string>
19
+	<key>CFBundleSignature</key>
20
+	<string>????</string>
21
+	<key>CFBundleVersion</key>
22
+	<string>1</string>
23
+	<key>LSRequiresIPhoneOS</key>
24
+	<true/>
25
+	<key>NSAppTransportSecurity</key>
26
+	<dict>
27
+		<key>NSExceptionDomains</key>
28
+		<dict>
29
+			<key>localhost</key>
30
+			<dict>
31
+				<key>NSExceptionAllowsInsecureHTTPLoads</key>
32
+				<true/>
33
+			</dict>
34
+		</dict>
35
+	</dict>
36
+	<key>NSLocationWhenInUseUsageDescription</key>
37
+	<string></string>
38
+	<key>UILaunchStoryboardName</key>
39
+	<string>LaunchScreen</string>
40
+	<key>UIRequiredDeviceCapabilities</key>
41
+	<array>
42
+		<string>armv7</string>
43
+	</array>
44
+	<key>UISupportedInterfaceOrientations</key>
45
+	<array>
46
+		<string>UIInterfaceOrientationPortrait</string>
47
+		<string>UIInterfaceOrientationLandscapeLeft</string>
48
+		<string>UIInterfaceOrientationLandscapeRight</string>
49
+	</array>
50
+	<key>UIViewControllerBasedStatusBarAppearance</key>
51
+	<false/>
52
+</dict>
53
+</plist>

+ 24
- 0
example/ios/example-tvOSTests/Info.plist View File

@@ -0,0 +1,24 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>en</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>$(PRODUCT_NAME)</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>BNDL</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>1.0</string>
19
+	<key>CFBundleSignature</key>
20
+	<string>????</string>
21
+	<key>CFBundleVersion</key>
22
+	<string>1</string>
23
+</dict>
24
+</plist>

+ 925
- 0
example/ios/example.xcodeproj/project.pbxproj View File

@@ -0,0 +1,925 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 46;
7
+	objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+		00E356F31AD99517003FC87E /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; };
11
+		13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
12
+		13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
13
+		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
14
+		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
15
+		2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
16
+		2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
17
+		2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
18
+		2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* exampleTests.m */; };
19
+		A08B6FFAAF3CA0F03003FEB0 /* libPods-example-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5544B310E076E06B9E2EFF4C /* libPods-example-tvOSTests.a */; };
20
+		C7D826CF866C25BE421302B6 /* libPods-example-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F9A8A9F158876EC099CFA57A /* libPods-example-tvOS.a */; };
21
+		D0E3313DFCE78BFCB650F812 /* libPods-exampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CB301596D47BBAD9E9C0A45A /* libPods-exampleTests.a */; };
22
+		E719A6E171791CD8906B3D55 /* libPods-example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 917A19FC1EBE6E8B85FE404D /* libPods-example.a */; };
23
+/* End PBXBuildFile section */
24
+
25
+/* Begin PBXContainerItemProxy section */
26
+		00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
27
+			isa = PBXContainerItemProxy;
28
+			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
29
+			proxyType = 1;
30
+			remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
31
+			remoteInfo = example;
32
+		};
33
+		2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
34
+			isa = PBXContainerItemProxy;
35
+			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
36
+			proxyType = 1;
37
+			remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
38
+			remoteInfo = "example-tvOS";
39
+		};
40
+/* End PBXContainerItemProxy section */
41
+
42
+/* Begin PBXFileReference section */
43
+		008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
44
+		00E356EE1AD99517003FC87E /* exampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = exampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
45
+		00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
46
+		00E356F21AD99517003FC87E /* exampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = exampleTests.m; sourceTree = "<group>"; };
47
+		13B07F961A680F5B00A75B9A /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };
48
+		13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = example/AppDelegate.h; sourceTree = "<group>"; };
49
+		13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = example/AppDelegate.m; sourceTree = "<group>"; };
50
+		13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
51
+		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = "<group>"; };
52
+		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = "<group>"; };
53
+		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = "<group>"; };
54
+		2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
55
+		2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "example-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
56
+		41B6A4553C4F552488B69B01 /* Pods-exampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exampleTests.release.xcconfig"; path = "Target Support Files/Pods-exampleTests/Pods-exampleTests.release.xcconfig"; sourceTree = "<group>"; };
57
+		4372A2FD2D749DE5C9FD8D3E /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = "<group>"; };
58
+		4FDD34C422D711AC8A7B10A7 /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = "<group>"; };
59
+		5544B310E076E06B9E2EFF4C /* libPods-example-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
60
+		59A4F27CAD1B7EFE80917453 /* Pods-example-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-example-tvOSTests/Pods-example-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };
61
+		775F6B7492793F5DB7ECE95B /* Pods-example-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-example-tvOS/Pods-example-tvOS.debug.xcconfig"; sourceTree = "<group>"; };
62
+		8A20011E75A0AD2EC5C6EAE9 /* Pods-exampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exampleTests.debug.xcconfig"; path = "Target Support Files/Pods-exampleTests/Pods-exampleTests.debug.xcconfig"; sourceTree = "<group>"; };
63
+		917A19FC1EBE6E8B85FE404D /* libPods-example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example.a"; sourceTree = BUILT_PRODUCTS_DIR; };
64
+		CB301596D47BBAD9E9C0A45A /* libPods-exampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-exampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
65
+		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
66
+		ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
67
+		EDF80BE96CF92848F4E926EA /* Pods-example-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOS.release.xcconfig"; path = "Target Support Files/Pods-example-tvOS/Pods-example-tvOS.release.xcconfig"; sourceTree = "<group>"; };
68
+		F67BC8D73DE103BA10A5488D /* Pods-example-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-example-tvOSTests/Pods-example-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
69
+		F9A8A9F158876EC099CFA57A /* libPods-example-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
70
+/* End PBXFileReference section */
71
+
72
+/* Begin PBXFrameworksBuildPhase section */
73
+		00E356EB1AD99517003FC87E /* Frameworks */ = {
74
+			isa = PBXFrameworksBuildPhase;
75
+			buildActionMask = 2147483647;
76
+			files = (
77
+				D0E3313DFCE78BFCB650F812 /* libPods-exampleTests.a in Frameworks */,
78
+			);
79
+			runOnlyForDeploymentPostprocessing = 0;
80
+		};
81
+		13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
82
+			isa = PBXFrameworksBuildPhase;
83
+			buildActionMask = 2147483647;
84
+			files = (
85
+				E719A6E171791CD8906B3D55 /* libPods-example.a in Frameworks */,
86
+			);
87
+			runOnlyForDeploymentPostprocessing = 0;
88
+		};
89
+		2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
90
+			isa = PBXFrameworksBuildPhase;
91
+			buildActionMask = 2147483647;
92
+			files = (
93
+				C7D826CF866C25BE421302B6 /* libPods-example-tvOS.a in Frameworks */,
94
+			);
95
+			runOnlyForDeploymentPostprocessing = 0;
96
+		};
97
+		2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
98
+			isa = PBXFrameworksBuildPhase;
99
+			buildActionMask = 2147483647;
100
+			files = (
101
+				A08B6FFAAF3CA0F03003FEB0 /* libPods-example-tvOSTests.a in Frameworks */,
102
+			);
103
+			runOnlyForDeploymentPostprocessing = 0;
104
+		};
105
+/* End PBXFrameworksBuildPhase section */
106
+
107
+/* Begin PBXGroup section */
108
+		00E356EF1AD99517003FC87E /* exampleTests */ = {
109
+			isa = PBXGroup;
110
+			children = (
111
+				00E356F21AD99517003FC87E /* exampleTests.m */,
112
+				00E356F01AD99517003FC87E /* Supporting Files */,
113
+			);
114
+			path = exampleTests;
115
+			sourceTree = "<group>";
116
+		};
117
+		00E356F01AD99517003FC87E /* Supporting Files */ = {
118
+			isa = PBXGroup;
119
+			children = (
120
+				00E356F11AD99517003FC87E /* Info.plist */,
121
+			);
122
+			name = "Supporting Files";
123
+			sourceTree = "<group>";
124
+		};
125
+		13B07FAE1A68108700A75B9A /* example */ = {
126
+			isa = PBXGroup;
127
+			children = (
128
+				008F07F21AC5B25A0029DE68 /* main.jsbundle */,
129
+				13B07FAF1A68108700A75B9A /* AppDelegate.h */,
130
+				13B07FB01A68108700A75B9A /* AppDelegate.m */,
131
+				13B07FB51A68108700A75B9A /* Images.xcassets */,
132
+				13B07FB61A68108700A75B9A /* Info.plist */,
133
+				13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
134
+				13B07FB71A68108700A75B9A /* main.m */,
135
+			);
136
+			name = example;
137
+			sourceTree = "<group>";
138
+		};
139
+		2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
140
+			isa = PBXGroup;
141
+			children = (
142
+				ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
143
+				ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
144
+				917A19FC1EBE6E8B85FE404D /* libPods-example.a */,
145
+				F9A8A9F158876EC099CFA57A /* libPods-example-tvOS.a */,
146
+				5544B310E076E06B9E2EFF4C /* libPods-example-tvOSTests.a */,
147
+				CB301596D47BBAD9E9C0A45A /* libPods-exampleTests.a */,
148
+			);
149
+			name = Frameworks;
150
+			sourceTree = "<group>";
151
+		};
152
+		832341AE1AAA6A7D00B99B32 /* Libraries */ = {
153
+			isa = PBXGroup;
154
+			children = (
155
+			);
156
+			name = Libraries;
157
+			sourceTree = "<group>";
158
+		};
159
+		83CBB9F61A601CBA00E9B192 = {
160
+			isa = PBXGroup;
161
+			children = (
162
+				13B07FAE1A68108700A75B9A /* example */,
163
+				832341AE1AAA6A7D00B99B32 /* Libraries */,
164
+				00E356EF1AD99517003FC87E /* exampleTests */,
165
+				83CBBA001A601CBA00E9B192 /* Products */,
166
+				2D16E6871FA4F8E400B85C8A /* Frameworks */,
167
+				CCBCEDC2885B5181A2E42CE7 /* Pods */,
168
+			);
169
+			indentWidth = 2;
170
+			sourceTree = "<group>";
171
+			tabWidth = 2;
172
+			usesTabs = 0;
173
+		};
174
+		83CBBA001A601CBA00E9B192 /* Products */ = {
175
+			isa = PBXGroup;
176
+			children = (
177
+				13B07F961A680F5B00A75B9A /* example.app */,
178
+				00E356EE1AD99517003FC87E /* exampleTests.xctest */,
179
+				2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */,
180
+				2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */,
181
+			);
182
+			name = Products;
183
+			sourceTree = "<group>";
184
+		};
185
+		CCBCEDC2885B5181A2E42CE7 /* Pods */ = {
186
+			isa = PBXGroup;
187
+			children = (
188
+				4372A2FD2D749DE5C9FD8D3E /* Pods-example.debug.xcconfig */,
189
+				4FDD34C422D711AC8A7B10A7 /* Pods-example.release.xcconfig */,
190
+				775F6B7492793F5DB7ECE95B /* Pods-example-tvOS.debug.xcconfig */,
191
+				EDF80BE96CF92848F4E926EA /* Pods-example-tvOS.release.xcconfig */,
192
+				F67BC8D73DE103BA10A5488D /* Pods-example-tvOSTests.debug.xcconfig */,
193
+				59A4F27CAD1B7EFE80917453 /* Pods-example-tvOSTests.release.xcconfig */,
194
+				8A20011E75A0AD2EC5C6EAE9 /* Pods-exampleTests.debug.xcconfig */,
195
+				41B6A4553C4F552488B69B01 /* Pods-exampleTests.release.xcconfig */,
196
+			);
197
+			path = Pods;
198
+			sourceTree = "<group>";
199
+		};
200
+/* End PBXGroup section */
201
+
202
+/* Begin PBXNativeTarget section */
203
+		00E356ED1AD99517003FC87E /* exampleTests */ = {
204
+			isa = PBXNativeTarget;
205
+			buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */;
206
+			buildPhases = (
207
+				A2264F1CFC0047F3C8C5D43D /* [CP] Check Pods Manifest.lock */,
208
+				00E356EA1AD99517003FC87E /* Sources */,
209
+				00E356EB1AD99517003FC87E /* Frameworks */,
210
+				00E356EC1AD99517003FC87E /* Resources */,
211
+			);
212
+			buildRules = (
213
+			);
214
+			dependencies = (
215
+				00E356F51AD99517003FC87E /* PBXTargetDependency */,
216
+			);
217
+			name = exampleTests;
218
+			productName = exampleTests;
219
+			productReference = 00E356EE1AD99517003FC87E /* exampleTests.xctest */;
220
+			productType = "com.apple.product-type.bundle.unit-test";
221
+		};
222
+		13B07F861A680F5B00A75B9A /* example */ = {
223
+			isa = PBXNativeTarget;
224
+			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */;
225
+			buildPhases = (
226
+				6D39E19069EEC1F18C65E89E /* [CP] Check Pods Manifest.lock */,
227
+				FD10A7F022414F080027D42C /* Start Packager */,
228
+				13B07F871A680F5B00A75B9A /* Sources */,
229
+				13B07F8C1A680F5B00A75B9A /* Frameworks */,
230
+				13B07F8E1A680F5B00A75B9A /* Resources */,
231
+				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
232
+			);
233
+			buildRules = (
234
+			);
235
+			dependencies = (
236
+			);
237
+			name = example;
238
+			productName = example;
239
+			productReference = 13B07F961A680F5B00A75B9A /* example.app */;
240
+			productType = "com.apple.product-type.application";
241
+		};
242
+		2D02E47A1E0B4A5D006451C7 /* example-tvOS */ = {
243
+			isa = PBXNativeTarget;
244
+			buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */;
245
+			buildPhases = (
246
+				B980633124DB020AB7EC55E3 /* [CP] Check Pods Manifest.lock */,
247
+				FD10A7F122414F3F0027D42C /* Start Packager */,
248
+				2D02E4771E0B4A5D006451C7 /* Sources */,
249
+				2D02E4781E0B4A5D006451C7 /* Frameworks */,
250
+				2D02E4791E0B4A5D006451C7 /* Resources */,
251
+				2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
252
+			);
253
+			buildRules = (
254
+			);
255
+			dependencies = (
256
+			);
257
+			name = "example-tvOS";
258
+			productName = "example-tvOS";
259
+			productReference = 2D02E47B1E0B4A5D006451C7 /* example-tvOS.app */;
260
+			productType = "com.apple.product-type.application";
261
+		};
262
+		2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */ = {
263
+			isa = PBXNativeTarget;
264
+			buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */;
265
+			buildPhases = (
266
+				56202D3091BCA37A2C594528 /* [CP] Check Pods Manifest.lock */,
267
+				2D02E48C1E0B4A5D006451C7 /* Sources */,
268
+				2D02E48D1E0B4A5D006451C7 /* Frameworks */,
269
+				2D02E48E1E0B4A5D006451C7 /* Resources */,
270
+			);
271
+			buildRules = (
272
+			);
273
+			dependencies = (
274
+				2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
275
+			);
276
+			name = "example-tvOSTests";
277
+			productName = "example-tvOSTests";
278
+			productReference = 2D02E4901E0B4A5D006451C7 /* example-tvOSTests.xctest */;
279
+			productType = "com.apple.product-type.bundle.unit-test";
280
+		};
281
+/* End PBXNativeTarget section */
282
+
283
+/* Begin PBXProject section */
284
+		83CBB9F71A601CBA00E9B192 /* Project object */ = {
285
+			isa = PBXProject;
286
+			attributes = {
287
+				LastUpgradeCheck = 0940;
288
+				ORGANIZATIONNAME = Facebook;
289
+				TargetAttributes = {
290
+					00E356ED1AD99517003FC87E = {
291
+						CreatedOnToolsVersion = 6.2;
292
+						TestTargetID = 13B07F861A680F5B00A75B9A;
293
+					};
294
+					2D02E47A1E0B4A5D006451C7 = {
295
+						CreatedOnToolsVersion = 8.2.1;
296
+						ProvisioningStyle = Automatic;
297
+					};
298
+					2D02E48F1E0B4A5D006451C7 = {
299
+						CreatedOnToolsVersion = 8.2.1;
300
+						ProvisioningStyle = Automatic;
301
+						TestTargetID = 2D02E47A1E0B4A5D006451C7;
302
+					};
303
+				};
304
+			};
305
+			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */;
306
+			compatibilityVersion = "Xcode 3.2";
307
+			developmentRegion = English;
308
+			hasScannedForEncodings = 0;
309
+			knownRegions = (
310
+				English,
311
+				en,
312
+				Base,
313
+			);
314
+			mainGroup = 83CBB9F61A601CBA00E9B192;
315
+			productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
316
+			projectDirPath = "";
317
+			projectRoot = "";
318
+			targets = (
319
+				13B07F861A680F5B00A75B9A /* example */,
320
+				00E356ED1AD99517003FC87E /* exampleTests */,
321
+				2D02E47A1E0B4A5D006451C7 /* example-tvOS */,
322
+				2D02E48F1E0B4A5D006451C7 /* example-tvOSTests */,
323
+			);
324
+		};
325
+/* End PBXProject section */
326
+
327
+/* Begin PBXResourcesBuildPhase section */
328
+		00E356EC1AD99517003FC87E /* Resources */ = {
329
+			isa = PBXResourcesBuildPhase;
330
+			buildActionMask = 2147483647;
331
+			files = (
332
+			);
333
+			runOnlyForDeploymentPostprocessing = 0;
334
+		};
335
+		13B07F8E1A680F5B00A75B9A /* Resources */ = {
336
+			isa = PBXResourcesBuildPhase;
337
+			buildActionMask = 2147483647;
338
+			files = (
339
+				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
340
+				13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
341
+			);
342
+			runOnlyForDeploymentPostprocessing = 0;
343
+		};
344
+		2D02E4791E0B4A5D006451C7 /* Resources */ = {
345
+			isa = PBXResourcesBuildPhase;
346
+			buildActionMask = 2147483647;
347
+			files = (
348
+				2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,
349
+			);
350
+			runOnlyForDeploymentPostprocessing = 0;
351
+		};
352
+		2D02E48E1E0B4A5D006451C7 /* Resources */ = {
353
+			isa = PBXResourcesBuildPhase;
354
+			buildActionMask = 2147483647;
355
+			files = (
356
+			);
357
+			runOnlyForDeploymentPostprocessing = 0;
358
+		};
359
+/* End PBXResourcesBuildPhase section */
360
+
361
+/* Begin PBXShellScriptBuildPhase section */
362
+		00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
363
+			isa = PBXShellScriptBuildPhase;
364
+			buildActionMask = 2147483647;
365
+			files = (
366
+			);
367
+			inputPaths = (
368
+			);
369
+			name = "Bundle React Native code and images";
370
+			outputPaths = (
371
+			);
372
+			runOnlyForDeploymentPostprocessing = 0;
373
+			shellPath = /bin/sh;
374
+			shellScript = "export NODE_BINARY=node\n../../node_modules/react-native/scripts/react-native-xcode.sh\n";
375
+		};
376
+		2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
377
+			isa = PBXShellScriptBuildPhase;
378
+			buildActionMask = 2147483647;
379
+			files = (
380
+			);
381
+			inputPaths = (
382
+			);
383
+			name = "Bundle React Native Code And Images";
384
+			outputPaths = (
385
+			);
386
+			runOnlyForDeploymentPostprocessing = 0;
387
+			shellPath = /bin/sh;
388
+			shellScript = "export NODE_BINARY=node\n../../node_modules/react-native/scripts/react-native-xcode.sh\n";
389
+		};
390
+		56202D3091BCA37A2C594528 /* [CP] Check Pods Manifest.lock */ = {
391
+			isa = PBXShellScriptBuildPhase;
392
+			buildActionMask = 2147483647;
393
+			files = (
394
+			);
395
+			inputFileListPaths = (
396
+			);
397
+			inputPaths = (
398
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
399
+				"${PODS_ROOT}/Manifest.lock",
400
+			);
401
+			name = "[CP] Check Pods Manifest.lock";
402
+			outputFileListPaths = (
403
+			);
404
+			outputPaths = (
405
+				"$(DERIVED_FILE_DIR)/Pods-example-tvOSTests-checkManifestLockResult.txt",
406
+			);
407
+			runOnlyForDeploymentPostprocessing = 0;
408
+			shellPath = /bin/sh;
409
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
410
+			showEnvVarsInLog = 0;
411
+		};
412
+		6D39E19069EEC1F18C65E89E /* [CP] Check Pods Manifest.lock */ = {
413
+			isa = PBXShellScriptBuildPhase;
414
+			buildActionMask = 2147483647;
415
+			files = (
416
+			);
417
+			inputFileListPaths = (
418
+			);
419
+			inputPaths = (
420
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
421
+				"${PODS_ROOT}/Manifest.lock",
422
+			);
423
+			name = "[CP] Check Pods Manifest.lock";
424
+			outputFileListPaths = (
425
+			);
426
+			outputPaths = (
427
+				"$(DERIVED_FILE_DIR)/Pods-example-checkManifestLockResult.txt",
428
+			);
429
+			runOnlyForDeploymentPostprocessing = 0;
430
+			shellPath = /bin/sh;
431
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
432
+			showEnvVarsInLog = 0;
433
+		};
434
+		A2264F1CFC0047F3C8C5D43D /* [CP] Check Pods Manifest.lock */ = {
435
+			isa = PBXShellScriptBuildPhase;
436
+			buildActionMask = 2147483647;
437
+			files = (
438
+			);
439
+			inputFileListPaths = (
440
+			);
441
+			inputPaths = (
442
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
443
+				"${PODS_ROOT}/Manifest.lock",
444
+			);
445
+			name = "[CP] Check Pods Manifest.lock";
446
+			outputFileListPaths = (
447
+			);
448
+			outputPaths = (
449
+				"$(DERIVED_FILE_DIR)/Pods-exampleTests-checkManifestLockResult.txt",
450
+			);
451
+			runOnlyForDeploymentPostprocessing = 0;
452
+			shellPath = /bin/sh;
453
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
454
+			showEnvVarsInLog = 0;
455
+		};
456
+		B980633124DB020AB7EC55E3 /* [CP] Check Pods Manifest.lock */ = {
457
+			isa = PBXShellScriptBuildPhase;
458
+			buildActionMask = 2147483647;
459
+			files = (
460
+			);
461
+			inputFileListPaths = (
462
+			);
463
+			inputPaths = (
464
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
465
+				"${PODS_ROOT}/Manifest.lock",
466
+			);
467
+			name = "[CP] Check Pods Manifest.lock";
468
+			outputFileListPaths = (
469
+			);
470
+			outputPaths = (
471
+				"$(DERIVED_FILE_DIR)/Pods-example-tvOS-checkManifestLockResult.txt",
472
+			);
473
+			runOnlyForDeploymentPostprocessing = 0;
474
+			shellPath = /bin/sh;
475
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
476
+			showEnvVarsInLog = 0;
477
+		};
478
+		FD10A7F022414F080027D42C /* Start Packager */ = {
479
+			isa = PBXShellScriptBuildPhase;
480
+			buildActionMask = 2147483647;
481
+			files = (
482
+			);
483
+			inputFileListPaths = (
484
+			);
485
+			inputPaths = (
486
+			);
487
+			name = "Start Packager";
488
+			outputFileListPaths = (
489
+			);
490
+			outputPaths = (
491
+			);
492
+			runOnlyForDeploymentPostprocessing = 0;
493
+			shellPath = /bin/sh;
494
+			shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n  if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n    if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n      echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n      exit 2\n    fi\n  else\n    open \"$SRCROOT/../../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n  fi\nfi\n";
495
+			showEnvVarsInLog = 0;
496
+		};
497
+		FD10A7F122414F3F0027D42C /* Start Packager */ = {
498
+			isa = PBXShellScriptBuildPhase;
499
+			buildActionMask = 2147483647;
500
+			files = (
501
+			);
502
+			inputFileListPaths = (
503
+			);
504
+			inputPaths = (
505
+			);
506
+			name = "Start Packager";
507
+			outputFileListPaths = (
508
+			);
509
+			outputPaths = (
510
+			);
511
+			runOnlyForDeploymentPostprocessing = 0;
512
+			shellPath = /bin/sh;
513
+			shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n  if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n    if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n      echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n      exit 2\n    fi\n  else\n    open \"$SRCROOT/../../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n  fi\nfi\n";
514
+			showEnvVarsInLog = 0;
515
+		};
516
+/* End PBXShellScriptBuildPhase section */
517
+
518
+/* Begin PBXSourcesBuildPhase section */
519
+		00E356EA1AD99517003FC87E /* Sources */ = {
520
+			isa = PBXSourcesBuildPhase;
521
+			buildActionMask = 2147483647;
522
+			files = (
523
+				00E356F31AD99517003FC87E /* exampleTests.m in Sources */,
524
+			);
525
+			runOnlyForDeploymentPostprocessing = 0;
526
+		};
527
+		13B07F871A680F5B00A75B9A /* Sources */ = {
528
+			isa = PBXSourcesBuildPhase;
529
+			buildActionMask = 2147483647;
530
+			files = (
531
+				13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
532
+				13B07FC11A68108700A75B9A /* main.m in Sources */,
533
+			);
534
+			runOnlyForDeploymentPostprocessing = 0;
535
+		};
536
+		2D02E4771E0B4A5D006451C7 /* Sources */ = {
537
+			isa = PBXSourcesBuildPhase;
538
+			buildActionMask = 2147483647;
539
+			files = (
540
+				2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
541
+				2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,
542
+			);
543
+			runOnlyForDeploymentPostprocessing = 0;
544
+		};
545
+		2D02E48C1E0B4A5D006451C7 /* Sources */ = {
546
+			isa = PBXSourcesBuildPhase;
547
+			buildActionMask = 2147483647;
548
+			files = (
549
+				2DCD954D1E0B4F2C00145EB5 /* exampleTests.m in Sources */,
550
+			);
551
+			runOnlyForDeploymentPostprocessing = 0;
552
+		};
553
+/* End PBXSourcesBuildPhase section */
554
+
555
+/* Begin PBXTargetDependency section */
556
+		00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
557
+			isa = PBXTargetDependency;
558
+			target = 13B07F861A680F5B00A75B9A /* example */;
559
+			targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
560
+		};
561
+		2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
562
+			isa = PBXTargetDependency;
563
+			target = 2D02E47A1E0B4A5D006451C7 /* example-tvOS */;
564
+			targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
565
+		};
566
+/* End PBXTargetDependency section */
567
+
568
+/* Begin PBXVariantGroup section */
569
+		13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
570
+			isa = PBXVariantGroup;
571
+			children = (
572
+				13B07FB21A68108700A75B9A /* Base */,
573
+			);
574
+			name = LaunchScreen.xib;
575
+			path = example;
576
+			sourceTree = "<group>";
577
+		};
578
+/* End PBXVariantGroup section */
579
+
580
+/* Begin XCBuildConfiguration section */
581
+		00E356F61AD99517003FC87E /* Debug */ = {
582
+			isa = XCBuildConfiguration;
583
+			baseConfigurationReference = 8A20011E75A0AD2EC5C6EAE9 /* Pods-exampleTests.debug.xcconfig */;
584
+			buildSettings = {
585
+				BUNDLE_LOADER = "$(TEST_HOST)";
586
+				GCC_PREPROCESSOR_DEFINITIONS = (
587
+					"DEBUG=1",
588
+					"$(inherited)",
589
+				);
590
+				INFOPLIST_FILE = exampleTests/Info.plist;
591
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
592
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
593
+				OTHER_LDFLAGS = (
594
+					"-ObjC",
595
+					"-lc++",
596
+					"$(inherited)",
597
+				);
598
+				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
599
+				PRODUCT_NAME = "$(TARGET_NAME)";
600
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example";
601
+			};
602
+			name = Debug;
603
+		};
604
+		00E356F71AD99517003FC87E /* Release */ = {
605
+			isa = XCBuildConfiguration;
606
+			baseConfigurationReference = 41B6A4553C4F552488B69B01 /* Pods-exampleTests.release.xcconfig */;
607
+			buildSettings = {
608
+				BUNDLE_LOADER = "$(TEST_HOST)";
609
+				COPY_PHASE_STRIP = NO;
610
+				INFOPLIST_FILE = exampleTests/Info.plist;
611
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
612
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
613
+				OTHER_LDFLAGS = (
614
+					"-ObjC",
615
+					"-lc++",
616
+					"$(inherited)",
617
+				);
618
+				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
619
+				PRODUCT_NAME = "$(TARGET_NAME)";
620
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example.app/example";
621
+			};
622
+			name = Release;
623
+		};
624
+		13B07F941A680F5B00A75B9A /* Debug */ = {
625
+			isa = XCBuildConfiguration;
626
+			baseConfigurationReference = 4372A2FD2D749DE5C9FD8D3E /* Pods-example.debug.xcconfig */;
627
+			buildSettings = {
628
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
629
+				CURRENT_PROJECT_VERSION = 1;
630
+				DEAD_CODE_STRIPPING = NO;
631
+				INFOPLIST_FILE = example/Info.plist;
632
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
633
+				OTHER_LDFLAGS = (
634
+					"$(inherited)",
635
+					"-ObjC",
636
+					"-lc++",
637
+				);
638
+				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
639
+				PRODUCT_NAME = example;
640
+				VERSIONING_SYSTEM = "apple-generic";
641
+			};
642
+			name = Debug;
643
+		};
644
+		13B07F951A680F5B00A75B9A /* Release */ = {
645
+			isa = XCBuildConfiguration;
646
+			baseConfigurationReference = 4FDD34C422D711AC8A7B10A7 /* Pods-example.release.xcconfig */;
647
+			buildSettings = {
648
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
649
+				CURRENT_PROJECT_VERSION = 1;
650
+				INFOPLIST_FILE = example/Info.plist;
651
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
652
+				OTHER_LDFLAGS = (
653
+					"$(inherited)",
654
+					"-ObjC",
655
+					"-lc++",
656
+				);
657
+				PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
658
+				PRODUCT_NAME = example;
659
+				VERSIONING_SYSTEM = "apple-generic";
660
+			};
661
+			name = Release;
662
+		};
663
+		2D02E4971E0B4A5E006451C7 /* Debug */ = {
664
+			isa = XCBuildConfiguration;
665
+			baseConfigurationReference = 775F6B7492793F5DB7ECE95B /* Pods-example-tvOS.debug.xcconfig */;
666
+			buildSettings = {
667
+				ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
668
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
669
+				CLANG_ANALYZER_NONNULL = YES;
670
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
671
+				CLANG_WARN_INFINITE_RECURSION = YES;
672
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
673
+				DEBUG_INFORMATION_FORMAT = dwarf;
674
+				ENABLE_TESTABILITY = YES;
675
+				GCC_NO_COMMON_BLOCKS = YES;
676
+				INFOPLIST_FILE = "example-tvOS/Info.plist";
677
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
678
+				OTHER_LDFLAGS = (
679
+					"$(inherited)",
680
+					"-ObjC",
681
+					"-lc++",
682
+				);
683
+				PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOS";
684
+				PRODUCT_NAME = "$(TARGET_NAME)";
685
+				SDKROOT = appletvos;
686
+				TARGETED_DEVICE_FAMILY = 3;
687
+				TVOS_DEPLOYMENT_TARGET = 9.2;
688
+			};
689
+			name = Debug;
690
+		};
691
+		2D02E4981E0B4A5E006451C7 /* Release */ = {
692
+			isa = XCBuildConfiguration;
693
+			baseConfigurationReference = EDF80BE96CF92848F4E926EA /* Pods-example-tvOS.release.xcconfig */;
694
+			buildSettings = {
695
+				ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
696
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
697
+				CLANG_ANALYZER_NONNULL = YES;
698
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
699
+				CLANG_WARN_INFINITE_RECURSION = YES;
700
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
701
+				COPY_PHASE_STRIP = NO;
702
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
703
+				GCC_NO_COMMON_BLOCKS = YES;
704
+				INFOPLIST_FILE = "example-tvOS/Info.plist";
705
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
706
+				OTHER_LDFLAGS = (
707
+					"$(inherited)",
708
+					"-ObjC",
709
+					"-lc++",
710
+				);
711
+				PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOS";
712
+				PRODUCT_NAME = "$(TARGET_NAME)";
713
+				SDKROOT = appletvos;
714
+				TARGETED_DEVICE_FAMILY = 3;
715
+				TVOS_DEPLOYMENT_TARGET = 9.2;
716
+			};
717
+			name = Release;
718
+		};
719
+		2D02E4991E0B4A5E006451C7 /* Debug */ = {
720
+			isa = XCBuildConfiguration;
721
+			baseConfigurationReference = F67BC8D73DE103BA10A5488D /* Pods-example-tvOSTests.debug.xcconfig */;
722
+			buildSettings = {
723
+				BUNDLE_LOADER = "$(TEST_HOST)";
724
+				CLANG_ANALYZER_NONNULL = YES;
725
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
726
+				CLANG_WARN_INFINITE_RECURSION = YES;
727
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
728
+				DEBUG_INFORMATION_FORMAT = dwarf;
729
+				ENABLE_TESTABILITY = YES;
730
+				GCC_NO_COMMON_BLOCKS = YES;
731
+				INFOPLIST_FILE = "example-tvOSTests/Info.plist";
732
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
733
+				OTHER_LDFLAGS = (
734
+					"$(inherited)",
735
+					"-ObjC",
736
+					"-lc++",
737
+				);
738
+				PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOSTests";
739
+				PRODUCT_NAME = "$(TARGET_NAME)";
740
+				SDKROOT = appletvos;
741
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS";
742
+				TVOS_DEPLOYMENT_TARGET = 10.1;
743
+			};
744
+			name = Debug;
745
+		};
746
+		2D02E49A1E0B4A5E006451C7 /* Release */ = {
747
+			isa = XCBuildConfiguration;
748
+			baseConfigurationReference = 59A4F27CAD1B7EFE80917453 /* Pods-example-tvOSTests.release.xcconfig */;
749
+			buildSettings = {
750
+				BUNDLE_LOADER = "$(TEST_HOST)";
751
+				CLANG_ANALYZER_NONNULL = YES;
752
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
753
+				CLANG_WARN_INFINITE_RECURSION = YES;
754
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
755
+				COPY_PHASE_STRIP = NO;
756
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
757
+				GCC_NO_COMMON_BLOCKS = YES;
758
+				INFOPLIST_FILE = "example-tvOSTests/Info.plist";
759
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
760
+				OTHER_LDFLAGS = (
761
+					"$(inherited)",
762
+					"-ObjC",
763
+					"-lc++",
764
+				);
765
+				PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.example-tvOSTests";
766
+				PRODUCT_NAME = "$(TARGET_NAME)";
767
+				SDKROOT = appletvos;
768
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/example-tvOS.app/example-tvOS";
769
+				TVOS_DEPLOYMENT_TARGET = 10.1;
770
+			};
771
+			name = Release;
772
+		};
773
+		83CBBA201A601CBA00E9B192 /* Debug */ = {
774
+			isa = XCBuildConfiguration;
775
+			buildSettings = {
776
+				ALWAYS_SEARCH_USER_PATHS = NO;
777
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
778
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
779
+				CLANG_CXX_LIBRARY = "libc++";
780
+				CLANG_ENABLE_MODULES = YES;
781
+				CLANG_ENABLE_OBJC_ARC = YES;
782
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
783
+				CLANG_WARN_BOOL_CONVERSION = YES;
784
+				CLANG_WARN_COMMA = YES;
785
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
786
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
787
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
788
+				CLANG_WARN_EMPTY_BODY = YES;
789
+				CLANG_WARN_ENUM_CONVERSION = YES;
790
+				CLANG_WARN_INFINITE_RECURSION = YES;
791
+				CLANG_WARN_INT_CONVERSION = YES;
792
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
793
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
794
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
795
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
796
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
797
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
798
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
799
+				CLANG_WARN_UNREACHABLE_CODE = YES;
800
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
801
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
802
+				COPY_PHASE_STRIP = NO;
803
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
804
+				ENABLE_TESTABILITY = YES;
805
+				GCC_C_LANGUAGE_STANDARD = gnu99;
806
+				GCC_DYNAMIC_NO_PIC = NO;
807
+				GCC_NO_COMMON_BLOCKS = YES;
808
+				GCC_OPTIMIZATION_LEVEL = 0;
809
+				GCC_PREPROCESSOR_DEFINITIONS = (
810
+					"DEBUG=1",
811
+					"$(inherited)",
812
+				);
813
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
814
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
815
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
816
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
817
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
818
+				GCC_WARN_UNUSED_FUNCTION = YES;
819
+				GCC_WARN_UNUSED_VARIABLE = YES;
820
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
821
+				MTL_ENABLE_DEBUG_INFO = YES;
822
+				ONLY_ACTIVE_ARCH = YES;
823
+				SDKROOT = iphoneos;
824
+			};
825
+			name = Debug;
826
+		};
827
+		83CBBA211A601CBA00E9B192 /* Release */ = {
828
+			isa = XCBuildConfiguration;
829
+			buildSettings = {
830
+				ALWAYS_SEARCH_USER_PATHS = NO;
831
+				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
832
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
833
+				CLANG_CXX_LIBRARY = "libc++";
834
+				CLANG_ENABLE_MODULES = YES;
835
+				CLANG_ENABLE_OBJC_ARC = YES;
836
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
837
+				CLANG_WARN_BOOL_CONVERSION = YES;
838
+				CLANG_WARN_COMMA = YES;
839
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
840
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
841
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
842
+				CLANG_WARN_EMPTY_BODY = YES;
843
+				CLANG_WARN_ENUM_CONVERSION = YES;
844
+				CLANG_WARN_INFINITE_RECURSION = YES;
845
+				CLANG_WARN_INT_CONVERSION = YES;
846
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
847
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
848
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
849
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
850
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
851
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
852
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
853
+				CLANG_WARN_UNREACHABLE_CODE = YES;
854
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
855
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
856
+				COPY_PHASE_STRIP = YES;
857
+				ENABLE_NS_ASSERTIONS = NO;
858
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
859
+				GCC_C_LANGUAGE_STANDARD = gnu99;
860
+				GCC_NO_COMMON_BLOCKS = YES;
861
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
862
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
863
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
864
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
865
+				GCC_WARN_UNUSED_FUNCTION = YES;
866
+				GCC_WARN_UNUSED_VARIABLE = YES;
867
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
868
+				MTL_ENABLE_DEBUG_INFO = NO;
869
+				SDKROOT = iphoneos;
870
+				VALIDATE_PRODUCT = YES;
871
+			};
872
+			name = Release;
873
+		};
874
+/* End XCBuildConfiguration section */
875
+
876
+/* Begin XCConfigurationList section */
877
+		00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */ = {
878
+			isa = XCConfigurationList;
879
+			buildConfigurations = (
880
+				00E356F61AD99517003FC87E /* Debug */,
881
+				00E356F71AD99517003FC87E /* Release */,
882
+			);
883
+			defaultConfigurationIsVisible = 0;
884
+			defaultConfigurationName = Release;
885
+		};
886
+		13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */ = {
887
+			isa = XCConfigurationList;
888
+			buildConfigurations = (
889
+				13B07F941A680F5B00A75B9A /* Debug */,
890
+				13B07F951A680F5B00A75B9A /* Release */,
891
+			);
892
+			defaultConfigurationIsVisible = 0;
893
+			defaultConfigurationName = Release;
894
+		};
895
+		2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOS" */ = {
896
+			isa = XCConfigurationList;
897
+			buildConfigurations = (
898
+				2D02E4971E0B4A5E006451C7 /* Debug */,
899
+				2D02E4981E0B4A5E006451C7 /* Release */,
900
+			);
901
+			defaultConfigurationIsVisible = 0;
902
+			defaultConfigurationName = Release;
903
+		};
904
+		2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "example-tvOSTests" */ = {
905
+			isa = XCConfigurationList;
906
+			buildConfigurations = (
907
+				2D02E4991E0B4A5E006451C7 /* Debug */,
908
+				2D02E49A1E0B4A5E006451C7 /* Release */,
909
+			);
910
+			defaultConfigurationIsVisible = 0;
911
+			defaultConfigurationName = Release;
912
+		};
913
+		83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */ = {
914
+			isa = XCConfigurationList;
915
+			buildConfigurations = (
916
+				83CBBA201A601CBA00E9B192 /* Debug */,
917
+				83CBBA211A601CBA00E9B192 /* Release */,
918
+			);
919
+			defaultConfigurationIsVisible = 0;
920
+			defaultConfigurationName = Release;
921
+		};
922
+/* End XCConfigurationList section */
923
+	};
924
+	rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
925
+}

+ 129
- 0
example/ios/example.xcodeproj/xcshareddata/xcschemes/example-tvOS.xcscheme View File

@@ -0,0 +1,129 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "0940"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "NO"
7
+      buildImplicitDependencies = "YES">
8
+      <BuildActionEntries>
9
+         <BuildActionEntry
10
+            buildForTesting = "YES"
11
+            buildForRunning = "YES"
12
+            buildForProfiling = "YES"
13
+            buildForArchiving = "YES"
14
+            buildForAnalyzing = "YES">
15
+            <BuildableReference
16
+               BuildableIdentifier = "primary"
17
+               BlueprintIdentifier = "2D2A28121D9B038B00D4039D"
18
+               BuildableName = "libReact.a"
19
+               BlueprintName = "React-tvOS"
20
+               ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj">
21
+            </BuildableReference>
22
+         </BuildActionEntry>
23
+         <BuildActionEntry
24
+            buildForTesting = "YES"
25
+            buildForRunning = "YES"
26
+            buildForProfiling = "YES"
27
+            buildForArchiving = "YES"
28
+            buildForAnalyzing = "YES">
29
+            <BuildableReference
30
+               BuildableIdentifier = "primary"
31
+               BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
32
+               BuildableName = "example-tvOS.app"
33
+               BlueprintName = "example-tvOS"
34
+               ReferencedContainer = "container:example.xcodeproj">
35
+            </BuildableReference>
36
+         </BuildActionEntry>
37
+         <BuildActionEntry
38
+            buildForTesting = "YES"
39
+            buildForRunning = "YES"
40
+            buildForProfiling = "NO"
41
+            buildForArchiving = "NO"
42
+            buildForAnalyzing = "YES">
43
+            <BuildableReference
44
+               BuildableIdentifier = "primary"
45
+               BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
46
+               BuildableName = "example-tvOSTests.xctest"
47
+               BlueprintName = "example-tvOSTests"
48
+               ReferencedContainer = "container:example.xcodeproj">
49
+            </BuildableReference>
50
+         </BuildActionEntry>
51
+      </BuildActionEntries>
52
+   </BuildAction>
53
+   <TestAction
54
+      buildConfiguration = "Debug"
55
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
56
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
57
+      shouldUseLaunchSchemeArgsEnv = "YES">
58
+      <Testables>
59
+         <TestableReference
60
+            skipped = "NO">
61
+            <BuildableReference
62
+               BuildableIdentifier = "primary"
63
+               BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
64
+               BuildableName = "example-tvOSTests.xctest"
65
+               BlueprintName = "example-tvOSTests"
66
+               ReferencedContainer = "container:example.xcodeproj">
67
+            </BuildableReference>
68
+         </TestableReference>
69
+      </Testables>
70
+      <MacroExpansion>
71
+         <BuildableReference
72
+            BuildableIdentifier = "primary"
73
+            BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
74
+            BuildableName = "example-tvOS.app"
75
+            BlueprintName = "example-tvOS"
76
+            ReferencedContainer = "container:example.xcodeproj">
77
+         </BuildableReference>
78
+      </MacroExpansion>
79
+      <AdditionalOptions>
80
+      </AdditionalOptions>
81
+   </TestAction>
82
+   <LaunchAction
83
+      buildConfiguration = "Debug"
84
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
85
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
86
+      launchStyle = "0"
87
+      useCustomWorkingDirectory = "NO"
88
+      ignoresPersistentStateOnLaunch = "NO"
89
+      debugDocumentVersioning = "YES"
90
+      debugServiceExtension = "internal"
91
+      allowLocationSimulation = "YES">
92
+      <BuildableProductRunnable
93
+         runnableDebuggingMode = "0">
94
+         <BuildableReference
95
+            BuildableIdentifier = "primary"
96
+            BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
97
+            BuildableName = "example-tvOS.app"
98
+            BlueprintName = "example-tvOS"
99
+            ReferencedContainer = "container:example.xcodeproj">
100
+         </BuildableReference>
101
+      </BuildableProductRunnable>
102
+      <AdditionalOptions>
103
+      </AdditionalOptions>
104
+   </LaunchAction>
105
+   <ProfileAction
106
+      buildConfiguration = "Release"
107
+      shouldUseLaunchSchemeArgsEnv = "YES"
108
+      savedToolIdentifier = ""
109
+      useCustomWorkingDirectory = "NO"
110
+      debugDocumentVersioning = "YES">
111
+      <BuildableProductRunnable
112
+         runnableDebuggingMode = "0">
113
+         <BuildableReference
114
+            BuildableIdentifier = "primary"
115
+            BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
116
+            BuildableName = "example-tvOS.app"
117
+            BlueprintName = "example-tvOS"
118
+            ReferencedContainer = "container:example.xcodeproj">
119
+         </BuildableReference>
120
+      </BuildableProductRunnable>
121
+   </ProfileAction>
122
+   <AnalyzeAction
123
+      buildConfiguration = "Debug">
124
+   </AnalyzeAction>
125
+   <ArchiveAction
126
+      buildConfiguration = "Release"
127
+      revealArchiveInOrganizer = "YES">
128
+   </ArchiveAction>
129
+</Scheme>

example/ios/RNCWebViewExample.xcodeproj/xcshareddata/xcschemes/RNCWebViewExample.xcscheme → example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme View File

@@ -1,6 +1,6 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <Scheme
3
-   LastUpgradeVersion = "1120"
3
+   LastUpgradeVersion = "0940"
4 4
    version = "1.3">
5 5
    <BuildAction
6 6
       parallelizeBuildables = "NO"
@@ -17,7 +17,7 @@
17 17
                BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192"
18 18
                BuildableName = "libReact.a"
19 19
                BlueprintName = "React"
20
-               ReferencedContainer = "container:../../node_modules/react-native/React/React.xcodeproj">
20
+               ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj">
21 21
             </BuildableReference>
22 22
          </BuildActionEntry>
23 23
          <BuildActionEntry
@@ -29,9 +29,23 @@
29 29
             <BuildableReference
30 30
                BuildableIdentifier = "primary"
31 31
                BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
32
-               BuildableName = "RNCWebViewExample.app"
33
-               BlueprintName = "RNCWebViewExample"
34
-               ReferencedContainer = "container:RNCWebViewExample.xcodeproj">
32
+               BuildableName = "example.app"
33
+               BlueprintName = "example"
34
+               ReferencedContainer = "container:example.xcodeproj">
35
+            </BuildableReference>
36
+         </BuildActionEntry>
37
+         <BuildActionEntry
38
+            buildForTesting = "YES"
39
+            buildForRunning = "YES"
40
+            buildForProfiling = "NO"
41
+            buildForArchiving = "NO"
42
+            buildForAnalyzing = "YES">
43
+            <BuildableReference
44
+               BuildableIdentifier = "primary"
45
+               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
46
+               BuildableName = "exampleTests.xctest"
47
+               BlueprintName = "exampleTests"
48
+               ReferencedContainer = "container:example.xcodeproj">
35 49
             </BuildableReference>
36 50
          </BuildActionEntry>
37 51
       </BuildActionEntries>
@@ -42,7 +56,28 @@
42 56
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43 57
       shouldUseLaunchSchemeArgsEnv = "YES">
44 58
       <Testables>
59
+         <TestableReference
60
+            skipped = "NO">
61
+            <BuildableReference
62
+               BuildableIdentifier = "primary"
63
+               BlueprintIdentifier = "00E356ED1AD99517003FC87E"
64
+               BuildableName = "exampleTests.xctest"
65
+               BlueprintName = "exampleTests"
66
+               ReferencedContainer = "container:example.xcodeproj">
67
+            </BuildableReference>
68
+         </TestableReference>
45 69
       </Testables>
70
+      <MacroExpansion>
71
+         <BuildableReference
72
+            BuildableIdentifier = "primary"
73
+            BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
74
+            BuildableName = "example.app"
75
+            BlueprintName = "example"
76
+            ReferencedContainer = "container:example.xcodeproj">
77
+         </BuildableReference>
78
+      </MacroExpansion>
79
+      <AdditionalOptions>
80
+      </AdditionalOptions>
46 81
    </TestAction>
47 82
    <LaunchAction
48 83
       buildConfiguration = "Debug"
@@ -59,11 +94,13 @@
59 94
          <BuildableReference
60 95
             BuildableIdentifier = "primary"
61 96
             BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
62
-            BuildableName = "RNCWebViewExample.app"
63
-            BlueprintName = "RNCWebViewExample"
64
-            ReferencedContainer = "container:RNCWebViewExample.xcodeproj">
97
+            BuildableName = "example.app"
98
+            BlueprintName = "example"
99
+            ReferencedContainer = "container:example.xcodeproj">
65 100
          </BuildableReference>
66 101
       </BuildableProductRunnable>
102
+      <AdditionalOptions>
103
+      </AdditionalOptions>
67 104
    </LaunchAction>
68 105
    <ProfileAction
69 106
       buildConfiguration = "Release"
@@ -76,9 +113,9 @@
76 113
          <BuildableReference
77 114
             BuildableIdentifier = "primary"
78 115
             BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
79
-            BuildableName = "RNCWebViewExample.app"
80
-            BlueprintName = "RNCWebViewExample"
81
-            ReferencedContainer = "container:RNCWebViewExample.xcodeproj">
116
+            BuildableName = "example.app"
117
+            BlueprintName = "example"
118
+            ReferencedContainer = "container:example.xcodeproj">
82 119
          </BuildableReference>
83 120
       </BuildableProductRunnable>
84 121
    </ProfileAction>

+ 10
- 0
example/ios/example.xcworkspace/contents.xcworkspacedata View File

@@ -0,0 +1,10 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Workspace
3
+   version = "1.0">
4
+   <FileRef
5
+      location = "group:example.xcodeproj">
6
+   </FileRef>
7
+   <FileRef
8
+      location = "group:Pods/Pods.xcodeproj">
9
+   </FileRef>
10
+</Workspace>

+ 8
- 0
example/ios/example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist View File

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>IDEDidComputeMac32BitWarning</key>
6
+	<true/>
7
+</dict>
8
+</plist>

example/ios/RNCWebViewExample/AppDelegate.h → example/ios/example/AppDelegate.h View File

@@ -11,6 +11,5 @@
11 11
 @interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
12 12
 
13 13
 @property (nonatomic, strong) UIWindow *window;
14
-@property (nonatomic, strong) NSMutableDictionary<NSString *, NSString *> *memoryStorage;
15 14
 
16 15
 @end

example/ios/RNCWebViewExample/AppDelegate.m → example/ios/example/AppDelegate.m View File

@@ -8,23 +8,19 @@
8 8
 #import "AppDelegate.h"
9 9
 
10 10
 #import <React/RCTBridge.h>
11
-
12 11
 #import <React/RCTBundleURLProvider.h>
13
-#import <React/RCTDevMenu.h>
14 12
 #import <React/RCTRootView.h>
15 13
 
16
-@implementation AppDelegate {
17
-  __weak RCTBridge *_bridge;
18
-}
14
+@implementation AppDelegate
19 15
 
20 16
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
21 17
 {
22 18
   RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
23 19
   RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
24
-                                                   moduleName:@"RNCWebViewExample"
20
+                                                   moduleName:@"example"
25 21
                                             initialProperties:nil];
26 22
 
27
-  rootView.backgroundColor = [UIColor blackColor];
23
+  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
28 24
 
29 25
   self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
30 26
   UIViewController *rootViewController = [UIViewController new];
@@ -36,11 +32,11 @@
36 32
 
37 33
 - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
38 34
 {
39
-  #if DEBUG
40
-    return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"example/index" fallbackResource:nil];
41
-  #else
42
-    return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
43
-  #endif
35
+#if DEBUG
36
+  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"example/index" fallbackResource:nil];
37
+#else
38
+  return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
39
+#endif
44 40
 }
45 41
 
46 42
 @end

example/ios/RNCWebViewExample/Base.lproj/LaunchScreen.xib → example/ios/example/Base.lproj/LaunchScreen.xib View File

@@ -18,7 +18,7 @@
18 18
                     <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
19 19
                     <nil key="highlightedColor"/>
20 20
                 </label>
21
-                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="RNCWebViewExample" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
21
+                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="example" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
22 22
                     <rect key="frame" x="20" y="140" width="441" height="43"/>
23 23
                     <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
24 24
                     <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>

example/ios/RNCWebViewExample/Images.xcassets/AppIcon.appiconset/Contents.json → example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json View File

@@ -1,15 +1,5 @@
1 1
 {
2 2
   "images" : [
3
-    {
4
-      "idiom" : "iphone",
5
-      "size" : "20x20",
6
-      "scale" : "2x"
7
-    },
8
-    {
9
-      "idiom" : "iphone",
10
-      "size" : "20x20",
11
-      "scale" : "3x"
12
-    },
13 3
     {
14 4
       "idiom" : "iphone",
15 5
       "size" : "29x29",
@@ -39,11 +29,6 @@
39 29
       "idiom" : "iphone",
40 30
       "size" : "60x60",
41 31
       "scale" : "3x"
42
-    },
43
-    {
44
-      "idiom" : "ios-marketing",
45
-      "size" : "1024x1024",
46
-      "scale" : "1x"
47 32
     }
48 33
   ],
49 34
   "info" : {

example/ios/RNCWebViewExample/Images.xcassets/Contents.json → example/ios/example/Images.xcassets/Contents.json View File


example/ios/RNCWebViewExample/Info.plist → example/ios/example/Info.plist View File

@@ -5,7 +5,7 @@
5 5
 	<key>CFBundleDevelopmentRegion</key>
6 6
 	<string>en</string>
7 7
 	<key>CFBundleDisplayName</key>
8
-	<string>RNCWebViewExample</string>
8
+	<string>example</string>
9 9
 	<key>CFBundleExecutable</key>
10 10
 	<string>$(EXECUTABLE_NAME)</string>
11 11
 	<key>CFBundleIdentifier</key>
@@ -20,19 +20,6 @@
20 20
 	<string>1.0</string>
21 21
 	<key>CFBundleSignature</key>
22 22
 	<string>????</string>
23
-	<key>CFBundleURLTypes</key>
24
-	<array>
25
-		<dict>
26
-			<key>CFBundleTypeRole</key>
27
-			<string>Editor</string>
28
-			<key>CFBundleURLName</key>
29
-			<string>org.reactjs.native.example.RNCWebViewExample</string>
30
-			<key>CFBundleURLSchemes</key>
31
-			<array>
32
-				<string>rnc-webview</string>
33
-			</array>
34
-		</dict>
35
-	</array>
36 23
 	<key>CFBundleVersion</key>
37 24
 	<string>1</string>
38 25
 	<key>LSRequiresIPhoneOS</key>

example/ios/RNCWebViewExample/main.m → example/ios/example/main.m View File


+ 24
- 0
example/ios/exampleTests/Info.plist View File

@@ -0,0 +1,24 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>en</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>$(PRODUCT_NAME)</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>BNDL</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>1.0</string>
19
+	<key>CFBundleSignature</key>
20
+	<string>????</string>
21
+	<key>CFBundleVersion</key>
22
+	<string>1</string>
23
+</dict>
24
+</plist>

+ 72
- 0
example/ios/exampleTests/exampleTests.m View File

@@ -0,0 +1,72 @@
1
+/**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+#import <UIKit/UIKit.h>
9
+#import <XCTest/XCTest.h>
10
+
11
+#import <React/RCTLog.h>
12
+#import <React/RCTRootView.h>
13
+
14
+#define TIMEOUT_SECONDS 600
15
+#define TEXT_TO_LOOK_FOR @"Welcome to React"
16
+
17
+@interface exampleTests : XCTestCase
18
+
19
+@end
20
+
21
+@implementation exampleTests
22
+
23
+- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
24
+{
25
+  if (test(view)) {
26
+    return YES;
27
+  }
28
+  for (UIView *subview in [view subviews]) {
29
+    if ([self findSubviewInView:subview matching:test]) {
30
+      return YES;
31
+    }
32
+  }
33
+  return NO;
34
+}
35
+
36
+- (void)testRendersWelcomeScreen
37
+{
38
+  UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
39
+  NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
40
+  BOOL foundElement = NO;
41
+
42
+  __block NSString *redboxError = nil;
43
+#ifdef DEBUG
44
+  RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
45
+    if (level >= RCTLogLevelError) {
46
+      redboxError = message;
47
+    }
48
+  });
49
+#endif
50
+
51
+  while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
52
+    [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
53
+    [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
54
+
55
+    foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
56
+      if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
57
+        return YES;
58
+      }
59
+      return NO;
60
+    }];
61
+  }
62
+  
63
+#ifdef DEBUG
64
+  RCTSetLogFunction(RCTDefaultLogFunction);
65
+#endif
66
+
67
+  XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
68
+  XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
69
+}
70
+
71
+
72
+@end

+ 62
- 0
example/tsconfig.json View File

@@ -0,0 +1,62 @@
1
+ 
2
+{
3
+  "compilerOptions": {
4
+    /* Basic Options */
5
+    "target": "esnext",                       /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
6
+    "module": "commonjs",                     /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
7
+    "lib": ["es6"],                           /* Specify library files to be included in the compilation. */
8
+    "allowJs": true,                          /* Allow javascript files to be compiled. */
9
+    // "checkJs": true,                       /* Report errors in .js files. */
10
+    "jsx": "react-native",                    /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
11
+    // "declaration": true,                   /* Generates corresponding '.d.ts' file. */
12
+    // "sourceMap": true,                     /* Generates corresponding '.map' file. */
13
+    // "outFile": "./",                       /* Concatenate and emit output to single file. */
14
+    // "outDir": "./",                        /* Redirect output structure to the directory. */
15
+    // "rootDir": "./",                       /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
16
+    // "removeComments": true,                /* Do not emit comments to output. */
17
+    "noEmit": true,                           /* Do not emit outputs. */
18
+    "incremental": true,                      /* Enable incremental compilation */
19
+    // "importHelpers": true,                 /* Import emit helpers from 'tslib'. */
20
+    // "downlevelIteration": true,            /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
21
+    "isolatedModules": true,                  /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
22
+
23
+    /* Strict Type-Checking Options */
24
+    "strict": true,                           /* Enable all strict type-checking options. */
25
+    // "noImplicitAny": true,                 /* Raise error on expressions and declarations with an implied 'any' type. */
26
+    // "strictNullChecks": true,              /* Enable strict null checks. */
27
+    // "strictFunctionTypes": true,           /* Enable strict checking of function types. */
28
+    // "strictPropertyInitialization": true,  /* Enable strict checking of property initialization in classes. */
29
+    // "noImplicitThis": true,                /* Raise error on 'this' expressions with an implied 'any' type. */
30
+    // "alwaysStrict": true,                  /* Parse in strict mode and emit "use strict" for each source file. */
31
+
32
+    /* Additional Checks */
33
+    // "noUnusedLocals": true,                /* Report errors on unused locals. */
34
+    // "noUnusedParameters": true,            /* Report errors on unused parameters. */
35
+    // "noImplicitReturns": true,             /* Report error when not all code paths in function return a value. */
36
+    // "noFallthroughCasesInSwitch": true,    /* Report errors for fallthrough cases in switch statement. */
37
+
38
+    /* Module Resolution Options */
39
+    "moduleResolution": "node",               /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
40
+    "baseUrl": "./",                          /* Base directory to resolve non-absolute module names. */
41
+    // "paths": {},                           /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
42
+    // "rootDirs": [],                        /* List of root folders whose combined content represents the structure of the project at runtime. */
43
+    // "typeRoots": [],                       /* List of folders to include type definitions from. */
44
+    // "types": [],                           /* Type declaration files to be included in compilation. */
45
+    "allowSyntheticDefaultImports": true,     /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
46
+    "esModuleInterop": true                   /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
47
+    // "preserveSymlinks": true,              /* Do not resolve the real path of symlinks. */
48
+
49
+    /* Source Map Options */
50
+    // "sourceRoot": "./",                    /* Specify the location where debugger should locate TypeScript files instead of source locations. */
51
+    // "mapRoot": "./",                       /* Specify the location where debugger should locate map files instead of generated locations. */
52
+    // "inlineSourceMap": true,               /* Emit a single file with source maps instead of having a separate file. */
53
+    // "inlineSources": true,                 /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
54
+
55
+    /* Experimental Options */
56
+    // "experimentalDecorators": true,        /* Enables experimental support for ES7 decorators. */
57
+    // "emitDecoratorMetadata": true,         /* Enables experimental support for emitting type metadata for decorators. */
58
+  },
59
+  "exclude": [
60
+    "node_modules", "babel.config.js", "metro.config.js", "jest.config.js"
61
+  ]
62
+}

+ 138
- 132
ios/RNCWebView.m View File

@@ -164,160 +164,166 @@ static NSDictionary* customCertificatesForHost;
164 164
   return nil;
165 165
 }
166 166
 
167
-- (void)didMoveToWindow
167
+- (WKWebViewConfiguration *)setUpWkWebViewConfig
168 168
 {
169
-  if (self.window != nil && _webView == nil) {
170
-    WKWebViewConfiguration *wkWebViewConfig = [WKWebViewConfiguration new];
171
-    WKPreferences *prefs = [[WKPreferences alloc]init];
172
-    BOOL _prefsUsed = NO;
173
-    if (!_javaScriptEnabled) {
174
-      prefs.javaScriptEnabled = NO;
175
-      _prefsUsed = YES;
176
-    }
177
-    if (_allowFileAccessFromFileURLs) {
178
-      [prefs setValue:@TRUE forKey:@"allowFileAccessFromFileURLs"];
179
-      _prefsUsed = YES;
180
-    }
181
-    if (_prefsUsed) {
182
-      wkWebViewConfig.preferences = prefs;
183
-    }
184
-    if (_incognito) {
185
-      wkWebViewConfig.websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
186
-    } else if (_cacheEnabled) {
187
-      wkWebViewConfig.websiteDataStore = [WKWebsiteDataStore defaultDataStore];
188
-    }
189
-    if(self.useSharedProcessPool) {
190
-      wkWebViewConfig.processPool = [[RNCWKProcessPoolManager sharedManager] sharedProcessPool];
191
-    }
192
-    wkWebViewConfig.userContentController = [WKUserContentController new];
169
+  WKWebViewConfiguration *wkWebViewConfig = [WKWebViewConfiguration new];
170
+  WKPreferences *prefs = [[WKPreferences alloc]init];
171
+  BOOL _prefsUsed = NO;
172
+  if (!_javaScriptEnabled) {
173
+    prefs.javaScriptEnabled = NO;
174
+    _prefsUsed = YES;
175
+  }
176
+  if (_allowFileAccessFromFileURLs) {
177
+    [prefs setValue:@TRUE forKey:@"allowFileAccessFromFileURLs"];
178
+    _prefsUsed = YES;
179
+  }
180
+  if (_prefsUsed) {
181
+    wkWebViewConfig.preferences = prefs;
182
+  }
183
+  if (_incognito) {
184
+    wkWebViewConfig.websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
185
+  } else if (_cacheEnabled) {
186
+    wkWebViewConfig.websiteDataStore = [WKWebsiteDataStore defaultDataStore];
187
+  }
188
+  if(self.useSharedProcessPool) {
189
+    wkWebViewConfig.processPool = [[RNCWKProcessPoolManager sharedManager] sharedProcessPool];
190
+  }
191
+  wkWebViewConfig.userContentController = [WKUserContentController new];
192
+
193
+  // Shim the HTML5 history API:
194
+  [wkWebViewConfig.userContentController addScriptMessageHandler:[[RNCWeakScriptMessageDelegate alloc] initWithDelegate:self]
195
+                                                            name:HistoryShimName];
196
+  NSString *source = [NSString stringWithFormat:
197
+    @"(function(history) {\n"
198
+    "  function notify(type) {\n"
199
+    "    setTimeout(function() {\n"
200
+    "      window.webkit.messageHandlers.%@.postMessage(type)\n"
201
+    "    }, 0)\n"
202
+    "  }\n"
203
+    "  function shim(f) {\n"
204
+    "    return function pushState() {\n"
205
+    "      notify('other')\n"
206
+    "      return f.apply(history, arguments)\n"
207
+    "    }\n"
208
+    "  }\n"
209
+    "  history.pushState = shim(history.pushState)\n"
210
+    "  history.replaceState = shim(history.replaceState)\n"
211
+    "  window.addEventListener('popstate', function() {\n"
212
+    "    notify('backforward')\n"
213
+    "  })\n"
214
+    "})(window.history)\n", HistoryShimName
215
+  ];
216
+  WKUserScript *script = [[WKUserScript alloc] initWithSource:source injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];
217
+  [wkWebViewConfig.userContentController addUserScript:script];
193 218
 
194
-    // Shim the HTML5 history API:
219
+  if (_messagingEnabled) {
195 220
     [wkWebViewConfig.userContentController addScriptMessageHandler:[[RNCWeakScriptMessageDelegate alloc] initWithDelegate:self]
196
-                                                              name:HistoryShimName];
221
+                                                              name:MessageHandlerName];
222
+
197 223
     NSString *source = [NSString stringWithFormat:
198
-      @"(function(history) {\n"
199
-      "  function notify(type) {\n"
200
-      "    setTimeout(function() {\n"
201
-      "      window.webkit.messageHandlers.%@.postMessage(type)\n"
202
-      "    }, 0)\n"
203
-      "  }\n"
204
-      "  function shim(f) {\n"
205
-      "    return function pushState() {\n"
206
-      "      notify('other')\n"
207
-      "      return f.apply(history, arguments)\n"
208
-      "    }\n"
209
-      "  }\n"
210
-      "  history.pushState = shim(history.pushState)\n"
211
-      "  history.replaceState = shim(history.replaceState)\n"
212
-      "  window.addEventListener('popstate', function() {\n"
213
-      "    notify('backforward')\n"
214
-      "  })\n"
215
-      "})(window.history)\n", HistoryShimName
224
+      @"window.%@ = {"
225
+       "  postMessage: function (data) {"
226
+       "    window.webkit.messageHandlers.%@.postMessage(String(data));"
227
+       "  }"
228
+       "};", MessageHandlerName, MessageHandlerName
216 229
     ];
230
+
217 231
     WKUserScript *script = [[WKUserScript alloc] initWithSource:source injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];
218 232
     [wkWebViewConfig.userContentController addUserScript:script];
219
-
220
-    if (_messagingEnabled) {
221
-      [wkWebViewConfig.userContentController addScriptMessageHandler:[[RNCWeakScriptMessageDelegate alloc] initWithDelegate:self]
222
-                                                                name:MessageHandlerName];
223
-
224
-      NSString *source = [NSString stringWithFormat:
225
-        @"window.%@ = {"
226
-         "  postMessage: function (data) {"
227
-         "    window.webkit.messageHandlers.%@.postMessage(String(data));"
228
-         "  }"
229
-         "};", MessageHandlerName, MessageHandlerName
230
-      ];
231
-
232
-      WKUserScript *script = [[WKUserScript alloc] initWithSource:source injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];
233
-      [wkWebViewConfig.userContentController addUserScript:script];
234
-        
235
-      if (_injectedJavaScriptBeforeContentLoaded) {
236
-        // If user has provided an injectedJavascript prop, execute it at the start of the document
237
-        WKUserScript *injectedScript = [[WKUserScript alloc] initWithSource:_injectedJavaScriptBeforeContentLoaded injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];
238
-        [wkWebViewConfig.userContentController addUserScript:injectedScript];
239
-      }
233
+      
234
+    if (_injectedJavaScriptBeforeContentLoaded) {
235
+      // If user has provided an injectedJavascript prop, execute it at the start of the document
236
+      WKUserScript *injectedScript = [[WKUserScript alloc] initWithSource:_injectedJavaScriptBeforeContentLoaded injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];
237
+      [wkWebViewConfig.userContentController addUserScript:injectedScript];
240 238
     }
239
+  }
241 240
 
242 241
 #if !TARGET_OS_OSX
243
-    wkWebViewConfig.allowsInlineMediaPlayback = _allowsInlineMediaPlayback;
242
+  wkWebViewConfig.allowsInlineMediaPlayback = _allowsInlineMediaPlayback;
244 243
 #if WEBKIT_IOS_10_APIS_AVAILABLE
245
-    wkWebViewConfig.mediaTypesRequiringUserActionForPlayback = _mediaPlaybackRequiresUserAction
246
-      ? WKAudiovisualMediaTypeAll
247
-      : WKAudiovisualMediaTypeNone;
248
-    wkWebViewConfig.dataDetectorTypes = _dataDetectorTypes;
244
+  wkWebViewConfig.mediaTypesRequiringUserActionForPlayback = _mediaPlaybackRequiresUserAction
245
+    ? WKAudiovisualMediaTypeAll
246
+    : WKAudiovisualMediaTypeNone;
247
+  wkWebViewConfig.dataDetectorTypes = _dataDetectorTypes;
249 248
 #else
250
-    wkWebViewConfig.mediaPlaybackRequiresUserAction = _mediaPlaybackRequiresUserAction;
249
+  wkWebViewConfig.mediaPlaybackRequiresUserAction = _mediaPlaybackRequiresUserAction;
251 250
 #endif
252 251
 #endif // !TARGET_OS_OSX
253 252
 
254
-    if (_applicationNameForUserAgent) {
255
-        wkWebViewConfig.applicationNameForUserAgent = [NSString stringWithFormat:@"%@ %@", wkWebViewConfig.applicationNameForUserAgent, _applicationNameForUserAgent];
256
-    }
253
+  if (_applicationNameForUserAgent) {
254
+      wkWebViewConfig.applicationNameForUserAgent = [NSString stringWithFormat:@"%@ %@", wkWebViewConfig.applicationNameForUserAgent, _applicationNameForUserAgent];
255
+  }
257 256
 
258
-    if(_sharedCookiesEnabled) {
259
-      // More info to sending cookies with WKWebView
260
-      // https://stackoverflow.com/questions/26573137/can-i-set-the-cookies-to-be-used-by-a-wkwebview/26577303#26577303
261
-      if (@available(iOS 11.0, *)) {
262
-        // Set Cookies in iOS 11 and above, initialize websiteDataStore before setting cookies
263
-        // See also https://forums.developer.apple.com/thread/97194
264
-        // check if websiteDataStore has not been initialized before
265
-        if(!_incognito && !_cacheEnabled) {
266
-          wkWebViewConfig.websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
267
-        }
268
-        for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
269
-          [wkWebViewConfig.websiteDataStore.httpCookieStore setCookie:cookie completionHandler:nil];
257
+  if(_sharedCookiesEnabled) {
258
+    // More info to sending cookies with WKWebView
259
+    // https://stackoverflow.com/questions/26573137/can-i-set-the-cookies-to-be-used-by-a-wkwebview/26577303#26577303
260
+    if (@available(iOS 11.0, *)) {
261
+      // Set Cookies in iOS 11 and above, initialize websiteDataStore before setting cookies
262
+      // See also https://forums.developer.apple.com/thread/97194
263
+      // check if websiteDataStore has not been initialized before
264
+      if(!_incognito && !_cacheEnabled) {
265
+        wkWebViewConfig.websiteDataStore = [WKWebsiteDataStore nonPersistentDataStore];
266
+      }
267
+      for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
268
+        [wkWebViewConfig.websiteDataStore.httpCookieStore setCookie:cookie completionHandler:nil];
269
+      }
270
+    } else {
271
+      NSMutableString *script = [NSMutableString string];
272
+
273
+      // Clear all existing cookies in a direct called function. This ensures that no
274
+      // javascript error will break the web content javascript.
275
+      // We keep this code here, if someone requires that Cookies are also removed within the
276
+      // the WebView and want to extends the current sharedCookiesEnabled option with an
277
+      // additional property.
278
+      // Generates JS: document.cookie = "key=; Expires=Thu, 01 Jan 1970 00:00:01 GMT;"
279
+      // for each cookie which is already available in the WebView context.
280
+      /*
281
+      [script appendString:@"(function () {\n"];
282
+      [script appendString:@"  var cookies = document.cookie.split('; ');\n"];
283
+      [script appendString:@"  for (var i = 0; i < cookies.length; i++) {\n"];
284
+      [script appendString:@"    if (cookies[i].indexOf('=') !== -1) {\n"];
285
+      [script appendString:@"      document.cookie = cookies[i].split('=')[0] + '=; Expires=Thu, 01 Jan 1970 00:00:01 GMT';\n"];
286
+      [script appendString:@"    }\n"];
287
+      [script appendString:@"  }\n"];
288
+      [script appendString:@"})();\n\n"];
289
+      */
290
+
291
+      // Set cookies in a direct called function. This ensures that no
292
+      // javascript error will break the web content javascript.
293
+        // Generates JS: document.cookie = "key=value; Path=/; Expires=Thu, 01 Jan 20xx 00:00:01 GMT;"
294
+      // for each cookie which is available in the application context.
295
+      [script appendString:@"(function () {\n"];
296
+      for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
297
+        [script appendFormat:@"document.cookie = %@ + '=' + %@",
298
+          RCTJSONStringify(cookie.name, NULL),
299
+          RCTJSONStringify(cookie.value, NULL)];
300
+        if (cookie.path) {
301
+          [script appendFormat:@" + '; Path=' + %@", RCTJSONStringify(cookie.path, NULL)];
270 302
         }
271
-      } else {
272
-        NSMutableString *script = [NSMutableString string];
273
-
274
-        // Clear all existing cookies in a direct called function. This ensures that no
275
-        // javascript error will break the web content javascript.
276
-        // We keep this code here, if someone requires that Cookies are also removed within the
277
-        // the WebView and want to extends the current sharedCookiesEnabled option with an
278
-        // additional property.
279
-        // Generates JS: document.cookie = "key=; Expires=Thu, 01 Jan 1970 00:00:01 GMT;"
280
-        // for each cookie which is already available in the WebView context.
281
-        /*
282
-        [script appendString:@"(function () {\n"];
283
-        [script appendString:@"  var cookies = document.cookie.split('; ');\n"];
284
-        [script appendString:@"  for (var i = 0; i < cookies.length; i++) {\n"];
285
-        [script appendString:@"    if (cookies[i].indexOf('=') !== -1) {\n"];
286
-        [script appendString:@"      document.cookie = cookies[i].split('=')[0] + '=; Expires=Thu, 01 Jan 1970 00:00:01 GMT';\n"];
287
-        [script appendString:@"    }\n"];
288
-        [script appendString:@"  }\n"];
289
-        [script appendString:@"})();\n\n"];
290
-        */
291
-
292
-        // Set cookies in a direct called function. This ensures that no
293
-        // javascript error will break the web content javascript.
294
-          // Generates JS: document.cookie = "key=value; Path=/; Expires=Thu, 01 Jan 20xx 00:00:01 GMT;"
295
-        // for each cookie which is available in the application context.
296
-        [script appendString:@"(function () {\n"];
297
-        for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
298
-          [script appendFormat:@"document.cookie = %@ + '=' + %@",
299
-            RCTJSONStringify(cookie.name, NULL),
300
-            RCTJSONStringify(cookie.value, NULL)];
301
-          if (cookie.path) {
302
-            [script appendFormat:@" + '; Path=' + %@", RCTJSONStringify(cookie.path, NULL)];
303
-          }
304
-          if (cookie.expiresDate) {
305
-            [script appendFormat:@" + '; Expires=' + new Date(%f).toUTCString()",
306
-              cookie.expiresDate.timeIntervalSince1970 * 1000
307
-            ];
308
-          }
309
-          [script appendString:@";\n"];
303
+        if (cookie.expiresDate) {
304
+          [script appendFormat:@" + '; Expires=' + new Date(%f).toUTCString()",
305
+            cookie.expiresDate.timeIntervalSince1970 * 1000
306
+          ];
310 307
         }
311
-        [script appendString:@"})();\n"];
312
-
313
-        WKUserScript* cookieInScript = [[WKUserScript alloc] initWithSource:script
314
-                                                              injectionTime:WKUserScriptInjectionTimeAtDocumentStart
315
-                                                           forMainFrameOnly:YES];
316
-        [wkWebViewConfig.userContentController addUserScript:cookieInScript];
308
+        [script appendString:@";\n"];
317 309
       }
310
+      [script appendString:@"})();\n"];
311
+
312
+      WKUserScript* cookieInScript = [[WKUserScript alloc] initWithSource:script
313
+                                                            injectionTime:WKUserScriptInjectionTimeAtDocumentStart
314
+                                                         forMainFrameOnly:YES];
315
+      [wkWebViewConfig.userContentController addUserScript:cookieInScript];
318 316
     }
317
+  }
318
+  
319
+  return wkWebViewConfig;
320
+}
319 321
 
320 322
 #if !TARGET_OS_OSX
323
+- (void)didMoveToWindow
324
+{
325
+  if (self.window != nil && _webView == nil) {
326
+    WKWebViewConfiguration *wkWebViewConfig = [self setUpWkWebViewConfig];
321 327
     _webView = [[WKWebView alloc] initWithFrame:self.bounds configuration: wkWebViewConfig];
322 328
 #else
323 329
     _webView = [[RNCWKWebView alloc] initWithFrame:self.bounds configuration: wkWebViewConfig];

+ 0
- 13
ios/RNCWebViewManager.m View File

@@ -14,19 +14,6 @@
14 14
 @interface RNCWebViewManager () <RNCWebViewDelegate>
15 15
 @end
16 16
 
17
-@implementation RCTConvert (UIScrollView)
18
-
19
-#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */
20
-RCT_ENUM_CONVERTER(UIScrollViewContentInsetAdjustmentBehavior, (@{
21
-                                                                  @"automatic": @(UIScrollViewContentInsetAdjustmentAutomatic),
22
-                                                                  @"scrollableAxes": @(UIScrollViewContentInsetAdjustmentScrollableAxes),
23
-                                                                  @"never": @(UIScrollViewContentInsetAdjustmentNever),
24
-                                                                  @"always": @(UIScrollViewContentInsetAdjustmentAlways),
25
-                                                                  }), UIScrollViewContentInsetAdjustmentNever, integerValue)
26
-#endif
27
-
28
-@end
29
-
30 17
 @implementation RNCWebViewManager
31 18
 {
32 19
   NSConditionLock *_shouldStartLoadLock;

+ 7
- 9
package.json View File

@@ -8,15 +8,13 @@
8 8
     "Thibault Malbranche <malbranche.thibault@gmail.com>"
9 9
   ],
10 10
   "license": "MIT",
11
-  "version": "8.0.2",
11
+  "version": "8.0.4",
12 12
   "homepage": "https://github.com/react-native-community/react-native-webview#readme",
13 13
   "scripts": {
14 14
     "start": "node node_modules/react-native/local-cli/cli.js start",
15 15
     "start-macos": "node node_modules/react-native-macos/local-cli/cli.js start --use-react-native-macos",
16 16
     "start:android": "react-native run-android --root example/",
17
-    "start:ios": "react-native run-ios --project-path example/ios --scheme RNCWebViewExample",
18
-    "build:e2e:ios": "detox build -c ios",
19
-    "build:e2e:android": "detox build -c android",
17
+    "start:ios": "react-native run-ios --project-path example/ios --scheme example",
20 18
     "ci": "CI=true && yarn lint && yarn test",
21 19
     "ci:publish": "yarn semantic-release",
22 20
     "lint": "yarn tsc --noEmit && yarn eslint ./src --ext .ts,.tsx",
@@ -29,7 +27,7 @@
29 27
     "type": "Component"
30 28
   },
31 29
   "peerDependencies": {
32
-    "react": "^16.8",
30
+    "react": "^16.9",
33 31
     "react-native": ">=0.60 <0.62"
34 32
   },
35 33
   "dependencies": {
@@ -42,7 +40,7 @@
42 40
     "@semantic-release/git": "7.0.16",
43 41
     "@types/invariant": "^2.2.30",
44 42
     "@types/jest": "24.0.18",
45
-    "@types/react": "16.8.6",
43
+    "@types/react": "16.8.8",
46 44
     "@types/react-native": "0.60.11",
47 45
     "@typescript-eslint/eslint-plugin": "2.1.0",
48 46
     "@typescript-eslint/parser": "2.1.0",
@@ -58,8 +56,8 @@
58 56
     "eslint-plugin-react-native": "3.7.0",
59 57
     "jest": "24.9.0",
60 58
     "metro-react-native-babel-preset": "0.54.1",
61
-    "react": "16.6.3",
62
-    "react-native": "0.60.5",
59
+    "react": "16.9.0",
60
+    "react-native": "0.61.5",
63 61
     "react-native-macos": "git://github.com/microsoft/react-native",
64 62
     "semantic-release": "15.13.24",
65 63
     "typescript": "3.6.2"
@@ -76,4 +74,4 @@
76 74
     "index.d.ts",
77 75
     "react-native-webview.podspec"
78 76
   ]
79
-}
77
+}

+ 10
- 4
src/WebViewShared.tsx View File

@@ -44,11 +44,17 @@ const createOnShouldStartLoadWithRequest = (
44 44
     const { url, lockIdentifier } = nativeEvent;
45 45
 
46 46
     if (!passesWhitelist(compileWhitelist(originWhitelist), url)) {
47
-      Linking.openURL(url);
47
+      Linking.canOpenURL(url).then((supported) => {
48
+        if (supported) {
49
+          return Linking.openURL(url);
50
+        }
51
+        console.warn(`Can't open url: ${url}`);
52
+        return undefined;
53
+      }).catch(e => {
54
+        console.warn('Error opening URL: ', e);
55
+      });
48 56
       shouldStart = false;
49
-    }
50
-
51
-    if (onShouldStartLoadWithRequest) {
57
+    } else if (onShouldStartLoadWithRequest) {
52 58
       shouldStart = onShouldStartLoadWithRequest(nativeEvent);
53 59
     }
54 60
 

+ 80
- 8
src/__tests__/WebViewShared-test.js View File

@@ -5,6 +5,31 @@ import {
5 5
   createOnShouldStartLoadWithRequest,
6 6
 } from '../WebViewShared';
7 7
 
8
+Linking.openURL.mockResolvedValue(undefined);
9
+Linking.canOpenURL.mockResolvedValue(true);
10
+
11
+// The tests that call createOnShouldStartLoadWithRequest will cause a promise
12
+// to get kicked off (by calling the mocked `Linking.canOpenURL`) that the tests
13
+// _need_ to get run to completion _before_ doing any `expect`ing. The reason
14
+// is: once that promise is resolved another function should get run which will
15
+// call `Linking.openURL`, and we want to test that.
16
+//
17
+// Normally we would probably do something like `await
18
+// createShouldStartLoadWithRequest(...)` in the tests, but that doesn't work
19
+// here because the promise that gets kicked off is not returned (because
20
+// non-test code doesn't need to know about it).
21
+//
22
+// The tests thus need a way to "flush any pending promises" (to make sure
23
+// pending promises run to completion) before doing any `expect`ing. `jest`
24
+// doesn't provide a way to do this out of the box, but we can use this function
25
+// to do it.
26
+//
27
+// See this issue for more discussion: https://github.com/facebook/jest/issues/2157
28
+function flushPromises() {
29
+  return new Promise(resolve => setImmediate(resolve));
30
+}
31
+
32
+
8 33
 describe('WebViewShared', () => {
9 34
   test('exports defaultOriginWhitelist', () => {
10 35
     expect(defaultOriginWhitelist).toMatchSnapshot();
@@ -21,29 +46,35 @@ describe('WebViewShared', () => {
21 46
 
22 47
     const loadRequest = jest.fn();
23 48
 
24
-    test('loadRequest is called without onShouldStartLoadWithRequest override', () => {
49
+    test('loadRequest is called without onShouldStartLoadWithRequest override', async () => {
25 50
       const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
26 51
         loadRequest,
27 52
         defaultOriginWhitelist,
28 53
       );
29 54
 
30 55
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'https://www.example.com/', lockIdentifier: 1 } });
56
+      
57
+      await flushPromises();
58
+
31 59
       expect(Linking.openURL).toHaveBeenCalledTimes(0);
32 60
       expect(loadRequest).toHaveBeenCalledWith(true, 'https://www.example.com/', 1);
33 61
     });
34 62
 
35
-    test('Linking.openURL is called without onShouldStartLoadWithRequest override', () => {
63
+    test('Linking.openURL is called without onShouldStartLoadWithRequest override', async () => {
36 64
       const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
37 65
         loadRequest,
38 66
         defaultOriginWhitelist,
39 67
       );
40 68
 
41 69
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'invalid://example.com/', lockIdentifier: 2 } });
70
+      
71
+      await flushPromises();
72
+
42 73
       expect(Linking.openURL).toHaveBeenCalledWith('invalid://example.com/');
43 74
       expect(loadRequest).toHaveBeenCalledWith(false, 'invalid://example.com/', 2);
44 75
     });
45 76
 
46
-    test('loadRequest with true onShouldStartLoadWithRequest override is called', () => {
77
+    test('loadRequest with true onShouldStartLoadWithRequest override is called', async () => {
47 78
       const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
48 79
         loadRequest,
49 80
         defaultOriginWhitelist,
@@ -51,23 +82,32 @@ describe('WebViewShared', () => {
51 82
       );
52 83
 
53 84
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'https://www.example.com/', lockIdentifier: 1 } });
85
+
86
+      await flushPromises();
87
+
54 88
       expect(Linking.openURL).toHaveBeenCalledTimes(0);
55 89
       expect(loadRequest).toHaveBeenLastCalledWith(true, 'https://www.example.com/', 1);
56 90
     });
57 91
 
58
-    test('Linking.openURL with true onShouldStartLoadWithRequest override is called for links not passing the whitelist', () => {
92
+    test('Linking.openURL with true onShouldStartLoadWithRequest override is called for links not passing the whitelist', async () => {
59 93
       const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
60 94
         loadRequest,
61 95
         defaultOriginWhitelist,
62 96
         alwaysTrueOnShouldStartLoadWithRequest,
63 97
       );
64 98
 
99
+      var a = 10;
65 100
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'invalid://example.com/', lockIdentifier: 1 } });
101
+
102
+      await flushPromises();
103
+
66 104
       expect(Linking.openURL).toHaveBeenLastCalledWith('invalid://example.com/');
67
-      expect(loadRequest).toHaveBeenLastCalledWith(true, 'invalid://example.com/', 1);
105
+      // We don't expect the URL to have been loaded in the WebView because it
106
+      // is not in the origin whitelist
107
+      expect(loadRequest).toHaveBeenLastCalledWith(false, 'invalid://example.com/', 1);
68 108
     });
69 109
 
70
-    test('loadRequest with false onShouldStartLoadWithRequest override is called', () => {
110
+    test('loadRequest with false onShouldStartLoadWithRequest override is called', async () => {
71 111
       const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
72 112
         loadRequest,
73 113
         defaultOriginWhitelist,
@@ -75,60 +115,92 @@ describe('WebViewShared', () => {
75 115
       );
76 116
 
77 117
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'https://www.example.com/', lockIdentifier: 1 } });
118
+
119
+      await flushPromises();
120
+
78 121
       expect(Linking.openURL).toHaveBeenCalledTimes(0);
79 122
       expect(loadRequest).toHaveBeenLastCalledWith(false, 'https://www.example.com/', 1);
80 123
     });
81 124
 
82
-    test('loadRequest with limited whitelist', () => {
125
+    test('loadRequest with limited whitelist', async () => {
83 126
       const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
84 127
         loadRequest,
85 128
         ['https://*'],
86 129
       );
87 130
 
88 131
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'https://www.example.com/', lockIdentifier: 1 } });
132
+      
133
+      await flushPromises();
134
+
89 135
       expect(Linking.openURL).toHaveBeenCalledTimes(0);
90 136
       expect(loadRequest).toHaveBeenLastCalledWith(true, 'https://www.example.com/', 1);
91 137
 
92 138
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'http://insecure.com/', lockIdentifier: 2 } });
139
+
140
+      await flushPromises();
141
+
93 142
       expect(Linking.openURL).toHaveBeenLastCalledWith('http://insecure.com/');
94 143
       expect(loadRequest).toHaveBeenLastCalledWith(false, 'http://insecure.com/', 2);
95 144
 
96 145
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'git+https://insecure.com/', lockIdentifier: 3 } });
146
+      
147
+      await flushPromises();
148
+
97 149
       expect(Linking.openURL).toHaveBeenLastCalledWith('git+https://insecure.com/');
98 150
       expect(loadRequest).toHaveBeenLastCalledWith(false, 'git+https://insecure.com/', 3);
99 151
 
100 152
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'fakehttps://insecure.com/', lockIdentifier: 4 } });
153
+      
154
+      await flushPromises();
155
+
101 156
       expect(Linking.openURL).toHaveBeenLastCalledWith('fakehttps://insecure.com/');
102 157
       expect(loadRequest).toHaveBeenLastCalledWith(false, 'fakehttps://insecure.com/', 4);
103 158
     });
104 159
 
105
-    test('loadRequest allows for valid URIs', () => {
160
+    test('loadRequest allows for valid URIs', async () => {
106 161
       const onShouldStartLoadWithRequest = createOnShouldStartLoadWithRequest(
107 162
           loadRequest,
108 163
           ['plus+https://*', 'DOT.https://*', 'dash-https://*', '0invalid://*', '+invalid://*'],
109 164
       );
110 165
 
111 166
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'plus+https://www.example.com/', lockIdentifier: 1 } });
167
+      
168
+      await flushPromises();
112 169
       expect(Linking.openURL).toHaveBeenCalledTimes(0);
113 170
       expect(loadRequest).toHaveBeenLastCalledWith(true, 'plus+https://www.example.com/', 1);
114 171
 
115 172
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'DOT.https://www.example.com/', lockIdentifier: 2 } });
173
+
174
+      await flushPromises();
175
+
116 176
       expect(Linking.openURL).toHaveBeenCalledTimes(0);
117 177
       expect(loadRequest).toHaveBeenLastCalledWith(true, 'DOT.https://www.example.com/', 2);
118 178
 
119 179
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'dash-https://www.example.com/', lockIdentifier: 3 } });
180
+      
181
+      await flushPromises();
182
+
120 183
       expect(Linking.openURL).toHaveBeenCalledTimes(0);
121 184
       expect(loadRequest).toHaveBeenLastCalledWith(true, 'dash-https://www.example.com/', 3);
122 185
 
123 186
       onShouldStartLoadWithRequest({ nativeEvent: { url: '0invalid://www.example.com/', lockIdentifier: 4 } });
187
+
188
+      await flushPromises();
189
+
124 190
       expect(Linking.openURL).toHaveBeenLastCalledWith('0invalid://www.example.com/');
125 191
       expect(loadRequest).toHaveBeenLastCalledWith(false, '0invalid://www.example.com/', 4);
126 192
 
127 193
       onShouldStartLoadWithRequest({ nativeEvent: { url: '+invalid://www.example.com/', lockIdentifier: 5 } });
194
+      
195
+      await flushPromises();
196
+
128 197
       expect(Linking.openURL).toHaveBeenLastCalledWith('+invalid://www.example.com/');
129 198
       expect(loadRequest).toHaveBeenLastCalledWith(false, '+invalid://www.example.com/', 5);
130 199
 
131 200
       onShouldStartLoadWithRequest({ nativeEvent: { url: 'FAKE+plus+https://www.example.com/', lockIdentifier: 6 } });
201
+
202
+      await flushPromises();
203
+
132 204
       expect(Linking.openURL).toHaveBeenLastCalledWith('FAKE+plus+https://www.example.com/');
133 205
       expect(loadRequest).toHaveBeenLastCalledWith(false, 'FAKE+plus+https://www.example.com/', 6);
134 206
     });

+ 269
- 191
yarn.lock View File

@@ -9,6 +9,13 @@
9 9
   dependencies:
10 10
     "@babel/highlight" "^7.0.0"
11 11
 
12
+"@babel/code-frame@^7.8.3":
13
+  version "7.8.3"
14
+  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
15
+  integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==
16
+  dependencies:
17
+    "@babel/highlight" "^7.8.3"
18
+
12 19
 "@babel/core@7.4.5":
13 20
   version "7.4.5"
14 21
   resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
@@ -60,12 +67,12 @@
60 67
     source-map "^0.5.0"
61 68
     trim-right "^1.0.1"
62 69
 
63
-"@babel/generator@^7.4.4", "@babel/generator@^7.7.4":
64
-  version "7.7.7"
65
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45"
66
-  integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==
70
+"@babel/generator@^7.4.4", "@babel/generator@^7.8.3":
71
+  version "7.8.3"
72
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.3.tgz#0e22c005b0a94c1c74eafe19ef78ce53a4d45c03"
73
+  integrity sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==
67 74
   dependencies:
68
-    "@babel/types" "^7.7.4"
75
+    "@babel/types" "^7.8.3"
69 76
     jsesc "^2.5.1"
70 77
     lodash "^4.17.13"
71 78
     source-map "^0.5.0"
@@ -140,14 +147,14 @@
140 147
     "@babel/template" "^7.1.0"
141 148
     "@babel/types" "^7.0.0"
142 149
 
143
-"@babel/helper-function-name@^7.7.4":
144
-  version "7.7.4"
145
-  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e"
146
-  integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==
150
+"@babel/helper-function-name@^7.8.3":
151
+  version "7.8.3"
152
+  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca"
153
+  integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==
147 154
   dependencies:
148
-    "@babel/helper-get-function-arity" "^7.7.4"
149
-    "@babel/template" "^7.7.4"
150
-    "@babel/types" "^7.7.4"
155
+    "@babel/helper-get-function-arity" "^7.8.3"
156
+    "@babel/template" "^7.8.3"
157
+    "@babel/types" "^7.8.3"
151 158
 
152 159
 "@babel/helper-get-function-arity@^7.0.0":
153 160
   version "7.0.0"
@@ -156,12 +163,12 @@
156 163
   dependencies:
157 164
     "@babel/types" "^7.0.0"
158 165
 
159
-"@babel/helper-get-function-arity@^7.7.4":
160
-  version "7.7.4"
161
-  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0"
162
-  integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==
166
+"@babel/helper-get-function-arity@^7.8.3":
167
+  version "7.8.3"
168
+  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5"
169
+  integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==
163 170
   dependencies:
164
-    "@babel/types" "^7.7.4"
171
+    "@babel/types" "^7.8.3"
165 172
 
166 173
 "@babel/helper-hoist-variables@^7.4.4":
167 174
   version "7.4.4"
@@ -251,12 +258,12 @@
251 258
   dependencies:
252 259
     "@babel/types" "^7.4.4"
253 260
 
254
-"@babel/helper-split-export-declaration@^7.7.4":
255
-  version "7.7.4"
256
-  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8"
257
-  integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==
261
+"@babel/helper-split-export-declaration@^7.8.3":
262
+  version "7.8.3"
263
+  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9"
264
+  integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==
258 265
   dependencies:
259
-    "@babel/types" "^7.7.4"
266
+    "@babel/types" "^7.8.3"
260 267
 
261 268
 "@babel/helper-wrap-function@^7.1.0":
262 269
   version "7.2.0"
@@ -269,13 +276,13 @@
269 276
     "@babel/types" "^7.2.0"
270 277
 
271 278
 "@babel/helpers@^7.4.4":
272
-  version "7.7.4"
273
-  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302"
274
-  integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==
279
+  version "7.8.3"
280
+  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85"
281
+  integrity sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==
275 282
   dependencies:
276
-    "@babel/template" "^7.7.4"
277
-    "@babel/traverse" "^7.7.4"
278
-    "@babel/types" "^7.7.4"
283
+    "@babel/template" "^7.8.3"
284
+    "@babel/traverse" "^7.8.3"
285
+    "@babel/types" "^7.8.3"
279 286
 
280 287
 "@babel/helpers@^7.5.5":
281 288
   version "7.5.5"
@@ -295,15 +302,24 @@
295 302
     esutils "^2.0.2"
296 303
     js-tokens "^4.0.0"
297 304
 
305
+"@babel/highlight@^7.8.3":
306
+  version "7.8.3"
307
+  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797"
308
+  integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==
309
+  dependencies:
310
+    chalk "^2.0.0"
311
+    esutils "^2.0.2"
312
+    js-tokens "^4.0.0"
313
+
298 314
 "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5":
299 315
   version "7.5.5"
300 316
   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b"
301 317
   integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==
302 318
 
303
-"@babel/parser@^7.4.5", "@babel/parser@^7.7.4":
304
-  version "7.7.7"
305
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937"
306
-  integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==
319
+"@babel/parser@^7.4.5", "@babel/parser@^7.8.3":
320
+  version "7.8.3"
321
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081"
322
+  integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==
307 323
 
308 324
 "@babel/plugin-external-helpers@^7.0.0":
309 325
   version "7.2.0"
@@ -706,14 +722,14 @@
706 722
     "@babel/parser" "^7.4.4"
707 723
     "@babel/types" "^7.4.4"
708 724
 
709
-"@babel/template@^7.7.4":
710
-  version "7.7.4"
711
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b"
712
-  integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==
725
+"@babel/template@^7.8.3":
726
+  version "7.8.3"
727
+  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8"
728
+  integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==
713 729
   dependencies:
714
-    "@babel/code-frame" "^7.0.0"
715
-    "@babel/parser" "^7.7.4"
716
-    "@babel/types" "^7.7.4"
730
+    "@babel/code-frame" "^7.8.3"
731
+    "@babel/parser" "^7.8.3"
732
+    "@babel/types" "^7.8.3"
717 733
 
718 734
 "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5":
719 735
   version "7.5.5"
@@ -730,17 +746,17 @@
730 746
     globals "^11.1.0"
731 747
     lodash "^4.17.13"
732 748
 
733
-"@babel/traverse@^7.4.5", "@babel/traverse@^7.7.4":
734
-  version "7.7.4"
735
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558"
736
-  integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==
737
-  dependencies:
738
-    "@babel/code-frame" "^7.5.5"
739
-    "@babel/generator" "^7.7.4"
740
-    "@babel/helper-function-name" "^7.7.4"
741
-    "@babel/helper-split-export-declaration" "^7.7.4"
742
-    "@babel/parser" "^7.7.4"
743
-    "@babel/types" "^7.7.4"
749
+"@babel/traverse@^7.4.5", "@babel/traverse@^7.8.3":
750
+  version "7.8.3"
751
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.3.tgz#a826215b011c9b4f73f3a893afbc05151358bf9a"
752
+  integrity sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==
753
+  dependencies:
754
+    "@babel/code-frame" "^7.8.3"
755
+    "@babel/generator" "^7.8.3"
756
+    "@babel/helper-function-name" "^7.8.3"
757
+    "@babel/helper-split-export-declaration" "^7.8.3"
758
+    "@babel/parser" "^7.8.3"
759
+    "@babel/types" "^7.8.3"
744 760
     debug "^4.1.0"
745 761
     globals "^11.1.0"
746 762
     lodash "^4.17.13"
@@ -754,10 +770,10 @@
754 770
     lodash "^4.17.13"
755 771
     to-fast-properties "^2.0.0"
756 772
 
757
-"@babel/types@^7.7.4":
758
-  version "7.7.4"
759
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193"
760
-  integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==
773
+"@babel/types@^7.8.3":
774
+  version "7.8.3"
775
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c"
776
+  integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==
761 777
   dependencies:
762 778
     esutils "^2.0.2"
763 779
     lodash "^4.17.13"
@@ -1019,12 +1035,19 @@
1019 1035
     once "^1.4.0"
1020 1036
     universal-user-agent "^4.0.0"
1021 1037
 
1022
-"@react-native-community/cli-platform-android@^2.6.0", "@react-native-community/cli-platform-android@^2.9.0":
1023
-  version "2.9.0"
1024
-  resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-2.9.0.tgz#28831e61ce565a2c7d1905852fce1eecfd33cb5e"
1025
-  integrity sha512-VEQs4Q6R5tnlYFrQIFoPEWjLc43whRHC9HeH+idbFymwDqysLVUffQbb9D6PJUj+C/AvrDhBhU6S3tDjGbSsag==
1038
+"@react-native-community/cli-debugger-ui@^3.0.0":
1039
+  version "3.0.0"
1040
+  resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz#d01d08d1e5ddc1633d82c7d84d48fff07bd39416"
1041
+  integrity sha512-m3X+iWLsK/H7/b7PpbNO33eQayR/+M26la4ZbYe1KRke5Umg4PIWsvg21O8Tw4uJcY8LA5hsP+rBi/syBkBf0g==
1026 1042
   dependencies:
1027
-    "@react-native-community/cli-tools" "^2.8.3"
1043
+    serve-static "^1.13.1"
1044
+
1045
+"@react-native-community/cli-platform-android@^3.0.0":
1046
+  version "3.0.3"
1047
+  resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-3.0.3.tgz#e652abce79a7c1e3a8280228123e99df2c4b97b6"
1048
+  integrity sha512-rNO9DmRiVhB6aP2DVUjEJv7ecriTARDZND88ny3xNVUkrD1Y+zwF6aZu3eoT52VXOxLCSLiJzz19OiyGmfqxYg==
1049
+  dependencies:
1050
+    "@react-native-community/cli-tools" "^3.0.0"
1028 1051
     chalk "^2.4.2"
1029 1052
     execa "^1.0.0"
1030 1053
     jetifier "^1.6.2"
@@ -1037,14 +1060,15 @@
1037 1060
   resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-2.10.0.tgz#ee494d2f9a8f8727bd5eb3c446f22ebb5429b624"
1038 1061
   integrity sha512-z5BQKyT/bgTSdHhvsFNf++6VP50vtOOaITnNKvw4954wURjv5JOQh1De3BngyaDOoGfV1mXkCxutqAXqSeuIjw==
1039 1062
   dependencies:
1040
-    "@react-native-community/cli-tools" "^2.8.3"
1063
+    "@react-native-community/cli-tools" "^3.0.0"
1041 1064
     chalk "^2.4.2"
1065
+    js-yaml "^3.13.1"
1042 1066
     xcode "^2.0.0"
1043 1067
 
1044
-"@react-native-community/cli-tools@^2.8.3":
1045
-  version "2.8.3"
1046
-  resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-2.8.3.tgz#0e2249f48cf4603fb8d740a9f0715c31ac131ceb"
1047
-  integrity sha512-N5Pz+pR+GFq3JApjd0SW4jp9KC7kbKsMH65QLRh30JNsxdPvNkYox6/ZZdkvdXaI5ev3EckR7eqlcwi5gpVTYQ==
1068
+"@react-native-community/cli-tools@^3.0.0":
1069
+  version "3.0.0"
1070
+  resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-3.0.0.tgz#fe48b80822ed7e49b8af051f9fe41e22a2a710b1"
1071
+  integrity sha512-8IhQKZdf3E4CR8T7HhkPGgorot/cLkRDgneJFDSWk/wCYZAuUh4NEAdumQV7N0jLSMWX7xxiWUPi94lOBxVY9g==
1048 1072
   dependencies:
1049 1073
     chalk "^2.4.2"
1050 1074
     lodash "^4.17.5"
@@ -1061,6 +1085,7 @@
1061 1085
     "@react-native-community/cli-platform-ios" "^2.10.0"
1062 1086
     "@react-native-community/cli-tools" "^2.8.3"
1063 1087
     chalk "^2.4.2"
1088
+    command-exists "^1.2.8"
1064 1089
     commander "^2.19.0"
1065 1090
     compression "^1.7.1"
1066 1091
     connect "^3.6.5"
@@ -1069,15 +1094,16 @@
1069 1094
     envinfo "^7.1.0"
1070 1095
     errorhandler "^1.5.0"
1071 1096
     execa "^1.0.0"
1097
+    find-up "^4.1.0"
1072 1098
     fs-extra "^7.0.1"
1073 1099
     glob "^7.1.1"
1074 1100
     graceful-fs "^4.1.3"
1075 1101
     inquirer "^3.0.6"
1076 1102
     lodash "^4.17.5"
1077
-    metro "^0.54.1"
1078
-    metro-config "^0.54.1"
1079
-    metro-core "^0.54.1"
1080
-    metro-react-native-babel-transformer "^0.54.1"
1103
+    metro "^0.56.0"
1104
+    metro-config "^0.56.0"
1105
+    metro-core "^0.56.0"
1106
+    metro-react-native-babel-transformer "^0.56.0"
1081 1107
     minimist "^1.2.0"
1082 1108
     mkdirp "^0.5.1"
1083 1109
     morgan "^1.9.0"
@@ -1085,9 +1111,12 @@
1085 1111
     open "^6.2.0"
1086 1112
     ora "^3.4.0"
1087 1113
     plist "^3.0.0"
1088
-    semver "^5.0.3"
1114
+    semver "^6.3.0"
1089 1115
     serve-static "^1.13.1"
1090 1116
     shell-quote "1.6.1"
1117
+    strip-ansi "^5.2.0"
1118
+    sudo-prompt "^9.0.0"
1119
+    wcwidth "^1.0.1"
1091 1120
     ws "^1.1.0"
1092 1121
 
1093 1122
 "@semantic-release/commit-analyzer@^6.1.0":
@@ -1309,10 +1338,10 @@
1309 1338
     "@types/prop-types" "*"
1310 1339
     csstype "^2.2.0"
1311 1340
 
1312
-"@types/react@16.8.6":
1313
-  version "16.8.6"
1314
-  resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.6.tgz#fa1de3fe56cc9b6afeddc73d093d7f30fd5e31cc"
1315
-  integrity sha512-bN9qDjEMltmHrl0PZRI4IF2AbB7V5UlRfG+OOduckVnRQ4VzXVSzy/1eLAh778IEqhTnW0mmgL9yShfinNverA==
1341
+"@types/react@16.8.8":
1342
+  version "16.8.8"
1343
+  resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.8.tgz#4b60a469fd2469f7aa6eaa0f8cfbc51f6d76e662"
1344
+  integrity sha512-xwEvyet96u7WnB96kqY0yY7qxx/pEpU51QeACkKFtrgjjXITQn0oO1iwPEraXVgh10ZFPix7gs1R4OJXF7P5sg==
1316 1345
   dependencies:
1317 1346
     "@types/prop-types" "*"
1318 1347
     csstype "^2.2.0"
@@ -2415,6 +2444,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
2415 2444
   dependencies:
2416 2445
     delayed-stream "~1.0.0"
2417 2446
 
2447
+command-exists@^1.2.8:
2448
+  version "1.2.8"
2449
+  resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291"
2450
+  integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==
2451
+
2418 2452
 commander@^2.11.0, commander@^2.19.0, commander@~2.20.0:
2419 2453
   version "2.20.0"
2420 2454
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
@@ -3715,7 +3749,7 @@ find-up@^3.0.0:
3715 3749
   dependencies:
3716 3750
     locate-path "^3.0.0"
3717 3751
 
3718
-find-up@^4.0.0:
3752
+find-up@^4.0.0, find-up@^4.1.0:
3719 3753
   version "4.1.0"
3720 3754
   resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
3721 3755
   integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
@@ -4132,10 +4166,10 @@ has@^1.0.1, has@^1.0.3:
4132 4166
   dependencies:
4133 4167
     function-bind "^1.1.1"
4134 4168
 
4135
-hermesvm@^0.1.0:
4136
-  version "0.1.1"
4137
-  resolved "https://registry.yarnpkg.com/hermesvm/-/hermesvm-0.1.1.tgz#bd1df92b4dc504e261c23df34864daf24b844d03"
4138
-  integrity sha512-EosSDeUqTTGvlc9vQiy5Y/9GBlucEyo6lYuxg/FnukHCD/CP3NYeDAGV54TyZ19FgSqMEoPgOH9cyxvv8epQ1g==
4169
+hermes-engine@^0.2.1:
4170
+  version "0.2.1"
4171
+  resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.2.1.tgz#25c0f1ff852512a92cb5c5cc47cf967e1e722ea2"
4172
+  integrity sha512-eNHUQHuadDMJARpaqvlCZoK/Nitpj6oywq3vQ3wCwEsww5morX34mW5PmKWQTO7aU0ck0hgulxR+EVDlXygGxQ==
4139 4173
 
4140 4174
 hook-std@^2.0.0:
4141 4175
   version "2.0.0"
@@ -5158,7 +5192,7 @@ jsbn@~0.1.0:
5158 5192
   resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
5159 5193
   integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
5160 5194
 
5161
-jsc-android@245459.0.0:
5195
+jsc-android@^245459.0.0:
5162 5196
   version "245459.0.0"
5163 5197
   resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-245459.0.0.tgz#e584258dd0b04c9159a27fb104cd5d491fd202c9"
5164 5198
   integrity sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg==
@@ -5870,10 +5904,10 @@ merge2@^1.2.3:
5870 5904
   resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.4.tgz#c9269589e6885a60cf80605d9522d4b67ca646e3"
5871 5905
   integrity sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==
5872 5906
 
5873
-metro-babel-register@0.54.1:
5874
-  version "0.54.1"
5875
-  resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.54.1.tgz#7d2bfe444b1ccef8de99aedc7d9330891d806076"
5876
-  integrity sha512-j3VydgncUG8HP6AZala6GTIt3V01nptodnnOke3JMYLqgk8EJ1LOVOdotK9pXi80o7EmmNKFs/LyyH8z+uAJzQ==
5907
+metro-babel-register@^0.56.0, metro-babel-register@^0.56.4:
5908
+  version "0.56.4"
5909
+  resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.56.4.tgz#b0c627a1cfdd1bdd768f81af79481754e833a902"
5910
+  integrity sha512-Phm6hMluOWYqfykftjJ1jsTpWvbgb49AC/1taxEctxUdRCZlFgZwBleJZAhQYxJD5J+ikFkEbHDzePEXb29KVA==
5877 5911
   dependencies:
5878 5912
     "@babel/core" "^7.0.0"
5879 5913
     "@babel/plugin-proposal-class-properties" "^7.0.0"
@@ -5888,12 +5922,13 @@ metro-babel-register@0.54.1:
5888 5922
     core-js "^2.2.2"
5889 5923
     escape-string-regexp "^1.0.5"
5890 5924
 
5891
-metro-babel-transformer@0.54.1:
5892
-  version "0.54.1"
5893
-  resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.54.1.tgz#371ffa2d1118b22cc9e40b3c3ea6738c49dae9dc"
5894
-  integrity sha512-2aiAnuYBdcLV1VINb8ENAA4keIaJIepHgR9+iRvIde+9GSjKnexqx4nNmJN392285gRDp1fVZ7uY0uQawK/A5g==
5925
+metro-babel-transformer@^0.56.4:
5926
+  version "0.56.4"
5927
+  resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.56.4.tgz#fe1d0dc600fcf90201a5bea4d42caea10b801057"
5928
+  integrity sha512-IOi4ILgZvaX7GCGHBJp79paNVOq5QxhhbyqAdEJgDP8bHfl/OVHoVKSypfrsMSKSiBrqxhIjyc4XjkXsQtkx5g==
5895 5929
   dependencies:
5896 5930
     "@babel/core" "^7.0.0"
5931
+    metro-source-map "^0.56.4"
5897 5932
 
5898 5933
 metro-babel7-plugin-react-transform@0.54.1:
5899 5934
   version "0.54.1"
@@ -5902,42 +5937,42 @@ metro-babel7-plugin-react-transform@0.54.1:
5902 5937
   dependencies:
5903 5938
     "@babel/helper-module-imports" "^7.0.0"
5904 5939
 
5905
-metro-cache@0.54.1:
5906
-  version "0.54.1"
5907
-  resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.54.1.tgz#2e9017cbd11106837b8c385c9eb8c8175469a8c1"
5908
-  integrity sha512-RxCFoNcANHXZYi4MIQNnqh68gUnC3bMpzCFJY5pBoqqdrkkn8ibYglBweA0/DW7hx1OZTJWelwS1Dp8xxmE2CA==
5940
+metro-cache@^0.56.4:
5941
+  version "0.56.4"
5942
+  resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.56.4.tgz#542f9f8a35f8fb9d5576f46fd3ab4d4f42851a7e"
5943
+  integrity sha512-d1hiUSKwtRsuMxUhHVJ3tjK2BbpUlJGvTyMWohK8Wxx+0GbnWRWWFcI4vlCzlZfoK0VtZK2MJEl5t7Du1mIniQ==
5909 5944
   dependencies:
5910 5945
     jest-serializer "^24.4.0"
5911
-    metro-core "0.54.1"
5946
+    metro-core "^0.56.4"
5912 5947
     mkdirp "^0.5.1"
5913 5948
     rimraf "^2.5.4"
5914 5949
 
5915
-metro-config@0.54.1, metro-config@^0.54.1:
5916
-  version "0.54.1"
5917
-  resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.54.1.tgz#808b4e17625d9f4e9afa34232778fdf8e63cc8dd"
5918
-  integrity sha512-FpxrA+63rGkPGvGI653dvuSreJzU+eOTILItVnnhmqwn2SAK5V00N/qGTOIJe2YIuWEFXwCzw9lXmANrXbwuGg==
5950
+metro-config@^0.56.0, metro-config@^0.56.4:
5951
+  version "0.56.4"
5952
+  resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.56.4.tgz#338fd8165fba59424cec427c1a881757945e57e9"
5953
+  integrity sha512-O85QDHwWdMn/8ERe13y4a6vbZL0AHyO8atTvL+9BCulLEO+FQBi1iJjr3+ViLa8cf0m5dRftDsa7P47m5euk4A==
5919 5954
   dependencies:
5920 5955
     cosmiconfig "^5.0.5"
5921 5956
     jest-validate "^24.7.0"
5922
-    metro "0.54.1"
5923
-    metro-cache "0.54.1"
5924
-    metro-core "0.54.1"
5957
+    metro "^0.56.4"
5958
+    metro-cache "^0.56.4"
5959
+    metro-core "^0.56.4"
5925 5960
     pretty-format "^24.7.0"
5926 5961
 
5927
-metro-core@0.54.1, metro-core@^0.54.1:
5928
-  version "0.54.1"
5929
-  resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.54.1.tgz#17f6ecc167918da8819d4af5726349e55714954b"
5930
-  integrity sha512-8oz3Ck7QFBzW9dG9tKFhrXHKPu2Ajx3R7eatf61Gl6Jf/tF7PNouv3wHxPsJW3oXDFiwKLszd89+OgleTGkB5g==
5962
+metro-core@^0.56.0, metro-core@^0.56.4:
5963
+  version "0.56.4"
5964
+  resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.56.4.tgz#67cc41b3c0bf66e9c2306f50239a1080b1e82312"
5965
+  integrity sha512-hMzkBdgPt5Zm9nr/1KtIT+A6H7TNiLVCEGG5OiAXj8gTRsA2yy7wAdQpwy0xbE+zi88t/pLOzXpd3ClG/YxyWg==
5931 5966
   dependencies:
5932 5967
     jest-haste-map "^24.7.1"
5933 5968
     lodash.throttle "^4.1.1"
5934
-    metro-resolver "0.54.1"
5969
+    metro-resolver "^0.56.4"
5935 5970
     wordwrap "^1.0.0"
5936 5971
 
5937
-metro-inspector-proxy@0.54.1:
5938
-  version "0.54.1"
5939
-  resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.54.1.tgz#0ef48ee3feb11c6da47aa100151a9bf2a7c358ee"
5940
-  integrity sha512-sf6kNu7PgFW6U+hU7YGZfbAUKAPVvCJhY8YVu/A1RMKH9nNULrCo+jlWh0gWgmFfWRQiAPCElevROg+5somk8A==
5972
+metro-inspector-proxy@^0.56.4:
5973
+  version "0.56.4"
5974
+  resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.56.4.tgz#7343ff3c5908af4fd99e96b6d646e24e99816be4"
5975
+  integrity sha512-E1S3MO25mWKmcLn1UQuCDiS0hf9P2Fwq8sEAX5lBLoZbehepNH+4xJ3xXSY51JX4dozBrE8GGoKL4ll3II40LA==
5941 5976
   dependencies:
5942 5977
     connect "^3.6.5"
5943 5978
     debug "^2.2.0"
@@ -5945,10 +5980,10 @@ metro-inspector-proxy@0.54.1:
5945 5980
     ws "^1.1.5"
5946 5981
     yargs "^9.0.0"
5947 5982
 
5948
-metro-minify-uglify@0.54.1:
5949
-  version "0.54.1"
5950
-  resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.54.1.tgz#54ed1cb349245ce82dba8cc662bbf69fbca142c3"
5951
-  integrity sha512-z+pOPna/8IxD4OhjW6Xo1mV2EszgqqQHqBm1FdmtdF6IpWkQp33qpDBNEi9NGZTOr7pp2bvcxZnvNJdC2lrK9Q==
5983
+metro-minify-uglify@^0.56.4:
5984
+  version "0.56.4"
5985
+  resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.56.4.tgz#13589dfb1d43343608aacb7f78ddfcc052daa63c"
5986
+  integrity sha512-BHgj7+BKEK2pHvWHUR730bIrsZwl8DPtr49x9L0j2grPZ5/UROWXzEr8VZgIss7fl64t845uu1HXNNyuSj2EhA==
5952 5987
   dependencies:
5953 5988
     uglify-es "^3.1.9"
5954 5989
 
@@ -5994,59 +6029,93 @@ metro-react-native-babel-preset@0.54.1:
5994 6029
     metro-babel7-plugin-react-transform "0.54.1"
5995 6030
     react-transform-hmr "^1.0.4"
5996 6031
 
5997
-metro-react-native-babel-transformer@0.54.1, metro-react-native-babel-transformer@^0.54.1:
5998
-  version "0.54.1"
5999
-  resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.54.1.tgz#45b56db004421134e10e739f69e8de50775fef17"
6000
-  integrity sha512-ECw7xG91t8dk/PHdiyoC5SP1s9OQzfmJzG5m0YOZaKtHMe534qTDbncxaKfTI3CP99yti2maXFBRVj+xyvph/g==
6032
+metro-react-native-babel-preset@^0.56.4:
6033
+  version "0.56.4"
6034
+  resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz#dcedc64b7ff5c0734839458e70eb0ebef6d063a8"
6035
+  integrity sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA==
6036
+  dependencies:
6037
+    "@babel/plugin-proposal-class-properties" "^7.0.0"
6038
+    "@babel/plugin-proposal-export-default-from" "^7.0.0"
6039
+    "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0"
6040
+    "@babel/plugin-proposal-object-rest-spread" "^7.0.0"
6041
+    "@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
6042
+    "@babel/plugin-proposal-optional-chaining" "^7.0.0"
6043
+    "@babel/plugin-syntax-dynamic-import" "^7.0.0"
6044
+    "@babel/plugin-syntax-export-default-from" "^7.0.0"
6045
+    "@babel/plugin-syntax-flow" "^7.2.0"
6046
+    "@babel/plugin-transform-arrow-functions" "^7.0.0"
6047
+    "@babel/plugin-transform-block-scoping" "^7.0.0"
6048
+    "@babel/plugin-transform-classes" "^7.0.0"
6049
+    "@babel/plugin-transform-computed-properties" "^7.0.0"
6050
+    "@babel/plugin-transform-destructuring" "^7.0.0"
6051
+    "@babel/plugin-transform-exponentiation-operator" "^7.0.0"
6052
+    "@babel/plugin-transform-flow-strip-types" "^7.0.0"
6053
+    "@babel/plugin-transform-for-of" "^7.0.0"
6054
+    "@babel/plugin-transform-function-name" "^7.0.0"
6055
+    "@babel/plugin-transform-literals" "^7.0.0"
6056
+    "@babel/plugin-transform-modules-commonjs" "^7.0.0"
6057
+    "@babel/plugin-transform-object-assign" "^7.0.0"
6058
+    "@babel/plugin-transform-parameters" "^7.0.0"
6059
+    "@babel/plugin-transform-react-display-name" "^7.0.0"
6060
+    "@babel/plugin-transform-react-jsx" "^7.0.0"
6061
+    "@babel/plugin-transform-react-jsx-source" "^7.0.0"
6062
+    "@babel/plugin-transform-regenerator" "^7.0.0"
6063
+    "@babel/plugin-transform-runtime" "^7.0.0"
6064
+    "@babel/plugin-transform-shorthand-properties" "^7.0.0"
6065
+    "@babel/plugin-transform-spread" "^7.0.0"
6066
+    "@babel/plugin-transform-sticky-regex" "^7.0.0"
6067
+    "@babel/plugin-transform-template-literals" "^7.0.0"
6068
+    "@babel/plugin-transform-typescript" "^7.0.0"
6069
+    "@babel/plugin-transform-unicode-regex" "^7.0.0"
6070
+    "@babel/template" "^7.0.0"
6071
+    react-refresh "^0.4.0"
6072
+
6073
+metro-react-native-babel-transformer@^0.56.0:
6074
+  version "0.56.4"
6075
+  resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.56.4.tgz#3c6e48b605c305362ee624e45ff338656e35fc1d"
6076
+  integrity sha512-ng74eutuy1nyGI9+TDzzVAVfEmNPDlapV4msTQMKPi4EFqo/fBn7Ct33ME9l5E51pQBBnxt/UwcpTvd13b29kQ==
6001 6077
   dependencies:
6002 6078
     "@babel/core" "^7.0.0"
6003 6079
     babel-preset-fbjs "^3.1.2"
6004
-    metro-babel-transformer "0.54.1"
6005
-    metro-react-native-babel-preset "0.54.1"
6080
+    metro-babel-transformer "^0.56.4"
6081
+    metro-react-native-babel-preset "^0.56.4"
6082
+    metro-source-map "^0.56.4"
6006 6083
 
6007
-metro-resolver@0.54.1:
6008
-  version "0.54.1"
6009
-  resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.54.1.tgz#0295b38624b678b88b16bf11d47288845132b087"
6010
-  integrity sha512-Byv1LIawYAASy9CFRwzrncYnqaFGLe8vpw178EtzStqP05Hu6hXSqkNTrfoXa+3V9bPFGCrVzFx2NY3gFp2btg==
6084
+metro-resolver@^0.56.4:
6085
+  version "0.56.4"
6086
+  resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.56.4.tgz#9876f57bca37fd1bfcffd733541e2ee4a89fad7f"
6087
+  integrity sha512-Ug4ulVfpkKZ1Wu7mdYj9XLGuOqZTuWCqEhyx3siKTc/2eBwKZQXmiNo5d/IxWNvmwL/87Abeb724I6CMzMfjiQ==
6011 6088
   dependencies:
6012 6089
     absolute-path "^0.0.0"
6013 6090
 
6014
-metro-source-map@0.54.1:
6015
-  version "0.54.1"
6016
-  resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.54.1.tgz#e17bad53c11978197d3c05c9168d799c2e04dcc5"
6017
-  integrity sha512-E9iSYMSUSq5qYi1R2hTQtxH4Mxjzfgr/jaSmQIWi7h3fG2P1qOZNNSzeaeUeTK+s2N/ksVlkcL5kMikol8CDrQ==
6018
-  dependencies:
6019
-    "@babel/traverse" "^7.0.0"
6020
-    "@babel/types" "^7.0.0"
6021
-    source-map "^0.5.6"
6022
-
6023
-metro-source-map@0.55.0, metro-source-map@^0.55.0:
6024
-  version "0.55.0"
6025
-  resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.55.0.tgz#1f6289905f08277c398f2b9b9c13e7e0e5a6f540"
6026
-  integrity sha512-HZODA0KPl5onJNGIztfTHHWurR2nL6Je/X8wwj+bL4ZBB/hSMVeDk7rWReCAvO3twVz7Ztp8Si0jfMmmH4Ruuw==
6091
+metro-source-map@^0.56.0, metro-source-map@^0.56.4:
6092
+  version "0.56.4"
6093
+  resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.56.4.tgz#868ccac3f3519fe14eca358bc186f63651b2b9bc"
6094
+  integrity sha512-f1P9/rpFmG3Z0Jatiw2zvLItx1TwR7mXTSDj4qLDCWeVMB3kEXAr3R0ucumTW8c6HfpJljeRBWzYFXF33fd81g==
6027 6095
   dependencies:
6028 6096
     "@babel/traverse" "^7.0.0"
6029 6097
     "@babel/types" "^7.0.0"
6030 6098
     invariant "^2.2.4"
6031
-    metro-symbolicate "0.55.0"
6032
-    ob1 "0.55.0"
6099
+    metro-symbolicate "^0.56.4"
6100
+    ob1 "^0.56.4"
6033 6101
     source-map "^0.5.6"
6034 6102
     vlq "^1.0.0"
6035 6103
 
6036
-metro-symbolicate@0.55.0:
6037
-  version "0.55.0"
6038
-  resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.55.0.tgz#4086a2adae54b5e44a4911ca572d8a7b03c71fa1"
6039
-  integrity sha512-3r3Gpv5L4U7rBGpIqw5S1nun5MelfUMLRiScJsPRGZVTX3WY1w+zpaQKlWBi5yuHf5dMQ+ZUVbhb02IdrfJ2Fg==
6104
+metro-symbolicate@^0.56.4:
6105
+  version "0.56.4"
6106
+  resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.56.4.tgz#53e9d40beac9049fa75a3e620ddd47d4907ff015"
6107
+  integrity sha512-8mCNNn6zV5FFKCIcRgI7736Xl+owgvYuy8qanPxZN36f7utiWRYeB+PirEBPcglBk4qQvoy2lT6oPULNXZQbbQ==
6040 6108
   dependencies:
6041
-    metro-source-map "0.55.0"
6109
+    invariant "^2.2.4"
6110
+    metro-source-map "^0.56.4"
6042 6111
     source-map "^0.5.6"
6043 6112
     through2 "^2.0.1"
6044 6113
     vlq "^1.0.0"
6045 6114
 
6046
-metro@0.54.1, metro@^0.54.1:
6047
-  version "0.54.1"
6048
-  resolved "https://registry.yarnpkg.com/metro/-/metro-0.54.1.tgz#a629be00abee5a450a25a8f71c24745f70cc9b44"
6049
-  integrity sha512-6ODPT4mEo4FCpbExRNnQAcZmf1VeNvYOTMj2Na03FjGqhNODHhI2U/wF/Ul5gqTyJ2dVdkXeyvKW3gl/LrnJRg==
6115
+metro@^0.56.0, metro@^0.56.4:
6116
+  version "0.56.4"
6117
+  resolved "https://registry.yarnpkg.com/metro/-/metro-0.56.4.tgz#be7e1380ee6ac3552c25ead8098eab261029e4d7"
6118
+  integrity sha512-Kt3OQJQtQdts0JrKnyGdLpKHDjqYBgIfzvYrvfhmFCkKuZ8aqRlVnvpfjQ4/OBm0Fmm9NyyxbNRD9VIbj7WjnA==
6050 6119
   dependencies:
6051 6120
     "@babel/core" "^7.0.0"
6052 6121
     "@babel/generator" "^7.0.0"
@@ -6075,21 +6144,21 @@ metro@0.54.1, metro@^0.54.1:
6075 6144
     json-stable-stringify "^1.0.1"
6076 6145
     lodash.throttle "^4.1.1"
6077 6146
     merge-stream "^1.0.1"
6078
-    metro-babel-register "0.54.1"
6079
-    metro-babel-transformer "0.54.1"
6080
-    metro-cache "0.54.1"
6081
-    metro-config "0.54.1"
6082
-    metro-core "0.54.1"
6083
-    metro-inspector-proxy "0.54.1"
6084
-    metro-minify-uglify "0.54.1"
6085
-    metro-react-native-babel-preset "0.54.1"
6086
-    metro-resolver "0.54.1"
6087
-    metro-source-map "0.54.1"
6147
+    metro-babel-register "^0.56.4"
6148
+    metro-babel-transformer "^0.56.4"
6149
+    metro-cache "^0.56.4"
6150
+    metro-config "^0.56.4"
6151
+    metro-core "^0.56.4"
6152
+    metro-inspector-proxy "^0.56.4"
6153
+    metro-minify-uglify "^0.56.4"
6154
+    metro-react-native-babel-preset "^0.56.4"
6155
+    metro-resolver "^0.56.4"
6156
+    metro-source-map "^0.56.4"
6157
+    metro-symbolicate "^0.56.4"
6088 6158
     mime-types "2.1.11"
6089 6159
     mkdirp "^0.5.1"
6090 6160
     node-fetch "^2.2.0"
6091 6161
     nullthrows "^1.1.0"
6092
-    react-transform-hmr "^1.0.4"
6093 6162
     resolve "^1.5.0"
6094 6163
     rimraf "^2.5.4"
6095 6164
     serialize-error "^2.1.0"
@@ -6765,10 +6834,10 @@ oauth-sign@~0.9.0:
6765 6834
   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
6766 6835
   integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
6767 6836
 
6768
-ob1@0.55.0:
6769
-  version "0.55.0"
6770
-  resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.55.0.tgz#e393b4ae786ef442b3ef2a298ab70d6ec353dbdd"
6771
-  integrity sha512-pfyiMVsUItl8WiRKMT15eCi662pCRAuYTq2+V3UpE+PpFErJI/TvRh/M/l/9TaLlbFr7krJ7gdl+FXJNcybmvw==
6837
+ob1@^0.56.4:
6838
+  version "0.56.4"
6839
+  resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.56.4.tgz#c4acb3baa42f4993a44b35b2da7c8ef443dcccec"
6840
+  integrity sha512-URgFof9z2wotiYFsqlydXtQfGV81gvBI2ODy64xfd3vPo+AYom5PVDX4t4zn23t/O+S2IxqApSQM8uJAybmz7w==
6772 6841
 
6773 6842
 object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
6774 6843
   version "4.1.1"
@@ -7556,7 +7625,7 @@ react-deep-force-update@^1.0.0:
7556 7625
   resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz#3d2ae45c2c9040cbb1772be52f8ea1ade6ca2ee1"
7557 7626
   integrity sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA==
7558 7627
 
7559
-react-devtools-core@^3.6.1:
7628
+react-devtools-core@^3.6.3:
7560 7629
   version "3.6.3"
7561 7630
   resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.6.3.tgz#977d95b684c6ad28205f0c62e1e12c5f16675814"
7562 7631
   integrity sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==
@@ -7608,9 +7677,9 @@ react-native@0.60.5:
7608 7677
   integrity sha512-cZwI0XzzihACN+7an1Dy46A83FRaAe2Xyd7laCalFFAppZIYeMVphZQWrVljJk5kIZBNtYG35TY1VsghQ0Oc2Q==
7609 7678
   dependencies:
7610 7679
     "@babel/runtime" "^7.0.0"
7611
-    "@react-native-community/cli" "^2.6.0"
7612
-    "@react-native-community/cli-platform-android" "^2.6.0"
7613
-    "@react-native-community/cli-platform-ios" "^2.4.1"
7680
+    "@react-native-community/cli" "^3.0.0"
7681
+    "@react-native-community/cli-platform-android" "^3.0.0"
7682
+    "@react-native-community/cli-platform-ios" "^3.0.0"
7614 7683
     abort-controller "^3.0.0"
7615 7684
     art "^0.10.0"
7616 7685
     base64-js "^1.1.2"
@@ -7620,19 +7689,20 @@ react-native@0.60.5:
7620 7689
     event-target-shim "^5.0.1"
7621 7690
     fbjs "^1.0.0"
7622 7691
     fbjs-scripts "^1.1.0"
7623
-    hermesvm "^0.1.0"
7692
+    hermes-engine "^0.2.1"
7624 7693
     invariant "^2.2.4"
7625
-    jsc-android "245459.0.0"
7626
-    metro-babel-register "0.54.1"
7627
-    metro-react-native-babel-transformer "0.54.1"
7628
-    metro-source-map "^0.55.0"
7694
+    jsc-android "^245459.0.0"
7695
+    metro-babel-register "^0.56.0"
7696
+    metro-react-native-babel-transformer "^0.56.0"
7697
+    metro-source-map "^0.56.0"
7629 7698
     nullthrows "^1.1.0"
7630 7699
     pretty-format "^24.7.0"
7631 7700
     promise "^7.1.1"
7632 7701
     prop-types "^15.7.2"
7633
-    react-devtools-core "^3.6.1"
7702
+    react-devtools-core "^3.6.3"
7703
+    react-refresh "^0.4.0"
7634 7704
     regenerator-runtime "^0.13.2"
7635
-    scheduler "0.14.0"
7705
+    scheduler "0.15.0"
7636 7706
     stacktrace-parser "^0.1.3"
7637 7707
     whatwg-fetch "^3.0.0"
7638 7708
 
@@ -7644,6 +7714,11 @@ react-proxy@^1.1.7:
7644 7714
     lodash "^4.6.1"
7645 7715
     react-deep-force-update "^1.0.0"
7646 7716
 
7717
+react-refresh@^0.4.0:
7718
+  version "0.4.2"
7719
+  resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334"
7720
+  integrity sha512-kv5QlFFSZWo7OlJFNYbxRtY66JImuP2LcrFgyJfQaf85gSP+byzG21UbDQEYjU7f//ny8rwiEkO6py2Y+fEgAQ==
7721
+
7647 7722
 react-transform-hmr@^1.0.4:
7648 7723
   version "1.0.4"
7649 7724
   resolved "https://registry.yarnpkg.com/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz#e1a40bd0aaefc72e8dfd7a7cda09af85066397bb"
@@ -7652,15 +7727,14 @@ react-transform-hmr@^1.0.4:
7652 7727
     global "^4.3.0"
7653 7728
     react-proxy "^1.1.7"
7654 7729
 
7655
-react@16.6.3:
7656
-  version "16.6.3"
7657
-  resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c"
7658
-  integrity sha512-zCvmH2vbEolgKxtqXL2wmGCUxUyNheYn/C+PD1YAjfxHC54+MhdruyhO7QieQrYsYeTxrn93PM2y0jRH1zEExw==
7730
+react@16.9.0:
7731
+  version "16.9.0"
7732
+  resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa"
7733
+  integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==
7659 7734
   dependencies:
7660 7735
     loose-envify "^1.1.0"
7661 7736
     object-assign "^4.1.1"
7662 7737
     prop-types "^15.6.2"
7663
-    scheduler "^0.11.2"
7664 7738
 
7665 7739
 read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5:
7666 7740
   version "1.0.5"
@@ -8029,7 +8103,7 @@ resolve@1.1.7:
8029 8103
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
8030 8104
   integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
8031 8105
 
8032
-resolve@^1.10.0, resolve@^1.4.0:
8106
+resolve@^1.10.0:
8033 8107
   version "1.14.1"
8034 8108
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff"
8035 8109
   integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==
@@ -8043,6 +8117,13 @@ resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.
8043 8117
   dependencies:
8044 8118
     path-parse "^1.0.6"
8045 8119
 
8120
+resolve@^1.4.0:
8121
+  version "1.14.2"
8122
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2"
8123
+  integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==
8124
+  dependencies:
8125
+    path-parse "^1.0.6"
8126
+
8046 8127
 restore-cursor@^2.0.0:
8047 8128
   version "2.0.0"
8048 8129
   resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -8182,18 +8263,10 @@ sax@^1.2.1, sax@^1.2.4:
8182 8263
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
8183 8264
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
8184 8265
 
8185
-scheduler@0.14.0:
8186
-  version "0.14.0"
8187
-  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.14.0.tgz#b392c23c9c14bfa2933d4740ad5603cc0d59ea5b"
8188
-  integrity sha512-9CgbS06Kki2f4R9FjLSITjZo5BZxPsryiRNyL3LpvrM9WxcVmhlqAOc9E+KQbeI2nqej4JIIbOsfdL51cNb4Iw==
8189
-  dependencies:
8190
-    loose-envify "^1.1.0"
8191
-    object-assign "^4.1.1"
8192
-
8193
-scheduler@^0.11.2:
8194
-  version "0.11.3"
8195
-  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.3.tgz#b5769b90cf8b1464f3f3cfcafe8e3cd7555a2d6b"
8196
-  integrity sha512-i9X9VRRVZDd3xZw10NY5Z2cVMbdYg6gqFecfj79USv1CFN+YrJ3gIPRKf1qlY+Sxly4djoKdfx1T+m9dnRB8kQ==
8266
+scheduler@0.15.0:
8267
+  version "0.15.0"
8268
+  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e"
8269
+  integrity sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==
8197 8270
   dependencies:
8198 8271
     loose-envify "^1.1.0"
8199 8272
     object-assign "^4.1.1"
@@ -8247,7 +8320,7 @@ semver-regex@^2.0.0:
8247 8320
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
8248 8321
   integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
8249 8322
 
8250
-semver@^6.0.0, semver@^6.1.2, semver@^6.2.0:
8323
+semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
8251 8324
   version "6.3.0"
8252 8325
   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
8253 8326
   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -8801,6 +8874,11 @@ strip-json-comments@~2.0.1:
8801 8874
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
8802 8875
   integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
8803 8876
 
8877
+sudo-prompt@^9.0.0:
8878
+  version "9.1.1"
8879
+  resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0"
8880
+  integrity sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==
8881
+
8804 8882
 supports-color@^5.0.0, supports-color@^5.3.0:
8805 8883
   version "5.5.0"
8806 8884
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"