From a8735805934bfaf65111131aa0c0a5decb631362 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 17:49:44 -0400 Subject: [PATCH] Android mobile improvements (#1989) * fix absolute common imports * Upgrade expo, react-native-webview * Make manifold.markets links target '_self', hack iframe to layer on an tag for native * Remove maniswipe-controlled back/forward gestures * Use refs instead of state * Use refs instead of state * Undo expo upgrade, remove sentry to build android * Fix broken android deep links on open after contentProcessTerminated * Remove unused imports * Add note * Remove completed todo * Remove extra url check * Add note about mobile hydration errors * All iframes get _self treatment --- common/src/util/tiptap-iframe.ts | 42 +- native/App.tsx | 143 +-- native/android/app/build.gradle | 7 +- .../android/app/src/main/AndroidManifest.xml | 2 +- .../manifold/ReactNativeFlipper.java | 0 native/android/gradlew.bat | 182 +-- native/app.config.js | 12 - native/app.json | 2 +- native/components/auth-page.tsx | 6 +- native/components/ios-iap-listener.tsx | 36 +- native/components/web-view-utils.tsx | 20 +- native/init.ts | 25 +- ...twork@2x.png => App-Icon-1024x1024@1x.png} | Bin .../AppIcon.appiconset/App-Icon-20x20@1x.png | Bin 662 -> 0 bytes .../AppIcon.appiconset/App-Icon-20x20@2x.png | Bin 1611 -> 0 bytes .../AppIcon.appiconset/App-Icon-20x20@3x.png | Bin 2761 -> 0 bytes .../AppIcon.appiconset/App-Icon-29x29@1x.png | Bin 1046 -> 0 bytes .../AppIcon.appiconset/App-Icon-29x29@2x.png | Bin 2631 -> 0 bytes .../AppIcon.appiconset/App-Icon-29x29@3x.png | Bin 4361 -> 0 bytes .../AppIcon.appiconset/App-Icon-40x40@1x.png | Bin 1611 -> 0 bytes .../AppIcon.appiconset/App-Icon-40x40@2x.png | Bin 3969 -> 0 bytes .../AppIcon.appiconset/App-Icon-40x40@3x.png | Bin 6289 -> 0 bytes .../AppIcon.appiconset/App-Icon-60x60@2x.png | Bin 6289 -> 0 bytes .../AppIcon.appiconset/App-Icon-60x60@3x.png | Bin 9801 -> 0 bytes .../AppIcon.appiconset/App-Icon-76x76@1x.png | Bin 3721 -> 0 bytes .../AppIcon.appiconset/App-Icon-76x76@2x.png | Bin 8106 -> 0 bytes .../App-Icon-83.5x83.5@2x.png | Bin 9010 -> 0 bytes .../AppIcon.appiconset/Contents.json | 116 +- native/ios/Podfile | 1 + native/ios/Podfile.lock | 76 +- native/metro.config.js | 4 +- native/package.json | 13 +- native/tsconfig.json | 5 +- native/yarn.lock | 1069 ++++++++--------- .../editor/link-preview-node-view.tsx | 2 +- web/components/native-message-listener.tsx | 20 +- web/components/widgets/editor.tsx | 3 + 37 files changed, 745 insertions(+), 1041 deletions(-) rename native/android/app/src/release/java/com/{ => markets}/manifold/ReactNativeFlipper.java (100%) rename native/ios/Manifold/Images.xcassets/AppIcon.appiconset/{ItunesArtwork@2x.png => App-Icon-1024x1024@1x.png} (100%) delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png diff --git a/common/src/util/tiptap-iframe.ts b/common/src/util/tiptap-iframe.ts index c59f56f002..9b9bab88e4 100644 --- a/common/src/util/tiptap-iframe.ts +++ b/common/src/util/tiptap-iframe.ts @@ -49,10 +49,44 @@ export default Node.create({ }, renderHTML({ HTMLAttributes }) { - return [ - 'iframe', - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - ] + const iframeAttributes = mergeAttributes( + this.options.HTMLAttributes, + HTMLAttributes + ) + const { src } = HTMLAttributes + + // This is a hack to prevent native from opening the iframe in an in-app browser + // and mobile in another tab. In native, links with target='_blank' open in the in-app browser. + if (src.includes('manifold.markets/embed/')) { + return [ + 'div', + { + style: { + position: 'relative', + }, + ...this.options.HTMLAttributes, + }, + [ + 'a', + { + href: src.replace('embed/', ''), + target: '_self', + style: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + zIndex: 10000, + display: 'block', + }, + }, + ], + ['iframe', iframeAttributes], + ] + } + + return ['iframe', iframeAttributes] }, addCommands() { diff --git a/native/App.tsx b/native/App.tsx index 830e70da58..06af3fcfbb 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -2,8 +2,7 @@ import { app, auth, ENV } from './init' import React, { useEffect, useRef, useState } from 'react' import WebView from 'react-native-webview' import 'expo-dev-client' -import { EXTERNAL_REDIRECTS } from 'common/src/envs/constants' -import * as Device from 'expo-device' +import { EXTERNAL_REDIRECTS } from 'common/envs/constants' import * as Notifications from 'expo-notifications' import { Platform, @@ -23,19 +22,16 @@ import * as WebBrowser from 'expo-web-browser' import * as LinkingManager from 'react-native/Libraries/Linking/NativeLinkingManager' import * as Linking from 'expo-linking' import { Subscription } from 'expo-modules-core' -import { setFirebaseUserViaJson } from 'common/src/firebase-auth' -import * as Sentry from 'sentry-expo' +import { setFirebaseUserViaJson } from 'common/firebase-auth' import { StatusBar } from 'expo-status-bar' -import { AuthPage } from 'components/auth-page' import { IosIapListener } from 'components/ios-iap-listener' import { withIAPContext } from 'react-native-iap' -import { getSourceUrl, Notification } from 'common/src/notification' -import { Splash } from 'components/splash' +import { getSourceUrl, Notification } from 'common/notification' import { nativeToWebMessage, nativeToWebMessageType, webToNativeMessage, -} from 'common/src/native-message' +} from 'common/native-message' import { handleWebviewKilled, sharedWebViewProps, @@ -45,14 +41,14 @@ import { import { ExportLogsButton, log } from 'components/logger' import { ReadexPro_400Regular, useFonts } from '@expo-google-fonts/readex-pro' import Constants from 'expo-constants' -import { NativeShareData } from 'common/src/native-share-data' +import { NativeShareData } from 'common/native-share-data' import { clearData, getData, storeData } from 'lib/auth' import { SplashAuth } from 'components/splash-auth' import { useIsConnected } from 'lib/use-is-connected' // NOTE: URIs other than manifold.markets and localhost:3000 won't work for API requests due to CORS // this means no supabase jwt, placing bets, creating markets, etc. -// const baseUri = 'http://192.168.0.74:3000/' +// const baseUri = 'http://192.168.1.154:3000/' const baseUri = ENV === 'DEV' ? 'https://dev.manifold.markets/' : 'https://manifold.markets/' const nativeQuery = `?nativePlatform=${Platform.OS}` @@ -66,7 +62,8 @@ const App = () => { // This tracks if the webview has loaded its first page const [hasLoadedWebView, setHasLoadedWebView] = useState(false) // This tracks if the app has its nativeMessageListener set up - const [listeningToNative, setListeningToNative] = useState(false) + // NOTE: After the webview is killed on android due to OOM, this will always be false, see: https://github.com/react-native-webview/react-native-webview/issues/2680 + const listeningToNative = useRef(false) // Sometimes we're linked to a url but the webview has been killed by the OS. We save it here to reload it on reboot const [lastLinkInMemory, setLastLinkInMemory] = useState() @@ -80,6 +77,7 @@ const App = () => { if (!user) return log('Got user from storage:', user.email) setFbUser(user) + sendWebviewAuthInfo(user) setFirebaseUserViaJson(user, app) .catch((e) => { log('Error setting user:', e) @@ -94,19 +92,17 @@ const App = () => { }, []) // Sends the saved user to the web client to make the log in process faster - useEffect(() => { - if (listeningToNative && fbUser) { - // We use a timeout because sometimes the auth persistence manager is still undefined on the client side - // Seems my iPhone 12 mini can regularly handle a shorter timeout - setTimeout(() => { - communicateWithWebview('nativeFbUser', fbUser) - }, 100) - // My older android phone needs a bit longer - setTimeout(() => { - communicateWithWebview('nativeFbUser', fbUser) - }, 250) - } - }, [listeningToNative, fbUser]) + const sendWebviewAuthInfo = (user: FirebaseUser) => { + // We use a timeout because sometimes the auth persistence manager is still undefined on the client side + // Seems my iPhone 12 mini can regularly handle a shorter timeout + setTimeout(() => { + communicateWithWebview('nativeFbUser', user) + }, 100) + // My older android phone needs a bit longer + setTimeout(() => { + communicateWithWebview('nativeFbUser', user) + }, 500) + } // Url management const [urlToLoad, setUrlToLoad] = useState( @@ -122,15 +118,21 @@ const App = () => { const [theme, setTheme] = useState<'dark' | 'light'>('light') const setEndpointWithNativeQuery = (endpoint?: string) => { - const newUrl = baseUri + (endpoint ?? 'home') + nativeQuery + const newUrl = + baseUri + + (endpoint ?? 'home') + + nativeQuery + + `&rand=${Math.random().toString()}` + log('Setting new url:', newUrl) + setUrlToLoad(newUrl) + } + + const setUrlWithNativeQuery = (url: String) => { + const newUrl = url + nativeQuery + `&rand=${Math.random().toString()}` log('Setting new url:', newUrl) - // React native doesn't come with Url, so we may want to use a library setUrlToLoad(newUrl) } - const [allowSystemBack, setAllowSystemBack] = useState( - sharedWebViewProps.allowsBackForwardNavigationGestures - ) // IAP const [checkoutAmount, setCheckoutAmount] = useState(null) @@ -141,15 +143,14 @@ const App = () => { 'Push notification tapped, has loaded webview:', hasLoadedWebView, ', is listening to native:', - listeningToNative + listeningToNative.current ) log('webview.current:', webview.current) // Perhaps this isn't current if the webview is killed for memory collection? Not sure const notification = response.notification.request.content .data as Notification - // TODO: this should check if the webview is listening to native, not if it's loaded - if (hasLoadedWebView) { + if (hasLoadedWebView && listeningToNative.current) { communicateWithWebview( 'notification', response.notification.request.content.data @@ -159,13 +160,12 @@ const App = () => { } useEffect(() => { - if (lastLinkInMemory) - log( - 'Running lastNotificationInMemory effect, has loaded webview:', - hasLoadedWebView, - 'last link in memory:', - lastLinkInMemory - ) + log( + 'Running lastNotificationInMemory effect, has loaded webview:', + hasLoadedWebView, + 'last link in memory:', + lastLinkInMemory + ) // If there's a notification in memory and the webview has not loaded, set it as the url to load if (lastLinkInMemory && !hasLoadedWebView) { log( @@ -205,9 +205,7 @@ const App = () => { useEffect(() => { Linking.getInitialURL().then((url) => { log('Initial url:', url, '- has loaded webview:', hasLoadedWebView) - if (url) { - setUrlToLoad(url) - } + if (url) setUrlWithNativeQuery(url) }) BackHandler.addEventListener('hardwareBackPress', handleBackButtonPress) return () => @@ -230,7 +228,9 @@ const App = () => { `, and data: ${JSON.stringify(queryParams)}` ) const url = path ? path : '/' - communicateWithWebview('link', { url }) + if (hasLoadedWebView && listeningToNative.current) + communicateWithWebview('link', { url }) + else setEndpointWithNativeQuery(url) setLastLinkInMemory(url) // If we don't clear the url, we'll reopen previously opened links const clearUrlCacheEvent = { @@ -246,9 +246,6 @@ const App = () => { webview.current?.goBack() return true } catch (err) { - Sentry.Native.captureException(err, { - extra: { message: 'back button press' }, - }) log('[handleBackButtonPress] Error : ', err) return false } @@ -281,8 +278,6 @@ const App = () => { } const registerForPushNotificationsAsync = async () => { - if (!Device.isDevice) return null - try { const existingStatus = await getExistingPushNotificationStatus() let finalStatus = existingStatus @@ -299,9 +294,6 @@ const App = () => { } return await getPushToken() } catch (e) { - Sentry.Native.captureException(e, { - extra: { message: 'error registering for push notifications' }, - }) log('Error registering for push notifications', e) return null } @@ -359,15 +351,8 @@ const App = () => { await storeData('user', fbUser) } } catch (e) { - Sentry.Native.captureException(e, { - extra: { message: 'error parsing users from client' }, - }) + log('error signing in users', e) } - } else if (type == 'onPageVisit') { - if (!isIOS) return // Android doesn't use the swipe to go back - const { page } = payload - log('page:', page) - setAllowSystemBack(page !== 'swipe') } else if (type === 'share') { const { url, title, message } = payload as NativeShareData log('Sharing:', message, url, title) @@ -385,7 +370,8 @@ const App = () => { log('[Web Console]', ...args) } else if (type === 'startedListening') { log('Client started listening') - setListeningToNative(true) + listeningToNative.current = true + if (fbUser) sendWebviewAuthInfo(fbUser) } else { log('Unhandled message from web type: ', type) log('Unhandled message from web data: ', data) @@ -397,16 +383,10 @@ const App = () => { await auth.signOut() } catch (err) { log(errorMessage, err) - Sentry.Native.captureException(err, { - extra: { message: errorMessage }, - }) } setFbUser(null) await clearData('user').catch((err) => { log('Error clearing user data', err) - Sentry.Native.captureException(err, { - extra: { message: 'error clearing user data' }, - }) }) } @@ -414,7 +394,12 @@ const App = () => { type: nativeToWebMessageType, data: object ) => { - log('Sending message to webview:', type, 'is listening:', listeningToNative) + log( + 'Sending message to webview:', + type, + 'is listening:', + listeningToNative.current + ) webview.current?.postMessage( JSON.stringify({ type, @@ -425,12 +410,10 @@ const App = () => { const resetWebView = () => { setHasLoadedWebView(false) - setListeningToNative(false) + listeningToNative.current = false setEndpointWithNativeQuery() - setTimeout(() => { - log('Reloading webview, webview.current:', webview.current) - webview.current?.reload() - }, 100) + log('Reloading webview, webview.current:', webview.current) + webview.current?.reload() } const isConnected = useIsConnected() @@ -460,9 +443,8 @@ const App = () => { ) { webview.current?.stopLoading() WebBrowser.openBrowserAsync(url) - return false + return } - return true } return ( @@ -476,7 +458,7 @@ const App = () => { fbUser={fbUser} isConnected={isConnected} /> - {Platform.OS === 'ios' && Device.isDevice && fullyLoaded && ( + {Platform.OS === 'ios' && fullyLoaded && ( { { - log('WebView onLoadEnd') + log('WebView onLoadEnd for url:', urlToLoad) setHasLoadedWebView(true) }} source={{ uri: urlToLoad }} ref={webview} onError={(e) => handleWebviewError(e, resetWebView)} renderError={(e) => handleRenderError(e, width, height)} - onShouldStartLoadWithRequest={(r) => - r.mainDocumentURL ? handleExternalLink(r.mainDocumentURL) : true - } - // On navigation state change changes on every url change - onNavigationStateChange={(navState) => - handleExternalLink(navState.url) - } + onOpenWindow={(e) => handleExternalLink(e.nativeEvent.targetUrl)} onRenderProcessGone={(e) => handleWebviewKilled(e, resetWebView)} onContentProcessDidTerminate={(e) => handleWebviewKilled(e, resetWebView) diff --git a/native/android/app/build.gradle b/native/android/app/build.gradle index 9b66f494f2..bc1b3e61af 100644 --- a/native/android/app/build.gradle +++ b/native/android/app/build.gradle @@ -108,21 +108,19 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -apply from: new File(["node", "--print", "require.resolve('@sentry/react-native/package.json')"].execute().text.trim(), "../sentry.gradle") - android { ndkVersion rootProject.ext.ndkVersion compileSdkVersion rootProject.ext.compileSdkVersion - namespace "com.markets.manifold" + namespace 'com.markets.manifold' defaultConfig { applicationId 'com.markets.manifold' minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 54 - missingDimensionStrategy 'store', 'play' versionName "2.0.46" + missingDimensionStrategy 'store', 'play' } splits { @@ -149,6 +147,7 @@ android { // Caution! In production, you need to generate your own keystore file. // see https://reactnative.dev/docs/signed-apk-android. signingConfig signingConfigs.debug + shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false) minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } diff --git a/native/android/app/src/main/AndroidManifest.xml b/native/android/app/src/main/AndroidManifest.xml index 4a5fe72ea1..4b150cf0be 100644 --- a/native/android/app/src/main/AndroidManifest.xml +++ b/native/android/app/src/main/AndroidManifest.xml @@ -1,4 +1,4 @@ - + diff --git a/native/android/app/src/release/java/com/manifold/ReactNativeFlipper.java b/native/android/app/src/release/java/com/markets/manifold/ReactNativeFlipper.java similarity index 100% rename from native/android/app/src/release/java/com/manifold/ReactNativeFlipper.java rename to native/android/app/src/release/java/com/markets/manifold/ReactNativeFlipper.java diff --git a/native/android/gradlew.bat b/native/android/gradlew.bat index 53a6b238d4..f127cfd49d 100644 --- a/native/android/gradlew.bat +++ b/native/android/gradlew.bat @@ -1,91 +1,91 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/native/app.config.js b/native/app.config.js index 947390e0f7..8723acd3b1 100644 --- a/native/app.config.js +++ b/native/app.config.js @@ -1,17 +1,5 @@ export default ({ config }) => ({ ...config, - hooks: { - postPublish: [ - { - file: 'sentry-expo/upload-sourcemaps', - config: { - organization: 'manifold-markets', - project: 'react-native', - authToken: process.env.SENTRY_AUTH_TOKEN, - }, - }, - ], - }, extra:{ eas:{ projectId:"0ce454fc-3885-4eab-88b6-787b1691973b", diff --git a/native/app.json b/native/app.json index 529fca9cd7..8b195c8243 100644 --- a/native/app.json +++ b/native/app.json @@ -9,7 +9,7 @@ "orientation": "portrait", "icon": "./assets/logo.png", "userInterfaceStyle": "light", - "plugins": ["./plugins/withAndroidVerifiedLinksWorkaround", "sentry-expo", + "plugins": ["./plugins/withAndroidVerifiedLinksWorkaround", [ "expo-notifications", { diff --git a/native/components/auth-page.tsx b/native/components/auth-page.tsx index 53bf1d0791..22c608bbff 100644 --- a/native/components/auth-page.tsx +++ b/native/components/auth-page.tsx @@ -29,8 +29,7 @@ import { signInWithCredential } from '@firebase/auth' import { auth } from '../init' import WebView from 'react-native-webview' import * as Google from 'expo-auth-session/providers/google' -import { ENV_CONFIG } from 'common/src/envs/constants' -import * as Sentry from 'sentry-expo' +import { ENV_CONFIG } from 'common/envs/constants' import { Text } from 'components/text' import { log } from 'components/logger' @@ -63,9 +62,6 @@ export const AuthPage = (props: { }) } } catch (err) { - Sentry.Native.captureException(err, { - extra: { message: 'google sign in' }, - }) log('[google sign in] Error : ', err) } setLoading(false) diff --git a/native/components/ios-iap-listener.tsx b/native/components/ios-iap-listener.tsx index a786050bd5..d2bc9c329e 100644 --- a/native/components/ios-iap-listener.tsx +++ b/native/components/ios-iap-listener.tsx @@ -7,8 +7,7 @@ import { Sku, useIAP, } from 'react-native-iap' -import * as Sentry from 'sentry-expo' -import { nativeToWebMessageType } from 'common/src/native-message' +import { nativeToWebMessageType } from 'common/native-message' const SKUS = ['mana_1000', 'mana_2500', 'mana_10000'] export const IosIapListener = (props: { @@ -45,17 +44,7 @@ export const IosIapListener = (props: { } getAvailablePurchases() - Sentry.Native.captureException('error on purchase or connection', { - extra: { - message: currentPurchaseError - ? 'currentPurchaseError' - : 'initConnectionError', - products, - currentPurchase, - currentPurchaseError, - initConnectionError, - }, - }) + communicateWithWebview('iapError', {}) } }, [currentPurchaseError, initConnectionError]) @@ -63,13 +52,6 @@ export const IosIapListener = (props: { useEffect(() => { if (availablePurchases.length > 0) { console.log('availablePurchases', availablePurchases) - Sentry.Native.captureException('got available purchases', { - extra: { - message: `available purchases after error? ${didGetPurchaseError}`, - didGetPurchaseError, - availablePurchases, - }, - }) } }, [availablePurchases]) @@ -87,22 +69,11 @@ export const IosIapListener = (props: { const receipt = currentPurchase.transactionReceipt console.log('finishTransaction receipt', receipt) if (didGetPurchaseError) { - Sentry.Native.captureException( - 'receipt received after error on purchase or connection', - { - extra: { - message: `receipt received after ${didGetPurchaseError}`, - }, - } - ) } communicateWithWebview('iapReceipt', { receipt }) } } catch (error) { - Sentry.Native.captureException(error, { - extra: { message: 'error during purchase' }, - }) if (error instanceof PurchaseError) { console.log({ message: `[${error.code}]: ${error.message}`, error }) } else { @@ -140,9 +111,6 @@ export const IosIapListener = (props: { skus: SKUS, }).catch((e) => { console.log('getProducts error', e) - Sentry.Native.captureException(e, { - extra: { message: 'error getting products' }, - }) }) } }, [connected]) diff --git a/native/components/web-view-utils.tsx b/native/components/web-view-utils.tsx index d3d6ee8a90..3baaa36607 100644 --- a/native/components/web-view-utils.tsx +++ b/native/components/web-view-utils.tsx @@ -1,15 +1,13 @@ -import WebView, { WebViewProps } from 'react-native-webview' +import { WebViewProps } from 'react-native-webview' import { Platform, View } from 'react-native' -import React, { RefObject } from 'react' import { WebViewErrorEvent, WebViewRenderProcessGoneEvent, WebViewTerminatedEvent, } from 'react-native-webview/lib/WebViewTypes' -import * as Sentry from 'sentry-expo' import { Splash } from 'components/splash' import { log } from 'components/logger' -import { IS_NATIVE_KEY, PLATFORM_KEY } from 'common/src/native-message' +import { IS_NATIVE_KEY, PLATFORM_KEY } from 'common/native-message' const PREVENT_ZOOM_SET_NATIVE = `(function() { const meta = document.createElement('meta'); meta.setAttribute('content', 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no'); @@ -50,12 +48,7 @@ export const handleWebviewError = ( ) => { const { nativeEvent } = e log('Webview error native event', nativeEvent) - Sentry.Native.captureException(nativeEvent.description, { - extra: { - message: 'webview error', - nativeEvent, - }, - }) + callback() } @@ -65,12 +58,7 @@ export const handleRenderError = ( height: number ) => { log('error on render webview', e) - Sentry.Native.captureException(e, { - extra: { - message: 'webview render error', - e, - }, - }) + // Renders this view while we resolve the error return ( diff --git a/native/init.ts b/native/init.ts index 8e0e4f7491..c87d1f65e5 100644 --- a/native/init.ts +++ b/native/init.ts @@ -1,8 +1,6 @@ import { getApp, getApps, initializeApp } from 'firebase/app' -import { CONFIGS } from 'common/src/envs/constants' +import { CONFIGS } from 'common/envs/constants' import { getAuth } from 'firebase/auth' -import * as Device from 'expo-device' -import * as Sentry from 'sentry-expo' import * as Notifications from 'expo-notifications' import { log } from 'components/logger' import Constants from 'expo-constants' @@ -14,20 +12,13 @@ export const app = getApps().length : initializeApp(CONFIGS[ENV].firebaseConfig) export const auth = getAuth(app) -if (Device.isDevice) { - Sentry.init({ - dsn: 'https://2353d2023dad4bc192d293c8ce13b9a1@o4504040581496832.ingest.sentry.io/4504040585494528', - enableInExpoDevelopment: true, - debug: ENV !== 'PROD', // If `true`, Sentry will try to print out useful debugging information if something goes wrong with sending the event. Set it to `false` in production - }) - Notifications.setNotificationHandler({ - handleNotification: async () => ({ - shouldShowAlert: true, - shouldPlaySound: false, - shouldSetBadge: false, - }), - }) -} +Notifications.setNotificationHandler({ + handleNotification: async () => ({ + shouldShowAlert: true, + shouldPlaySound: false, + shouldSetBadge: false, + }), +}) log('using', ENV, 'env') log('env not switching? run `npx expo start --clear` and then try again') diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png similarity index 100% rename from native/ios/Manifold/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png rename to native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png deleted file mode 100644 index 16c51a4f285cb18fb69e91b5e7f6f2020ab1d5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662 zcmV;H0%`q;P)(L+!#y#zr*4~apD z4=NO4kU>32i7ysLMw-t2Q_U&5Y5RLSZ@WttiwoL|em+!Fc^oLHW$k7kbQWjlXc0#c zSATMcBq^MZK6fb#aR*A%CO!wCQq#!W9cI_}$gDGrI0B%kIMwbjTXwMvbAo4e<3t?~ z;AoX;rkM#PbXY9StR$+YBw_JWKBi+EH zr7@qz{3c$rzeHbW=X<-|GgIM~3zp~o%Zh?O2oe+pps=aG$6Zxx`uM>|2xTqMaUAKm zx8U_i)&g!}PLO5%#XwELCPl&hyYp@BxeceyuLf48zlIQ3f6CnR*aZ~^|8uy)5D{YC zU5i3EhB#w}rnF4&XwLNeqXB<())`)Miv%hPz_R4>)jcUG|s!0s^L zxj8fVV%5DUo@vR{as&W@3dhlH?YV;kD?@L*0CKHdbptPovL=P38yL^ZMroP8ywZ64 zhI4*a06^zww<5v!OEU4AynIgFkZD3SpSN^9{He&Ov-4lZ1CFMh!9eV3?{YM%AdZ2` z)MRLCGNjQ^hmIH=O_@HQw0B?X^kndOwaM#|`g)e!t_W198rvw6U|C|TG?pCHOHuhr wrz;M1& diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png deleted file mode 100644 index 3d33e6f7cee366f80010d518819db767743ea4a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1611 zcmV-R2DJH!P)p@FNU^IQ zrQ&MY>78e<^-kL<&eC>U%Q|-FsyNnCafpDBpkjn3A$bW8d|$iEE_dYM(UsmczaLTb zSPQ;$BuUV+jPIT#$s}TgM2wJ#5fU*%B1T9|S9XrB?&KUy7m4XADKmX<9uub~F)bvf zh0)WC3zN7J$(EtP*U=m347(Q5NKB?|gXPHa9F3NQf~6~r*S}ypJAxT@EvB>}*KqR8 zyppvhL?bc5ldFtdp0h1nWY|-kMUn(2APB4~HND?3*xxsrIa31#6iqz6E&b53M~o?P zjSYi{Mj~4N{?7F&8n_DF=u|R z{;wYn{rj5V*~=jsiE$R>8g}lPxo=ljM|)7EBKEz|^>|@Yaj6N>ic3u&{Aoy%H zIrj&~TCe&MmXxf@`_YW!wJrdzKF(^>P!u7GGQ#3@)br)`?=RF>mUp+eu|><0LqV~% z#g7R{M3k&G_4RT-A3tzs^x}JNwT4uwh}+#G2lw~xeK~7pmKI^lSEpRL?DKhf0RCZN zBqXM#s}VM59&_UDd8#;K>&6@HZ7hJ&^_C0g+_H>`XhghrpbrrwN$jq2=oos~$6x*D z@H?jl4%E)xvAJW|C#)bjq&o_M4Gqf0{woBsp7$*gYr ziwBdTF&RmcM?w;#r-pqzfQEP7woFaUk=f_Zx;aj~{soH&S0DH24-?APTXZ^V$1@%M zP7V=e8!R7OeDH8g!emG&2(kjBrx9_y*2S{I?kY!P!yv}tIH|bQ)N?De{h5w_Cx?hM zt9nsh!uuBnp@4*fAS*I@3K60x*X-@N+dry}rx2#rkiV|57cEQP``fPix_&!ncNOa7KuRlH4lB(Xi@y4~!h7nE2P|H>s zFPw8j84U$NR$v$k(cA-L)qA=R9(zQRaOTv#^Jm?%jER=7PU-9j_4bTF84U$NR%G-P zq9rD&Ha>0j4Dqj2-tO)UVKNj&ta-}(hq``DiG~7}6&O8@aTetzyin=5c4fGFPdCR& zP>{bkF~uBLbufEuRAK`H8xR5kfei?3K=gX}cTU|CMHv7M1wmFcTjCH#)5I^frLS0> za_q3Pxyg$um2I%pzS8&U#~!_bHYCu71lnMrAI(cBE;U_l_Q^8-hlYY6D`aKI1F)uR zUaZLyczN5V|2()qhH&diH{be}mjAc``^p=qM()mbAW;=Ma#h$vfcZfqFj zA4&+Dk*F%)H#0R&y>si$-kuSRLqh?}3JY=#woGkhdDrze7SRX- z)*TskhxRwm-sB%jh$wl={ExqReO{iTh)r9p#bu`7A9nry6AvasInuXaG9w|e>Cc{z zKm1C^P^-(#o42K>rE5kxap(cR_GhU}mK%3%?+o|_L};~S#r~|iLr%4ZI#4^?ny#*R z{#JV%i^&iKXiRC?$2T?%HZ}|mpKUCf8^YZvQ1OcKjuLa+Z-JvZg zN@iK1;hbBR@&6zQ(D>Gzz1&+T@8TOG5hEmGghY&xh!GMo@?T7IaUJiv@hAWQ002ov JPDHLkV1h2i7N!6I diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png deleted file mode 100644 index f2ec58c5a29f941e52c039b4b7f1af0092abb347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2761 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 P00000NkvXXu0mjf{ya(n diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png deleted file mode 100644 index c69a76f51c2a354908b1b418fc39b2363ffa6293..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1046 zcmV+x1nK*UP)f00;2z?|Gg(?|?hFgM*W!f6yK2t^30HYPQEkYTg3 zPA7)|3IWgN#uXMTn-Bl_eTTJrS4xsvjDVcHxL+>LjgNXC(nt_Qp%m4dGUTzM{!5N; zj$06ff*|X0nX%4bv#{$bRV>RlHICHQr$t565R|>7>gu#{98c2(0V{K28$Qf9(Q58& zw?3?u{C3HKAQS|#am?pOCVINPR{*%!JDaSLY=2kh_4-eB+8`Jk zozE*&JpV%ck6qJ84vqs5iK*2Eit5eR5sE@6my?T;(GYZeZQ*(3KBxG#Zw>;nn5?Z( zH8qZ$?zBNr^rG^7x83LC5sE@6m(w33V-WC3)7ZrL{EDaLF*0WF{xp$@s^0wj*oYSa z>njsaeQQG)2B8)f7RAd50{niyv2Mup@gv~T(mdJMJBuJsJ|iEx<(Zr15Qf3OqG_^W z)AG4l&Qw2azvDxwS6){STys6OQtov4oes|7;Jh9`&*N_l?k`EbZ1-OM&ll$2s~O~Z z+(o06NTrn9<g$A6oqXy zx-UMR@VNZ|sy3>RHBVl->;xc{($%|k=g!U?{%8yW24UPT&bZIOvi$DtH@qG{0=CuY zY*yCe_5+Z~8AF=%kjV)kEi-E89({YO`P^AM0vLoDxaKM?QypubqzL};##_l8$DjDh z3_)3?>h#Imgy7{3>eU5`hT1%wz%XQMwYIIrY}{v9m|ryQA8|T31R(^pL9+#6Se75U>G|o5{mNxWdS-NCiIQdr zA+SubJ|ACL60c2>tSMKu9i8erd7EFvT?hdw&hEn!C=)~lMaotA3YU}9>7`Z+d*J=y z*%=@1g%FV9>^?k*M720QGx|c$4A0|!2myl!WV5g~3yc3kAu=dL28GD@3yz+13Tj%n Q`2YX_07*qoM6N<$f?huTEC2ui diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png deleted file mode 100644 index 49b8cbfa9e4f4b0baae367201c62f373e2216637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2631 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 diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png deleted file mode 100644 index 5dfaec7422af01e2b603959f0c60d9cb22da9ae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4361 zcmZ`-Wn2_(w4Vip1wlfjyFp5%L2?lnc*)K06Z^nx(Wb5 zH3)~P8v8@m+em$kf9H{GT^>#;oMxb19ncOH;rUzTkIZ9jxw(WMM6e9ws#o7#bBlY= z5yw%Xu3FH(6n+~a!$zf{uL>Eb6=o5P6CUS3mG1sEz9d@qG{B!f%b}~6=*^N(u(J2s z`-P){jtb;0BGSukfk!|rLns$9zXeN<}i!WFkC*QyJ*FTc+Hup9)MjsY0fu!0?>K10cCw-&!fHDK1BG8Va8H?BIQ*0hQIb>C@d^WmF zp@F>rS~_i`=_2)c@DuTh<%k&6P4l$6hxkB`AAwC=K%7aW3r|SmpY~c}y{xQ6NtLAR zqWc~KTn6H>!|y#T)fu0j6z5oE-cC1yMcQ?-KIbJkny-{j*Df~+1RNZ2gHKbER}LwD z9`*P-t!M$d@yb;*@zeT9k=vS0LF%Q3aB5?5hKnZ{Cr|bbAAszmCNEMl08B zyN&Za=5H>#NdFn|=gCf`CR#sv-@ZUM$V@i}hnsv1RCK>wpZIK*KQX4;9fv5<=wavKHEaX<{rx_GqICF826v&v33g+F#kvcJ=whtH56DL(X+;t?RPsktYrL>jH9tj z>|Q}CEI@*4DtTw=sf}%x76@rV$&1PCxQUDkdEElm8+wIP1?D4anV($FS-mW&^$(y4 zy<1ebyJQ8W)NmBmrYq|aWWX&D4p&@D@4px!ZC#@#gph`sc7i4A-SZmi-VPxA{75}# zx)m!UGsW`sH7bV7FI9R$A}oE?xd{+PYau%s_$@Ee8w9oSiZLq7KLFaiEn>;2XqGX3oKH+_!v2l=u6@?2D?32Lo99X zJq`YoXxGq5hZqwnPUP9^$|wS$9?CG57h>^Pt+jtseC#KA6DWt6?fDnK&K%Sk)ND z1hz(>DKl<3Li^4=_H;d@=*L(<%UL6Znc)XCcCr`n3;8Y#r2%_efpDObQj8-@I^x{< zbanmxb)&R2cu7Gh2CtM!DV0TwzV@oPdP3>Eu6><`ij;0@3*t16*RDU#n7DeO<)r##0BL%dIF{S<+1*&q#tDW=~nM~(Tb-k9cj^P&X?EI}y_7>=Tj4T&! zX~Y;l`h;_pvi8XvsZ3Bp%hhxdwGMSFf5z=>nfduVTPmZWB@==guKeJGMPvDG*jIn< zI8Qa-b4wSk`{fQXo0nw^)%`ZF#g#Dapqjf?YuAy zWU#Pw>yQtA(-_ez$NYdAUWiS|k|YeKXvKaL4cbIh=QsBM(eM}^ zPK|s=0ch1qlZGST>%;oHNuk55=E#m+kdGeMIE#hf*r??|GuIF+Q4_jAYhiV#~2tP1Mn4&#|}o#5usgzkAyL4>OK_py}s$8@H>l_C`h; z(QH>(@5&Czv*s<9$UDIVe;SvHrsq zi~71oZ0{TBoBHvTw>%_Q>aj-=*A>HMrK{?Wm1m78Z#wpNLo|51COQ3ZjZ@|jOr>q* zSIDplYVKINNnJmm%mdK(*Mkx|C?kxWUqs5Hbc*e%q~Z8K^sXS0fi*Zpze9!i`Tm|G z^n*R#qFT>wL;Snnm`~BM;J6)qh4IosNW1A|;rc8BS>NGLPnGT@ zHVP-NHH@>e0F~m$RK%wD*|N~m>oSDUuvTqL>*B!85@LfCs**)W?2!Ee@E2SvmoN=u z*?5xNt2t<8cn?+lJzJ9mm{wmFV?>poPsB8%B}8KEprL_m503ZG1=(s_<^22G6j&6O zsANe7i-Sg;>L^ILhu&m|uZd_; zXtROK+etqDSqZJYAqgfCR2H_?1Wu#KHWx`TirI8-Pc?_NcW(n#@^qZuxp2i05jl%Dz6&GLvY!|b)NM7nj3)2MXVQ-m6gc!$IRK}JH8u^iY98ik zAZujFP2$CgT8k7cr-PerOkH&a&Y((|Gm+;^SxtO@tedh=E4@2f;L+M=3XevsZzMd( zHWsmOy@nXs>6pR$@plUI1$js(l^tOoDMBY*_KY|Ac>zzk$fYsU^_j`2|NTw^v@pJR z!7b6bvX!pW^B?E9$$<$3;aZwW7MNv=hxfL$I~y&A!$#t8cu3t3DPGOP*!lq#UlHeS zW#U&FFtp{uha4F-SgG<-vo}v}b!b;B zig8NP8O+JDsUk!c=8s;n>0%JcI?%IVuU$S%P(t8pZ?9aGdJeAa)z!fbx)j*2=W`WxlW*3uWf?cMYrdtfFpR6Pr+)91kDlo5>bHQS+9koBK_rgZ#nYr#=k*w~xoV=8vMWCI{uC`} z}d+3i5>V)Bbn&CBomC%8-# z<|vaOGl2HsCE|~NE^1@UM^;CsCVsgh9AV(+i8&uhu=GS*={~*ZjFy`Ob)-!5S6%7q ze!4SZFex=Qr99fy(k0i&#c1V6;a7*_pIjq#mc1_srNG8OrN6gh-T|sSNwcG}ck71d zR^9Oam;K!|2ZPw_GoRD?#XxIZ>U{Lz9k0lsX{@CRK57 zezO1USc|u$WV`=#a;w_JpTX*PDj@*RwY|@S@X}H7Jgbdg4UJI zx>3D!8JS}*kwh%s{wRz({7f~&tM+Xt9hxS25lW+xrO>y2i9H`|J~*fW0v^3aHCf6V zm*$FH_T7hqadv3z+zZ9CC;tpNnQ+3;a z?kvpj5!0y#smO1;Erm6$Yf_Fs)KwKN+WgDlEb+~Ad`SI(;`VI?1%E3ea`guWb9eUG z(|E@y#}b%5*nEw$Ouun-E!}K6Z>TI84H=t)Lw8Qw`!Zb%EHimX$5_5l85;YOD?_~H zSe5YNV8LG<-)Z&bUbn1%{(HUx)a=ZjyD)8xyHQ2-zP0UH{#!B;v^M z;O1iAkrU?x%~r~ocD>hQ+`;>gPt9yp@FNU^IQ zrQ&MY>78e<^-kL<&eC>U%Q|-FsyNnCafpDBpkjn3A$bW8d|$iEE_dYM(UsmczaLTb zSPQ;$BuUV+jPIT#$s}TgM2wJ#5fU*%B1T9|S9XrB?&KUy7m4XADKmX<9uub~F)bvf zh0)WC3zN7J$(EtP*U=m347(Q5NKB?|gXPHa9F3NQf~6~r*S}ypJAxT@EvB>}*KqR8 zyppvhL?bc5ldFtdp0h1nWY|-kMUn(2APB4~HND?3*xxsrIa31#6iqz6E&b53M~o?P zjSYi{Mj~4N{?7F&8n_DF=u|R z{;wYn{rj5V*~=jsiE$R>8g}lPxo=ljM|)7EBKEz|^>|@Yaj6N>ic3u&{Aoy%H zIrj&~TCe&MmXxf@`_YW!wJrdzKF(^>P!u7GGQ#3@)br)`?=RF>mUp+eu|><0LqV~% z#g7R{M3k&G_4RT-A3tzs^x}JNwT4uwh}+#G2lw~xeK~7pmKI^lSEpRL?DKhf0RCZN zBqXM#s}VM59&_UDd8#;K>&6@HZ7hJ&^_C0g+_H>`XhghrpbrrwN$jq2=oos~$6x*D z@H?jl4%E)xvAJW|C#)bjq&o_M4Gqf0{woBsp7$*gYr ziwBdTF&RmcM?w;#r-pqzfQEP7woFaUk=f_Zx;aj~{soH&S0DH24-?APTXZ^V$1@%M zP7V=e8!R7OeDH8g!emG&2(kjBrx9_y*2S{I?kY!P!yv}tIH|bQ)N?De{h5w_Cx?hM zt9nsh!uuBnp@4*fAS*I@3K60x*X-@N+dry}rx2#rkiV|57cEQP``fPix_&!ncNOa7KuRlH4lB(Xi@y4~!h7nE2P|H>s zFPw8j84U$NR$v$k(cA-L)qA=R9(zQRaOTv#^Jm?%jER=7PU-9j_4bTF84U$NR%G-P zq9rD&Ha>0j4Dqj2-tO)UVKNj&ta-}(hq``DiG~7}6&O8@aTetzyin=5c4fGFPdCR& zP>{bkF~uBLbufEuRAK`H8xR5kfei?3K=gX}cTU|CMHv7M1wmFcTjCH#)5I^frLS0> za_q3Pxyg$um2I%pzS8&U#~!_bHYCu71lnMrAI(cBE;U_l_Q^8-hlYY6D`aKI1F)uR zUaZLyczN5V|2()qhH&diH{be}mjAc``^p=qM()mbAW;=Ma#h$vfcZfqFj zA4&+Dk*F%)H#0R&y>si$-kuSRLqh?}3JY=#woGkhdDrze7SRX- z)*TskhxRwm-sB%jh$wl={ExqReO{iTh)r9p#bu`7A9nry6AvasInuXaG9w|e>Cc{z zKm1C^P^-(#o42K>rE5kxap(cR_GhU}mK%3%?+o|_L};~S#r~|iLr%4ZI#4^?ny#*R z{#JV%i^&iKXiRC?$2T?%HZ}|mpKUCf8^YZvQ1OcKjuLa+Z-JvZg zN@iK1;hbBR@&6zQ(D>Gzz1&+T@8TOG5hEmGghY&xh!GMo@?T7IaUJiv@hAWQ002ov JPDHLkV1h2i7N!6I diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png deleted file mode 100644 index d624f3f9379d6d047ce370fbfc8614a8bf7d3730..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3969 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 diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png deleted file mode 100644 index ba2a36d344ee1ea70dee8e810c90d6f416d05c90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6289 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 B|5yM3 diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png deleted file mode 100644 index ba2a36d344ee1ea70dee8e810c90d6f416d05c90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6289 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 B|5yM3 diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png deleted file mode 100644 index 5a16b69e8bd48f932126fd7c0da1b422c0e0c16c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9801 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 KRuTFR{{H~k(G95p diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png deleted file mode 100644 index 80000722297bd269089577ea974497139c76f390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8106 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 diff --git a/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png deleted file mode 100644 index 3612c42bc5100ac8c347671840271dc3c7bc1e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9010 zcmb_?WmHsM_^;9pgF_F^&>&LMNRD(0(x`N&l+*x{f^>I-fP_lJpfnO9AQDPAmr!SB+$9~?Ary!4o9xp$B0 zTuEL=*Zcks3fo)PvHTpLM?+zjqv-D_08(ad6ThcQ)HN!MUmR_ z5Ko0UPp<=CPX&mKyq0DZ4w`-8Q`}ICAFPfEL+SkuI=lXhM@L!45v&$gNb#fg<>nXI zBoEY%u?8-$`Ck?gD5xIiM?^|NAB}}Gv0i9?lc$eLTbF}8@MnKnK>YvZpNIzKoe~-$ z-guHXX94djmE;8%Aj#Z%H!DK^JbHAUWcmiyvwpf-B$Dg}KYnc`aO=_W@HT(T$|#W& z%#V;tO4wp!m4l0q1lh8?`WsM4&dqvrK_}ASZTQ?lbY{jR*30*fTYhDkk4qfs))p`vzKvCl_+s1XU}#pz{xQ`X z^?d3445PhP=37`WiLs>Ad3$&rp({*xyV%r&I__it_s0_FsxPwQ(cMqZilW^97};|| zT$k8NgAN*tcZ{~~C*}M@E{G(=7dtz+ETNfy-X|U&pncTyb`pw7GheP)dVmwx;M81P z>1(*;)9|`?Ei>;i(+!KWN`wD*w6N_ zsT*uuuuRkngmMtkS;pwi(2>NMUDb}ASdRfn)?jm>CxFSTTIfVu@w<#s(4j|k!f`x5N3rRw@)L=J7%+Zx4`JhKS&>@ZNnrP*GUU|;O(s? z&K);a4US)1CK8GmpzN~YOMO`in5o8A_m@5pPflUF@{0Pr_0jNL^Fi`u^1(4xU&-x9 z(-Ladrk-`O6x%Gtz?isrV>5*w2L3BROH2<}R;tz4a(Qd?Uh4cK5u+@GDfI7xs82{Z zTM)!}F)KV)KjpHsF+;vaA5Gvd-e9iPDk*Y*!>_hH4*^Tl5T3%k;@90SZ8P`IDYD*# z$h2K#mEg z$y4RM7;Z`33eIcd+k^Grx30#IIWS`=b%m=dW!Cp`!pv@YuX~KfJ0oOP`hD1l{n_rh z;FG3_FwfOjE__NI*b895A2K<$(0g{~6|gE_*3D+~Huhuixo<~hU02+sojp2ToQ0qp zs0{ljXYf)R>)}CqmoUsK$3KR*SL4M_GB8iim&z67L%Z386GYOo;fT_Axmj*&$EtjF zA0&=`Zq&SfTo7hNf}(r}V_cs5Qo&z$GNqxah_Bo~LVoYz;sft8@66&;IzF6kt#Q98>nVK3&cpp zAWICx*3nuu5^P~7d54NwNNNF1`n^pF9RbJ(*%WhkaK04TTds<~0osrmOqM;JpTCqgzx&%z#pn*lsP z!jx)e>3{MrK%X!+T$zEPCSdsHjG2u(OQyj}&~++C18eEvsgdvm6M?sfCQ_|_`#h(= z+>j5ugDmIGRS~7`sB9r)q|)yXFn_&RDS?^MHfxx!Dl1);|Am%`V#>{D@p07EP5aOQ z-k)7sLXn3O8r3a~R55MeF0UW+HtHjo-fAN z$d(w3ac{DctsDCme0~;U7>AIh++W8jj5MmN;}b91PBQOxX0JmZI z*d!}njz-mr$lB-Hd4N)p$z@}c$+BW{W9d<71OO;>1{;Rcibz*JDv?j)V!H55#N0%?5%)$E$^#ZDJ&O@x( z#wU)hEk<)ArP}D`jYdOe|IiY5T@0B9d1;BQ->E=;80rZH&)z|4OPrqm`IyWdDji%d zYe-jo9pRANp%EjM9vGU`QMNFU>4hNeou9U!j!a{rW0UD8Hro00SC3@d%;e?cZcvHw zneE!S=w3kRpgUiWEQS}6D!lc1Lb9WbtODWgU`Wh3a?y$_bJE05(Yd=X1YOr7KESTw zsp+WgU#n1KrhwSCZ}^I(g|-`p9$DR8BYqW^G1ETaO35LA@J?@b_wO!6!`mb%HtIAihsm^< zNOOc~qX9s&YmnQpeW>f^M!22_6hckwnDZ}o8eJAGgQKa#^i%rE*BJYWzW*MbwEZGj z1ww+Js0ku0@w?Y%c|S2jGNEw5OmCBm>m+%m?Vq;UvoJH4$b0ki9!lDEPy5-1S$o;p{wdn;7X#nR0mq!!(?%ip7sjM$rX~nzELA?*-s|Jv z+(IL>Y_HQcGbpe5@YBfZbYcoKOtba9osi6K9|?TYe7vf?35MK z_u9VDo{4@{oc?eikw*NdMhn^y{)bJx0&OE*3~X_MJpUg89&xwdMk|B*shlr{=p zK%1cR>8s-JPLYbM7B69jEboT6wr_rG-@|=R1)8b55BbgN5!%p(L_iE_L$HA1w_cS3 z^(To=%9!q_=myV{?+|EISe7rq4UZB9-<@5RZ<$tU{hw=26w)f1WuKL%Hz_{ACUdSo z{-J!ymT6Chxg+Rm$63Q@4ycbj1g|TyU~U%aZSFjNP)HYN1g@6L@YGz@if(8Bkn^%# z@}0Rz?2u`a*{_+1&z=tj|LxkN)jO*AyVr-lt_N^wVY$Ttx5*sqlWbhTmhe2&AixTy8+gM9nF!pChU69rW|`=9bd))L)K5 zUe%~HJoo0yb*Og7C+&)1x&pupzBDRD_eC&JFTP$1hn2&i#arQpF)X~EQf;=cR+ulm z-8~uVHwGy#^*6_n(Tlxry&&SYMY}Q5J}b_wLri9E;<6j_pr+lN7{kH?W2JA|*4CUw z$>%oPE|gy3tZ9ykGKcN02+__`+3~})XUnI9=FJp6-+c;#mT(Md+|?2oW6|qv{Rzd& z3WnHJ@Y1%8B@I>7$9Mzt*MNku6U5*Ie5&4Yy&qhYG3p9-v(?HvYI|<(xxud7nO117 z(fdvk*%(Elo!7?^e%*^N4SJ~b2_rk!P!6&#Sd3taFjYeY8vPLHVtqUjC!R8V(@j`q z1hnb5$FO+#qOL1w0H15&384+w`Dh6jHd{m46g{fN+9>LyPQO6Kvtpwo0yO?{$3;SMMXuy%8> z>#H-U@b~S>cH;=vkD|*!y6!8}l;PeH941fl9+ouwKW)ZpNJG>EcS7vzW_G3Ssj&$LIR%q(Y(Ri{xgOghOm;>+8;eG zBpm+xegW5BOqWuv5V8U*_YhC$#u7C#U|tNe1R4Kj~_< z+M_B~cIEGvuHzZvJusX)5YGygh2~Pv^=S#%BcM_H?kx&sl;2^)DmsNC&Q|e%Nl`4N zc5HJ=cz5iz=dUJWw(>fcn@fa3OV{+)sC(!#ZbAfYT`)UVJuM5ZXNKEx{&_S`0hq7~ zGOGXE!W&TA(Q7#bSY%m)y)^bLN~m+Ye@_8R)r)Xm3+ze%0}6{pNrpX!I+fCSJm~zm zPz(iULb7)O#=j1rika>ze9$iX_hPUf9)-MRBY6)*V)#*Va-rF|vU6d)oIThPdu>a7 z`Fj|lIE-m;+&L)?^zI~Ed^huzg#svHFs=dL{k@ZpnVrk`D!?mZmBpi`q&iAL6X2!VTJ(`Xlj5osRL$Ac^_QT>8!S z<~%TBny!=BYf^8nCMdRpgJSs71bLF(ForHZO+>}?6-MC50C?ts$rgQP3+!%NDHM`LM>+GVm(?uC}{YFO)cZ z(J_xuenQ~BsymsPfCyA9EEbbIxwHuFOKqVx^(%L{$gLYgl1NC1*OYL&toz;P6qC%p zc`_NwQ6BoF>bSvcx@)mui7xa(4dY`~wfjp)1DTJ1=0$7DhXNuHlo;FMkhPoZfPs@i zW1H(p%eip@&pQGAuzhmvZ8@M(0tFO;#(wX%hCV9RkHm^uaV8<*llf=Ia(g@Im;#s? zbA&lNg1{9ftE{!ZC{X+d<`NvKG0JVKWg~nPYTlKUL~%R+xWf;oi;>#sz1yFxqT!bb z52a#Eb91MrR6v1sUKf*K>RL(2dntTGbOzBbDC5rYbDOAab3Y`oiBGgn>u6}{WhSJ` z37RAd;Nmv&sOW(_kvH~;Z2FiA8M={t_mA{pGm(OP;~bMNSmPHAjo*Nlp{7Ba^R~_M zTX>`C%4-45NCt{XZwZG%yJR*23n?(~HxtaO0D(BkAfu+cm?by|{G+XM39u}(q6-J4 zk8WN$U$x05K;@Nz+^s+zn5&Zs1)hGwH;F>X16#!jMA}DOEQ?eXWz_;3$2H+K_d%6e zWJF(v_bbkk2Yg#oVir^;(Fl3(*@S{1lB+(8MG~x}1R7_x7JFaT8b-|nVU^0<`oPw5 za)>qm5fJ2P!1B)4PDEDsFf*au7bSV`DHcV}DiEhx54W?D$_ead;4&0<1-l2u;a5&< zvhW*M$yJePD12|~?3%xsIxYeSi!4`va)aFvhzZ%v!^#i!t1C04LYlxcU;o|=Y&E9C z>08HxAz0^=@Ot(VrQdX5QQV`0FsejNaT$Olg)iMF6sLv}?B>>uNe~|C0!;{HFa58X z&}sp1Z&_d((}1*mE5eE8^TkLP>cL1C58$@JNep~dG*s5NBw)DU%G6)Y#_=|%hfE{K z$pveyxa3BRkW-(a?&h@l=AMOtYYRMI32Iz02*>5sa*0H$cnC#0$+$Ji>nE_rk1C^aN~R0EgNrRJ~AQ&sT2N4?w+1n ze)n6(2q21k>Wa?2k$bi(bS19gHYy#KetJ*ASwn zCQ!Eda)uGmv)yV&sPe=f7`qf{En}0FUQFiUJ`-_9s-gY|-_7=%6D&oxkY`Fsq=k_J z=_2)DNbmo~{qOL9F5{h;E|4LjjBA+4VmW6-)PNrM6k>cQlzh=0ol-`n01pghrRHW8 zghjD%-X4t%1h$!SMB(wWysA;Fd+r0wZF!1iLpV1VQUz-K@>wyxBLhaFvwF+r4YzW> zo*9MrMdUcR8Ch|#tZ_zw4~N9JLe4}bGy+b;V{AJ%dR#F$C!XC{Mn{40<}aEYN4f+L zSxmiDqrbhR>^JI>k+j6e-p|ntXF9&vb}uesS(EI1W!A<>1)e$b>xk0G&k@tKKP|bq zRXe{{-`s4F0_OZlfW=Fa1lK~HQ=f6!TYaYc-=!p*e|zuf6+Rvi@0z$+$$_ofpLcn} z3-YeL<)dbJWV$UD#(*XV6o5_FFO(s2m&i<1ZUZaLi6^U4S{gU>okr^S_=^38UgOs7gb(G?yz8BESxuxI=un=c_CnIBa-}={O&e#S@A8m z3t6>OtPr$M1+Q|7@uPR(rlHim@zePDZ)2X`d!JV1^LHUj`g#G|!}v7E^&0zmr^BC3 z2T*LH<+i^O6j0+gr)5(xqp@@Q$xx;(>!Nw&73e-TkgV4~KuP+uQd4Gq`#9NocIpn<`~ z#;TYC>U;sh5s(Wb7%=2fz^@NO*e4}qI;pk1@-0!6%Uk?FEOlgYa0A#d4v^&|U}AJ9 z+g6_R!dY!WQWbo@Yd=-~;Jb*KA?+Pq5$fpR2LA?IQscY00nh_%U?b#ekcUL+MblHM z!E{Lz1?yMW%w89hRqgzlX?%IG0iN*!D3hc=v&r|9Pv>8^o_vp}nK=pD(SJK^g_PF7PCb-y_RZqb4_rpk#J;rlS;>7J*Zp{{E_0+L~rj zq)bpKYJ^v`%~~H_HW-27Gpp@}7hoamey>67;!@g5t@+MLllet@Z2&fYMHi}edw;c; zd=&&|?td#wtW%+bb;wxIrg(%ZxnI99XQ!k+D#QBV^lxDkb1!Sbr@anW9y48I9oi=m z`war-E=LYJwe=5;VfQAyq;kbcRw9C}B@^)I^IZqP= zz7;EQacOs^tRFu-RdTol(?$6#i`#qYIqaNLTugaeeq`vI->bLOsp@6UpJRuQJE^oR z?W&r}3T)UEvRvGA+{y;DN80NsUHLzTUHW-gMjmnm3eS_A(@{ya{EkO(lol zg_0A>7{Cm7BgrH|%wvv`D&p0HizudF<6;|enSR2RHYZL~QF&#P%Y|iNEtTV}^7Bde zUh3_|%W3SrXIyw)p?CL&YhCV&0c5D>y7>JUJx9w2rFa*|0>QXvD`9bD*&w%PQ*9DW z*3LQr8A=2CNMg(G_tt|c+a%JmUn;F&yLwiXQ7wF9M$RHb>%YyM*?#c^b}-M-T z)>|`*s{RP;hLbMlKSO+RLvufyBsY)B-;*?rIeZpD+;ZUlL%`ELcYVG-4#F9Q1W{{y zL*3n@w31*dTW>@VaJIgEqEJ~J^0tSVntJa<8T+5Gs4w{MYG7`tEhyX+(~Ap#;YM|25mc7 zaNwS^8@~3-gh`9lu?$5ypt+cPezDG{Wu(%xMJlU#K1qOj{01&Fz{`u3QDo_)Be~=B zA+{KzvN(>XFHXSCW})o3fD}+Q%74P0eugFV>#r-kdNF~F&II^%t3Ffa>@Rzh>cH*OZ=20d(uadTlsp318 zteaA9S(lz3&k5(7deUrRhXx)F1$?WeX1hmad4wP{UghQO13fu~l!M*OXZAOSbOf9c z40I+kDarIiErBB20V_U!9XBQMuO5WQJbn7nb~IzU%S=G(Jma8W?cE~9Og3;ufKr|& zAYZp^D{p}~K8chMoHH}D)rWeJ-icIB$~dD7Zynm>Di z%u09x+9UHlm?|yyf*3=Ov5hsPwYUfI#C8@{zK6BNm`hC?Z;{Jqb^l*x6W@O}9@X7F ze8JF+7Ka}~soOq3b$rs!T2<}QNtOcUhfNgwI9;S6CFw)9Adlyd23Y?`i?GFakccXw{VJ6GYKJ>JfHvX*JatGc;`8EioE*y7Dx%Y;s<+9;Thi z>SoJC{UR08kkq$P`59Ese)>JzwQDJb1dl5HLMCJhwLLxY++ZObuQ&d`F50k1EVE|$ zhy8~pE}QEw9yded@RLW_0&C~ayI+^0Iti(%rC-ME0A~mMco>O=#fEbm^Yx_oj~)2@ zj!`y1C(z`|F*HbvFUJNQuVJ6{P+(X|(*MWA`8kW{B_x#iJIJ8AQ!~bXujNik-+Dy$ z^5j<@H2(Ez`vFb_-q^PF4-wOmOTSTFEKW80uW{>6*l{V>19Alt*w3C1;hwqhoPWOOZ_Y8NHspTz5vyCaeuiP3j4-&t7g5WAz zW0Zg{hY!r5KxIfmBTp6wG?_VPq^oKwj+s3Gg*XVhna}&R7;5bYdieUDUK;?P2FI`~ zRTq3{;8FovBoqX^(nrK+#RuohKoC^XPdHBNu9Y43QZ*Gpc^EO)w13Tr*c#fscvx7F z_j`dt0W-VPzVFr1k(w194=8X7y`(;Vw?hIIy?-!4!C;cCeD+_B)feSHrJ(cCXudD8 zaG;{6PxEWv=>#N@IzJjf&sIX4>1&ptILcCL3m&7mU#Y&T9fWW*VyvwOkg)H`u8pUFZu) zM-roXAH`87ig-VN)2bFC%#NoVmFeX_$+wcCTOZbIunnJw%Pkgl24>8pMhy#$|b$6b3Th1ak(6QX 1.8) - EASClient @@ -132,9 +130,9 @@ PODS: - ReactCommon/turbomodule/core (= 0.71.8) - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.71.6): - - hermes-engine/Pre-built (= 0.71.6) - - hermes-engine/Pre-built (0.71.6) + - hermes-engine (0.71.8): + - hermes-engine/Pre-built (= 0.71.8) + - hermes-engine/Pre-built (0.71.8) - libevent (2.1.12) - RCT-Folly (2021.07.22.00): - boost @@ -387,9 +385,9 @@ PODS: - React-jsinspector (0.71.8) - React-logger (0.71.8): - glog - - react-native-netinfo (9.3.10): + - react-native-netinfo (9.3.7): - React-Core - - react-native-webview (12.0.2): + - react-native-webview (13.3.1): - React-Core - React-perflogger (0.71.8) - React-RCTActionSheet (0.71.8): @@ -481,10 +479,6 @@ PODS: - React-Core - RNIap (12.4.2): - React-Core - - RNSentry (4.13.0): - - React-Core - - Sentry/HybridSDK (= 7.31.5) - - Sentry/HybridSDK (7.31.5) - Yoga (1.14.0) DEPENDENCIES: @@ -505,7 +499,6 @@ DEPENDENCIES: - expo-dev-menu-interface (from `../node_modules/expo-dev-menu-interface/ios`) - ExpoAppleAuthentication (from `../node_modules/expo-apple-authentication/ios`) - ExpoCrypto (from `../node_modules/expo-crypto/ios`) - - ExpoDevice (from `../node_modules/expo-device/ios`) - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) - ExpoModulesCore (from `../node_modules/expo-modules-core`) - ExpoRandom (from `../node_modules/expo-random/ios`) @@ -553,7 +546,6 @@ DEPENDENCIES: - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" - RNIap (from `../node_modules/react-native-iap`) - - "RNSentry (from `../node_modules/@sentry/react-native`)" - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: @@ -561,7 +553,6 @@ SPEC REPOS: - ASN1Decoder - fmt - libevent - - Sentry EXTERNAL SOURCES: boost: @@ -598,8 +589,6 @@ EXTERNAL SOURCES: :path: "../node_modules/expo-apple-authentication/ios" ExpoCrypto: :path: "../node_modules/expo-crypto/ios" - ExpoDevice: - :path: "../node_modules/expo-device/ios" ExpoKeepAwake: :path: "../node_modules/expo-keep-awake/ios" ExpoModulesCore: @@ -690,8 +679,6 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-clipboard/clipboard" RNIap: :path: "../node_modules/react-native-iap" - RNSentry: - :path: "../node_modules/@sentry/react-native" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" @@ -707,28 +694,27 @@ SPEC CHECKSUMS: EXJSONUtils: 48b1e764ac35160e6f54d21ab60d7d9501f3e473 EXManifests: 500666d48e8dd7ca5a482c9e729e4a7a6c34081b EXNotifications: dd628737af60fc8cc62dccebacd326b0fbbc0dcb - Expo: 8448e3a2aa1b295f029c81551e1ab6d986517fdb - expo-dev-client: 71c7a10806a324e4312c1cac34d4a439670d2c3b - expo-dev-launcher: 53556b0670fe41380948d5010a3bf7dd5274c946 - expo-dev-menu: f62f4fcda3b60e655a16a42153248d2d2848feac + Expo: b7d2843b0a0027d0ce76121a63085764355a16ed + expo-dev-client: 92b9e487ad6a05a3ad1dda70334729ccaf622bfe + expo-dev-launcher: 5275974e9f825f70a33bb79301a8ab894179fa94 + expo-dev-menu: f2ea9233cdd8790c20d559eba7352bbf83662d6a expo-dev-menu-interface: 6c82ae323c4b8724dead4763ce3ff24a2108bdb1 ExpoAppleAuthentication: 7bd5e4150d59e8df37aa80b425850ae88adf9e65 ExpoCrypto: 477dfe89c81527b376f2c344ca1d2a01244b243c - ExpoDevice: e0bebf68f978b3d353377ce42e73c20c0a070215 ExpoKeepAwake: 69f5f627670d62318410392d03e0b5db0f85759a ExpoModulesCore: 653958063a301098b541ae4dfed1ac0b98db607b ExpoRandom: 7ee07d62e7003b74d0536e0495e3a653fe1b2a74 ExpoWebBrowser: 033d34c478d9986da2f1679729041423837626e0 - EXSharing: 5a28af9de0884c255f401e1f1f0bea269e9c9bb9 + EXSharing: 09839ace249f61bfa13c50c6a28256c31d260355 EXSplashScreen: 0e0a9ba0cf7553094e93213099bd7b42e6e237e9 - EXStructuredHeaders: b1a48d732562e2cc81f11771bcfd29534f5d9254 + EXStructuredHeaders: f3a6d417d5d12ef369fd1a31320d1c188a1b0f4b EXUpdates: 603c4dfec2ed9ef323dfbd9c59c946593d4d9a5c EXUpdatesInterface: dd699d1930e28639dcbd70a402caea98e86364ca FBLazyVector: f637f31eacba90d4fdeff3fa41608b8f361c173b FBReactNativeSpec: 0d9a4f4de7ab614c49e98c00aedfd3bfbda33d59 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: b434cea529ad0152c56c7cb6486b0c4c0b23b5de + hermes-engine: 47986d26692ae75ee7a17ab049caee8864f855de libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 RCTRequired: 8af6a32dfc2b65ec82193c2dee6e1011ff22ac2a @@ -744,8 +730,8 @@ SPEC CHECKSUMS: React-jsiexecutor: 747911ab5921641b4ed7e4900065896597142125 React-jsinspector: c712f9e3bb9ba4122d6b82b4f906448b8a281580 React-logger: 342f358b8decfbf8f272367f4eacf4b6154061be - react-native-netinfo: ccbe1085dffd16592791d550189772e13bf479e2 - react-native-webview: 203b6a1c7507737f777c91d7e10c30e7e67c1a17 + react-native-netinfo: 2517ad504b3d303e90d7a431b0fcaef76d207983 + react-native-webview: c2b70afb1d910cdd8810375aecc6c2894e2ba061 React-perflogger: d21f182895de9d1b077f8a3cd00011095c8c9100 React-RCTActionSheet: 0151f83ef92d2a7139bba7dfdbc8066632a6d47b React-RCTAnimation: 5ec9c0705bb2297549c120fe6473aa3e4a01e215 @@ -762,10 +748,8 @@ SPEC CHECKSUMS: RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60 RNCClipboard: 2834e1c4af68697089cdd455ee4a4cdd198fa7dd RNIap: e17233fe11083a71e0420682b0b09d497861faa1 - RNSentry: acebe4104a6f5915ae871eb59dc73f13dcc92ef7 - Sentry: 4c9babff9034785067c896fd580b1f7de44da020 Yoga: 065f0b74dba4832d6e328238de46eb72c5de9556 -PODFILE CHECKSUM: 39134d05b7f8af05c871b17fe8100693350a6479 +PODFILE CHECKSUM: d6dc462d69210729fbbb0b449e538981347f8a4f COCOAPODS: 1.11.3 diff --git a/native/metro.config.js b/native/metro.config.js index b48c8fd38b..9059e59c80 100644 --- a/native/metro.config.js +++ b/native/metro.config.js @@ -11,7 +11,7 @@ const path = require('path') const projectRoot = __dirname const defaultConfig = getDefaultConfig(projectRoot) const extraNodeModules = { - common: path.resolve(__dirname + '/../common'), + common: path.resolve(__dirname + '/../common/src'), components: path.resolve(__dirname + '/components'), lib: path.resolve(__dirname + '/lib'), } @@ -19,7 +19,7 @@ module.exports = { ...defaultConfig, watchFolders: [ ...defaultConfig.watchFolders, - path.resolve(__dirname + '/../common'), + path.resolve(__dirname + '/../common/src'), ], transformer: { ...defaultConfig.transformer, diff --git a/native/package.json b/native/package.json index f23f19714b..13f2f3456d 100644 --- a/native/package.json +++ b/native/package.json @@ -27,20 +27,17 @@ "@expo-google-fonts/readex-pro": "^0.2.2", "@react-native-async-storage/async-storage": "1.17.11", "@react-native-clipboard/clipboard": "^1.11.1", - "@react-native-community/netinfo": "9.3.10", - "@sentry/react-native": "4.13.0", + "@react-native-community/netinfo": "9.3.7", "expo": "~48.0.18", "expo-apple-authentication": "~6.0.1", - "expo-application": "~5.1.1", "expo-auth-session": "~4.0.3", "expo-constants": "~14.2.1", - "expo-dev-client": "~2.1.4", - "expo-device": "~5.2.1", + "expo-dev-client": "~2.2.1", "expo-file-system": "~15.2.2", "expo-font": "~11.1.1", "expo-notifications": "~0.18.1", "expo-random": "~13.1.1", - "expo-sharing": "~11.2.1", + "expo-sharing": "~11.2.2", "expo-splash-screen": "~0.18.2", "expo-status-bar": "~1.4.2", "expo-updates": "~0.16.4", @@ -49,11 +46,11 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-native": "0.71.8", + "react-native-gradle-plugin": "0.71.19", "react-native-iap": "^12.4.2", "react-native-logs": "^5.0.1", "react-native-web": "~0.18.10", - "react-native-webview": "12.0.2", - "sentry-expo": "~6.1.0" + "react-native-webview": "13.3.1" }, "devDependencies": { "@babel/core": "^7.19.3", diff --git a/native/tsconfig.json b/native/tsconfig.json index 1805b87862..9a22c456d3 100644 --- a/native/tsconfig.json +++ b/native/tsconfig.json @@ -2,10 +2,11 @@ "extends": "expo/tsconfig.base", "compilerOptions": { "strict": true, - "baseUrl": ".", + "baseUrl": "./", "paths": { "components/*": ["components/*"], - "lib/*": ["lib/*"] + "lib/*": ["lib/*"], + "common/*": ["../common/src/*"] } } } diff --git a/native/yarn.lock b/native/yarn.lock index 0aaa28c983..cf6874c3a7 100644 --- a/native/yarn.lock +++ b/native/yarn.lock @@ -24,6 +24,14 @@ dependencies: "@babel/highlight" "^7.18.6" +"@babel/code-frame@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" + integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== + dependencies: + "@babel/highlight" "^7.22.10" + chalk "^2.4.2" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.4.tgz#95c86de137bf0317f3a570e1b6e996b427299747" @@ -102,6 +110,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" @@ -169,6 +184,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== + "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" @@ -192,6 +212,14 @@ "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" +"@babel/helper-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== + dependencies: + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" @@ -220,6 +248,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-module-imports@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.0": version "7.19.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz#309b230f04e22c58c6a2c0c0c7e50b216d350c30" @@ -265,6 +300,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -275,6 +315,15 @@ "@babel/helper-wrap-function" "^7.18.9" "@babel/types" "^7.18.9" +"@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" + integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-wrap-function" "^7.22.9" + "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9", "@babel/helper-replace-supers@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78" @@ -319,6 +368,13 @@ dependencies: "@babel/types" "^7.18.9" +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" @@ -331,11 +387,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -351,6 +417,15 @@ "@babel/traverse" "^7.19.0" "@babel/types" "^7.19.0" +"@babel/helper-wrap-function@^7.22.9": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614" + integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.10" + "@babel/helpers@^7.19.0": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.19.4.tgz#42154945f87b8148df7203a25c31ba9a73be46c5" @@ -378,11 +453,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.19.4": +"@babel/highlight@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" + integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== + dependencies: + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.13.16", "@babel/parser@^7.18.10", "@babel/parser@^7.19.3", "@babel/parser@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.4.tgz#03c4339d2b8971eb3beca5252bafd9b9f79db3dc" integrity sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA== +"@babel/parser@^7.14.0", "@babel/parser@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" + integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== + "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" @@ -538,7 +627,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== @@ -720,7 +818,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.18.6": +"@babel/plugin-transform-async-to-generator@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-async-to-generator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== @@ -1223,6 +1330,15 @@ "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" +"@babel/template@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" + "@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.3", "@babel/traverse@^7.19.4": version "7.19.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.19.4.tgz#f117820e18b1e59448a6c1fa9d0ff08f7ac459a8" @@ -1273,6 +1389,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.22.10", "@babel/types@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" + integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + to-fast-properties "^2.0.0" + "@expo-google-fonts/readex-pro@^0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@expo-google-fonts/readex-pro/-/readex-pro-0.2.2.tgz#cdd7b3269e8f890b456afe825e5cb6ba71a6f5ec" @@ -1410,7 +1535,24 @@ resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-48.0.0.tgz#15a46921565ffeda3c3ba010701398f05193d5b3" integrity sha512-DwyV4jTy/+cLzXGAo1xftS6mVlSiLIWZjl9DjTCLPFVgNYQxnh7htPilRv4rBhiNs7KaznWqKU70+4zQoKVT9A== -"@expo/config@8.0.2", "@expo/config@~8.0.0": +"@expo/config@8.0.5": + version "8.0.5" + resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.0.5.tgz#71380a7a20f2e27fe386d7bb73428a437b27a96b" + integrity sha512-3CnLmtAQUWqLZwTRliS23QoFwdyhg4AWtp6gZ0qfcXthR84RvlZKcCDQQIyPiRUgu8dZa+gQDcdRJtgE+GM5XQ== + dependencies: + "@babel/code-frame" "~7.10.4" + "@expo/config-plugins" "~6.0.0" + "@expo/config-types" "^48.0.0" + "@expo/json-file" "^8.2.37" + getenv "^1.0.0" + glob "7.1.6" + require-from-string "^2.0.2" + resolve-from "^5.0.0" + semver "7.3.2" + slugify "^1.3.4" + sucrase "^3.20.0" + +"@expo/config@~8.0.0": version "8.0.2" resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.0.2.tgz#53ecfa9bafc97b990ff9e34e210205b0e3f05751" integrity sha512-WubrzTNNdAXy1FU8TdyQ7D9YtDj2tN3fWXDq+C8In+nB7Qc08zwH9cVdaGZ+rBVmjFZBh5ACfObKq/m9cm4QQA== @@ -1596,7 +1738,7 @@ dependencies: cross-spawn "^6.0.5" -"@expo/spawn-async@^1.5.0", "@expo/spawn-async@^1.7.0": +"@expo/spawn-async@^1.5.0": version "1.7.0" resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.0.tgz#3ab6082b24318cccc4e73b13464da91325555500" integrity sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ== @@ -2307,12 +2449,12 @@ serve-static "^1.13.1" "@react-native-community/cli-doctor@^10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-10.2.2.tgz#b1893604fa9fc8971064e7c00042350f96868bfe" - integrity sha512-49Ep2aQOF0PkbAR/TcyMjOm9XwBa8VQr+/Zzf4SJeYwiYLCT1NZRAVAVjYRXl0xqvq5S5mAGZZShS4AQl4WsZw== + version "10.2.5" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-10.2.5.tgz#e5e28c66c2373f05a94b296a8ec637f8df736707" + integrity sha512-1YbzXvsldBmSw1MmBsXB74bKiHXKNCjlb2ByLgkfTiarpSvETYam3g5vex0N+qc0Cdkzkq+8NznE744LFhnUpw== dependencies: "@react-native-community/cli-config" "^10.1.1" - "@react-native-community/cli-platform-ios" "^10.2.1" + "@react-native-community/cli-platform-ios" "^10.2.5" "@react-native-community/cli-tools" "^10.1.1" chalk "^4.1.2" command-exists "^1.2.8" @@ -2350,7 +2492,7 @@ glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@10.2.1", "@react-native-community/cli-platform-ios@^10.2.1": +"@react-native-community/cli-platform-ios@10.2.1": version "10.2.1" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-10.2.1.tgz#2e6bd2cb6d48cbb8720d7b7265bb1bab80745f72" integrity sha512-hz4zu4Y6eyj7D0lnZx8Mf2c2si8y+zh/zUTgCTaPPLzQD8jSZNNBtUUiA1cARm2razpe8marCZ1QbTMAGbf3mg== @@ -2362,21 +2504,33 @@ glob "^7.1.3" ora "^5.4.1" +"@react-native-community/cli-platform-ios@^10.2.5": + version "10.2.5" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-10.2.5.tgz#7888c74b83099885bf9e6d52170c6e663ad971ee" + integrity sha512-hq+FZZuSBK9z82GLQfzdNDl8vbFx5UlwCLFCuTtNCROgBoapFtVZQKRP2QBftYNrQZ0dLAb01gkwxagHsQCFyg== + dependencies: + "@react-native-community/cli-tools" "^10.1.1" + chalk "^4.1.2" + execa "^1.0.0" + fast-xml-parser "^4.0.12" + glob "^7.1.3" + ora "^5.4.1" + "@react-native-community/cli-plugin-metro@^10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-10.2.2.tgz#766914e3c8007dfe52b253544c4f6cd8549919ac" - integrity sha512-sTGjZlD3OGqbF9v1ajwUIXhGmjw9NyJ/14Lo0sg7xH8Pv4qUd5ZvQ6+DWYrQn3IKFUMfGFWYyL81ovLuPylrpw== + version "10.2.3" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-10.2.3.tgz#419e0155a50951c3329818fba51cb5021a7294f1" + integrity sha512-jHi2oDuTePmW4NEyVT8JEGNlIYcnFXCSV2ZMp4rnDrUk4TzzyvS3IMvDlESEmG8Kry8rvP0KSUx/hTpy37Sbkw== dependencies: "@react-native-community/cli-server-api" "^10.1.1" "@react-native-community/cli-tools" "^10.1.1" chalk "^4.1.2" execa "^1.0.0" - metro "0.73.9" - metro-config "0.73.9" - metro-core "0.73.9" - metro-react-native-babel-transformer "0.73.9" - metro-resolver "0.73.9" - metro-runtime "0.73.9" + metro "0.73.10" + metro-config "0.73.10" + metro-core "0.73.10" + metro-react-native-babel-transformer "0.73.10" + metro-resolver "0.73.10" + metro-runtime "0.73.10" readline "^1.3.0" "@react-native-community/cli-server-api@^10.1.1": @@ -2439,10 +2593,10 @@ prompts "^2.4.0" semver "^6.3.0" -"@react-native-community/netinfo@9.3.10": - version "9.3.10" - resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-9.3.10.tgz#9b6cc2aec9329b5ccf35e866094c43aa420d927a" - integrity sha512-OwnqoJUp/4sa9e3ju+wQavAa8l0fiA3DheeLMKzKxtKeAe0CA7bNxWRM752JvRQ6A/igPnt1V0zSlu5owvQEuA== +"@react-native-community/netinfo@9.3.7": + version "9.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-9.3.7.tgz#92407f679f00bae005c785a9284e61d63e292b34" + integrity sha512-+taWmE5WpBp0uS6kf+bouCx/sn89G9EpR4s2M/ReLvctVIFL2Qh8WnWfBxqK9qwgmFha/uqjSr2Gq03OOtiDcw== "@react-native/assets@1.0.0": version "1.0.0" @@ -2472,147 +2626,6 @@ component-type "^1.2.1" join-component "^1.1.0" -"@sentry/browser@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.29.0.tgz#eb162b50adec33ac49ecd3dc930bdffbfda8098e" - integrity sha512-Af+dIcntaw405Wt7myDOMGDxiszfy4aBdshrEKYbGgcfHjgXBIdF3iKlNatvl6nrOm+IOVuKgSpCLOr2hiCwzw== - dependencies: - "@sentry/core" "7.29.0" - "@sentry/replay" "7.29.0" - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - tslib "^1.9.3" - -"@sentry/cli@1.74.4": - version "1.74.4" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.74.4.tgz#7df82f68045a155e1885bfcbb5d303e5259eb18e" - integrity sha512-BMfzYiedbModsNBJlKeBOLVYUtwSi99LJ8gxxE4Bp5N8hyjNIN0WVrozAVZ27mqzAuy6151Za3dpmOLO86YlGw== - dependencies: - https-proxy-agent "^5.0.0" - mkdirp "^0.5.5" - node-fetch "^2.6.7" - npmlog "^4.1.2" - progress "^2.0.3" - proxy-from-env "^1.1.0" - which "^2.0.2" - -"@sentry/cli@^1.72.0": - version "1.75.0" - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-1.75.0.tgz#4a5e71b5619cd4e9e6238cc77857c66f6b38d86a" - integrity sha512-vT8NurHy00GcN8dNqur4CMIYvFH3PaKdkX3qllVvi4syybKqjwoz+aWRCvprbYv0knweneFkLt1SmBWqazUMfA== - dependencies: - https-proxy-agent "^5.0.0" - mkdirp "^0.5.5" - node-fetch "^2.6.7" - progress "^2.0.3" - proxy-from-env "^1.1.0" - which "^2.0.2" - -"@sentry/core@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.29.0.tgz#bc4b54d56cf7652598d4430cf43ea97cc069f6fe" - integrity sha512-+e9aIp2ljtT4EJq3901z6TfEVEeqZd5cWzbKEuQzPn2UO6If9+Utd7kY2Y31eQYb4QnJgZfiIEz1HonuYY6zqQ== - dependencies: - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - tslib "^1.9.3" - -"@sentry/hub@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.29.0.tgz#916f818617b3c3993853737db3e752c21f8f8445" - integrity sha512-nIV2NtTn16VukTtWFhROHJ35NyUIXgEGtesG8a1i7D4iRSvkfLkLrQ9i6D0BAE2huqKqQemO3zGEPR00szqsiA== - dependencies: - "@sentry/core" "7.29.0" - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - tslib "^1.9.3" - -"@sentry/integrations@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.29.0.tgz#12595ac8d964b8006148618b8d5fad294e623c7f" - integrity sha512-BkZe3ALij320VtC5bNkeSz3OUhT9oxZsj2lf5rCuRFqcqw4tvVNADF/Y98mf0L4VCy582M9MlNXmwfewJjxGOA== - dependencies: - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - localforage "^1.8.1" - tslib "^1.9.3" - -"@sentry/react-native@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-4.13.0.tgz#d1b532f481080aed16532ac2778b20c1275391af" - integrity sha512-CxQd5jWPKEPgR1SH5ppf555h7DMhSBZMU3eSZ/VNT+BocgzxxBnf/tcJj92+gpwrzt2m7MiZ3uDfyfQOgyMc8Q== - dependencies: - "@sentry/browser" "7.29.0" - "@sentry/cli" "1.74.4" - "@sentry/core" "7.29.0" - "@sentry/hub" "7.29.0" - "@sentry/integrations" "7.29.0" - "@sentry/react" "7.29.0" - "@sentry/tracing" "7.29.0" - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - "@sentry/wizard" "1.4.0" - -"@sentry/react@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.29.0.tgz#a1c2ef522a4ccf1e948d77584e59e1254e09c92b" - integrity sha512-pJ138QTChfAiYzFrCgycBgXrAVARV6TdVvLB8z/HsqbHzPq17RhyF9M1xPE4ffeLDQAEuSudwED9CLOpJqKnAw== - dependencies: - "@sentry/browser" "7.29.0" - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - hoist-non-react-statics "^3.3.2" - tslib "^1.9.3" - -"@sentry/replay@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.29.0.tgz#75d5bb9df39e0a31994be245032c9998af62a304" - integrity sha512-Gw7HgviJQu6pX5RFQGVY38Av4qFn9otrZdwSSl/QK5hIyg6yhlh5h7U0ydZkrYYGiW6Z6SYYRpEWCJc/Wbh+ZQ== - dependencies: - "@sentry/core" "7.29.0" - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - -"@sentry/tracing@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.29.0.tgz#767f309cbff46ab12bec6ab3c266f7f03fec91fd" - integrity sha512-MAN/G6XROtRhzo/KDjddb6VJn/Q1TaPLwdyj9vvfkUkBNtlt5k16oXp+u7eHWX0uujER9wnZtj2ivXaPeqq0VA== - dependencies: - "@sentry/core" "7.29.0" - "@sentry/types" "7.29.0" - "@sentry/utils" "7.29.0" - tslib "^1.9.3" - -"@sentry/types@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.29.0.tgz#ed829b6014ee19049035fec6af2b4fea44ff28b8" - integrity sha512-DmoEpoqHPty3VxqubS/5gxarwebHRlcBd/yuno+PS3xy++/i9YPjOWLZhU2jYs1cW68M9R6CcCOiC9f2ckJjdw== - -"@sentry/utils@7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.29.0.tgz#cbf8f87dd851b0fdc7870db9c68014c321c3bab8" - integrity sha512-ICcBwTiBGK8NQA8H2BJo0JcMN6yCeKLqNKNMVampRgS6wSfSk1edvcTdhRkW3bSktIGrIPZrKskBHyMwDGF2XQ== - dependencies: - "@sentry/types" "7.29.0" - tslib "^1.9.3" - -"@sentry/wizard@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@sentry/wizard/-/wizard-1.4.0.tgz#9356ae2cb9e81ee6fa64418d15638607f1a957bd" - integrity sha512-Q/f9wJAAAr/YB6oWUzMQP/y5LIgx9la1SanMHNr3hMtVPKkMhvIZO5UWVn2G763yi85zARqSCLDx31/tZd4new== - dependencies: - "@sentry/cli" "^1.72.0" - chalk "^2.4.1" - glob "^7.1.3" - inquirer "^6.2.0" - lodash "^4.17.15" - opn "^5.4.0" - r2 "^2.0.1" - read-env "^1.3.0" - semver "^7.3.5" - xcode "3.0.1" - yargs "^16.2.0" - "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" @@ -2788,7 +2801,7 @@ anser@^1.4.9: resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== -ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.1.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== @@ -2809,16 +2822,6 @@ ansi-fragments@^0.2.1: slice-ansi "^2.0.0" strip-ansi "^5.0.0" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - ansi-regex@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" @@ -2871,19 +2874,6 @@ application-config-path@^0.1.0: resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.0.tgz#193c5f0a86541a4c66fba1e2dc38583362ea5e8f" integrity sha512-lljTpVvFteShrHuKRvweZfa9o/Nc34Y8r5/1Lqh/yyKaspRT2J3fkEiSSk1YLG8ZSVyU7yHysRy9zcDDS2aH1Q== -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - arg@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" @@ -3349,11 +3339,6 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3369,12 +3354,7 @@ caniuse-lite@^1.0.30001400: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz#5f459215192a024c99e3e3a53aac310fc7cf24e6" integrity sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg== -caseless@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3391,11 +3371,6 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - charenc@0.0.2, charenc@~0.0.1: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" @@ -3450,11 +3425,6 @@ cli-spinners@^2.0.0, cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -3501,11 +3471,6 @@ clone@^2.1.2: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -3655,11 +3620,6 @@ connect@^3.6.5, connect@^3.7.0: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - content-type@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" @@ -3875,11 +3835,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -4101,13 +4056,13 @@ expo-application@~5.1.0, expo-application@~5.1.1: integrity sha512-aDatTcTTCdTbHw8h4/Tq2ilc6InM5ntF9xWCJdOcnUEcglxxGphVI/lzJKBaBF6mJECA8mEOjpVg2EGxOctTwg== expo-asset@~8.9.1: - version "8.9.1" - resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.9.1.tgz#ecd43d7e8ee879e5023e7ce9fbbd6d011dcaf988" - integrity sha512-ugavxA7Scn96TBdeTYQA6xtHktnk0o/0xk7nFkxJKoH/t2cZDFSB05X0BI2/LDZY4iE6xTPOYw4C4mmourWfuA== + version "8.9.2" + resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.9.2.tgz#07f32d29d4f0ef99c80ffc831e81d62238f759a9" + integrity sha512-aHMaZkIG5/UoguINEHm2ln/KviU2m/yuryslnhCKR3KXRxiLnMhxmrONLGbknuNE0O1iCaprrl1w3y71u01Rpw== dependencies: blueimp-md5 "^2.10.0" - expo-constants "~14.2.0" - expo-file-system "~15.2.0" + expo-constants "~14.3.0" + expo-file-system "~15.3.0" invariant "^2.2.4" md5-file "^3.2.3" path-browserify "^1.0.0" @@ -4133,6 +4088,14 @@ expo-constants@~14.2.0, expo-constants@~14.2.1: "@expo/config" "~8.0.0" uuid "^3.3.2" +expo-constants@~14.3.0: + version "14.3.0" + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.3.0.tgz#56478ddbbff990273174819528d218f9576ac147" + integrity sha512-O8b+mZlPXZGH4wLLd+jMihGD0ZSMJRSmSsmcG7T60jHU3Dw4yDIuzHM/wMoBoL1pxLIbEwvcwDj0w8c+Sn+1sQ== + dependencies: + "@expo/config" "~8.0.0" + uuid "^3.3.2" + expo-crypto@~12.2.0: version "12.2.1" resolved "https://registry.yarnpkg.com/expo-crypto/-/expo-crypto-12.2.1.tgz#d4f0ef5e2148e1168628d0ebcc2697da3e5df8b3" @@ -4140,23 +4103,23 @@ expo-crypto@~12.2.0: dependencies: base64-js "^1.3.0" -expo-dev-client@~2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.1.4.tgz#215b5327dcd91a15df2d52e5446aab329c75dbe2" - integrity sha512-rzohZvq1lIm3wcFp0s0pTs3ihsKBA6MT/yaEgbL0DwuGZYSGn+iJomQD48xeRbWzoZjKLibYuR+zRvUrgN4yyg== +expo-dev-client@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-2.2.1.tgz#3abdb875e9c9ed30e1f6dadc2f80b392d15b1c1e" + integrity sha512-BDhKyni82LiT6PypgBns1/FLqo3cGDBluaj4/Pojx9P7x9iwOFcesepO8r6BCWb4LuBjdB+z2yQ1fMXxzNC3qQ== dependencies: - expo-dev-launcher "2.1.4" - expo-dev-menu "2.1.3" + expo-dev-launcher "2.2.1" + expo-dev-menu "2.2.0" expo-dev-menu-interface "1.1.1" expo-manifests "~0.5.0" expo-updates-interface "~0.9.0" -expo-dev-launcher@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.1.4.tgz#a2edab371818c28fcdb381120147b09a310a50a1" - integrity sha512-WwfhgE2tJWHn5/XPOpn6zbzT59c8YVW6xzGPnHPx0IYCIadROs/KnhkKCsWJGbgBZdeGDQotlzNv1Y6117eKeQ== +expo-dev-launcher@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-2.2.1.tgz#db9eec550487400cdac9c2aeedd3b6791fd49469" + integrity sha512-TP9SOrNIKF5Whju7uhtBsJeOvf9idUSg7snhHNVRpm2mA5kReckeD3PFv4HsvBHdnrfoslpeq4spOdS6UUx3XA== dependencies: - expo-dev-menu "2.1.3" + expo-dev-menu "2.2.0" resolve-from "^5.0.0" semver "^7.3.5" @@ -4165,33 +4128,33 @@ expo-dev-menu-interface@1.1.1: resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.1.1.tgz#8a0d979f62d9a192696f66a77f75d8fab79e604b" integrity sha512-doT+7WrSBnxCcTGZw9QIEZoL+43U4RywbG8XZwbhkcsFWGsh9scp0y/bv3ieFHxRtIdImxbxOoYh7fy1O6g28w== -expo-dev-menu@2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-2.1.3.tgz#e349d157b284e68c3eebec924c9bdc2f22174dbf" - integrity sha512-meQ3irhGNGyx6jKEpHy18WDS7on0iAJSmDnhT3+Jx55Ya+hdIvebF+aHDd4TrE/C5/Hlsn9/Fpm8bFAgmC1xpw== +expo-dev-menu@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-2.2.0.tgz#849ec3601f1dc228ad2858e4a25614a72932a61c" + integrity sha512-ImRUD7IVyLme7t3S+pNsOOgCBorkriVNo+ryEmkAjzRTKlpiklhoc1GEdQUU3qvO6e66gUguMbs4wnaP6o4NEw== dependencies: expo-dev-menu-interface "1.1.1" semver "^7.3.5" -expo-device@~5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-5.2.1.tgz#2962abdb9682e5b991a82836667f2e7d7103d9ef" - integrity sha512-ZWGph+fGQPxo9v2e0YygPb45Hl+ZR3mh4tpLY5AOYK/sNjQy+Lu3T/sLGIdi2TOcYNL2oZwzZ6eGvwVYmdIfLg== - dependencies: - ua-parser-js "^0.7.33" - expo-eas-client@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.5.1.tgz#3ef80dbbde13abe35be4e2a2e29b73d2f7fdf27a" integrity sha512-i3L/iwhI6cFhSUpVsCxSU5qehNznL/rQFYoof6qUIh3CMyijCuTEwjEhwbw2a5W6obPBzQUXbomMSFDO6D5/0Q== -expo-file-system@~15.2.0, expo-file-system@~15.2.2: +expo-file-system@~15.2.2: version "15.2.2" resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.2.2.tgz#a1ddf8aabf794f93888a146c4f5187e2004683a3" integrity sha512-LFkOLcWwlmnjkURxZ3/0ukS35OswX8iuQknLHRHeyk8mUA8fpRPPelD/a1lS+yclqfqavMJmTXVKM1Nsq5XVMA== dependencies: uuid "^3.4.0" +expo-file-system@~15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.3.0.tgz#fae2806bbedee6c0c3ecf1a0f9015963f4c4d1df" + integrity sha512-YUvNZzZJlF5TZM+FoRW9biJPB7qEgZbGYm8xJpqnxpj70FkFhwwoKiXVduZk+KVNiIs7d0q7e+Jdvmcr+Id3FQ== + dependencies: + uuid "^3.4.0" + expo-font@~11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.1.1.tgz#268eed407e94f6e88083c01b68c357d010748d23" @@ -4268,10 +4231,10 @@ expo-random@~13.1.1: dependencies: base64-js "^1.3.0" -expo-sharing@~11.2.1: - version "11.2.1" - resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-11.2.1.tgz#5f08463cfd2b67ccd3569600d4b7badbce01365e" - integrity sha512-eKURYrXSO0BaPENFg50hJkQqibZq3JhVmhHAID3wGq6KzUHwBpOjkisRjWfHu7wOze9YS64CUa7xVVLPBxuzxQ== +expo-sharing@~11.2.2: + version "11.2.2" + resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-11.2.2.tgz#7d9e387f1a902e6dd6838c22d9599dae9e7432cf" + integrity sha512-4Lhm1eS/CFIzX+JPuxMUTWBt9rv/WdvJvpQ9y+71bL/9w9dhvsdt9tv0SsNZATz4hk0tbrYD8ZEUsgiHiT1KkQ== expo-splash-screen@~0.18.2: version "0.18.2" @@ -4287,9 +4250,9 @@ expo-status-bar@~1.4.2: integrity sha512-5DV0hIEWgatSC3UgQuAZBoQeaS9CqeWRZ3vzBR9R/+IUD87Adbi4FGhU10nymRqFXOizGsureButGZIXPs7zEA== expo-structured-headers@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-3.1.1.tgz#198d44260f4b128d41313ef78df02fa6e20c5054" - integrity sha512-oV6yNGsJxQt7S9HYZTr+4L0I/yRwOF38USJ81I1KiN3GQI4C2z7P5OosyREA2VL9O+kUZVCCpNYsBLSa3/5bAQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-3.1.2.tgz#ac2ec100349a398f5d4fcc450d9b963b9a6efcff" + integrity sha512-UjVKwKeq6Ya4FWweDyfeaB2a2FY6BzrgF/c2uRMUDRVbUZIkhmc6BNYHKmfS2bnYWOc3bqp/REX5YFLSQfqvOg== expo-updates-interface@~0.9.0: version "0.9.1" @@ -4322,13 +4285,13 @@ expo-web-browser@~12.1.0, expo-web-browser@~12.1.1: url "^0.11.0" expo@~48.0.18: - version "48.0.19" - resolved "https://registry.yarnpkg.com/expo/-/expo-48.0.19.tgz#0f13be65d3cac99922666e5939388fc22b147e6a" - integrity sha512-Pmz2HEwcDdjWPq5fM3vF++je0hjZIBX9aTZEkm6sBv09Vfhe4+CuiuKDq3iE+N6G9l2+eFYoRCApDwLqcRMiPA== + version "48.0.20" + resolved "https://registry.yarnpkg.com/expo/-/expo-48.0.20.tgz#098a19b1eba81a15062fa853ae6941fdf9aef1f4" + integrity sha512-SDRlLRINWWqf/OIPaUr/BsFZLhR5oEj1u9Cn06h1mPeo8pqv6ei/QTSZql4e0ixHIu3PWMPrUx9k/47nnTyTpg== dependencies: "@babel/runtime" "^7.20.0" "@expo/cli" "0.7.3" - "@expo/config" "8.0.2" + "@expo/config" "8.0.5" "@expo/config-plugins" "6.0.2" "@expo/vector-icons" "^13.0.0" babel-preset-expo "~9.3.2" @@ -4364,15 +4327,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -4456,13 +4410,6 @@ fetch-retry@^4.1.1: resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-4.1.1.tgz#fafe0bb22b54f4d0a9c788dff6dd7f8673ca63f3" integrity sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -4691,20 +4638,6 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -4864,11 +4797,6 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -4926,13 +4854,6 @@ hermes-profile-transformer@^0.0.6: dependencies: source-map "^0.7.3" -hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - hosted-git-info@^3.0.2: version "3.0.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" @@ -4956,7 +4877,7 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== -https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -4969,7 +4890,7 @@ hyphenate-style-name@^1.0.2: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5049,25 +4970,6 @@ inline-style-prefixer@^6.0.1: dependencies: css-in-js-utils "^2.0.0" -inquirer@^6.2.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - internal-ip@4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -5164,6 +5066,13 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" @@ -5242,13 +5151,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -5406,11 +5308,6 @@ is-typed-array@^1.1.3, is-typed-array@^1.1.9: for-each "^0.3.3" has-tostringtag "^1.0.0" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -5614,6 +5511,11 @@ jsc-android@^250231.0.0: resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250231.0.0.tgz#91720f8df382a108872fa4b3f558f33ba5e95262" integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz#141c14fbb43791e88d5dc64e85a374575a83477a" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + jscodeshift@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" @@ -5743,13 +5645,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -lie@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== - dependencies: - immediate "~3.0.5" - lie@~3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" @@ -5762,13 +5657,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -localforage@^1.8.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" - integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== - dependencies: - lie "3.1.1" - locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -5806,7 +5694,7 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== -lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.4: +lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5955,6 +5843,16 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +metro-babel-transformer@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.73.10.tgz#b27732fa3869f397246ee8ecf03b64622ab738c1" + integrity sha512-Yv2myTSnpzt/lTyurLvqYbBkytvUJcLHN8XD3t7W6rGiLTQPzmf1zypHQLphvcAXtCWBOXFtH7KLOSi2/qMg+A== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.8.0" + metro-source-map "0.73.10" + nullthrows "^1.1.1" + metro-babel-transformer@0.73.9: version "0.73.9" resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.73.9.tgz#bec8aaaf1bbdc2e469fde586fde455f8b2a83073" @@ -5965,43 +5863,43 @@ metro-babel-transformer@0.73.9: metro-source-map "0.73.9" nullthrows "^1.1.1" -metro-cache-key@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.73.9.tgz#7d8c441a3b7150f7b201273087ef3cf7d3435d9f" - integrity sha512-uJg+6Al7UoGIuGfoxqPBy6y1Ewq7Y8/YapGYIDh6sohInwt/kYKnPZgLDYHIPvY2deORnQ/2CYo4tOeBTnhCXQ== +metro-cache-key@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.73.10.tgz#8d63591187d295b62a80aed64a87864b1e9d67a2" + integrity sha512-JMVDl/EREDiUW//cIcUzRjKSwE2AFxVWk47cFBer+KA4ohXIG2CQPEquT56hOw1Y1s6gKNxxs1OlAOEsubrFjw== -metro-cache@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.73.9.tgz#773c2df6ba53434e58ccbe421b0c54e6da8d2890" - integrity sha512-upiRxY8rrQkUWj7ieACD6tna7xXuXdu2ZqrheksT79ePI0aN/t0memf6WcyUtJUMHZetke3j+ppELNvlmp3tOw== +metro-cache@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.73.10.tgz#02e9cb7c1e42aab5268d2ecce35ad8f2c08891de" + integrity sha512-wPGlQZpdVlM404m7MxJqJ+hTReDr5epvfPbt2LerUAHY9RN99w61FeeAe25BMZBwgUgDtAsfGlJ51MBHg8MAqw== dependencies: - metro-core "0.73.9" + metro-core "0.73.10" rimraf "^3.0.2" -metro-config@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.73.9.tgz#6b43c70681bdd6b00f44400fc76dddbe53374500" - integrity sha512-NiWl1nkYtjqecDmw77tbRbXnzIAwdO6DXGZTuKSkH+H/c1NKq1eizO8Fe+NQyFtwR9YLqn8Q0WN1nmkwM1j8CA== +metro-config@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.73.10.tgz#a9ec3d0a1290369e3f46c467a4c4f6dd43acc223" + integrity sha512-wIlybd1Z9I8K2KcStTiJxTB7OK529dxFgogNpKCTU/3DxkgAASqSkgXnZP6kVyqjh5EOWAKFe5U6IPic7kXDdQ== dependencies: cosmiconfig "^5.0.5" jest-validate "^26.5.2" - metro "0.73.9" - metro-cache "0.73.9" - metro-core "0.73.9" - metro-runtime "0.73.9" + metro "0.73.10" + metro-cache "0.73.10" + metro-core "0.73.10" + metro-runtime "0.73.10" -metro-core@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.73.9.tgz#410c5c0aeae840536c10039f68098fdab3da568e" - integrity sha512-1NTs0IErlKcFTfYyRT3ljdgrISWpl1nys+gaHkXapzTSpvtX9F1NQNn5cgAuE+XIuTJhbsCdfIJiM2JXbrJQaQ== +metro-core@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.73.10.tgz#feb3c228aa8c0dde71d8e4cef614cc3a1dc3bbd7" + integrity sha512-5uYkajIxKyL6W45iz/ftNnYPe1l92CvF2QJeon1CHsMXkEiOJxEjo41l+iSnO/YodBGrmMCyupSO4wOQGUc0lw== dependencies: lodash.throttle "^4.1.1" - metro-resolver "0.73.9" + metro-resolver "0.73.10" -metro-file-map@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.73.9.tgz#09c04a8e8ef1eaa6ecb2b9cb8cb53bb0fa0167ec" - integrity sha512-R/Wg3HYeQhYY3ehWtfedw8V0ne4lpufG7a21L3GWer8tafnC9pmjoCKEbJz9XZkVj9i1FtxE7UTbrtZNeIILxQ== +metro-file-map@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.73.10.tgz#55bd906fb7c1bef8e1a31df4b29a3ef4b49f0b5a" + integrity sha512-XOMWAybeaXyD6zmVZPnoCCL2oO3rp4ta76oUlqWP0skBzhFxVtkE/UtDwApEMUY361JeBBago647gnKiARs+1g== dependencies: abort-controller "^3.0.0" anymatch "^3.0.3" @@ -6019,35 +5917,79 @@ metro-file-map@0.73.9: optionalDependencies: fsevents "^2.3.2" -metro-hermes-compiler@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.73.9.tgz#6f473e67e8f76066066f00e2e0ecce865f7d445d" - integrity sha512-5B3vXIwQkZMSh3DQQY23XpTCpX9kPLqZbA3rDuAcbGW0tzC3f8dCenkyBb0GcCzyTDncJeot/A7oVCVK6zapwg== +metro-hermes-compiler@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.73.10.tgz#4525a7835c803a5d0b3b05c6619202e2273d630f" + integrity sha512-rTRWEzkVrwtQLiYkOXhSdsKkIObnL+Jqo+IXHI7VEK2aSLWRAbtGNqECBs44kbOUypDYTFFE+WLtoqvUWqYkWg== -metro-inspector-proxy@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.73.9.tgz#8e11cd300adf3f904f1f5afe28b198312cdcd8c2" - integrity sha512-B3WrWZnlYhtTrv0IaX3aUAhi2qVILPAZQzb5paO1e+xrz4YZHk9c7dXv7qe7B/IQ132e3w46y3AL7rFo90qVjA== +metro-inspector-proxy@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.73.10.tgz#752fed2ab88199c9dcc3369c3d59da6c5b954a51" + integrity sha512-CEEvocYc5xCCZBtGSIggMCiRiXTrnBbh8pmjKQqm9TtJZALeOGyt5pXUaEkKGnhrXETrexsg6yIbsQHhEvVfvQ== dependencies: connect "^3.6.5" debug "^2.2.0" ws "^7.5.1" yargs "^17.5.1" -metro-minify-terser@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.73.9.tgz#301aef2e106b0802f7a14ef0f2b4883b20c80018" - integrity sha512-MTGPu2qV5qtzPJ2SqH6s58awHDtZ4jd7lmmLR+7TXDwtZDjIBA0YVfI0Zak2Haby2SqoNKrhhUns/b4dPAQAVg== +metro-minify-terser@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.73.10.tgz#557eab3a512b90b7779350ff5d25a215c4dbe61f" + integrity sha512-uG7TSKQ/i0p9kM1qXrwbmY3v+6BrMItsOcEXcSP8Z+68bb+t9HeVK0T/hIfUu1v1PEnonhkhfzVsaP8QyTd5lQ== dependencies: terser "^5.15.0" -metro-minify-uglify@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.73.9.tgz#cf4f8c19b688deea103905689ec736c2f2acd733" - integrity sha512-gzxD/7WjYcnCNGiFJaA26z34rjOp+c/Ft++194Wg91lYep3TeWQ0CnH8t2HRS7AYDHU81SGWgvD3U7WV0g4LGA== +metro-minify-uglify@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.73.10.tgz#4de79056d502479733854c90f2075374353ea154" + integrity sha512-eocnSeJKnLz/UoYntVFhCJffED7SLSgbCHgNvI6ju6hFb6EFHGJT9OLbkJWeXaWBWD3Zw5mYLS8GGqGn/CHZPA== dependencies: uglify-es "^3.1.9" +metro-react-native-babel-preset@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.10.tgz#304b24bb391537d2c987732cc0a9774be227d3f6" + integrity sha512-1/dnH4EHwFb2RKEKx34vVDpUS3urt2WEeR8FYim+ogqALg4sTpG7yeQPxWpbgKATezt4rNfqAANpIyH19MS4BQ== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@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.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^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-flow-strip-types" "^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-named-capturing-groups-regex" "^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-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^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.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + react-refresh "^0.4.0" + metro-react-native-babel-preset@0.73.9: version "0.73.9" resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.73.9.tgz#ef54637dd20f025197beb49e71309a9c539e73e2" @@ -6092,6 +6034,19 @@ metro-react-native-babel-preset@0.73.9: "@babel/template" "^7.0.0" react-refresh "^0.4.0" +metro-react-native-babel-transformer@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.73.10.tgz#4e20a9ce131b873cda0b5a44d3eb4002134a64b8" + integrity sha512-4G/upwqKdmKEjmsNa92/NEgsOxUWOygBVs+FXWfXWKgybrmcjh3NoqdRYrROo9ZRA/sB9Y/ZXKVkWOGKHtGzgg== + dependencies: + "@babel/core" "^7.20.0" + babel-preset-fbjs "^3.4.0" + hermes-parser "0.8.0" + metro-babel-transformer "0.73.10" + metro-react-native-babel-preset "0.73.10" + metro-source-map "0.73.10" + nullthrows "^1.1.1" + metro-react-native-babel-transformer@0.73.9: version "0.73.9" resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.73.9.tgz#4f4f0cfa5119bab8b53e722fabaf90687d0cbff0" @@ -6105,13 +6060,21 @@ metro-react-native-babel-transformer@0.73.9: metro-source-map "0.73.9" nullthrows "^1.1.1" -metro-resolver@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.73.9.tgz#f3cf77e6c7606a34aa81bad40edb856aad671cf3" - integrity sha512-Ej3wAPOeNRPDnJmkK0zk7vJ33iU07n+oPhpcf5L0NFkWneMmSM2bflMPibI86UjzZGmRfn0AhGhs8yGeBwQ/Xg== +metro-resolver@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.73.10.tgz#c39a3bd8d33e5d78cb256110d29707d8d49ed0be" + integrity sha512-HeXbs+0wjakaaVQ5BI7eT7uqxlZTc9rnyw6cdBWWMgUWB++KpoI0Ge7Hi6eQAOoVAzXC3m26mPFYLejpzTWjng== dependencies: absolute-path "^0.0.0" +metro-runtime@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.73.10.tgz#c3de19d17e75ffe1a145778d99422e7ffc208768" + integrity sha512-EpVKm4eN0Fgx2PEWpJ5NiMArV8zVoOin866jIIvzFLpmkZz1UEqgjf2JAfUJnjgv3fjSV3JqeGG2vZCaGQBTow== + dependencies: + "@babel/runtime" "^7.0.0" + react-refresh "^0.4.0" + metro-runtime@0.73.9: version "0.73.9" resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.73.9.tgz#0b24c0b066b8629ee855a6e5035b65061fef60d5" @@ -6120,6 +6083,20 @@ metro-runtime@0.73.9: "@babel/runtime" "^7.0.0" react-refresh "^0.4.0" +metro-source-map@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.73.10.tgz#28e09a28f1a2f7a4f8d0845b845cbed74e2f48f9" + integrity sha512-NAGv14701p/YaFZ76KzyPkacBw/QlEJF1f8elfs23N1tC33YyKLDKvPAzFJiYqjdcFvuuuDCA8JCXd2TgLxNPw== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.73.10" + nullthrows "^1.1.1" + ob1 "0.73.10" + source-map "^0.5.6" + vlq "^1.0.0" + metro-source-map@0.73.9: version "0.73.9" resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.73.9.tgz#89ca41f6346aeb12f7f23496fa363e520adafebe" @@ -6134,6 +6111,18 @@ metro-source-map@0.73.9: source-map "^0.5.6" vlq "^1.0.0" +metro-symbolicate@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.73.10.tgz#7853a9a8fbfd615a5c9db698fffc685441ac880f" + integrity sha512-PmCe3TOe1c/NVwMlB+B17me951kfkB3Wve5RqJn+ErPAj93od1nxicp6OJe7JT4QBRnpUP8p9tw2sHKqceIzkA== + dependencies: + invariant "^2.2.4" + metro-source-map "0.73.10" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + metro-symbolicate@0.73.9: version "0.73.9" resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.73.9.tgz#cb452299a36e5b86b2826e7426d51221635c48bf" @@ -6146,10 +6135,10 @@ metro-symbolicate@0.73.9: through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.73.9.tgz#9fffbe1b24269e3d114286fa681abc570072d9b8" - integrity sha512-r9NeiqMngmooX2VOKLJVQrMuV7PAydbqst5bFhdVBPcFpZkxxqyzjzo+kzrszGy2UpSQBZr2P1L6OMjLHwQwfQ== +metro-transform-plugins@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.73.10.tgz#1b762330cbbedb6c18438edc3d76b063c88882af" + integrity sha512-D4AgD3Vsrac+4YksaPmxs/0ocT67bvwTkFSIgWWeDvWwIG0U1iHzTS9f8Bvb4PITnXryDoFtjI6OWF7uOpGxpA== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" @@ -6157,29 +6146,29 @@ metro-transform-plugins@0.73.9: "@babel/traverse" "^7.20.0" nullthrows "^1.1.1" -metro-transform-worker@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.73.9.tgz#30384cef2d5e35a4abe91b15bf1a8344f5720441" - integrity sha512-Rq4b489sIaTUENA+WCvtu9yvlT/C6zFMWhU4sq+97W29Zj0mPBjdk+qGT5n1ZBgtBIJzZWt1KxeYuc17f4aYtQ== +metro-transform-worker@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.73.10.tgz#bb401dbd7b10a6fe443a5f7970cba38425efece0" + integrity sha512-IySvVubudFxahxOljWtP0QIMMpgUrCP0bW16cz2Enof0PdumwmR7uU3dTbNq6S+XTzuMHR+076aIe4VhPAWsIQ== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" "@babel/parser" "^7.20.0" "@babel/types" "^7.20.0" babel-preset-fbjs "^3.4.0" - metro "0.73.9" - metro-babel-transformer "0.73.9" - metro-cache "0.73.9" - metro-cache-key "0.73.9" - metro-hermes-compiler "0.73.9" - metro-source-map "0.73.9" - metro-transform-plugins "0.73.9" + metro "0.73.10" + metro-babel-transformer "0.73.10" + metro-cache "0.73.10" + metro-cache-key "0.73.10" + metro-hermes-compiler "0.73.10" + metro-source-map "0.73.10" + metro-transform-plugins "0.73.10" nullthrows "^1.1.1" -metro@0.73.9: - version "0.73.9" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.73.9.tgz#150e69a6735fab0bcb4f6ee97fd1efc65b3ec36f" - integrity sha512-BlYbPmTF60hpetyNdKhdvi57dSqutb+/oK0u3ni4emIh78PiI0axGo7RfdsZ/mn3saASXc94tDbpC5yn7+NpEg== +metro@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.73.10.tgz#d9a0efb1e403e3aee5cf5140e0a96a7220c23901" + integrity sha512-J2gBhNHFtc/Z48ysF0B/bfTwUwaRDLjNv7egfhQCc+934dpXcjJG2KZFeuybF+CvA9vo4QUi56G2U+RSAJ5tsA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.20.0" @@ -6202,24 +6191,25 @@ metro@0.73.9: image-size "^0.6.0" invariant "^2.2.4" jest-worker "^27.2.0" + jsc-safe-url "^0.2.2" lodash.throttle "^4.1.1" - metro-babel-transformer "0.73.9" - metro-cache "0.73.9" - metro-cache-key "0.73.9" - metro-config "0.73.9" - metro-core "0.73.9" - metro-file-map "0.73.9" - metro-hermes-compiler "0.73.9" - metro-inspector-proxy "0.73.9" - metro-minify-terser "0.73.9" - metro-minify-uglify "0.73.9" - metro-react-native-babel-preset "0.73.9" - metro-resolver "0.73.9" - metro-runtime "0.73.9" - metro-source-map "0.73.9" - metro-symbolicate "0.73.9" - metro-transform-plugins "0.73.9" - metro-transform-worker "0.73.9" + metro-babel-transformer "0.73.10" + metro-cache "0.73.10" + metro-cache-key "0.73.10" + metro-config "0.73.10" + metro-core "0.73.10" + metro-file-map "0.73.10" + metro-hermes-compiler "0.73.10" + metro-inspector-proxy "0.73.10" + metro-minify-terser "0.73.10" + metro-minify-uglify "0.73.10" + metro-react-native-babel-preset "0.73.10" + metro-resolver "0.73.10" + metro-runtime "0.73.10" + metro-source-map "0.73.10" + metro-symbolicate "0.73.10" + metro-transform-plugins "0.73.10" + metro-transform-worker "0.73.10" mime-types "^2.1.27" node-fetch "^2.2.0" nullthrows "^1.1.1" @@ -6354,7 +6344,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -6381,11 +6371,6 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - mv@~2: version "2.1.1" resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" @@ -6458,7 +6443,7 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" -node-fetch@2.6.7, node-fetch@^2.0.0-alpha.8, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -6521,25 +6506,15 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== +ob1@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.73.10.tgz#bf0a2e8922bb8687ddca82327c5cf209414a1bd4" + integrity sha512-aO6EYC+QRRCkZxVJhCWhLKgVjhNuD6Gu1riGjxrIm89CqLsmKgxzYDDEsktmKsoDeRdWGQM5EdMzXDl5xcVfsw== ob1@0.73.9: version "0.73.9" @@ -6658,13 +6633,6 @@ open@^8.0.4, open@^8.3.0: is-docker "^2.1.1" is-wsl "^2.2.0" -opn@^5.4.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - ora@3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" @@ -6936,7 +6904,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@2.0.3, progress@^2.0.3: +progress@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -7014,11 +6982,6 @@ protobufjs@^7.0.0: "@types/node" ">=13.7.0" long "^5.0.0" -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -7068,15 +7031,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -r2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/r2/-/r2-2.0.1.tgz#94cd802ecfce9a622549c8182032d8e4a2b2e612" - integrity sha512-EEmxoxYCe3LHzAUhRIRxdCKERpeRNmlLj6KLUSORqnK6dWl/K5ShmDGZqM2lRZQeqJgF+wyqk0s1M7SWUveNOQ== - dependencies: - caseless "^0.12.0" - node-fetch "^2.0.0-alpha.8" - typedarray-to-buffer "^3.1.2" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -7103,9 +7057,9 @@ rc@~1.2.7: strip-json-comments "~2.0.1" react-devtools-core@^4.26.1: - version "4.27.2" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.27.2.tgz#d20fc57e258c656eedabafc2c851d38b33583148" - integrity sha512-8SzmIkpO87alD7Xr6gWIEa1jHkMjawOZ+6egjazlnjB4UUcbnzGDf/vBJ4BzGuWWEM+pzrxuzsPpcMqlQkYK2g== + version "4.28.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.0.tgz#3fa18709b24414adddadac33b6b9cea96db60f2f" + integrity sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg== dependencies: shell-quote "^1.6.1" ws "^7" @@ -7123,7 +7077,7 @@ react-dom@18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -7143,10 +7097,10 @@ react-native-codegen@^0.71.5: jscodeshift "^0.13.1" nullthrows "^1.1.1" -react-native-gradle-plugin@^0.71.18: - version "0.71.18" - resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.71.18.tgz#20ef199bc85be32e45bb6cc069ec2e7dcb1a74a6" - integrity sha512-7F6bD7B8Xsn3JllxcwHhFcsl9aHIig47+3eN4IHFNqfLhZr++3ElDrcqfMzugM+niWbaMi7bJ0kAkAL8eCpdWg== +react-native-gradle-plugin@0.71.19, react-native-gradle-plugin@^0.71.18: + version "0.71.19" + resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.71.19.tgz#3379e28341fcd189bc1f4691cefc84c1a4d7d232" + integrity sha512-1dVk9NwhoyKHCSxcrM6vY6cxmojeATsBobDicX0ZKr7DgUF2cBQRTKsimQFvzH8XhOVXyH8p4HyDSZNIFI8OlQ== react-native-iap@^12.4.2: version "12.4.2" @@ -7171,10 +7125,10 @@ react-native-web@~0.18.10: postcss-value-parser "^4.2.0" styleq "^0.1.2" -react-native-webview@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-12.0.2.tgz#6f75bc74f75a7585fb06743ffc20c267048512df" - integrity sha512-vEnFOgVIYaUAQb437BOZdwTteUv3dkXkYOajalUkMDHNz91Zb35HaG6L49uUSFp4qYw46y/U3licKS1BOISDrg== +react-native-webview@13.3.1: + version "13.3.1" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.3.1.tgz#b368c3fb6a28c81e8ffe74208c899c95ee633ce7" + integrity sha512-jTRC7bZB1gedAbZGGzQUnsaU+avZcZrKLT8g+RR0bsGW80tUOvwezwznKvQ+m1xXOpGFTD1B3+AazUP7+jy4mg== dependencies: escape-string-regexp "2.0.0" invariant "2.2.4" @@ -7239,14 +7193,16 @@ react@18.2.0: dependencies: loose-envify "^1.1.0" -read-env@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/read-env/-/read-env-1.3.0.tgz#e26e1e446992b3216e9a3c6f6ac51064fe91fdff" - integrity sha512-DbCgZ8oHwZreK/E2E27RGk3EUPapMhYGSGIt02k9sX6R3tCFc4u4tkltKvkCvzEQ3SOLUaiYHAnGb+TdsnPp0A== +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: - camelcase "5.0.0" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" -readable-stream@^2.0.6, readable-stream@~2.3.6: +readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7259,15 +7215,6 @@ readable-stream@^2.0.6, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - readline@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" @@ -7398,9 +7345,9 @@ requires-port@^1.0.0: integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== reselect@^4.0.0: - version "4.1.6" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" - integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== + version "4.1.8" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" + integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== resolve-from@^3.0.0: version "3.0.0" @@ -7417,7 +7364,16 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.13.1, resolve@^1.14.2: +resolve@^1.13.1: + version "1.22.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^1.14.2: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -7492,11 +7448,6 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -7504,13 +7455,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.4.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -7609,19 +7553,6 @@ send@0.18.0, send@^0.18.0: range-parser "~1.2.1" statuses "2.0.1" -sentry-expo@~6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/sentry-expo/-/sentry-expo-6.1.1.tgz#e5cb74523ef09b7cdc185ba696333c69d87ed703" - integrity sha512-eNrWvvDY/Z6Yba+jjjYWX6s5Qk3jzCaSAs8I6EkXUFiXqEi3ONJ+LKanf9Wuy0pjjtWtxHyPHTrb+93Kn0cVmg== - dependencies: - "@expo/spawn-async" "^1.7.0" - "@sentry/integrations" "7.29.0" - "@sentry/react" "7.29.0" - "@sentry/react-native" "4.13.0" - "@sentry/types" "7.29.0" - mkdirp "^1.0.4" - rimraf "^3.0.2" - serialize-error@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-6.0.0.tgz#ccfb887a1dd1c48d6d52d7863b92544331fd752b" @@ -7644,7 +7575,7 @@ serve-static@^1.13.1: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== @@ -7908,16 +7839,7 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7926,14 +7848,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -7966,21 +7880,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.0.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -8187,7 +8087,7 @@ through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, through@^2.3.6: +through@2: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== @@ -8268,7 +8168,7 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.10.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -8316,23 +8216,11 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typedarray-to-buffer@^3.1.2: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - ua-parser-js@^0.7.30: version "0.7.31" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== -ua-parser-js@^0.7.33: - version "0.7.33" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" - integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== - uglify-es@^3.1.9: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -8624,20 +8512,13 @@ which@^1.2.9: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - wonka@^4.0.14: version "4.0.15" resolved "https://registry.yarnpkg.com/wonka/-/wonka-4.0.15.tgz#9aa42046efa424565ab8f8f451fcca955bf80b89" @@ -8702,7 +8583,7 @@ ws@^8.12.1: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== -xcode@3.0.1, xcode@^3.0.0, xcode@^3.0.1: +xcode@^3.0.0, xcode@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c" integrity sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA== @@ -8814,9 +8695,9 @@ yargs@^16.2.0: yargs-parser "^20.2.2" yargs@^17.5.1: - version "17.7.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" - integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" escalade "^3.1.1" diff --git a/web/components/editor/link-preview-node-view.tsx b/web/components/editor/link-preview-node-view.tsx index 1ec537e414..8101d87713 100644 --- a/web/components/editor/link-preview-node-view.tsx +++ b/web/components/editor/link-preview-node-view.tsx @@ -41,7 +41,7 @@ export const LinkPreviewNodeView = (props: LinkPreviewProps) => { className="block" key={id} href={url} - target="_blank" + target={url.includes('manifold.markets') ? '_self' : '_blank'} rel="noreferrer ugc" > { const isNative = getIsNative() - if (!isNative) return - ;(window as any).ReactNativeWebView?.postMessage( - JSON.stringify({ - type, - data, - }) - ) + if ( + isNative && + (window as any).ReactNativeWebView && + // NOTE: After the webview is killed on android due to OOM, postMessage will be undefined, see: https://github.com/react-native-webview/react-native-webview/issues/2680 + typeof (window as any).ReactNativeWebView.postMessage === 'function' + ) { + ;(window as any).ReactNativeWebView?.postMessage( + JSON.stringify({ + type, + data, + }) + ) + } } diff --git a/web/components/widgets/editor.tsx b/web/components/widgets/editor.tsx index 731dd79df6..2040a5da52 100644 --- a/web/components/widgets/editor.tsx +++ b/web/components/widgets/editor.tsx @@ -43,6 +43,9 @@ import { usePersistentLocalState } from 'web/hooks/use-persistent-local-state' const DisplayLink = Link.extend({ renderHTML({ HTMLAttributes }) { + HTMLAttributes.target = HTMLAttributes.href.includes('manifold.markets') + ? '_self' + : '_blank' delete HTMLAttributes.class // only use our classes (don't duplicate on paste) return [ 'a',