From d1dec738b8caf08685533dd2ec461757b28fba87 Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Thu, 29 Aug 2019 16:38:43 -0700 Subject: [PATCH] feat: switch to react-native-safe-area-context --- example/android/app/build.gradle | 1 + .../com/stackexample/MainApplication.java | 2 + example/android/settings.gradle | 2 + example/app.json | 4 +- example/ios/Podfile | 2 + example/ios/Podfile.lock | 8 +- example/metro.config.js | 1 + example/package.json | 23 +- example/yarn.lock | 423 ++++++----- jest-setup.js | 19 + package.json | 9 +- .../CardStyleInterpolators.tsx | 4 +- .../NestedNavigator.test.tsx.snap | 625 +---------------- .../StackNavigator.test.tsx.snap | 659 +----------------- src/types.tsx | 3 +- src/utils/getStatusBarHeight.tsx | 9 - src/views/Header/HeaderSegment.tsx | 35 +- src/views/Stack/Card.tsx | 25 +- src/views/Stack/StackView.tsx | 43 +- yarn.lock | 49 +- 20 files changed, 406 insertions(+), 1540 deletions(-) delete mode 100644 src/utils/getStatusBarHeight.tsx diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index e416cb1d6..406d29b48 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -139,6 +139,7 @@ android { } dependencies { + implementation project(':react-native-safe-area-context') implementation project(':react-native-webview') implementation project(':react-native-reanimated') implementation project(':react-native-gesture-handler') diff --git a/example/android/app/src/main/java/com/stackexample/MainApplication.java b/example/android/app/src/main/java/com/stackexample/MainApplication.java index 767dae9a4..a0fa96749 100644 --- a/example/android/app/src/main/java/com/stackexample/MainApplication.java +++ b/example/android/app/src/main/java/com/stackexample/MainApplication.java @@ -3,6 +3,7 @@ import android.app.Application; import com.facebook.react.ReactApplication; +import com.th3rdwave.safeareacontext.SafeAreaContextPackage; import com.reactnativecommunity.webview.RNCWebViewPackage; import com.swmansion.reanimated.ReanimatedPackage; import com.facebook.react.ReactNativeHost; @@ -40,6 +41,7 @@ public boolean getUseDeveloperSupport() { protected List getPackages() { return Arrays.asList( new MainReactPackage(), + new SafeAreaContextPackage(), new RNCWebViewPackage(), new ReanimatedPackage(), new RNGestureHandlerPackage(), diff --git a/example/android/settings.gradle b/example/android/settings.gradle index d3b9db31f..4d752600c 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,4 +1,6 @@ apply from: '../node_modules/react-native-unimodules/gradle.groovy' +include ':react-native-safe-area-context' +project(':react-native-safe-area-context').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-safe-area-context/android') include ':react-native-webview' project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android') include ':react-native-reanimated' diff --git a/example/app.json b/example/app.json index a9a824fc3..6eb8b0e15 100644 --- a/example/app.json +++ b/example/app.json @@ -3,7 +3,7 @@ "name": "React Navigation Stack Example", "description": "Demonstrates the various capabilities of react-navigation-stack", "slug": "react-navigation-stack-demo", - "sdkVersion": "34.0.0", + "sdkVersion": "35.0.0", "version": "1.0.0", "primaryColor": "#2196f3", "packagerOpts": { @@ -14,4 +14,4 @@ }, "displayName": "React Navigation Stack Example", "name": "StackExample" -} \ No newline at end of file +} diff --git a/example/ios/Podfile b/example/ios/Podfile index 0fc782140..2ef4bb02f 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -34,4 +34,6 @@ target 'StackExample' do pod 'RNScreens', :podspec => '../node_modules/react-native-screens/RNScreens.podspec' pod 'react-native-webview', :path => '../node_modules/react-native-webview' pod 'react-native-maps', :path => '../node_modules/react-native-maps' + pod 'react-native-safe-area-context', :path => '../node_modules/react-native-safe-area-context' + end diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index a1385d63b..22a480235 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -39,6 +39,8 @@ PODS: - React/Core (= 0.59.10) - react-native-maps (0.24.2): - React + - react-native-safe-area-context (0.3.3): + - React - react-native-webview (5.12.1): - React - React/Core (0.59.10): @@ -133,6 +135,7 @@ DEPENDENCIES: - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - react-native-maps (from `../node_modules/react-native-maps`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-webview (from `../node_modules/react-native-webview`) - React/Core (from `../node_modules/react-native`) - React/CxxBridge (from `../node_modules/react-native`) @@ -213,6 +216,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native" react-native-maps: :path: "../node_modules/react-native-maps" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" react-native-webview: :path: "../node_modules/react-native-webview" RNGestureHandler: @@ -278,6 +283,7 @@ SPEC CHECKSUMS: glog: aefd1eb5dda2ab95ba0938556f34b98e2da3a60d React: 36d0768f9e93be2473b37e7fa64f92c1d5341eef react-native-maps: 0316ed017dbb64b33b227751fa810e2454fcfa39 + react-native-safe-area-context: 05fce11cf3a094304cb4cb8761a8f66f1bbaf0a0 react-native-webview: 5036ed4a973ad1deeeff118262d2df7b60b3419d RNGestureHandler: 5329a942fce3d41c68b84c2c2276ce06a696d8b0 RNReanimated: 7a52c90473b5e81c13408d40d797b98387eaddde @@ -296,6 +302,6 @@ SPEC CHECKSUMS: UMTaskManagerInterface: 8664abd37a00715727e60df9ecd65e42ba47b548 yoga: 684513b14b03201579ba3cee20218c9d1298b0cc -PODFILE CHECKSUM: ba5af81bcabf9feca0e74ef3f931f99ebe73e278 +PODFILE CHECKSUM: 8eac0f6d450c8440d0530650ff7a9cfe8f185063 COCOAPODS: 1.7.5 diff --git a/example/metro.config.js b/example/metro.config.js index bdbae10c0..43d99b431 100644 --- a/example/metro.config.js +++ b/example/metro.config.js @@ -28,6 +28,7 @@ module.exports = { providesModuleNodeModules: [ '@expo/vector-icons', + 'react-native-safe-area-context', '@babel/runtime', 'react-navigation', ...projectDependencies, diff --git a/example/package.json b/example/package.json index 21a959343..296f43061 100644 --- a/example/package.json +++ b/example/package.json @@ -10,21 +10,22 @@ }, "dependencies": { "@react-native-community/masked-view": "^0.1.1", - "expo": "^34.0.0", - "expo-asset": "^6.0.0", - "expo-barcode-scanner": "~6.0.0", - "expo-constants": "~6.0.0", + "expo": "^35.0.0", + "expo-asset": "~7.0.0", + "expo-barcode-scanner": "~7.0.0", + "expo-constants": "~7.0.0", "hoist-non-react-statics": "^3.3.0", - "react": "16.8.3", - "react-dom": "^16.8.6", - "react-native": "0.59.10", + "react": "~16.8.3", + "react-dom": "~16.8.3", + "react-native": "~0.59.10", "react-native-gesture-handler": "~1.3.0", - "react-native-maps": "~0.24.0", + "react-native-maps": "~0.25.0", "react-native-paper": "^2.15.2", - "react-native-reanimated": "~1.1.0", - "react-native-unimodules": "~0.5.2", + "react-native-reanimated": "~1.2.0", + "react-native-safe-area-context": "^0.3.6", + "react-native-unimodules": "^0.7.0-rc.1", "react-native-web": "^0.11.4", - "react-native-webview": "~5.12.0", + "react-native-webview": "7.0.5", "react-navigation": "^4.0.7", "react-navigation-drawer": "^2.2.2", "react-navigation-tabs": "^2.5.5" diff --git a/example/yarn.lock b/example/yarn.lock index f510c4a2d..715eb237c 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -1503,17 +1503,26 @@ resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.26.24.tgz#c24170b3a5c867b4fabd49fcc42fe45f780cb153" integrity sha512-x0bhHnYjH5mZit4HivUYbTMO4LouOTGwp/LLxSL1mbJYVwNJtHYESH0ed2bwM1lkI2yDmsoCDYJnWEgHeJDACg== -"@unimodules/core@~3.0.0", "@unimodules/core@~3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@unimodules/core/-/core-3.0.2.tgz#a2b143fb1e743809ba17c60ae1848f82b8637901" - integrity sha512-EMZjVp+yrtoPKpDBPvj4+hyDWALl7gvpWeUsDz2Nb9MMBPLnhag1uNk3KC98StJdnjbSXKSdKrCMMidOXnyKcg== +"@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@~3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@unimodules/react-native-adapter/-/react-native-adapter-3.0.0.tgz#303b76c131fe6b5ceb220235ddd1fa2a0193403d" - integrity sha512-zkFFE0HQ2Flfx/aY3hBKDgMvQ1meUm3H6vMIacY1KywexCuKW8ivBobkOsHIet4jf7km0Eklt6WtB3LqQVw5yw== +"@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" + +"@unimodules/react-native-adapter@~5.0.0-alpha.0": + version "5.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@unimodules/react-native-adapter/-/react-native-adapter-5.0.0-alpha.0.tgz#cb9c90550ceee5359e9899c99aa1c9e20a931954" + integrity sha512-qPF92DiSDMoOmdxb/i6+XEAqLR7+4RZgi2HmPMlqh2oTBQIlrAcM7JQVsIDFkmtcVAzdy4VPzJpFDSJW67My3A== dependencies: invariant "^2.2.4" lodash "^4.5.0" @@ -2231,10 +2240,10 @@ babel-plugin-transform-object-rest-spread@^6.26.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" -babel-preset-expo@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-6.0.0.tgz#acc4eb8343a2f703d5808916c051a6caefde8778" - integrity sha512-MvDy86afmCt4sFYkg7yXsZyGL0yONT5JQHZSK1r8cu26Zm1No0yQyll+w78e2OkkYwVFtC1u70GyBPdERG7BZg== +babel-preset-expo@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-7.0.0.tgz#1d288e0efb17dcea84b0d30ce5f5ab99f781ae4a" + integrity sha512-lhQUlodOf1pJoDQ4X1SpLLiQQutvAJ3eB2xZtcqQFY0SAc7ifchtgWk/1T9SmI8lCOcllcPsFDyjbcPWav1FHQ== dependencies: "@babel/core" "^7.1.0" "@babel/plugin-proposal-decorators" "^7.1.0" @@ -2242,7 +2251,7 @@ babel-preset-expo@^6.0.0: "@babel/preset-env" "^7.3.1" babel-plugin-module-resolver "^3.1.1" babel-plugin-react-native-web "^0.11.2" - metro-react-native-babel-preset "^0.51.1" + metro-react-native-babel-preset "^0.54.1" babel-preset-fbjs@^3.0.1, babel-preset-fbjs@^3.2.0: version "3.2.0" @@ -4372,24 +4381,24 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expo-app-loader-provider@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-app-loader-provider/-/expo-app-loader-provider-6.0.0.tgz#c187a39942ac27cfaec3b394a5c9851d3f39678b" - integrity sha512-GtpztJVxOz+vVwdLyHskpzVzFWMXZPIFC/zczHZPsTwjS+wXj6n8MVaLxX6GaTyhNEtYjp0VIQUw3b7eP+vO6w== +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@^6.0.0, expo-asset@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-6.0.0.tgz#caa3f45e7a27d978f8055fc58df6e33a4e661937" - integrity sha512-M0sJphdCQ0mq+7kg6rQmq4rU5hbsL72AZCNrga565JchCLeevJhv6j72erh2viqDAPdvjZpGwc7pwI/dxu1+zg== +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-barcode-scanner@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-barcode-scanner/-/expo-barcode-scanner-6.0.0.tgz#ea9c907dbb403247bfe9fa4da8f50b0d05ef6e2a" - integrity sha512-BEAEqus5hBpcippY+/xWIM/UIWHMyAzZTwISkKovVDtiJ47bcz6Bq9nrLwFv7vjTG68Sww2e7/K8jdCc9nndyQ== +expo-barcode-scanner@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-barcode-scanner/-/expo-barcode-scanner-7.0.0.tgz#75bb2dc66565f9e46ae1d4330452e2c96a4b5a7f" + integrity sha512-n8a/Xqtumw+o19PjFrPw12jfEyjA/UtJLAmXAiS0h+ociinjIkJKnLbCwUcCODLsgc6nn2lhd6TtZgQdvFEnbw== dependencies: lodash "^4.6.0" prop-types "^15.6.0" @@ -4452,67 +4461,67 @@ expo-cli@^3.2.3: "@expo/traveling-fastlane-darwin" "1.10.0" "@expo/traveling-fastlane-linux" "1.10.0" -expo-constants@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-6.0.0.tgz#ff4598985ba006e24949be3f05be7429e5bedacf" - integrity sha512-O0yL3Ok0YUEWpAqsWjOdgFD/lMfg8PUGH/nq31CZ1s7cuFUlksD42i5YhIRlb0Pa/btK8X9LpfY3eWhx9eTmbg== +expo-constants@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-7.0.0.tgz#668c3ec0100e219522ffd9515ec47fadfccd443d" + integrity sha512-oLINuMtGcAwfHGInSVhq6xGojp3atUpSIp7KImo9rqXhWwD5FNmqA5Jflo4J0ODPq590kN5ieiYCCqwls2/u0w== dependencies: ua-parser-js "^0.7.19" -expo-file-system@~6.0.0, expo-file-system@~6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-6.0.2.tgz#e65f30eb6a7213e07933df9688116eaf4e25bbf8" - integrity sha512-s+6oQpLhcT7MQp7fcoj1E+zttMr0WX6c0FrddzqB4dUfhIggV+nb35nQMASIiTHAj8VPUanTFliY5rETHRMHRA== +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-font@~6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-6.0.1.tgz#239b0468edf90d441dca20253c00b334e812c5c5" - integrity sha512-zQwGFTKSrsTWmFzS0l87i6TyqM0YFDK4ui4sSzpbdQsUHXpeG7wfa67i09roLS0xtp85nrR9Vm2bUJp9njV8JQ== +expo-font@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-7.0.0.tgz#0b36f5c91a77eb718fb20559b2c0c58d762ba535" + integrity sha512-OVlUydfexjq1u57Xlymcx5egfFF2WZ5MXkg3GGjHyiSMfp09inZ7OzAu+O/TXjxjlaq9d6vBXiwVxqQoUIlx1Q== dependencies: fontfaceobserver "^2.1.0" -expo-keep-awake@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-6.0.0.tgz#e0d6d1263c6a73488272a62aef98312ab25cab1f" - integrity sha512-MAtZknf6FtIC0ipkDS2FVa87al8YBsrpsQ2qMf+H/cI6FOd6aahaggN4x75xGnt5UzozgWfjhGNCi1XCr14rJw== +expo-keep-awake@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-7.0.0.tgz#131f56bc1ed8dd66e64a159afd7eaef26939d929" + integrity sha512-LjIudbftcZnoviujJUZEzLMdE3m9A2NOvxrRszYHUjySpNN1bAKKyx1gLJbg/yZIWcdEIQ+6uCYtLbuK74Wk2Q== -expo-linear-gradient@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-6.0.0.tgz#5fb0fb955dd22ef4ab032e543cb1c249885bf0b5" - integrity sha512-TGHSK7MsoU1wZXx9uEivMggAR/KT4wTSE0xBfhB8qsziGXoHZdoT79/tZ3HyWtCG7+JVUEFXfUOBxtOlZOu5tg== +expo-linear-gradient@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-7.0.0.tgz#91e86f3f4a70428c7ac5e43ee0d06215bca39afd" + integrity sha512-8VrFWR9tpXrDmk0kMyIpo6C5jKiDRzXPZN55JtyPhjuN1kF8Kle4d9ybNtV+bYd3Ql6PAZXY8Y/bhLAuWv0L9g== -expo-location@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-location/-/expo-location-6.0.0.tgz#da4e22ee5aa951d2c65d94f9916323eb4b3f8a01" - integrity sha512-5uSebmZos0DKJ/xpi+2e9myWVPUWk+fshFedi55wzlGqy2YpTG5MlDcCLlJlamgJ5Tm8+3ECdhbFX3g1pNRDVQ== +expo-location@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-location/-/expo-location-7.0.0.tgz#de5818f828354c681a173471e4dc25ec795a9b42" + integrity sha512-7iWg0j6+DXeO/bVLJEbGBmvebPSbIJNOewfHoyhvdo+13Q7L94SflcggT349WbqNsFJHVcAGC6Unr8VvXcUDbw== dependencies: invariant "^2.2.4" -expo-permissions@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-permissions/-/expo-permissions-6.0.0.tgz#2943f1aa98de833b88cea73cf03d18d08957cb68" - integrity sha512-O+RdyfGiq7i+5Vi9fE38DgKn436lNWiqhnS5/Z7CC00bmKahhjVMNDbZvNn/nrdRGyaPneJk1Co1s1sexSnv0A== +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-sqlite@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-sqlite/-/expo-sqlite-6.0.0.tgz#e7fe36b493a2230afdc77bdaedeab5f031690390" - integrity sha512-M8heovLeJoq7tb4f7PipDu0dqHSklbI2EqNvDM8XLjSZdSv6CqCMHg5Kvx0L9CLYTchjzktDPClZKjgvtGOVug== +expo-sqlite@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/expo-sqlite/-/expo-sqlite-7.0.0.tgz#f52585b342278b4034c06caac8384edb2531afa4" + integrity sha512-mUA+YiE42sD7jI64kP+Zmhwzk13KoLVSFGJz5HeuAuIoO1EwVlAH4g+RQQye5/NsFM6clVRvKhIxv2L2XIVEcw== dependencies: "@expo/websql" "^1.0.1" "@types/websql" "^0.0.27" - lodash "^4.17.11" + lodash "^4.17.15" -expo-web-browser@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-6.0.0.tgz#63a59d4c02cd7ba47faa6a2eb04decb1a1ab2a32" - integrity sha512-7XkFPd4PRlVP6FscTnn78c0tY6+yLzb2Eai/ed+l+LB+hZWuhyY3ONzYM7/IKAiPmfhZr4Qs80vIa7iiavti8A== +expo-web-browser@~7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-7.0.1.tgz#b64ef895b5c0604f312b64b085f7a2f1da630e20" + integrity sha512-THjqlMitUsjHUGYEfag2ybdhgZpp0C4ATixfNpWlS/8vTM4Sw/KGfwB0VuqtqLUMT2q2MTJSrlrWY8Boi4yvTg== -expo@^34.0.0: - version "34.0.4" - resolved "https://registry.yarnpkg.com/expo/-/expo-34.0.4.tgz#af6ef0da40c98981b5f3323c86fd815dfa417fff" - integrity sha512-sZQQoZnN5ASrkSA4qSsk7HPBewHB6b3k9VPZvchT0FBZ1fP5vpmzfIbVOqOLRXHf2VdjNnQVme617TnpPlruJg== +expo@^35.0.0: + version "35.0.0" + resolved "https://registry.yarnpkg.com/expo/-/expo-35.0.0.tgz#79649c9dbcc8bd2066d50642b30eebb55907ee4e" + integrity sha512-DnwcDiRds+y4C+XsfvFnyG8c/vJZWx9RYgcDn0yhu07LtQ2osxKnqSm5eko3uAU3jFYxGUxdlN1xs9p1u0MDXg== dependencies: "@babel/runtime" "^7.1.2" "@expo/vector-icons" "^10.0.2" @@ -4521,21 +4530,21 @@ expo@^34.0.0: "@types/lodash.zipobject" "^4.1.4" "@types/qs" "^6.5.1" "@types/uuid-js" "^0.7.1" - "@unimodules/core" "~3.0.0" - "@unimodules/react-native-adapter" "~3.0.0" - babel-preset-expo "^6.0.0" + "@unimodules/core" "~4.0.0" + "@unimodules/react-native-adapter" "~4.0.0" + babel-preset-expo "~7.0.0" cross-spawn "^6.0.5" - expo-app-loader-provider "~6.0.0" - expo-asset "~6.0.0" - expo-constants "~6.0.0" - expo-file-system "~6.0.0" - expo-font "~6.0.1" - expo-keep-awake "~6.0.0" - expo-linear-gradient "~6.0.0" - expo-location "~6.0.0" - expo-permissions "~6.0.0" - expo-sqlite "~6.0.0" - expo-web-browser "~6.0.0" + expo-app-loader-provider "~7.0.0" + expo-asset "~7.0.0" + expo-constants "~7.0.0" + expo-file-system "~7.0.0" + expo-font "~7.0.0" + expo-keep-awake "~7.0.0" + expo-linear-gradient "~7.0.0" + expo-location "~7.0.0" + expo-permissions "~7.0.0" + expo-sqlite "~7.0.0" + expo-web-browser "~7.0.0" fbemitter "^2.1.1" invariant "^2.2.2" lodash "^4.6.0" @@ -4547,16 +4556,16 @@ expo@^34.0.0: react-native-branch "~3.0.1" react-native-view-shot "2.6.0" serialize-error "^2.1.0" - unimodules-barcode-scanner-interface "~3.0.0" - unimodules-camera-interface "~3.0.0" - unimodules-constants-interface "~3.0.0" - unimodules-face-detector-interface "~3.0.0" - unimodules-file-system-interface "~3.0.0" - unimodules-font-interface "~3.0.0" - unimodules-image-loader-interface "~3.0.0" - unimodules-permissions-interface "~3.0.0" - unimodules-sensors-interface "~3.0.0" - unimodules-task-manager-interface "~3.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" uuid-js "^0.7.5" express@4.16.4: @@ -7124,6 +7133,13 @@ metro-babel7-plugin-react-transform@0.51.1: dependencies: "@babel/helper-module-imports" "^7.0.0" +metro-babel7-plugin-react-transform@0.54.1: + version "0.54.1" + resolved "https://registry.yarnpkg.com/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.54.1.tgz#5335b810284789724886dc483d5bde9c149a1996" + integrity sha512-jWm5myuMoZAOhoPsa8ItfDxdTcOzKhTTzzhFlbZnRamE7i9qybeMdrZt8KHQpF7i2p/mKzE9Yhf4ouOz5K/jHg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + metro-cache@0.51.1: version "0.51.1" resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.51.1.tgz#d0b296eab8e009214413bba87e4eac3d9b44cd04" @@ -7208,7 +7224,7 @@ metro-react-native-babel-preset@0.51.0: metro-babel7-plugin-react-transform "0.51.0" react-transform-hmr "^1.0.4" -metro-react-native-babel-preset@0.51.1, metro-react-native-babel-preset@^0.51.1: +metro-react-native-babel-preset@0.51.1: version "0.51.1" resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.51.1.tgz#44aeeedfea37f7c2ab8f6f273fa71b90fe65f089" integrity sha512-e9tsYDFhU70gar0jQWcZXRPJVCv4k7tEs6Pm74wXO2OO/T1MEumbvniDIGwGG8bG8RUnYdHhjcaiub2Vc5BRWw== @@ -7249,6 +7265,48 @@ metro-react-native-babel-preset@0.51.1, metro-react-native-babel-preset@^0.51.1: metro-babel7-plugin-react-transform "0.51.1" react-transform-hmr "^1.0.4" +metro-react-native-babel-preset@^0.54.1: + version "0.54.1" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.54.1.tgz#b8f03865c381841d7f8912e7ba46804ea3a928b8" + integrity sha512-Hfr32+u5yYl3qhYQJU8NQ26g4kQlc3yFMg7keVR/3H8rwBIbFqXgsKt8oe0dOrv7WvrMqBHhDtVdU9ls3sSq8g== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-assign" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.0.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + metro-babel7-plugin-react-transform "0.54.1" + react-transform-hmr "^1.0.4" + metro-react-native-babel-transformer@0.51.0: version "0.51.0" resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.51.0.tgz#57a695e97a19d95de63c9633f9d0dc024ee8e99a" @@ -9359,15 +9417,15 @@ react-devtools-core@^3.6.0: shell-quote "^1.6.1" ws "^3.3.1" -react-dom@^16.8.6: - version "16.9.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.9.0.tgz#5e65527a5e26f22ae3701131bcccaee9fb0d3962" - integrity sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ== +react-dom@~16.8.3: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.15.0" + scheduler "^0.13.6" react-error-overlay@^6.0.1: version "6.0.3" @@ -9398,10 +9456,10 @@ react-native-gesture-handler@~1.3.0: invariant "^2.2.2" prop-types "^15.5.10" -react-native-maps@~0.24.0: - version "0.24.2" - resolved "https://registry.yarnpkg.com/react-native-maps/-/react-native-maps-0.24.2.tgz#19974f967cb0c2e24dab74ca879118e0932571b2" - integrity sha512-1iNIDikp2dkCG+8DguaEviYZiMSYyvwqYT7pO2YTZvuFRDSc/P9jXMhTUnSh4wNDlEeQ47OJ09l0pwWVBZ7wxg== +react-native-maps@~0.25.0: + version "0.25.0" + resolved "https://registry.yarnpkg.com/react-native-maps/-/react-native-maps-0.25.0.tgz#81bc51eb50e33811a9e1c345cc48869413ead67d" + integrity sha512-PFJuW1pt+HnnnN0m0OGk29RSvICFVkK/DScX6cUk0SuCSN2DAHx0y6y57lZyYXcYqU4J4usNpfxgp/ccjASDiw== react-native-paper@^2.15.2: version "2.16.0" @@ -9415,10 +9473,15 @@ react-native-paper@^2.15.2: react-lifecycles-compat "^3.0.4" react-native-safe-area-view "^0.12.0" -react-native-reanimated@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.1.0.tgz#ba6864055ec3a206cdd5209a293fe653ce276206" - integrity sha512-UGDVNfvuIkMqYUx6aytSzihuzv6sWubn0MQi8dRcw7BjgezhjJnVnJ/NSOcpL3cO+Ld7lFcRX6GKcskwkHdPkw== +react-native-reanimated@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.2.0.tgz#9219227a52a5dfa4d34c324596d6726ccd874293" + integrity sha512-vkWRHrPK5qfHP/ZawlRoo38oeYe9NZaaOH/lmFxRcsKzaSK6x3H5ZPXI8lK6MfTLveqwo1QhJje3zIKXO4nQQw== + +react-native-safe-area-context@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-0.3.6.tgz#666bf581b59aa49a9685aea4e76dfd6e1c8a8a52" + integrity sha512-5wlaJplOlWxBNnjmCtY/FAlsgRDuoKzmLQzbWUw4NDuOa3H2uq1kTdqTWOw78Nzm5FRqGWe1ZSLWU9+nSaN+vA== react-native-safe-area-view@0.14.6, react-native-safe-area-view@^0.12.0, react-native-safe-area-view@^0.14.1, react-native-safe-area-view@^0.14.6: version "0.14.6" @@ -9439,29 +9502,29 @@ react-native-tab-view@^2.9.0: resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-2.10.0.tgz#5e249e5650502010013449ffd4e5edc18a95364b" integrity sha512-qgexVz5eO4yaFjdkmn/sURXgVvaBo6pZD/q1eoca96SbPVbaH3WzVhF3bRUfeTHwZkXwznFTpS3JURqIFU8vQA== -react-native-unimodules@~0.5.2: - version "0.5.4" - resolved "https://registry.yarnpkg.com/react-native-unimodules/-/react-native-unimodules-0.5.4.tgz#d4d779576a027f0455b14d396b0e002cb57963fe" - integrity sha512-47ZJzZriaVtvDJp24HLu6xcKBaDScDcx71yIDmahsKKJtbEHmXl7jPz1y/2FhAKSb174m9niu3F97Di5Bo+91g== +react-native-unimodules@^0.7.0-rc.1: + version "0.7.0-rc.1" + resolved "https://registry.yarnpkg.com/react-native-unimodules/-/react-native-unimodules-0.7.0-rc.1.tgz#537b9bb818418f398aa873cd3dbe959735c3a828" + integrity sha512-qRKxMY5k7NVlHglOklUPbIawD1A6TujChe1S4tR+Yew+9SmE+JEUUhz1tjrVkOakpFOFAfiBk74Gh1KI9H0DtA== dependencies: - "@unimodules/core" "~3.0.2" - "@unimodules/react-native-adapter" "~3.0.0" + "@unimodules/core" "~4.0.0" + "@unimodules/react-native-adapter" "~5.0.0-alpha.0" chalk "^2.4.2" - expo-app-loader-provider "~6.0.0" - expo-asset "~6.0.0" - expo-constants "~6.0.0" - expo-file-system "~6.0.1" - expo-permissions "~6.0.0" - unimodules-barcode-scanner-interface "~3.0.0" - unimodules-camera-interface "~3.0.0" - unimodules-constants-interface "~3.0.0" - unimodules-face-detector-interface "~3.0.0" - unimodules-file-system-interface "~3.0.0" - unimodules-font-interface "~3.0.0" - unimodules-image-loader-interface "~3.0.0" - unimodules-permissions-interface "~3.0.0" - unimodules-sensors-interface "~3.0.0" - unimodules-task-manager-interface "~3.0.0" + 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-view-shot@2.6.0: version "2.6.0" @@ -9484,15 +9547,15 @@ react-native-web@^0.11.4: prop-types "^15.6.0" react-timer-mixin "^0.13.4" -react-native-webview@~5.12.0: - version "5.12.1" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-5.12.1.tgz#5e2b124e9087d64fc40040d911c10ee5744b5d4d" - integrity sha512-pFYzyNUG+k7Jk2a0Z3S1+OL9qtp0VQxVP08d1ume/O6l1Xibi0K0hRZms7zPUHqQc2uWEfjZ0FOa17MIN7vruw== +react-native-webview@7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-7.0.5.tgz#1dd9d4f2856bda86a40222eca3612bf2152bacd3" + integrity sha512-FWY3tjbyV3Uhuw1JxJ0zs2HspJ5HAsIfkJaquURsVWQnTdZPnkSQjHWQp0PzGIwJ1PPVOA/gnhRmd7SZU/Br5Q== dependencies: escape-string-regexp "1.0.5" invariant "2.2.4" -react-native@0.59.10: +react-native@~0.59.10: version "0.59.10" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.59.10.tgz#352f381e382f93a0403be499c9e384bf51c2591c" integrity sha512-guB9YW+pBqS1dnfZ4ntzjINopiCUAbdmshU2wMWD1W32fRczLAopi/7Q2iHKP8LTCdxuYZV3fa9Mew5PSuANAw== @@ -9592,15 +9655,15 @@ react-transform-hmr@^1.0.4: global "^4.3.0" react-proxy "^1.1.7" -react@16.8.3: - version "16.8.3" - resolved "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9" - integrity sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA== +react@~16.8.3: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.3" + scheduler "^0.13.6" read-chunk@2.1.0: version "2.1.0" @@ -10091,7 +10154,7 @@ sax@~1.1.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240" integrity sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA= -scheduler@^0.13.3: +scheduler@^0.13.6: version "0.13.6" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== @@ -10099,14 +10162,6 @@ scheduler@^0.13.3: loose-envify "^1.1.0" object-assign "^4.1.1" -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== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -11347,55 +11402,55 @@ 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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-barcode-scanner-interface/-/unimodules-barcode-scanner-interface-3.0.0.tgz#2ec52201ee1f0e10af3b03ed49862d6b6937cf10" - integrity sha512-EtJBfKU5VgZbyIfIZwyWfUo59pIgW6s7YGzlpj9jk4UWKyqqhYT/FoaZqudCJcPcfh2eYxkc9VxBGieRBpQrzg== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-camera-interface/-/unimodules-camera-interface-3.0.0.tgz#2869f0868a9e2c65bd2346f0a67d93bc96509676" - integrity sha512-STjf1FAdYlN27ilJSR4kIUYyHTPrkQSR/mEg4S4pZX6tazmcuG2KzLCXCoV+xMWsrwmsMBjgLzw6yzg87N5Ydw== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-constants-interface/-/unimodules-constants-interface-3.0.0.tgz#991f823369da27362e8633a7dac680fb530e5569" - integrity sha512-S4ap11UJH7D+Y4fXC7DyMNAkqIWD8B7rNCTS30wAF9beHXMZa1Od66rkJgSHqFRURy06h+Jr7qfJm9H5mtMz8Q== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-face-detector-interface/-/unimodules-face-detector-interface-3.0.0.tgz#5752a00156a6de470944161040b845a1f1ae84b0" - integrity sha512-fMQ3ZnhdOjbQ5ZXW62s/t1bbqBaenxzVIcgVEcwvLIFek0mx/EMHFkySgFkFjU11icUvaPEXW1yJtkK4QEpLhg== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-file-system-interface/-/unimodules-file-system-interface-3.0.0.tgz#0ada7a89e3046d2fa4dd1853b867fe8ae3994561" - integrity sha512-LkLIKRE3CwsXLRFw8vx0++Cfjj+pAvvidVb7yhGWKFmNlVaWUW9Z8jkhFLBFXDsGFAOU69bUTrz25jmB2MRt0Q== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-font-interface/-/unimodules-font-interface-3.0.0.tgz#e38dfc0932e9a84c5b8091eeb6735170fa86d85e" - integrity sha512-DOQI0uTn7CGvA9lNUuiTWfQYuKQEM8LZKn6gNS8G+HVHVb+TZl/37qdhuoMBi5jkAZ4VOD/GpgnPv8qr0pJi1Q== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-image-loader-interface/-/unimodules-image-loader-interface-3.0.0.tgz#49e371fdf3fc4acf382f726cfac643d5c08b051f" - integrity sha512-hC/VWdT33GkOZ4FLaqPoKGNKxhw+miFhM+7Re57snWIWYewSv0lRvCqqwc/hbGLocvd2qF3YYrBx9woqPI8NzA== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-permissions-interface/-/unimodules-permissions-interface-3.0.0.tgz#c8396a1b697b116801cfcb3b52466b87380a5b78" - integrity sha512-rfyGDBMtO8IOlk9hJN44EKz7vk6nt/PXByAumsptRdgsd+knokMlaWGYatrxKW2g/08WUbEkgKspvMxjJ0M1Tg== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-sensors-interface/-/unimodules-sensors-interface-3.0.0.tgz#9591b7015fae5c2752652a4cdc294f7734489ea1" - integrity sha512-1JJT/lqCfxHqUSJc3o6b0WUply/lFOJjcuzN0QcAfmdAW8d+lEXA7BJ7DV/Nn/OKpMlHriEyxkM+FoGoXKJJcg== +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@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unimodules-task-manager-interface/-/unimodules-task-manager-interface-3.0.0.tgz#26f31786eb54dfa5839ca71bf9a77b9c2b4cf4cb" - integrity sha512-og4UiUOxc7PqT8uQQqXY+pOBvdS204xmgyUG2AjM2L3kVsw/6WH4pIW084WG8/e9M5SLsSXdrjecIUBQ/zLf8w== +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" diff --git a/jest-setup.js b/jest-setup.js index 5d13d5e1b..8abac1981 100644 --- a/jest-setup.js +++ b/jest-setup.js @@ -2,6 +2,25 @@ jest.mock('@react-native-community/masked-view', () => () => null); +jest.mock('react-native-safe-area-context', () => { + const React = require('react'); + + const SafeAreaContext = React.createContext({ + top: 0, + left: 0, + right: 0, + bottom: 0, + }); + + return { + __esModule: true, + + SafeAreaContext, + SafeAreaProvider: SafeAreaContext.Provider, + SafeAreaConsumer: SafeAreaContext.Consumer, + }; +}); + jest.mock('react-native-gesture-handler', () => ({ PanGestureHandler: 'PanGestureHandler', BaseButton: 'BaseButton', diff --git a/package.json b/package.json index cce62e2aa..9783f1a10 100644 --- a/package.json +++ b/package.json @@ -62,14 +62,15 @@ "husky": "^3.0.0", "jest": "^24.8.0", "prettier": "^1.18.2", - "react": "16.8.3", - "react-dom": "16.8.3", - "react-native": "~0.59.8", + "react": "~16.8.3", + "react-dom": "~16.8.3", + "react-native": "~0.59.10", "react-native-gesture-handler": "^1.3.0", "react-native-reanimated": "^1.1.0", + "react-native-safe-area-context": "^0.3.3", "react-native-screens": "^1.0.0-alpha.23", "react-navigation": "^4.0.7", - "react-test-renderer": "16.8.3", + "react-test-renderer": "~16.8.3", "release-it": "^12.3.2", "scheduler": "^0.14.0", "typescript": "^3.5.2" diff --git a/src/TransitionConfigs/CardStyleInterpolators.tsx b/src/TransitionConfigs/CardStyleInterpolators.tsx index 9d0a080cc..c24db38da 100644 --- a/src/TransitionConfigs/CardStyleInterpolators.tsx +++ b/src/TransitionConfigs/CardStyleInterpolators.tsx @@ -1,6 +1,5 @@ import { I18nManager } from 'react-native'; import Animated from 'react-native-reanimated'; -import getStatusBarHeight from '../utils/getStatusBarHeight'; import { CardInterpolationProps, CardInterpolatedStyle } from '../types'; const { cond, add, multiply, interpolate } = Animated; @@ -81,9 +80,10 @@ export function forModalPresentationIOS({ current, next, layouts: { screen }, + insets, }: CardInterpolationProps): CardInterpolatedStyle { const topOffset = 10; - const statusBarHeight = getStatusBarHeight(screen.width > screen.height); + const statusBarHeight = insets.top; const aspectRatio = screen.height / screen.width; const progress = add(current.progress, next ? next.progress : 0); diff --git a/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap b/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap index ae0ac9123..1f2da9cce 100644 --- a/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap +++ b/src/navigators/__tests__/__snapshots__/NestedNavigator.test.tsx.snap @@ -1,625 +1,14 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Nested navigators renders succesfully as direct child 1`] = ` -Array [ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Home - - - - - - - - - - - - - - - , - - - - - - - - - - - Sub - - - - - - , -] + } +/> `; exports[`Nested navigators throw when trying to pass navigation prop 1`] = `"No \\"routes\\" found in navigation state. Did you try to pass the navigation prop of a React component to a Navigator child? See https://reactnavigation.org/docs/en/custom-navigators.html#navigator-navigation-prop"`; diff --git a/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap b/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap index 97fb9d32d..12c3e7916 100644 --- a/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap +++ b/src/navigators/__tests__/__snapshots__/StackNavigator.test.tsx.snap @@ -1,654 +1,23 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`StackNavigator applies correct values when headerRight is present 1`] = ` -Array [ - - - - - - - - - - - - - - - - - - , - - - - - - - - - - - Welcome anonymous - - - - - - - - - , -] + } +/> `; exports[`StackNavigator renders successfully 1`] = ` -Array [ - - - - - - - - - - - - - - - - - - , - - - - - - - - - - - Welcome anonymous - - - - - - , -] + } +/> `; diff --git a/src/types.tsx b/src/types.tsx index e19df6090..6f79dd175 100644 --- a/src/types.tsx +++ b/src/types.tsx @@ -5,6 +5,7 @@ import { LayoutChangeEvent, } from 'react-native'; import Animated from 'react-native-reanimated'; +import { EdgeInsets } from 'react-native-safe-area-context'; import { NavigationRoute, NavigationState, @@ -93,7 +94,6 @@ export type HeaderOptions = { headerPressColorAndroid?: string; headerBackground?: React.ReactNode | (() => React.ReactNode); headerStyle?: StyleProp; - headerStatusBarHeight?: number; headerTransparent?: boolean; }; @@ -221,6 +221,7 @@ export type CardInterpolationProps = { layouts: { screen: Layout; }; + insets: EdgeInsets; }; export type CardInterpolatedStyle = { diff --git a/src/utils/getStatusBarHeight.tsx b/src/utils/getStatusBarHeight.tsx deleted file mode 100644 index 12c74ba9f..000000000 --- a/src/utils/getStatusBarHeight.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Platform } from 'react-native'; -import { getStatusBarHeight as getStatusBarHeightNative } from 'react-native-safe-area-view'; - -const getStatusBarHeight = Platform.select({ - default: getStatusBarHeightNative, - web: () => 0, -}); - -export default getStatusBarHeight; diff --git a/src/views/Header/HeaderSegment.tsx b/src/views/Header/HeaderSegment.tsx index 1ebc4cbcb..8ddc1d5c6 100644 --- a/src/views/Header/HeaderSegment.tsx +++ b/src/views/Header/HeaderSegment.tsx @@ -7,9 +7,9 @@ import { ViewStyle, } from 'react-native'; import Animated from 'react-native-reanimated'; +import { SafeAreaContext, EdgeInsets } from 'react-native-safe-area-context'; import HeaderBackButton from './HeaderBackButton'; import HeaderBackground from './HeaderBackground'; -import getStatusBarHeight from '../../utils/getStatusBarHeight'; import memoize from '../../utils/memoize'; import { Layout, @@ -54,28 +54,32 @@ const warnIfHeaderStylesDefined = (styles: { [key: string]: any }) => { }); }; +/* + * This does not include the status bar or notch height anymore! This is up to + * the user to take care of manually. + */ export const getDefaultHeaderHeight = (layout: Layout) => { const isLandscape = layout.width > layout.height; - let headerHeight; - if (Platform.OS === 'ios') { // @ts-ignore if (isLandscape && !Platform.isPad) { - headerHeight = 32; + return 32; } else { - headerHeight = 44; + return 44; } } else if (Platform.OS === 'android') { - headerHeight = 56; + return 56; } else { - headerHeight = 64; + return 64; } - - return headerHeight + getStatusBarHeight(isLandscape); }; export default class HeaderSegment extends React.Component { + static contextType = SafeAreaContext; + + context!: EdgeInsets | null; + state: State = {}; private handleTitleLayout = (e: LayoutChangeEvent) => { @@ -139,8 +143,6 @@ export default class HeaderSegment extends React.Component { headerLeft: left = onGoBack ? (props: HeaderBackButtonProps) => : undefined, - // @ts-ignore - headerStatusBarHeight = getStatusBarHeight(layout.width > layout.height), headerTransparent, headerTintColor, headerLeftTintColor, @@ -163,7 +165,7 @@ export default class HeaderSegment extends React.Component { styleInterpolator, } = this.props; - const { leftLabelLayout, titleLayout } = this.state; + const { titleLayout, leftLabelLayout } = this.state; const { titleStyle, @@ -180,8 +182,10 @@ export default class HeaderSegment extends React.Component { previousTitle ? leftLabelLayout : undefined ); + const statusBarHeight = this.context ? this.context.top : 0; + const { - height = getDefaultHeaderHeight(layout), + height = getDefaultHeaderHeight(layout) + statusBarHeight, minHeight, maxHeight, backgroundColor, @@ -312,10 +316,7 @@ export default class HeaderSegment extends React.Component { pointerEvents="box-none" style={[{ height, minHeight, maxHeight, opacity }]} > - + {leftButton ? ( { static defaultProps = { overlayEnabled: Platform.OS !== 'ios', @@ -236,6 +244,10 @@ export default class Card extends React.Component { gestureVelocityImpact: GESTURE_VELOCITY_IMPACT, }; + static contextType = SafeAreaContext; + + context!: EdgeInsets | null; + componentDidUpdate(prevProps: Props) { const { layout, @@ -394,7 +406,8 @@ export default class Card extends React.Component { this.props.index, this.props.current, this.props.next, - this.props.layout + this.props.layout, + this.context || DEFAULT_INSETS ); }; @@ -702,7 +715,8 @@ export default class Card extends React.Component { index: number, current: Animated.Node, next: Animated.Node | undefined, - layout: Layout + layout: Layout, + insets: EdgeInsets ) => styleInterpolator({ index, @@ -712,6 +726,7 @@ export default class Card extends React.Component { layouts: { screen: layout, }, + insets, }) ); @@ -724,7 +739,8 @@ export default class Card extends React.Component { this.props.index, this.props.current, this.props.next, - this.props.layout + this.props.layout, + this.context || DEFAULT_INSETS ); private gestureActivationCriteria() { @@ -797,7 +813,8 @@ export default class Card extends React.Component { index, current, next, - layout + layout, + this.context || DEFAULT_INSETS ); } diff --git a/src/views/Stack/StackView.tsx b/src/views/Stack/StackView.tsx index 816599df9..154ac56b8 100644 --- a/src/views/Stack/StackView.tsx +++ b/src/views/Stack/StackView.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import { Platform } from 'react-native'; +import { SafeAreaProvider } from 'react-native-safe-area-context'; import { SceneView, StackActions, NavigationRoute } from 'react-navigation'; import Stack from './Stack'; import HeaderContainer, { @@ -337,26 +338,28 @@ class StackView extends React.Component { mode !== 'modal' && Platform.OS === 'ios' ? 'float' : 'screen'; return ( - + + + ); } } diff --git a/yarn.lock b/yarn.lock index bbd9dc017..bc6ec9923 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7277,17 +7277,17 @@ react-devtools-core@^3.6.0: shell-quote "^1.6.1" ws "^3.3.1" -react-dom@16.8.3: - version "16.8.3" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.3.tgz#ae236029e66210783ac81999d3015dfc475b9c32" - integrity sha512-ttMem9yJL4/lpItZAQ2NTFAbV7frotHk5DZEHXUOws2rMmrsvh1Na7ThGT0dTzUIl6pqTOi5tYREfL8AEna3lA== +react-dom@~16.8.3: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.3" + scheduler "^0.13.6" -react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.3, react-is@^16.8.4, react-is@^16.8.6: +react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== @@ -7306,6 +7306,11 @@ react-native-reanimated@^1.1.0: resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.1.0.tgz#ba6864055ec3a206cdd5209a293fe653ce276206" integrity sha512-UGDVNfvuIkMqYUx6aytSzihuzv6sWubn0MQi8dRcw7BjgezhjJnVnJ/NSOcpL3cO+Ld7lFcRX6GKcskwkHdPkw== +react-native-safe-area-context@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-0.3.3.tgz#42a4e50be2eb3e18f7382c2d9756c6665ca3c081" + integrity sha512-tOcSBbNle3zIuonagm8pzMf0+5VCL0iSGJJbgajIjssO4skE38mN7uXFWPFHy0D/kNDwywZ2WG53INgxdoQL6g== + react-native-safe-area-view@^0.14.1, react-native-safe-area-view@^0.14.6: version "0.14.6" resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.14.6.tgz#9a9d37d9f8f3887d60c4076eae7b5d2319539446" @@ -7325,10 +7330,10 @@ react-native-screens@^1.0.0-alpha.23: dependencies: debounce "^1.2.0" -react-native@~0.59.8: - version "0.59.9" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.59.9.tgz#c94ee4fa35121720c05235a2dd6cdd2784bf5177" - integrity sha512-/+8EgIZwFpYHyyJ7Zav7B6LHNrytwUQ+EKGT/QV7HSrgpf2Y5NZNeUYUHKiVKLYpBip1G32/LcAECQj37YRwGQ== +react-native@~0.59.10: + version "0.59.10" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.59.10.tgz#352f381e382f93a0403be499c9e384bf51c2591c" + integrity sha512-guB9YW+pBqS1dnfZ4ntzjINopiCUAbdmshU2wMWD1W32fRczLAopi/7Q2iHKP8LTCdxuYZV3fa9Mew5PSuANAw== dependencies: "@babel/runtime" "^7.0.0" "@react-native-community/cli" "^1.2.1" @@ -7397,15 +7402,15 @@ react-proxy@^1.1.7: lodash "^4.6.1" react-deep-force-update "^1.0.0" -react-test-renderer@16.8.3: - version "16.8.3" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.3.tgz#230006af264cc46aeef94392e04747c21839e05e" - integrity sha512-rjJGYebduKNZH0k1bUivVrRLX04JfIQ0FKJLPK10TAb06XWhfi4gTobooF9K/DEFNW98iGac3OSxkfIJUN9Mdg== +react-test-renderer@~16.8.3: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1" + integrity sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw== dependencies: object-assign "^4.1.1" prop-types "^15.6.2" - react-is "^16.8.3" - scheduler "^0.13.3" + react-is "^16.8.6" + scheduler "^0.13.6" react-transform-hmr@^1.0.4: version "1.0.4" @@ -7415,15 +7420,15 @@ react-transform-hmr@^1.0.4: global "^4.3.0" react-proxy "^1.1.7" -react@16.8.3: - version "16.8.3" - resolved "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9" - integrity sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA== +react@~16.8.3: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - scheduler "^0.13.3" + scheduler "^0.13.6" read-pkg-up@^1.0.1: version "1.0.1" @@ -7959,7 +7964,7 @@ sax@~1.1.1: resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240" integrity sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA= -scheduler@^0.13.3: +scheduler@^0.13.6: version "0.13.6" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==