From 41f0b0df3d991df144d8ca231b507aacade3358f Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Thu, 11 Jun 2020 13:59:09 -0700 Subject: [PATCH 1/6] deps: Upgrade `react-native-webview` to ~10.0.0. We'd like to upgrade to the latest, but versions 10.1.0 and above don't have support for RN v0.61; minimum supported is v0.62. (Hence the tilde.) Breaking changes announced: - v9: iOS: Props updates to `injectedJavaScript` are no longer immutable. We don't use the `injectedJavaScript` prop, so this is fine. - v10: gradle: The Android Gradle plugin is only required when opening the project stand-alone, not when it is included as a dependency. [...] This doesn't sound like a description of a breaking change. As Greg said [0], "a thing is no longer required in a case where it previously was". We hesitate to take an x.0.0 version -- what if there are important bugfixes in minor/patch versions for issues introduced in that x.0.0 version? -- but they've made it a custom to post a note at the release if they know of major regressions, telling you to use a later version [1]. And no such note exists at v10.0.0. As a concrete example, we were concerned that the "bug fixes" identified in the v10.1.0 release might have been aimed at regressions introduced in v10.0.0. But following links to the mentioned PR and its corresponding issues (the second looks like a resumption of the first), it looks like a fix for a bug reported all the way back in version 5. So this isn't a reason to use v9.x.x instead of v10.0.0. Greg points out [2]: """ In a project that takes major vs. minor releases seriously, where a minor release means cherry-picked backported changes, I'd assume from this context that the major release introduced the issue. (Projects like that include RN itself, and the Zulip server.) But with this project I get the impression that their releases are all a linear stream of snapshots from master. Also that they do the flavor of "semantic versioning" that's basically "bump the major version number frequently and at random". So that makes this less clear. """ Ah, well. Also, update the libdef according to changes in `src/WebViewTypes.ts` in the `react-native-webview` repo. [0]: https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/RN.2060.20upgrade.3A.20react-native-webview/near/893807 [1]: See, e.g., v10.1.0, at https://github.com/react-native-community/react-native-webview/releases/tag/v10.1.0. [2]: https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/RN.20v0.2E61.3A.20react-native-webview/near/901944 --- ...x.x.js => react-native-webview_v10.x.x.js} | 39 +++++++++++++++++++ ios/Podfile.lock | 4 +- package.json | 2 +- yarn.lock | 8 ++-- 4 files changed, 46 insertions(+), 7 deletions(-) rename flow-typed/{react-native-webview_v8.x.x.js => react-native-webview_v10.x.x.js} (92%) diff --git a/flow-typed/react-native-webview_v8.x.x.js b/flow-typed/react-native-webview_v10.x.x.js similarity index 92% rename from flow-typed/react-native-webview_v8.x.x.js rename to flow-typed/react-native-webview_v10.x.x.js index 9805a29601..3bdafafc3a 100644 --- a/flow-typed/react-native-webview_v8.x.x.js +++ b/flow-typed/react-native-webview_v10.x.x.js @@ -1,3 +1,8 @@ +// We have not transcribed the types corresponding to Windows and +// macOS support, e.g., from +// react-native-community/react-native-webview@ffee0d436 and +// react-native-community/react-native-webview@1e572318e. + /* * Types copied (completely or incompletely) from `react-native`; we * can't import them. See @@ -59,6 +64,7 @@ declare module 'react-native-webview' { } from 'react-native-webview/@@react-native'; declare export type MixedContentMode = 'never' | 'always' | 'compatibility'; + declare export type FileDownload = { downloadUrl: string }; declare export type DecelerationRateConstant = 'normal' | 'fast'; declare export type OverScrollModeType = 'always' | 'content' | 'never'; @@ -154,6 +160,7 @@ declare module 'react-native-webview' { declare export type WebViewEvent = SyntheticEvent; declare export type WebViewNavigationEvent = SyntheticEvent; + declare export type FileDownloadEvent = NativeSyntheticEvent; declare export type WebViewMessageEvent = SyntheticEvent; declare export type WebViewErrorEvent = SyntheticEvent; declare export type WebViewHttpErrorEvent = SyntheticEvent; @@ -337,6 +344,38 @@ declare module 'react-native-webview' { * @platform ios */ onContentProcessDidTerminate?: WebViewTerminatedEvent => mixed, + + /** + * If `true` (default), loads the `injectedJavaScript` only into the main frame. + * If `false`, loads it into all frames (e.g. iframes). + * @platform ios + */ + injectedJavaScriptForMainFrameOnly?: boolean, + + /** + * If `true` (default), loads the `injectedJavaScriptBeforeContentLoaded` only into the main frame. + * If `false`, loads it into all frames (e.g. iframes). + * @platform ios + */ + injectedJavaScriptBeforeContentLoadedForMainFrameOnly?: boolean, + + /** + * Function that is invoked when the client needs to download a file. + * + * iOS 13+ only: If the webview navigates to a URL that results in an HTTP + * response with a Content-Disposition header 'attachment...', then + * this will be called. + * + * iOS 8+: If the MIME type indicates that the content is not renderable by the + * webview, that will also cause this to be called. On iOS versions before 13, + * this is the only condition that will cause this function to be called. + * + * The application will need to provide its own code to actually download + * the file. + * + * If not provided, the default is to let the webview try to render the file. + */ + onFileDownload?: (event: FileDownloadEvent) => void, |}; declare export type IOSWebViewProps = {| ...IOSOnlyWebViewProps, ...WebViewSharedProps |}; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 7870ff179f..72bc4ddab4 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -224,7 +224,7 @@ PODS: - react-native-simple-toast (1.0.0): - React - Toast (~> 4.0.0) - - react-native-webview (8.0.4): + - react-native-webview (10.0.0): - React - React-RCTActionSheet (0.61.5): - React-Core/RCTActionSheetHeaders (= 0.61.5) @@ -543,7 +543,7 @@ SPEC CHECKSUMS: react-native-safari-view: 955d7160d159241b8e9395d12d10ea0ef863dcdd react-native-safe-area: 5fce5242419932bc05656f31bc5f0716e30be0f6 react-native-simple-toast: 6c376bd79b1e255a4bee90a72ead6447f96ea10d - react-native-webview: 3f5aa91c3cb083ea4762e006b9653291a96a777a + react-native-webview: 83d00afd3f3ebfbee7f02d149ce1bfa8494d55f3 React-RCTActionSheet: 600b4d10e3aea0913b5a92256d2719c0cdd26d76 React-RCTAnimation: 791a87558389c80908ed06cc5dfc5e7920dfa360 React-RCTBlob: d89293cc0236d9cb0933d85e430b0bbe81ad1d72 diff --git a/package.json b/package.json index ae3b187338..f2042628ff 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "react-native-unimodules": "0.6.0", "react-native-url-polyfill": "1.2.0-rc.0", "react-native-vector-icons": "^6.6.0", - "react-native-webview": "8.0.4", + "react-native-webview": "~10.0.0", "react-navigation": "^2.18.3", "react-navigation-redux-helpers": "^2.0.9", "react-navigation-tabs": "0.8.4", diff --git a/yarn.lock b/yarn.lock index cf171e18cc..3c69587a2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8168,10 +8168,10 @@ react-native-vector-icons@^6.6.0: prop-types "^15.6.2" yargs "^13.2.2" -react-native-webview@8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-8.0.4.tgz#4951df32bd54f6fa16bc0eda5e6e6762d8b83ba8" - integrity sha512-XEatna1wwF43Rg500HaDIC/MS2IAob/PvjkTePCevs9wQz90SwERTjGZNuM2WxH+JwrZrxoilGBOn34vQTTJkw== +react-native-webview@~10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-10.0.0.tgz#a01c69fbf63d0b12cb8238c09b7baa61e657daa4" + integrity sha512-GCROVTfnQr4h/FYEHXYGdlXAifJ7cUjdtpPZgpZNZN4yP8J+VdyZTqJLfgCPsMnZsL+tCr4JAuaoK8GnFjnqLQ== dependencies: escape-string-regexp "2.0.0" invariant "2.2.4" From e116c3f9d707b147af4919dc3d2b0e1680486fd0 Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Thu, 11 Jun 2020 14:58:15 -0700 Subject: [PATCH 2/6] deps: Upgrade `react-native-unimodules` to ^0.9.1, the latest. This is possible, now that the RN v0.60 -> v0.61 upgrade is complete! [1] Change the `@unimodules/core` version, following a valid instruction in bc27f2df2: """ So, declare @unimodules/core in our own "dependencies", with the version specified by react-native-unimodules in its active version. This matching should be done each time we change versions of react-native-unimodules. """ Also, remove some now-unnecessary code in `android/build.gradle`, as foreshadowed in cb87f9062: """ 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. """ There are some reasonable, automatic changes to the version-controlled files that ensure that unimodules are automatically linked [2]: `ios/Podfile.lock` and `android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java`. These look like some modules that are part of `react-native-unimodules`' core; these additions are caused by the upgrade and don't stem from running something like `yarn add expo-apple-authentication` to get a particular Unimodule. Also, run `yarn yarn-deduplicate && yarn` as prompted by `tools/test deps`. [1]: See discussion of the various obstacles at https://github.com/unimodules/react-native-unimodules/issues/97#issuecomment-637714639 and https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/Podfile.20dependency.20of.20a.20dependency/near/892373. [2]: This is similar to but distinct from `react-native`'s "autolinking" feature that we activated in f46046027 and a9a9ac7b3. See https://github.com/unimodules/react-native-unimodules/issues/75#issuecomment-536517253 for a comment on that. Fixes: #4091 --- .../generated/BasePackageList.java | 1 + android/build.gradle | 6 - ios/Podfile.lock | 136 +++++----- package.json | 4 +- yarn.lock | 232 ++++++++++-------- 5 files changed, 195 insertions(+), 184 deletions(-) diff --git a/android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java b/android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java index 029defc71d..41cf3271ac 100644 --- a/android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java +++ b/android/app/src/main/java/com/zulipmobile/generated/BasePackageList.java @@ -10,6 +10,7 @@ public List getPackageList() { new expo.modules.application.ApplicationPackage(), new expo.modules.constants.ConstantsPackage(), new expo.modules.filesystem.FileSystemPackage(), + new expo.modules.imageloader.ImageLoaderPackage(), new expo.modules.permissions.PermissionsPackage(), new expo.modules.screenorientation.ScreenOrientationPackage() ); diff --git a/android/build.gradle b/android/build.gradle index d11436099d..29f397f67c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -56,12 +56,6 @@ 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/ios/Podfile.lock b/ios/Podfile.lock index 72bc4ddab4..f923278ac1 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -5,14 +5,17 @@ PODS: - UMCore - EXApplication (2.1.1): - UMCore - - EXAppLoaderProvider (7.0.0) - - EXConstants (7.0.1): + - EXConstants (9.0.0): - UMConstantsInterface - UMCore - - EXFileSystem (7.0.0): + - EXFileSystem (8.1.0): - UMCore - UMFileSystemInterface - - EXPermissions (7.0.0): + - EXImageLoader (1.0.1): + - React-Core + - UMCore + - UMImageLoaderInterface + - EXPermissions (8.1.0): - UMCore - UMPermissionsInterface - EXScreenOrientation (1.0.0): @@ -283,30 +286,32 @@ 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 + - UMAppLoader (1.0.2) + - UMBarCodeScannerInterface (5.1.0) + - UMCameraInterface (5.1.0) + - UMConstantsInterface (5.1.0) + - UMCore (5.1.2) + - UMFaceDetectorInterface (5.1.0) + - UMFileSystemInterface (5.1.0) + - UMFontInterface (5.1.0) + - UMImageLoaderInterface (5.1.0) + - UMPermissionsInterface (5.1.0): + - UMCore + - UMReactNativeAdapter (5.2.0): + - React-Core - UMCore - UMFontInterface - - UMSensorsInterface (4.0.0) - - UMTaskManagerInterface (4.0.0) + - UMSensorsInterface (5.1.0) + - UMTaskManagerInterface (5.1.0) - Yoga (1.14.0) DEPENDENCIES: - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - EXAppleAuthentication (from `../node_modules/expo-apple-authentication/ios`) - EXApplication (from `../node_modules/expo-application/ios`) - - EXAppLoaderProvider (from `../node_modules/expo-app-loader-provider/ios`) - EXConstants (from `../node_modules/expo-constants/ios`) - EXFileSystem (from `../node_modules/expo-file-system/ios`) + - EXImageLoader (from `../node_modules/expo-image-loader/ios`) - EXPermissions (from `../node_modules/expo-permissions/ios`) - EXScreenOrientation (from `../node_modules/expo-screen-orientation/ios`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) @@ -351,6 +356,7 @@ DEPENDENCIES: - "RNSentry (from `../node_modules/@sentry/react-native`)" - RNSound (from `../node_modules/react-native-sound`) - RNVectorIcons (from `../node_modules/react-native-vector-icons`) + - UMAppLoader (from `../node_modules/unimodules-app-loader/ios`) - 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`) @@ -375,26 +381,19 @@ EXTERNAL SOURCES: DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" EXAppleAuthentication: - :path: !ruby/object:Pathname - path: "../node_modules/expo-apple-authentication/ios" + :path: "../node_modules/expo-apple-authentication/ios" EXApplication: - :path: !ruby/object:Pathname - path: "../node_modules/expo-application/ios" - EXAppLoaderProvider: - :path: !ruby/object:Pathname - path: "../node_modules/expo-app-loader-provider/ios" + :path: "../node_modules/expo-application/ios" EXConstants: - :path: !ruby/object:Pathname - path: "../node_modules/expo-constants/ios" + :path: "../node_modules/expo-constants/ios" EXFileSystem: - :path: !ruby/object:Pathname - path: "../node_modules/expo-file-system/ios" + :path: "../node_modules/expo-file-system/ios" + EXImageLoader: + :path: "../node_modules/expo-image-loader/ios" EXPermissions: - :path: !ruby/object:Pathname - path: "../node_modules/expo-permissions/ios" + :path: "../node_modules/expo-permissions/ios" EXScreenOrientation: - :path: !ruby/object:Pathname - path: "../node_modules/expo-screen-orientation/ios" + :path: "../node_modules/expo-screen-orientation/ios" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" FBReactNativeSpec: @@ -473,42 +472,32 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-sound" RNVectorIcons: :path: "../node_modules/react-native-vector-icons" + UMAppLoader: + :path: "../node_modules/unimodules-app-loader/ios" UMBarCodeScannerInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-barcode-scanner-interface/ios" + :path: "../node_modules/unimodules-barcode-scanner-interface/ios" UMCameraInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-camera-interface/ios" + :path: "../node_modules/unimodules-camera-interface/ios" UMConstantsInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-constants-interface/ios" + :path: "../node_modules/unimodules-constants-interface/ios" UMCore: - :path: !ruby/object:Pathname - path: "../node_modules/@unimodules/core/ios" + :path: "../node_modules/@unimodules/core/ios" UMFaceDetectorInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-face-detector-interface/ios" + :path: "../node_modules/unimodules-face-detector-interface/ios" UMFileSystemInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-file-system-interface/ios" + :path: "../node_modules/unimodules-file-system-interface/ios" UMFontInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-font-interface/ios" + :path: "../node_modules/unimodules-font-interface/ios" UMImageLoaderInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-image-loader-interface/ios" + :path: "../node_modules/unimodules-image-loader-interface/ios" UMPermissionsInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-permissions-interface/ios" + :path: "../node_modules/unimodules-permissions-interface/ios" UMReactNativeAdapter: - :path: !ruby/object:Pathname - path: "../node_modules/@unimodules/react-native-adapter/ios" + :path: "../node_modules/@unimodules/react-native-adapter/ios" UMSensorsInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-sensors-interface/ios" + :path: "../node_modules/unimodules-sensors-interface/ios" UMTaskManagerInterface: - :path: !ruby/object:Pathname - path: "../node_modules/unimodules-task-manager-interface/ios" + :path: "../node_modules/unimodules-task-manager-interface/ios" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" @@ -517,10 +506,10 @@ SPEC CHECKSUMS: DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 EXAppleAuthentication: 046c76335343eaa97f6ed8d35a9cf493a2c4d351 EXApplication: 7cf81de6fafccff42f5d1caa5c24a159db6b9437 - EXAppLoaderProvider: 5d348813a9cf09b03bbe5b8b55437bc1bfbddbd1 - EXConstants: 857aa7b1c84e2878f8402d712061860bca16a697 - EXFileSystem: 7e53a2c30a2eb6987ba6d5158ab908f947523228 - EXPermissions: df10ad83df2f6b647aec304619354f8ab48d5f63 + EXConstants: 5304709b1bea70a4828f48ba4c7fc3ec3b2d9b17 + EXFileSystem: cf4232ba7c62dc49b78c2d36005f97b6fddf0b01 + EXImageLoader: 5ad6896fa1ef2ee814b551873cbf7a7baccc694a + EXPermissions: 24b97f734ce9172d245a5be38ad9ccfcb6135964 EXScreenOrientation: 44d3cd3a99a86b9cb681e742697bc2c057d7fbd2 FBLazyVector: aaeaf388755e4f29cd74acbc9e3b8da6d807c37f FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75 @@ -563,18 +552,19 @@ 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 + UMAppLoader: ee77a072f9e15128f777ccd6d2d00f52ab4387e6 + UMBarCodeScannerInterface: 9dc692b87e5f20fe277fa57aa47f45d418c3cc6c + UMCameraInterface: 625878bbf2ba188a8548675e1d1d2e438a653e6d + UMConstantsInterface: 64060cf86587bcd90b1dbd804cceb6d377a308c1 + UMCore: eb200e882eadafcd31ead290770835fd648c0945 + UMFaceDetectorInterface: d6677d6ddc9ab95a0ca857aa7f8ba76656cc770f + UMFileSystemInterface: c70ea7147198b9807080f3597f26236be49b0165 + UMFontInterface: d9d3b27af698c5389ae9e20b99ef56a083f491fb + UMImageLoaderInterface: 14dd2c46c67167491effc9e91250e9510f12709e + UMPermissionsInterface: 5e83a9167c177e4a0f0a3539345983cc749efb3e + UMReactNativeAdapter: 126da3486c1a1f11945b649d557d6c2ebb9407b2 + UMSensorsInterface: 48941f70175e2975af1a9386c6d6cb16d8126805 + UMTaskManagerInterface: cb890c79c63885504ddc0efd7a7d01481760aca2 Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b PODFILE CHECKSUM: a17f480863448723f1b256597206709dfa50870c diff --git a/package.json b/package.json index f2042628ff..de4639e873 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@react-native-community/cameraroll": "^1.7.2", "@react-native-community/netinfo": "^3.2.1", "@sentry/react-native": "^1.0.9", - "@unimodules/core": "~4.0.0", + "@unimodules/core": "~5.1.2", "@zulip/shared": "^0.0.2", "base-64": "^0.1.0", "blueimp-md5": "^2.10.0", @@ -69,7 +69,7 @@ "react-native-simple-toast": "^1.0.0", "react-native-sound": "^0.11.0", "react-native-text-input-reset": "^1.0.2", - "react-native-unimodules": "0.6.0", + "react-native-unimodules": "^0.9.1", "react-native-url-polyfill": "1.2.0-rc.0", "react-native-vector-icons": "^6.6.0", "react-native-webview": "~10.0.0", diff --git a/yarn.lock b/yarn.lock index 3c69587a2a..7f992954b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1667,17 +1667,17 @@ 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== +"@unimodules/core@~5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@unimodules/core/-/core-5.1.2.tgz#44de60184c9a50cf57bc8ec1cd024810a72ecf3e" + integrity sha512-iCWEbzsNHqDfL6p8FyCGPnL2EW7vdgMJsNNSlWtM/gl8kePdqZMI7aOxTC4cdRS2xm0wzxuDBtpfJkzZsKINZg== 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== +"@unimodules/react-native-adapter@~5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@unimodules/react-native-adapter/-/react-native-adapter-5.2.0.tgz#96bfd4cfbad5083b3aa1152ee0a4ac84fa9dfb69" + integrity sha512-S3HMEeQbV6xs7ORRcxXFGMk38DAnxqNcZG9T8JkX/KGY9ILUUqTS/e68+d849B6beEeglNMcOxyjwlqjykN+FA== dependencies: invariant "^2.2.4" lodash "^4.5.0" @@ -2405,11 +2405,29 @@ btoa-lite@^1.0.0: resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + buffer-crc32@^0.2.13: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -3872,11 +3890,6 @@ 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-apple-authentication@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/expo-apple-authentication/-/expo-apple-authentication-2.1.1.tgz#ecba053fb6ae688f6a83553a192403e968eef931" @@ -3887,33 +3900,38 @@ expo-application@^2.1.1: resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-2.1.1.tgz#7cd61ccc53d7a0c85c8aac64b5ea59b20a1cb803" integrity sha512-iq24Zgd4EmbFakHL2saVdA2zexhRX80RSbAtrWrp3BaVDd7yFNAtcwjW4r1Oyhm00YEREWp70sTaXrWs6jKHQA== -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== +expo-asset@~8.1.0: + version "8.1.5" + resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.1.5.tgz#6d0e3504cd719e9b888d32978d419d6522eed799" + integrity sha512-Ivc4GsAXawfFT6IgjvV4BHXFdAHT+1ZhewuBm/mQ1vvkYOqcPksDVRuChdbfvgAl82lbDfAN/FeEcIfGnvevEQ== dependencies: blueimp-md5 "^2.10.0" + invariant "^2.2.4" + md5-file "^3.2.3" 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-constants@~9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-9.0.0.tgz#35c600079ee91d38fe4f56375caae6e90f122fdd" + integrity sha512-1kqZMM8Ez5JT3sTEx8I69fP6NYFLOJjeM6Z63dD/m2NiwvzSADiO5+BhghnWNGN1L3bxbgOjXS6EHtS7CdSfxA== -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== +expo-file-system@~8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-8.1.0.tgz#d6aa66fa32c19982b94d0013f963c5ee972dfd6d" + integrity sha512-xb4roeU8CotW8t3LkmsrliNbgFpY2KB+3sW1NnujnH39pFVwCd/kfujCYzRauj8aUy/HhSq+3xGkQTpC7pSjVw== dependencies: - uuid-js "^0.7.5" + uuid "^3.4.0" -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== +expo-image-loader@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-1.0.1.tgz#a83e336768df4dfcb8909aebb6d8152e256d7a72" + integrity sha512-v7ziP+UGj+LArEmP//XTaqi9iFWRa8LAShNoFwwnpPS9huM8q3I+P16xK+GTo+4bQa1pPSIFBUZ8KqwAc+k8mQ== + +expo-permissions@~8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/expo-permissions/-/expo-permissions-8.1.0.tgz#a7f2ee91ba76ce3a467e7b10adaa9ca5201b226f" + integrity sha512-QBHD+1J9+sGFnhoEGzMRchPweeEE0OJ9ehG/0l1BMRBA7qsLS9vRC1FTJ55NwjI0Kr4RTha9r6ZX1kZHT09f/w== expo-screen-orientation@^1.0.0: version "1.0.0" @@ -6466,6 +6484,13 @@ match-at@^0.1.0: resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540" integrity sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q== +md5-file@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" + integrity sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw== + dependencies: + buffer-alloc "^1.1.0" + md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" @@ -8128,29 +8153,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== +react-native-unimodules@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/react-native-unimodules/-/react-native-unimodules-0.9.1.tgz#72e145a344e1b86baf513e9bfd96bbac227302b3" + integrity sha512-muYUo/GJVblBUnIwaL9ireayWEuCMg7S4Qn9W5g4geRwPTfL3vNSW8heLk2TD+vh5IoSc+dfBTYLw5NM9aVtQA== dependencies: - "@unimodules/core" "~4.0.0" - "@unimodules/react-native-adapter" "~4.0.0" + "@unimodules/core" "~5.1.2" + "@unimodules/react-native-adapter" "~5.2.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" + expo-asset "~8.1.0" + expo-constants "~9.0.0" + expo-file-system "~8.1.0" + expo-image-loader "~1.0.0" + expo-permissions "~8.1.0" + unimodules-app-loader "~1.0.2" + unimodules-barcode-scanner-interface "~5.1.0" + unimodules-camera-interface "~5.1.0" + unimodules-constants-interface "~5.1.0" + unimodules-face-detector-interface "~5.1.0" + unimodules-file-system-interface "~5.1.0" + unimodules-font-interface "~5.1.0" + unimodules-image-loader-interface "~5.1.0" + unimodules-permissions-interface "~5.1.0" + unimodules-sensors-interface "~5.1.0" + unimodules-task-manager-interface "~5.1.0" react-native-url-polyfill@1.2.0-rc.0: version "1.2.0-rc.0" @@ -9903,7 +9929,7 @@ 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, ua-parser-js@^0.7.19: +ua-parser-js@^0.7.18: 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== @@ -9962,55 +9988,60 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -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-app-loader@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unimodules-app-loader/-/unimodules-app-loader-1.0.2.tgz#0af821db8ae5d7c09d2be3c62ca5aab571d6e9ac" + integrity sha512-ryRAqSndIkCnWAr5jzSL6yjOrCBeIihItELUTykzi4ZxYV9j4Yl0Sd5+VKl1v/UvB6UNdgIGY4oU7S1b173/FA== -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-barcode-scanner-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-barcode-scanner-interface/-/unimodules-barcode-scanner-interface-5.1.0.tgz#6d24322b6db556b21eca99a130673c7e07d86559" + integrity sha512-FUau0mm4sBOGmlekltY0iAimJ438w3rtWiv6hcjE77Map527aCH3GyjnZSw78raVxe598EXhWHviuwRxOGINYg== -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-camera-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-camera-interface/-/unimodules-camera-interface-5.1.0.tgz#ea43a8d05b7b1a9053e6b2281b428a1e80853661" + integrity sha512-uwBmZ3XS6vkdzRAmiDhUE/P7fafN7ufXoRuBDGoX/Q9kIiKg61D8HzTmhLMelvJFW6eCjoBJfh/zRyZ54qcjGg== -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-constants-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-constants-interface/-/unimodules-constants-interface-5.1.0.tgz#916a8203a887b53cdbcd80b63bc6fd56c85ccfd2" + integrity sha512-TlrqwtKt2G0QH4Fn1ko3tRtLX+eUGSnCBuu1TiAGlsQ5FM/1+AGuJNftHdUwZY1DncIAlw6lhNW+amv0hw5ocg== -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-face-detector-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-face-detector-interface/-/unimodules-face-detector-interface-5.1.0.tgz#56b4e8c238d8b38f7937f2eb87212d5f87c463f9" + integrity sha512-0qDA6j1WvPM98q32aKvRdFhgSa9Nu8lqNUlrgE740UTYsAmfQl8lM/r2TOuR1k3dVC14q33YvLizSOYM5FLhAw== -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-file-system-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-file-system-interface/-/unimodules-file-system-interface-5.1.0.tgz#adcba6d6dbb58d889175425dedcbb1501f498ab7" + integrity sha512-G2QXhEXY3uHuDD50MWI7C/nesbVlf2C0QHTs+fAt1VpmWYWfdDaeqgO67f/QRz8FH8xm3ul9XvgP6nA+P0xfIg== -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-font-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-font-interface/-/unimodules-font-interface-5.1.0.tgz#953c1eb6e1f221f0c7d427d7aba78cce599b4b27" + integrity sha512-ZKycNecNN0xxGIo9Db2n8RYU+ijlc+hzpE5acVSiIlmMjTsiOODRLkF++yKsZxglGXn/blgtBLrcTQr4jJV4MQ== -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-image-loader-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-image-loader-interface/-/unimodules-image-loader-interface-5.1.0.tgz#40eeecb1d9409b51595b559023230ce50485b626" + integrity sha512-yU1OPWMtZ9QcW5CxLE1DYWrpJGZ1hRGdoFG3vyk4syUS8QsCPR0HXqcI6KlTpI6wcLA0+HtS+1CmgJCMCUDd4w== -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-permissions-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-permissions-interface/-/unimodules-permissions-interface-5.1.0.tgz#146062ee5cde1f00f34ba2692efab5f0c6f55d02" + integrity sha512-3Mz9A4a+iYF57ZeE99nidRPNM7dX3dzTZRvRQyCP5+CvsEmGNlLTIbTQ7fxKECoe3I6cjw94gNSirxIbwb3lDg== -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== +unimodules-sensors-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-sensors-interface/-/unimodules-sensors-interface-5.1.0.tgz#2d8f5f15a8b00b3f0aab59c3ff474f39735d634f" + integrity sha512-v8nRFRHtl4jFI1aiAmWurPKDuvboSxj0qoqpy/IB3xkkzBfw4KsZQ1b1yomwNbv9cCqIkFxaNAOzyrvVZrz/dA== + +unimodules-task-manager-interface@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unimodules-task-manager-interface/-/unimodules-task-manager-interface-5.1.0.tgz#49fe4431464faa576ba3453a1824030debbf8d35" + integrity sha512-t7FSWOdw4ev9SlqPzfw9rOKlFyryZbrcmjEr0n6HtPXqZ4NRfPqXtYSjoVWswGb3iGr3GPOIHZ/OQ6Z6StL1NA== union-value@^1.0.0: version "1.0.1" @@ -10182,20 +10213,15 @@ 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" integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= -uuid@^3.0.1, uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== +uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== validate-npm-package-license@^3.0.1: version "3.0.4" From 62621ef8e8489cc9261ddad296607719a76809d1 Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Thu, 9 Jul 2020 11:47:43 -0700 Subject: [PATCH 3/6] jest: Add `jest-expo` preset, to be used in the next commit. A bit frustratingly, we need to install react-native-web, because it's a peer dep of jest-expo, and react-dom, because that's a peer dep of react-native-web. It's likely that we'll never run any code in either module, since we don't care about the web. (Expo seems to be expanding React Native's original claim for multi-platform compatibility, namely iOS and Android, to include the web. `react-native-web` looks like a thing that lets you write React Native...for the web.) At least they don't complain if we add them as dev dependencies instead of regular dependencies. Also, run `yarn yarn-deduplicate && yarn` as prompted by `tools/test deps`. --- package.json | 3 + yarn.lock | 365 +++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 328 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index de4639e873..a647cd0787 100644 --- a/package.json +++ b/package.json @@ -116,6 +116,7 @@ "jest-cli": "^24.9.0", "jest-environment-jsdom": "^24.9.0", "jest-environment-jsdom-global": "^1.2.0", + "jest-expo": "^37.0.0", "jest-extended": "^0.11.2", "jetifier": "^1.6.5", "lolex": "^5.1.1", @@ -124,7 +125,9 @@ "prettier-eslint": "^9.0.0", "prettier-eslint-cli": "^5.0.0", "prop-types": "^15.7.2", + "react-dom": "16.9.0", "react-native-cli": "^2.0.1", + "react-native-web": "^0.13.3", "redux-mock-store": "^1.5.1", "rollup": "^1.23.1", "rollup-plugin-babel": "^4.3.3", diff --git a/yarn.lock b/yarn.lock index 7f992954b3..32dfde8aef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.44", "@babel/code-frame@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== @@ -18,7 +18,7 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.6.2": +"@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.6.2": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w== @@ -289,7 +289,7 @@ "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.10.4": +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== @@ -321,7 +321,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator@^7.7.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== @@ -354,7 +354,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.10.4": +"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.10.4", "@babel/plugin-proposal-optional-chaining@^7.7.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== @@ -603,7 +603,7 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.10.4": +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.10.4", "@babel/plugin-transform-modules-commonjs@^7.5.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== @@ -761,7 +761,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typescript@^7.0.0": +"@babel/plugin-transform-typescript@^7.0.0", "@babel/plugin-transform-typescript@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.5.tgz#edf353944e979f40d8ff9fe4e9975d0a465037c5" integrity sha512-YCyYsFrrRMZ3qR7wRwtSSJovPG5vGyG4ZdcSAivGwTfoasMp3VOB/AKhohu3dFtmB4cCDcsndCSxGtrdliCsZQ== @@ -793,7 +793,7 @@ core-js "^2.6.5" regenerator-runtime "^0.13.4" -"@babel/preset-env@^7.6.3": +"@babel/preset-env@^7.4.4", "@babel/preset-env@^7.6.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== @@ -874,7 +874,15 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/register@^7.0.0": +"@babel/preset-typescript@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" + integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.10.4" + +"@babel/register@^7.0.0", "@babel/register@^7.8.3": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.5.tgz#354f3574895f1307f79efe37a51525e52fd38d89" integrity sha512-eYHdLv43nyvmPn9bfNfrcC4+iYNwdQ8Pxk1MFJuU/U5LpSYl/PH4dFMazCYZDFVi8ueG3shvO+AQfLrxpYulQw== @@ -933,6 +941,49 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@expo/babel-preset-cli@0.2.7": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@expo/babel-preset-cli/-/babel-preset-cli-0.2.7.tgz#251b60e530943d2b29a1065295001039410e9a69" + integrity sha512-NWL5S4ODDi+dRsQRSu0x8w/m4rr55ZH+5qpb2ixB8Nojlq4dEt7EV2bHB6IPxT1XbJau4/IZiG6oN6XdRDHm+w== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-proposal-class-properties" "^7.4.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.7.4" + "@babel/plugin-proposal-optional-chaining" "^7.7.5" + "@babel/plugin-transform-modules-commonjs" "^7.5.0" + "@babel/preset-env" "^7.4.4" + "@babel/preset-typescript" "^7.3.3" + typescript "3.7.3" + +"@expo/config@^2.5.3": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@expo/config/-/config-2.7.0.tgz#8f03b99b72ff2ee113d2b82e7e485206e3b95cb4" + integrity sha512-19FT0RLA7vRDTBF2ftwEJsmIcYrwP/PxsBZNs2W5NpgBX20DYZLp82ptjeHonP12rzYmynDhMiGdD4tXtZyBzw== + dependencies: + "@babel/register" "^7.8.3" + "@expo/babel-preset-cli" "0.2.7" + "@expo/json-file" "8.2.7" + "@types/invariant" "^2.2.30" + find-yarn-workspace-root "^1.2.1" + fs-extra "^7.0.1" + invariant "^2.2.4" + jest-message-util "^25.1.0" + resolve-from "^5.0.0" + slugify "^1.3.4" + xml2js "^0.4.23" + +"@expo/json-file@8.2.7": + version "8.2.7" + resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.7.tgz#61611b0fd62c99cb4bf1e73052ea9da08c488e40" + integrity sha512-VhaVj6EI95uwK4SDKEFGmp4Zt70RB67s7+zgGK5t92e8twFz3WAvz7J5Qn/78vGL3xWrV7Mn6ZOILDCuMeXW/A== + dependencies: + "@babel/code-frame" "^7.0.0-beta.44" + fs-extra "^8.0.1" + json5 "^1.0.1" + lodash "^4.17.15" + util.promisify "^1.0.0" + write-file-atomic "^2.3.0" + "@expo/react-native-action-sheet@^3.4.0": version "3.4.0" resolved "https://registry.yarnpkg.com/@expo/react-native-action-sheet/-/react-native-action-sheet-3.4.0.tgz#b385b650a1296a8f7411ef3cdccbaa5aef8429d5" @@ -1530,6 +1581,11 @@ "@types/react" "*" hoist-non-react-statics "^3.3.0" +"@types/invariant@^2.2.30": + version "2.2.33" + resolved "https://registry.yarnpkg.com/@types/invariant/-/invariant-2.2.33.tgz#ec5eec29c63bf5e4ca164e9feb3ef7337cdcbadb" + integrity sha512-/jUNmS8d4bCKdqslfxW6dg/9Gksfzxz67IYfqApHn+HvHlMVXwYv2zpTDnS/yaK9BB0i0GlBTaYci0EFE62Hmw== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -1815,11 +1871,18 @@ ansi-cyan@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-escapes@3.2.0, ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@3.2.0, ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + ansi-fragments@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" @@ -1972,6 +2035,11 @@ array-filter@~0.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= +array-find-index@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + array-includes@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" @@ -2116,7 +2184,7 @@ babel-eslint@^10.0.2: eslint-scope "3.7.1" eslint-visitor-keys "^1.0.0" -babel-jest@^24.9.0: +babel-jest@^24.7.1, babel-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== @@ -2371,6 +2439,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + browser-process-hrtime@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" @@ -2983,7 +3058,7 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -create-react-class@^15.6.3: +create-react-class@^15.6.2, create-react-class@^15.6.3: version "15.6.3" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== @@ -3035,6 +3110,14 @@ css-color-names@~0.0.3: resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= +css-in-js-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" + integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== + dependencies: + hyphenate-style-name "^1.0.2" + isobject "^3.0.1" + css-select-base-adapter@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" @@ -3186,6 +3269,13 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +deep-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-3.0.0.tgz#c8e4c4d401cba25550a2f0f486a2e75bc5f219a2" + integrity sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw== + dependencies: + is-obj "^1.0.0" + deep-diff@^0.3.5: version "0.3.8" resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84" @@ -4126,6 +4216,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -4185,6 +4282,14 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== + dependencies: + fs-extra "^4.0.3" + micromatch "^3.1.4" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -4347,6 +4452,15 @@ fs-extra@^1.0.0: jsonfile "^2.1.0" klaw "^1.0.0" +fs-extra@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -4356,6 +4470,15 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" @@ -4600,10 +4723,10 @@ got@^8.3.2: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.2.1" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.1.tgz#1c1f0c364882c868f5bff6512146328336a11b1d" - integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw== +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== graphlib@^2.1.1, graphlib@^2.1.5: version "2.1.7" @@ -4813,6 +4936,11 @@ hunspell-spellchecker@^1.0.2: resolved "https://registry.yarnpkg.com/hunspell-spellchecker/-/hunspell-spellchecker-1.0.2.tgz#a10b0bd2fa00a65ab62a4c6b734ce496d318910e" integrity sha1-oQsL0voAplq2Kkxrc0zkltMYkQ4= +hyphenate-style-name@^1.0.2, hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + i@0.3.x: version "0.3.6" resolved "https://registry.yarnpkg.com/i/-/i-0.3.6.tgz#d96c92732076f072711b6b10fd7d4f65ad8ee23d" @@ -4919,6 +5047,13 @@ ini@^1.3.0, ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +inline-style-prefixer@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-5.1.2.tgz#e5a5a3515e25600e016b71e39138971228486c33" + integrity sha512-PYUF+94gDfhy+LsQxM0g3d6Hge4l1pAqOSOiZuHWzMvQEGsbRQ/ck2WioLqrY2ZkHyPgVUXxn+hrkF7D6QUGbA== + dependencies: + css-in-js-utils "^2.0.0" + inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -5166,6 +5301,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -5456,6 +5596,20 @@ jest-environment-node@^24.9.0: jest-mock "^24.9.0" jest-util "^24.9.0" +jest-expo@^37.0.0: + version "37.0.0" + resolved "https://registry.yarnpkg.com/jest-expo/-/jest-expo-37.0.0.tgz#2d2c5ea4622585ca6539612245f3357bc91d7b70" + integrity sha512-Bww1296svavIqGMgev7taLloi87WtwgEHXVtSmNMaKeKfBaFK05qkEzRM3xE/8cnMrYNJSlqusvA7PApdvE/vg== + dependencies: + "@expo/config" "^2.5.3" + babel-jest "^24.7.1" + jest "^24.7.1" + jest-watch-select-projects "^1.0.0" + jest-watch-typeahead "^0.4.0" + json5 "^2.1.0" + lodash "^4.5.0" + react-test-renderer "~16.9.0" + jest-extended@^0.11.2: version "0.11.2" resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-0.11.2.tgz#924f4a6b4c946133faf9ec8fba865de9790f4116" @@ -5557,6 +5711,20 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" +jest-message-util@^25.1.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^25.5.0" + "@types/stack-utils" "^1.0.1" + chalk "^3.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^1.0.1" + jest-mock@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" @@ -5702,7 +5870,29 @@ jest-validate@^24.7.0, jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-watcher@^24.9.0: +jest-watch-select-projects@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jest-watch-select-projects/-/jest-watch-select-projects-1.0.0.tgz#c876d787006b42c52f1a7dad2cfca5e929eaa283" + integrity sha512-8zO2NNeTQG5+o9BYi4n6Idp8QZzCQdirpTel5iaed9911ktDKV0VTdiu0tYvDOoAbdfH4itTM4gR6lcJ2ATc/w== + dependencies: + ansi-escapes "^3.1.0" + chalk "^2.4.1" + prompts "^2.2.1" + +jest-watch-typeahead@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz#e5be959698a7fa2302229a5082c488c3c8780a4a" + integrity sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.1" + jest-regex-util "^24.9.0" + jest-watcher "^24.3.0" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^5.0.0" + +jest-watcher@^24.3.0, jest-watcher@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== @@ -5723,7 +5913,7 @@ jest-worker@^24.6.0, jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest@^24.9.0: +jest@^24.7.1, jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== @@ -5843,7 +6033,14 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^2.1.2: +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.0, json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== @@ -6794,6 +6991,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": version "1.40.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" @@ -7073,6 +7278,11 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +normalize-css-color@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/normalize-css-color/-/normalize-css-color-1.0.2.tgz#02991e97cccec6623fe573afbbf0de6a1f3e9f8d" + integrity sha1-Apkel8zOxmI/5XOvu/Deah8+n40= + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -7640,6 +7850,11 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -7854,13 +8069,13 @@ prompt@^0.2.14: utile "0.2.x" winston "0.8.x" -prompts@^2.0.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" - integrity sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw== +prompts@^2.0.1, prompts@^2.2.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== dependencies: kleur "^3.0.3" - sisteransi "^1.0.3" + sisteransi "^1.0.4" prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" @@ -8021,6 +8236,16 @@ react-dom@15.5.4: object-assign "^4.1.0" prop-types "~15.5.7" +react-dom@16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.9.0.tgz#5e65527a5e26f22ae3701131bcccaee9fb0d3962" + integrity sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.15.0" + react-intl@^2.4.0: version "2.9.0" resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-2.9.0.tgz#c97c5d17d4718f1575fdbd5a769f96018a3b1843" @@ -8032,7 +8257,7 @@ react-intl@^2.4.0: intl-relativeformat "^2.1.0" invariant "^2.1.1" -react-is@^16.12.0, react-is@^16.5.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.12.0, react-is@^16.5.2, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -8194,6 +8419,22 @@ react-native-vector-icons@^6.6.0: prop-types "^15.6.2" yargs "^13.2.2" +react-native-web@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.13.3.tgz#fe6799a1a341b60a617194b51042c40f57bfb34c" + integrity sha512-szUf/qDMZileJKglUmMT5UdPYltmmF2ywZ0OFeW7/6XmYDJP+Bepo3eGaCwm1bMcopLBq+lNdbn854CHfU8yBw== + dependencies: + array-find-index "^1.0.2" + create-react-class "^15.6.2" + debounce "^1.2.0" + deep-assign "^3.0.0" + fbjs "^1.0.0" + hyphenate-style-name "^1.0.3" + inline-style-prefixer "^5.1.0" + normalize-css-color "^1.0.2" + prop-types "^15.6.0" + react-timer-mixin "^0.13.4" + react-native-webview@~10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-10.0.0.tgz#a01c69fbf63d0b12cb8238c09b7baa61e657daa4" @@ -8310,6 +8551,21 @@ react-refresh@^0.4.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== +react-test-renderer@~16.9.0: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.9.0.tgz#7ed657a374af47af88f66f33a3ef99c9610c8ae9" + integrity sha512-R62stB73qZyhrJo7wmCW9jgl/07ai+YzvouvCXIJLBkRlRqLx4j9RqcLEAfNfU3OxTGucqR2Whmn3/Aad6L3hQ== + dependencies: + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.9.0" + scheduler "^0.15.0" + +react-timer-mixin@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz#75a00c3c94c13abe29b43d63b4c65a88fc8264d3" + integrity sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q== + react@15.5.4: version "15.5.4" resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" @@ -8664,6 +8920,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8841,7 +9102,7 @@ sax@>=0.6.0, sax@^1.2.1, sax@^1.2.4, sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@0.15.0: +scheduler@0.15.0, scheduler@^0.15.0: version "0.15.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.15.0.tgz#6bfcf80ff850b280fed4aeecc6513bc0b4f17f8e" integrity sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg== @@ -9012,10 +9273,10 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb" - integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg== +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^2.0.0: version "2.0.0" @@ -9041,6 +9302,11 @@ slide@^1.1.5: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= +slugify@^1.3.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.4.tgz#2f032ffa52b1e1ca2a27737c1ce47baae3d0883a" + integrity sha512-N2+9NJ8JzfRMh6PQLrBeDEnVDQZSytE/W4BTC4fNNPmO90Uu58uNwSlIJSs+lmPgWsaAF79WLhVPe5tuy7spjw== + smart-buffer@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" @@ -9495,6 +9761,14 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -9820,6 +10094,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -9902,6 +10183,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" @@ -9924,10 +10210,10 @@ typescript-compiler@^1.4.1-2: resolved "https://registry.yarnpkg.com/typescript-compiler/-/typescript-compiler-1.4.1-2.tgz#ba4f7db22d91534a1929d90009dce161eb72fd3f" integrity sha1-uk99si2RU0oZKdkACdzhYety/T8= -typescript@^3.2.1, typescript@^3.3.3333: - version "3.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" - integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== +typescript@3.7.3, typescript@^3.2.1, typescript@^3.3.3333: + version "3.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.3.tgz#b36840668a16458a7025b9eabfad11b66ab85c69" + integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw== ua-parser-js@^0.7.18: version "0.7.21" @@ -10442,7 +10728,7 @@ write-file-atomic@^1.2.0: imurmurhash "^0.1.4" slide "^1.1.5" -write-file-atomic@^2.0.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: version "2.4.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== @@ -10508,13 +10794,12 @@ xml2js@0.4.19: sax ">=0.6.0" xmlbuilder "~9.0.1" -xml2js@^0.4.17: - version "0.4.22" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.22.tgz#4fa2d846ec803237de86f30aa9b5f70b6600de02" - integrity sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw== +xml2js@^0.4.17, xml2js@^0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== dependencies: sax ">=0.6.0" - util.promisify "~1.0.0" xmlbuilder "~11.0.0" xmlbuilder@^9.0.7, xmlbuilder@~9.0.1: From e40c020467fe8cfa5e90900cf8bea3a783870c42 Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Thu, 9 Jul 2020 11:52:24 -0700 Subject: [PATCH 4/6] jest: Use `jest-expo` as our preset. This calls `react-native`'s Jest setup code before running its own. In particular, it seems to be aware of all the Expo modules we might want to add using `react-native-unimodules`, and mocks them [1]. Since we don't need our own mocks for these, remove them. It seems like we still need to add entries in our `transformModulesWhitelist`, ah, well. But it's good to weed out boring mocks from our `jestSetup.js`, and leave only those that are interesting [2]. Also, it seems like each time we add a module from Expo, there's a debugging process that can be confusing [3]; so, nice to avoid that. It looks like the preset does explicitly consider the bare, non-"managed" Expo workflow [4], which we use. If `jest-expo` turns out to be buggy, or the dependency requirements get even more tangled or burdensome, we should feel free to abandon this effort; it's not terrible to have to add boring mocks. [1]: https://github.com/expo/expo/blob/b8bd30697/packages/jest-expo/src/preset/expoModules.js [2]: Seems like a few remain that aren't related to Expo. Hmm. [3]: https://github.com/zulip/zulip-mobile/pull/4034/files#r445956933 [4]: https://github.com/expo/expo/blob/b8bd30697/packages/jest-expo/src/preset/setup.js#L130 --- jest.config.js | 3 ++- jest/jestSetup.js | 11 ----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/jest.config.js b/jest.config.js index 7b16fdf9eb..930af16ead 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,6 +4,7 @@ // These will be used as regexp fragments. const transformModulesWhitelist = [ 'expo-apple-authentication', + 'expo-application', 'react-native', // @rnc/async-storage itself is precompiled, but its mock-helper is not '@react-native-community/async-storage', @@ -24,7 +25,7 @@ const transformModulesWhitelist = [ const transformIgnorePattern = `node_modules/(?!${transformModulesWhitelist.join('|')})`; module.exports = { - preset: 'react-native', + preset: 'jest-expo', // Finding and transforming source code. diff --git a/jest/jestSetup.js b/jest/jestSetup.js index 6c9ee2b169..c7260c0ed3 100644 --- a/jest/jestSetup.js +++ b/jest/jestSetup.js @@ -54,18 +54,7 @@ jest.mock('react-native-simple-toast', () => ({ showWithGravity: jest.fn(), })); -jest.mock('expo-application', () => ({ - nativeApplicationVersion: '26.23.146', -})); - jest.mock('react-native-device-info', () => ({ getSystemName: jest.fn().mockReturnValue('ios'), getSystemVersion: jest.fn().mockReturnValue('13.3.1'), })); - -jest.mock('expo-apple-authentication', () => ({ - AppleAuthenticationButton: jest.fn(), - isAvailableAsync: jest.fn(), - signInAsync: jest.fn(), - // etc. (incomplete) -})); From c1c9575236482f84276e3776c8ac545d3db15148 Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Thu, 9 Jul 2020 12:26:17 -0700 Subject: [PATCH 5/6] jest: Comment about boring mocks, remove one that's unnecessary. I'm not sure when exactly it became unnecessary to mock "Linking", but it's taken care of now in React Native's Jest setup [1]. [1]: https://github.com/facebook/react-native/blob/v0.61.5/jest/setup.js#L153 --- jest/jestSetup.js | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/jest/jestSetup.js b/jest/jestSetup.js index c7260c0ed3..c8fa1389ff 100644 --- a/jest/jestSetup.js +++ b/jest/jestSetup.js @@ -23,16 +23,28 @@ import mockAsyncStorage from '@react-native-community/async-storage/jest/async-s // // [1] https://github.com/facebook/react-native/issues/26579#issuecomment-535244001 // [2] https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/.23M3781.20RN.20v0.2E61.20upgrade/near/931219 -jest.mock('react-native', () => { - Object.assign(ReactNative.Linking, { - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - openURL: jest.fn(), - canOpenURL: jest.fn(), - getInitialURL: jest.fn(), - }); - return ReactNative; -}); +jest.mock( + 'react-native', + () => + // Add stuff here + ReactNative, +); + +/** + * Boring mocks + * + * We aren't interested in any specific data in these mocks; they just + * make things not break. Usually it's because these JS modules depend + * on something being available on NativeModules, and we'd rather not + * mock that precisely, as it's an implementation detail that may + * change. + * + * If Jest complains about syntax errors in a module in node_modules, + * it's likely because the only code it finds for the module is modern + * JavaScript that needs to be transformed by Babel. In that case, try + * adding the module to `transformModulesWhitelist` in our Jest config + * before mocking it here. + */ jest.mock('@react-native-community/async-storage', () => mockAsyncStorage); From e55739e209413ee6b6e8a91de69e799c1ccc6874 Mon Sep 17 00:00:00 2001 From: Chris Bobbe Date: Mon, 13 Jul 2020 14:14:39 -0700 Subject: [PATCH 6/6] Revert "ios: Add boilerplate about APIs we don't, in fact, use." This reverts commit c8d0c8df5. As planned [1] [2], now that we've upgraded react-native-unimodules. [1] https://chat.zulip.org/#narrow/stream/243-mobile-team/topic/apple.20purpose.20strings/near/869928 [2] https://github.com/zulip/zulip-mobile/issues/4091#issue-613729339 --- ios/ZulipMobile/Info.plist | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/ios/ZulipMobile/Info.plist b/ios/ZulipMobile/Info.plist index fba084ec45..c826ad79b7 100644 --- a/ios/ZulipMobile/Info.plist +++ b/ios/ZulipMobile/Info.plist @@ -50,28 +50,14 @@ - NSCalendarsUsageDescription - Allow $(PRODUCT_NAME) to access your calendar NSCameraUsageDescription Take a photo and upload it to a Zulip realm - NSContactsUsageDescription - Allow $(PRODUCT_NAME) to access your contacts - NSLocationAlwaysAndWhenInUseUsageDescription - Allow $(PRODUCT_NAME) to use your location - NSLocationAlwaysUsageDescription - Allow $(PRODUCT_NAME) to use your location NSLocationWhenInUseUsageDescription - Allow $(PRODUCT_NAME) to use your location - NSMicrophoneUsageDescription - Allow $(PRODUCT_NAME) to access your microphone - NSMotionUsageDescription - Allow $(PRODUCT_NAME) to access your device's accelerometer + NSPhotoLibraryAddUsageDescription Download photos from Zulip realm NSPhotoLibraryUsageDescription Upload photos to a Zulip realm - NSRemindersUsageDescription - Allow $(PRODUCT_NAME) to access your reminders UIAppFonts Entypo.ttf