From 89f7ea43b3bab8e95a40f90d83f681941d01ba5b Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Fri, 27 Mar 2020 16:06:08 -0700 Subject: [PATCH] deps: Add react-native-unimodules@0.6.0 (no caret). This lets us use individual Expo packages. In particular, we plan to use expo-apple-authentication soon, for in place of some existing dependencies, such as (non-exhaustively) react-native-safe-area and react-native-orientation. So, add it, without yet using it, following instructions at https://github.com/unimodules/react-native-unimodules/blob/30da302a8/README.md. It looks like Unimodules has also gone by the name Universal Modules, but this may be an old name that has been superseded: https://github.com/unimodules/unimodules.org/compare/23c53ddd1...bdc80d910 Note that we omit the caret in 0.6.0, to disallow silent minor version upgrades. The maintainers are not adhering to semantic versioning, and they expect that you're using the latest version of React Native if you're using the latest version of unimodules, including minor versions; see https://github.com/unimodules/react-native-unimodules/issues/100#issuecomment-566436685. In that same comment, a maintainer says that 0.7.0-rc.4 is the minimum version with AndroidX compatibility. If this is true, then we may have a slight problem, because 0.7.0-rc.4, just like 0.6.0, does not work with RN 0.59.10. That would mean we had to do the AndroidX upgrade (PR #3852) at the same time as the RN v0.60 upgrade (issue #3548). Greg thinks it's likely that the maintainer is mistaken that there's a minimum version of unimodules required to use AndroidX; the AndroidX engineers designed a smooth migration path such that this shouldn't happen (see Greg's comment at https://github.com/zulip/zulip-mobile/pull/3987#issuecomment-601918696). A later commit in this series describes another concern with Expo's handling of version constraints, with expo-application (and others), with a reference to https://github.com/expo/expo/issues/7728, which I just filed. A couple of fixes had to be made to get it to work on Android: First, pass an additional argument to a constructor in MainApplication.java, in a fix given by a maintainer at https://github.com/unimodules/react-native-unimodules/issues/128#issuecomment-606027692. Second, specify a new dependency for `unimodules-react-native-adapter` in our own `android/build.gradle`, in a fix that is necessary because we're locked on version 0.6.0 of react-native-unimodules. Filed as https://github.com/unimodules/react-native-unimodules/issues/130. Also (not Android-specific), ran `yarn yarn-deduplicate` to deduplicate `ua-parser-js`, following a prompt from `tools/test deps`. Fixes: #3987 --- android/app/build.gradle | 3 + .../java/com/zulipmobile/MainApplication.java | 8 +- .../generated/BasePackageList.java | 15 ++ android/build.gradle | 6 + android/settings.gradle | 4 + ios/Podfile | 5 + ios/Podfile.lock | 107 ++++++++++++- ios/ZulipMobile/AppDelegate.h | 2 + ios/ZulipMobile/AppDelegate.m | 12 ++ package.json | 1 + yarn.lock | 150 +++++++++++++++++- 11 files changed, 305 insertions(+), 8 deletions(-) create mode 100644 android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java diff --git a/android/app/build.gradle b/android/app/build.gradle index cb59d21e97c..bcbece17100 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -2,6 +2,8 @@ apply plugin: "com.android.application" apply plugin: "kotlin-android" apply plugin: "kotlin-android-extensions" +apply from: '../../node_modules/react-native-unimodules/gradle.groovy' + import com.android.build.OutputFile /** @@ -211,6 +213,7 @@ dependencies { implementation "com.facebook.react:react-native:+" // From node_modules implementation 'com.facebook.fresco:animated-gif:1.10.0' // For animated GIF support implementation "com.android.support:customtabs:${rootProject.ext.supportLibVersion}" + addUnimodulesDependencies() testImplementation 'junit:junit:4.12' testImplementation 'org.junit.jupiter:junit-jupiter:5.4.0' diff --git a/android/app/src/main/java/com/zulipmobile/MainApplication.java b/android/app/src/main/java/com/zulipmobile/MainApplication.java index 3345bb576cf..a954aefd98c 100644 --- a/android/app/src/main/java/com/zulipmobile/MainApplication.java +++ b/android/app/src/main/java/com/zulipmobile/MainApplication.java @@ -20,12 +20,17 @@ import io.sentry.RNSentryPackage; import java.util.Arrays; import java.util.List; +import org.unimodules.adapters.react.ModuleRegistryAdapter; +import org.unimodules.adapters.react.ReactModuleRegistryProvider; +import com.zulipmobile.generated.BasePackageList; import com.zulipmobile.notifications.ConversationMap; import com.zulipmobile.notifications.FCMPushNotifications; import com.zulipmobile.notifications.NotificationsPackage; public class MainApplication extends Application implements ReactApplication { + private final ReactModuleRegistryProvider mModuleRegistryProvider = new ReactModuleRegistryProvider(new BasePackageList().getPackageList(), null); + private ConversationMap conversations; public ConversationMap getConversations() { return conversations; } @@ -52,7 +57,8 @@ protected List getPackages() { new RNSoundPackage(), new RNDeviceInfo(), new ZulipNativePackage(), - new NotificationsPackage() + new NotificationsPackage(), + new ModuleRegistryAdapter(mModuleRegistryProvider) ); } diff --git a/android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java b/android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java new file mode 100644 index 00000000000..38ccbfa4d86 --- /dev/null +++ b/android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java @@ -0,0 +1,15 @@ +package com.zulipmobile.generated; + +import java.util.Arrays; +import java.util.List; +import org.unimodules.core.interfaces.Package; + +public class BasePackageList { + public List getPackageList() { + return Arrays.asList( + new expo.modules.constants.ConstantsPackage(), + new expo.modules.filesystem.FileSystemPackage(), + new expo.modules.permissions.PermissionsPackage() + ); + } +} diff --git a/android/build.gradle b/android/build.gradle index c762aad8e80..ce37b70b41d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -53,6 +53,12 @@ project(":react-native-device-info").beforeEvaluate { ext.googlePlayServicesVersion = "16.1.0" } +project(":unimodules-react-native-adapter").afterEvaluate { + it.dependencies { + implementation 'com.facebook.react:react-native:+' + } +} + subprojects { afterEvaluate { if (project.hasProperty("android")) { diff --git a/android/settings.gradle b/android/settings.gradle index c8fe94dd775..e2003ec3fab 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,4 +1,8 @@ rootProject.name = 'ZulipMobile' + +apply from: '../node_modules/react-native-unimodules/gradle.groovy' +includeUnimodulesProjects() + include ':@react-native-community_async-storage' project(':@react-native-community_async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/async-storage/android') include ':@sentry_react-native' diff --git a/ios/Podfile b/ios/Podfile index 1ebb769cca2..0f83a39767a 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -2,6 +2,8 @@ # (project > ZulipMobile > Info in Xcode) platform :ios, '10.3' +require_relative '../node_modules/react-native-unimodules/cocoapods.rb' + # This list will need to change for RN >= v0.60. If you're changing it # for any other reason, first look at the example Podfile for v0.59 at # https://github.com/facebook/react-native-website/blob/ded79d2cf/docs/integration-with-existing-apps.md#configuring-cocoapods-dependencies. @@ -47,6 +49,9 @@ target 'ZulipMobile' do pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-community/async-storage' pod 'react-native-simple-toast', :path => '../node_modules/react-native-simple-toast' + # unimodules provides Expo packages individually. + use_unimodules! + target 'ZulipMobileTests' do inherit! :search_paths # Pods for testing diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 6e5e5c8f28c..24f59e6bd0f 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,6 +1,16 @@ PODS: - boost-for-react-native (1.63.0) - DoubleConversion (1.1.6) + - EXAppLoaderProvider (7.0.0) + - EXConstants (7.0.1): + - UMConstantsInterface + - UMCore + - EXFileSystem (7.0.0): + - UMCore + - UMFileSystemInterface + - EXPermissions (7.0.0): + - UMCore + - UMPermissionsInterface - Folly (2018.10.22.00): - boost-for-react-native - DoubleConversion @@ -107,10 +117,29 @@ PODS: - Sentry/Core (= 4.4.3) - Sentry/Core (4.4.3) - Toast (4.0.0) + - UMBarCodeScannerInterface (4.0.0) + - UMCameraInterface (4.0.0) + - UMConstantsInterface (4.0.0) + - UMCore (4.0.0) + - UMFaceDetectorInterface (4.0.0) + - UMFileSystemInterface (4.0.0) + - UMFontInterface (4.0.0) + - UMImageLoaderInterface (4.0.0) + - UMPermissionsInterface (4.0.0) + - UMReactNativeAdapter (4.0.0): + - React + - UMCore + - UMFontInterface + - UMSensorsInterface (4.0.0) + - UMTaskManagerInterface (4.0.0) - yoga (0.59.10.React) DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - EXAppLoaderProvider (from `../node_modules/expo-app-loader-provider/ios`) + - EXConstants (from `../node_modules/expo-constants/ios`) + - EXFileSystem (from `../node_modules/expo-file-system/ios`) + - EXPermissions (from `../node_modules/expo-permissions/ios`) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - react-native-image-picker (from `../node_modules/react-native-image-picker`) @@ -144,6 +173,18 @@ DEPENDENCIES: - "RNSentry (from `../node_modules/@sentry/react-native`)" - RNSound (from `../node_modules/react-native-sound`) - RNVectorIcons (from `../node_modules/react-native-vector-icons`) + - UMBarCodeScannerInterface (from `../node_modules/unimodules-barcode-scanner-interface/ios`) + - UMCameraInterface (from `../node_modules/unimodules-camera-interface/ios`) + - UMConstantsInterface (from `../node_modules/unimodules-constants-interface/ios`) + - "UMCore (from `../node_modules/@unimodules/core/ios`)" + - UMFaceDetectorInterface (from `../node_modules/unimodules-face-detector-interface/ios`) + - UMFileSystemInterface (from `../node_modules/unimodules-file-system-interface/ios`) + - UMFontInterface (from `../node_modules/unimodules-font-interface/ios`) + - UMImageLoaderInterface (from `../node_modules/unimodules-image-loader-interface/ios`) + - UMPermissionsInterface (from `../node_modules/unimodules-permissions-interface/ios`) + - "UMReactNativeAdapter (from `../node_modules/@unimodules/react-native-adapter/ios`)" + - UMSensorsInterface (from `../node_modules/unimodules-sensors-interface/ios`) + - UMTaskManagerInterface (from `../node_modules/unimodules-task-manager-interface/ios`) - yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: @@ -155,6 +196,18 @@ SPEC REPOS: EXTERNAL SOURCES: DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + EXAppLoaderProvider: + :path: !ruby/object:Pathname + path: "../node_modules/expo-app-loader-provider/ios" + EXConstants: + :path: !ruby/object:Pathname + path: "../node_modules/expo-constants/ios" + EXFileSystem: + :path: !ruby/object:Pathname + path: "../node_modules/expo-file-system/ios" + EXPermissions: + :path: !ruby/object:Pathname + path: "../node_modules/expo-permissions/ios" Folly: :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" glog: @@ -191,12 +244,52 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-sound" RNVectorIcons: :path: "../node_modules/react-native-vector-icons" + UMBarCodeScannerInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-barcode-scanner-interface/ios" + UMCameraInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-camera-interface/ios" + UMConstantsInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-constants-interface/ios" + UMCore: + :path: !ruby/object:Pathname + path: "../node_modules/@unimodules/core/ios" + UMFaceDetectorInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-face-detector-interface/ios" + UMFileSystemInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-file-system-interface/ios" + UMFontInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-font-interface/ios" + UMImageLoaderInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-image-loader-interface/ios" + UMPermissionsInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-permissions-interface/ios" + UMReactNativeAdapter: + :path: !ruby/object:Pathname + path: "../node_modules/@unimodules/react-native-adapter/ios" + UMSensorsInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-sensors-interface/ios" + UMTaskManagerInterface: + :path: !ruby/object:Pathname + path: "../node_modules/unimodules-task-manager-interface/ios" yoga: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c DoubleConversion: bb338842f62ab1d708ceb63ec3d999f0f3d98ecd + EXAppLoaderProvider: 5d348813a9cf09b03bbe5b8b55437bc1bfbddbd1 + EXConstants: 857aa7b1c84e2878f8402d712061860bca16a697 + EXFileSystem: 7e53a2c30a2eb6987ba6d5158ab908f947523228 + EXPermissions: df10ad83df2f6b647aec304619354f8ab48d5f63 Folly: de497beb10f102453a1afa9edbf8cf8a251890de glog: aefd1eb5dda2ab95ba0938556f34b98e2da3a60d React: 36d0768f9e93be2473b37e7fa64f92c1d5341eef @@ -217,8 +310,20 @@ SPEC CHECKSUMS: RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 Sentry: 14bdd673870e8cf64932b149fad5bbbf39a9b390 Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 + UMBarCodeScannerInterface: d5a6fdc98ed6241225b0a8432a7f4e2b397668bc + UMCameraInterface: 68870a3197fee85bd5afca5609ba4a5b7257d19d + UMConstantsInterface: d25b8e8887ca7aaf568c06caf08f4d40734ee4ef + UMCore: 402cee150324974974f5c32b5404d8af65e4cff5 + UMFaceDetectorInterface: 7b4f1a92f0c726b58b086296048efe193b570678 + UMFileSystemInterface: aadb9a67aa6470d7ebc06cf04dc54fee6781ac48 + UMFontInterface: 2d3c128285086bbed3d2a650f1d698323ef3b25a + UMImageLoaderInterface: 2829a7571a12d2e754c73c55ffe7e327d8402c7d + UMPermissionsInterface: b6a6e96db0f4011a25aaca14e6022529dd3d6e4e + UMReactNativeAdapter: 93c2f520a1cdb6ef3058a7b6a95275a804e0923b + UMSensorsInterface: cf59dd7602764a2419e00167429be3e4be39c61d + UMTaskManagerInterface: 1e70fe58b872355f0ecb44fb81bb1a16484047f0 yoga: 684513b14b03201579ba3cee20218c9d1298b0cc -PODFILE CHECKSUM: 882347e8d497f7575a47b2d21471f49b106eed82 +PODFILE CHECKSUM: 762c4b235bcb63c57985514d4c13253fe5e51782 COCOAPODS: 1.8.4 diff --git a/ios/ZulipMobile/AppDelegate.h b/ios/ZulipMobile/AppDelegate.h index 90e4d6a2f6b..7c3d3fb0261 100644 --- a/ios/ZulipMobile/AppDelegate.h +++ b/ios/ZulipMobile/AppDelegate.h @@ -9,9 +9,11 @@ #import #import +#import @interface AppDelegate : UIResponder +@property (nonatomic, strong) UMModuleRegistryAdapter *moduleRegistryAdapter; @property (nonatomic, strong) UIWindow *window; @end diff --git a/ios/ZulipMobile/AppDelegate.m b/ios/ZulipMobile/AppDelegate.m index e7fa3849807..beab8d010fb 100644 --- a/ios/ZulipMobile/AppDelegate.m +++ b/ios/ZulipMobile/AppDelegate.m @@ -17,12 +17,16 @@ #import #import #import +#import +#import +#import @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { RCTSetLogThreshold(RCTLogLevelError); + self.moduleRegistryAdapter = [[UMModuleRegistryAdapter alloc] initWithModuleRegistryProvider:[[UMModuleRegistryProvider alloc] init]]; RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge @@ -39,6 +43,14 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( return YES; } +- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge +{ + NSArray> *extraModules = [_moduleRegistryAdapter extraModulesForBridge:bridge]; + // You can inject any extra modules that you would like here, more information at: + // https://facebook.github.io/react-native/docs/native-modules-ios.html#dependency-injection + return extraModules; +} + - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge { // The template upstream has some `#if DEBUG` goo around this, to diff --git a/package.json b/package.json index ca769eed83d..f74f769e93c 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "react-native-simple-toast": "^1.0.0", "react-native-sound": "^0.10.9", "react-native-text-input-reset": "^1.0.2", + "react-native-unimodules": "0.6.0", "react-native-vector-icons": "^6.6.0", "react-native-webview": "^5.0.0", "react-navigation": "^2.18.3", diff --git a/yarn.lock b/yarn.lock index 048bb1d313d..fbf17bed9fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1463,6 +1463,22 @@ lodash.unescape "4.0.1" semver "5.5.0" +"@unimodules/core@~4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@unimodules/core/-/core-4.0.0.tgz#898dafa5a121e7d6d7d4acd9c0c38d12f7da5b19" + integrity sha512-lHxRmCG9DK3/aA2lnBKPS32K95NpYE10mZQRp5dycSptgN0DIeWWHuE01SndcSUACGyEP+tDO+DnGo8mhLlt4Q== + dependencies: + compare-versions "^3.4.0" + +"@unimodules/react-native-adapter@~4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@unimodules/react-native-adapter/-/react-native-adapter-4.0.0.tgz#2e02246f6450201d6cb0720f849c7059e8a9bc6d" + integrity sha512-zGAyDhqAEWvshdSxc523srP6OAZaSr95Cv5EuxLJbFGcJENHhK8o/qxhwS7/LYTF3LqtOlnSlwQta3v3y6kF4A== + dependencies: + invariant "^2.2.4" + lodash "^4.5.0" + prop-types "^15.6.1" + "@yarnpkg/lockfile@^1.0.2", "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -2566,6 +2582,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compare-versions@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -3601,6 +3622,39 @@ expect@^24.1.0, expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" +expo-app-loader-provider@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-app-loader-provider/-/expo-app-loader-provider-7.0.0.tgz#9bfff831a204d0a8896e0120bce2209c4304ef03" + integrity sha512-C+5zpZN2T7PCj7weLs/ZgAC+y9dvu0VdTXD00Jf9Wo7Pxu/lsLh6ljg9JL91c+2tYDzMEODPNmT+JOUIxAr5zQ== + +expo-asset@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-7.0.0.tgz#6d2ba460dd43807f40580199c0b76c508eb1ca63" + integrity sha512-MwWrlpzaZqT0NU0V3Wn8oA1pMb7Al49aYAWMPEUZ2UV5NyVAbzYPuS2duIfwX55ivczjJZHpwrhd0hb/3l9ngQ== + dependencies: + blueimp-md5 "^2.10.0" + path-browserify "^1.0.0" + url-parse "^1.4.4" + +expo-constants@~7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-7.0.1.tgz#87be02b6dae5c44a3246537452a0d77af15d46bf" + integrity sha512-n9S6lsEfTAhLY+x/Yrtc1rvVUhuEF+CcSWr/reAIGtk35+PYrAKfV4pbetRtqX9tl947bJv7kBQX6jpwYpeIpQ== + dependencies: + ua-parser-js "^0.7.19" + +expo-file-system@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-7.0.0.tgz#ac98233b18774cce299fffd9451f08f21b116564" + integrity sha512-ignf5Vf5cPDYO/4HgUkgnL574wMbCNxyazlOvBgV34rLGJzBbFsn++hqC7njr2VTpIIXh2G9vp1+8g6cvsQdqA== + dependencies: + uuid-js "^0.7.5" + +expo-permissions@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-permissions/-/expo-permissions-7.0.0.tgz#f4135c3cf8e49c673a9a714459a1eb2b40fe2092" + integrity sha512-C+qyVz+pdZO4YpVR2HSC3gsBZg0Qb8brCFgzmDmWcAtgrOiHClaLPdhI2XtQuGh8ubXcKPUGZp++UCEGiG0Jxg== + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -6126,7 +6180,7 @@ lodash.uniqby@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= -lodash@^4.0.0, lodash@^4.14.2, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1, lodash@^4.7.14: +lodash@^4.0.0, lodash@^4.14.2, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1, lodash@^4.7.14: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -7468,6 +7522,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -8074,6 +8133,30 @@ react-native-text-input-reset@^1.0.2: resolved "https://registry.yarnpkg.com/react-native-text-input-reset/-/react-native-text-input-reset-1.0.2.tgz#cfaa6d9b45da934e1725c01b1698f8a05591661c" integrity sha512-URM1iHWBhYkdQ6zuBGdbX1hIav9aDTKnlGDnZQk3Ny+lxKmgsMHfFf1QZe8c91Gyj/SnCWgQMVv3um4T0kXqQw== +react-native-unimodules@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/react-native-unimodules/-/react-native-unimodules-0.6.0.tgz#f62c753705f4b97ba19e2834d8ad3357e204537c" + integrity sha512-b563vqelTLtagFLWiI428rUTx4BxWpytlsEC1xcAQdf8chtnVr7QrkRXatiIvJmDAYLL8l+8UxdBW9e0f2rZ9Q== + dependencies: + "@unimodules/core" "~4.0.0" + "@unimodules/react-native-adapter" "~4.0.0" + chalk "^2.4.2" + expo-app-loader-provider "~7.0.0" + expo-asset "~7.0.0" + expo-constants "~7.0.0" + expo-file-system "~7.0.0" + expo-permissions "~7.0.0" + unimodules-barcode-scanner-interface "~4.0.0" + unimodules-camera-interface "~4.0.0" + unimodules-constants-interface "~4.0.0" + unimodules-face-detector-interface "~4.0.0" + unimodules-file-system-interface "~4.0.0" + unimodules-font-interface "~4.0.0" + unimodules-image-loader-interface "~4.0.0" + unimodules-permissions-interface "~4.0.0" + unimodules-sensors-interface "~4.0.0" + unimodules-task-manager-interface "~4.0.0" + react-native-vector-icons@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-6.6.0.tgz#66cf004918eb05d90778d64bd42077c1800d481b" @@ -9869,10 +9952,10 @@ typescript@^3.2.1, typescript@^3.3.3333: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== -ua-parser-js@^0.7.18: - version "0.7.20" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" - integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== +ua-parser-js@^0.7.18, ua-parser-js@^0.7.19: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== uglify-es@^3.1.9: version "3.3.9" @@ -9928,6 +10011,56 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== +unimodules-barcode-scanner-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-barcode-scanner-interface/-/unimodules-barcode-scanner-interface-4.0.0.tgz#69c54ef0d25448dc380de9ca3b0cba3daa2a94c4" + integrity sha512-XAW+8s7w/dQ514I/SPfBKHPmbaCOEpYAkdn1aaBoWocVfdvOKf8SqwHSIaP2W/SFUwWNRF4Wqv2HBt1dvuhSSg== + +unimodules-camera-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-camera-interface/-/unimodules-camera-interface-4.0.0.tgz#234c28f4d326ef3e30f15572c07e528557485619" + integrity sha512-rEYD3mKarxzgiWWL8J0mPAxzV4i1WI9DsNMRxyV2T7qC/WWIucroZX72O1BkYjUbIKerGmJWeGYbWHheP4/rsA== + +unimodules-constants-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-constants-interface/-/unimodules-constants-interface-4.0.0.tgz#c71be663a442b43eed773451a4f366a1c47821ac" + integrity sha512-FTM64GP+uawURWhuExrsCMebpcu0DdREUCuUmes5qd3/uTM2gqmhbm/ZwSKviH/ar4h630Fdb6P6v9o4MDInbA== + +unimodules-face-detector-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-face-detector-interface/-/unimodules-face-detector-interface-4.0.0.tgz#c68e44d5363d3dfea6f697d983254ac199555074" + integrity sha512-ZFzqcNnJkBxvfdKCupvtQUj1yVJkzKivPGV6nydKZc9eJRLUgSXCUWtvXd0vaet1NSQqr2R3r6Ilvj0DzuCzUA== + +unimodules-file-system-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-file-system-interface/-/unimodules-file-system-interface-4.0.0.tgz#e8514882a81cd350b69c6026fd52b6d99ba289c9" + integrity sha512-dDcKjArDwY3CXLlCL8tf9/JJG25K2lgtAL+560kqrftLu3pi0x5V7JmSDz52pJ4pLd5xL8s1Rzse+rIr5OpM3g== + +unimodules-font-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-font-interface/-/unimodules-font-interface-4.0.0.tgz#a72d7c75d81dface00c48f523730c15ddf10fbce" + integrity sha512-RFD1H405kZy8oYcg7f9Krr+UTUn6EZTcqAb+wRL6Ex9TJmzmxJT6JZ0FsUMezOUEwrdvXRpArH4P1AadHlzzGA== + +unimodules-image-loader-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-image-loader-interface/-/unimodules-image-loader-interface-4.0.0.tgz#92452bfcba5e95b4fc3aba657a5863946d1ccf93" + integrity sha512-tv7g1YmZq9ZnG/x9l3qSlpEn93ZuMD+FuQpOZj3/oGDkBlc27vtBSEi8lTySWb9U7UK+bNlHGFqf1lGZcFU1Ug== + +unimodules-permissions-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-permissions-interface/-/unimodules-permissions-interface-4.0.0.tgz#c5e044921f5d5867552c991100a5824962fd6b72" + integrity sha512-bVZ6JQMO12WvAv6YqcHaPV5KekV7WH606eRiMJq5Qwm2z9yGSM+KaOxOH/n2LVcYckForphsCLf58OGVUtM65Q== + +unimodules-sensors-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-sensors-interface/-/unimodules-sensors-interface-4.0.0.tgz#7f8250b732f7aa0560e04537bea547f304f45c0b" + integrity sha512-O7l+N2DLwviTc6gz/ptV7a930Sdo30AvzQLEJPHfqj4e9fCdbrHNrcPqiq0CLqHYYIsdpSDpC6wCWmepLaAgJQ== + +unimodules-task-manager-interface@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unimodules-task-manager-interface/-/unimodules-task-manager-interface-4.0.0.tgz#2cf1949ef041ebbd6d9a32d799d1640e1d8f03d7" + integrity sha512-c7x5hgEtT+oIVd37TBn2jxlTw2+Bgb55XZ2Md0AV5NCjeRlKw2bIBPwUvSdI1iAziSQOIGOImNaaIUo3L3zW3w== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -10037,7 +10170,7 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" -url-parse@^1.4.0: +url-parse@^1.4.0, url-parse@^1.4.4: version "1.4.7" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== @@ -10098,6 +10231,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +uuid-js@^0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/uuid-js/-/uuid-js-0.7.5.tgz#6c886d02a53d2d40dcf25d91a170b4a7b25b94d0" + integrity sha1-bIhtAqU9LUDc8l2RoXC0p7JblNA= + uuid@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"