From 4363317029abbb256aae62ffd80ba6ddc089515f Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Wed, 23 Aug 2023 14:01:30 -0400 Subject: [PATCH 01/14] fix absolute common imports --- native/App.tsx | 12 +++++------- native/components/auth-page.tsx | 2 +- native/components/ios-iap-listener.tsx | 2 +- native/components/web-view-utils.tsx | 2 +- native/init.ts | 2 +- native/metro.config.js | 4 ++-- native/tsconfig.json | 5 +++-- 7 files changed, 14 insertions(+), 15 deletions(-) diff --git a/native/App.tsx b/native/App.tsx index 830e70da58..a1e02ee55c 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -2,7 +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 { EXTERNAL_REDIRECTS } from 'common/envs/constants' import * as Device from 'expo-device' import * as Notifications from 'expo-notifications' import { @@ -23,19 +23,17 @@ 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 { setFirebaseUserViaJson } from 'common/firebase-auth' import * as Sentry from 'sentry-expo' 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,7 +43,7 @@ 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' diff --git a/native/components/auth-page.tsx b/native/components/auth-page.tsx index 53bf1d0791..ed3885f653 100644 --- a/native/components/auth-page.tsx +++ b/native/components/auth-page.tsx @@ -29,7 +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 { ENV_CONFIG } from 'common/envs/constants' import * as Sentry from 'sentry-expo' import { Text } from 'components/text' import { log } from 'components/logger' diff --git a/native/components/ios-iap-listener.tsx b/native/components/ios-iap-listener.tsx index a786050bd5..690571295e 100644 --- a/native/components/ios-iap-listener.tsx +++ b/native/components/ios-iap-listener.tsx @@ -8,7 +8,7 @@ import { 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: { diff --git a/native/components/web-view-utils.tsx b/native/components/web-view-utils.tsx index d3d6ee8a90..7622b781dd 100644 --- a/native/components/web-view-utils.tsx +++ b/native/components/web-view-utils.tsx @@ -9,7 +9,7 @@ import { 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'); diff --git a/native/init.ts b/native/init.ts index 8e0e4f7491..53c129bc9b 100644 --- a/native/init.ts +++ b/native/init.ts @@ -1,5 +1,5 @@ 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' 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/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/*"] } } } From c8c6a76f1a96c64fe92764ad3bcf1d5ed4a4e0a4 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Wed, 23 Aug 2023 15:52:47 -0400 Subject: [PATCH 02/14] Upgrade expo, react-native-webview --- native/android/app/build.gradle | 5 +- .../android/app/src/main/AndroidManifest.xml | 2 +- native/android/gradlew.bat | 182 +-- .../App-Icon-1024x1024@1x.png | Bin 0 -> 76306 bytes .../AppIcon.appiconset/Contents.json | 116 +- native/package.json | 17 +- native/yarn.lock | 1194 ++++++++++++----- 7 files changed, 989 insertions(+), 527 deletions(-) create mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png diff --git a/native/android/app/build.gradle b/native/android/app/build.gradle index 9b66f494f2..3d947a7ce2 100644 --- a/native/android/app/build.gradle +++ b/native/android/app/build.gradle @@ -108,6 +108,8 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } +project.ext.sentryCli=[collectModulesScript: new File(["node", "--print", "require.resolve('@sentry/react-native/package.json')"].execute().text.trim(), "../dist/js/tools/collectModules.js")] + apply from: new File(["node", "--print", "require.resolve('@sentry/react-native/package.json')"].execute().text.trim(), "../sentry.gradle") android { @@ -121,8 +123,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 54 - missingDimensionStrategy 'store', 'play' versionName "2.0.46" + missingDimensionStrategy 'store', 'play' } splits { @@ -149,6 +151,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/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/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png b/native/ios/Manifold/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..a0aa90203d7494c6475fe8a6bf2139351f8114cb GIT binary patch literal 76306 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.6.0" xmlbuilder "~11.0.0" +xml2js@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.0.tgz#07afc447a97d2bd6507a1f76eeadddb09f7a8282" + integrity sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + xmlbuilder@^14.0.0: version "14.0.0" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-14.0.0.tgz#876b5aec4f05ffd5feb97b0a871c855d16fbeb8c" @@ -8814,9 +9380,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" From 90417e6afac057182525b752d05ba2000aa49be5 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Wed, 23 Aug 2023 18:40:45 -0400 Subject: [PATCH 03/14] Make manifold.markets links target '_self', hack iframe to layer on an tag for native --- common/src/util/tiptap-iframe.ts | 52 +++++++++++++++++-- native/App.tsx | 8 +-- .../editor/link-preview-node-view.tsx | 2 +- web/components/widgets/editor.tsx | 3 ++ 4 files changed, 53 insertions(+), 12 deletions(-) diff --git a/common/src/util/tiptap-iframe.ts b/common/src/util/tiptap-iframe.ts index c59f56f002..2a29e96b28 100644 --- a/common/src/util/tiptap-iframe.ts +++ b/common/src/util/tiptap-iframe.ts @@ -1,6 +1,15 @@ // Adopted from https://github.com/ueberdosis/tiptap/blob/main/demos/src/Experiments/Embeds/Vue/iframe.ts import { Node, mergeAttributes } from '@tiptap/core' +import { IS_NATIVE_KEY } from 'common/native-message' + +const getIsNative = () => { + if (typeof window === 'undefined') return false + const isNative = + localStorage?.getItem(IS_NATIVE_KEY) || + sessionStorage?.getItem(IS_NATIVE_KEY) + return isNative === 'true' +} export interface IframeOptions { HTMLAttributes: { @@ -49,10 +58,45 @@ export default Node.create({ }, renderHTML({ HTMLAttributes }) { - return [ - 'iframe', - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - ] + const isNative = getIsNative() + const iframeAttributes = mergeAttributes( + this.options.HTMLAttributes, + HTMLAttributes + ) + const { src } = HTMLAttributes + + // This is a hack to prevent native apps from opening the iframe in an in-app browser: + // links with target='_blank' will open in the in-app browser. + if (isNative && 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 a1e02ee55c..d8eac6b123 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -503,13 +503,7 @@ const App = () => { 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/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" > Date: Thu, 24 Aug 2023 09:53:20 -0400 Subject: [PATCH 04/14] Remove maniswipe-controlled back/forward gestures --- native/App.tsx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/native/App.tsx b/native/App.tsx index d8eac6b123..f6284ab7bf 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -126,9 +126,6 @@ const App = () => { setUrlToLoad(newUrl) } - const [allowSystemBack, setAllowSystemBack] = useState( - sharedWebViewProps.allowsBackForwardNavigationGestures - ) // IAP const [checkoutAmount, setCheckoutAmount] = useState(null) @@ -361,11 +358,6 @@ const App = () => { extra: { message: 'error parsing users from client' }, }) } - } 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) @@ -492,7 +484,6 @@ const App = () => { { From 1c68ab0b88fb9b280566c84c432487f560870767 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 11:33:02 -0400 Subject: [PATCH 05/14] Use refs instead of state --- native/App.tsx | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/native/App.tsx b/native/App.tsx index f6284ab7bf..5e8638ebc1 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -62,9 +62,9 @@ const App = () => { useFonts({ ReadexPro_400Regular }) // This tracks if the webview has loaded its first page - const [hasLoadedWebView, setHasLoadedWebView] = useState(false) + const hasLoadedWebView = useRef(false) // This tracks if the app has its nativeMessageListener set up - const [listeningToNative, setListeningToNative] = useState(false) + 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() @@ -93,7 +93,7 @@ const App = () => { // Sends the saved user to the web client to make the log in process faster useEffect(() => { - if (listeningToNative && fbUser) { + if (listeningToNative.current && 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(() => { @@ -104,7 +104,7 @@ const App = () => { communicateWithWebview('nativeFbUser', fbUser) }, 250) } - }, [listeningToNative, fbUser]) + }, [listeningToNative.current, fbUser]) // Url management const [urlToLoad, setUrlToLoad] = useState( @@ -134,9 +134,9 @@ const App = () => { ) => { log( 'Push notification tapped, has loaded webview:', - hasLoadedWebView, + hasLoadedWebView.current, ', 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 @@ -144,7 +144,7 @@ const App = () => { .data as Notification // TODO: this should check if the webview is listening to native, not if it's loaded - if (hasLoadedWebView) { + if (hasLoadedWebView.current && listeningToNative.current) { communicateWithWebview( 'notification', response.notification.request.content.data @@ -157,12 +157,12 @@ const App = () => { if (lastLinkInMemory) log( 'Running lastNotificationInMemory effect, has loaded webview:', - hasLoadedWebView, + hasLoadedWebView.current, '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) { + if (lastLinkInMemory && !hasLoadedWebView.current) { log( 'Setting url to load from last notification in memory:', lastLinkInMemory @@ -180,7 +180,7 @@ const App = () => { log('Cleared last notification in memory timeout') } } - }, [lastLinkInMemory, hasLoadedWebView]) + }, [lastLinkInMemory, hasLoadedWebView.current]) useEffect(() => { // This listener is fired whenever a user taps on or interacts with a notification (works when app is foregrounded, backgrounded, or killed) @@ -195,11 +195,16 @@ const App = () => { notificationResponseListener.current ) } - }, [hasLoadedWebView]) + }, [hasLoadedWebView.current]) useEffect(() => { Linking.getInitialURL().then((url) => { - log('Initial url:', url, '- has loaded webview:', hasLoadedWebView) + log( + 'Initial url:', + url, + '- has loaded webview:', + hasLoadedWebView.current + ) if (url) { setUrlToLoad(url) } @@ -221,7 +226,7 @@ const App = () => { 'Linked url', linkedUrl, ', has loaded webview:', - hasLoadedWebView, + hasLoadedWebView.current, `, and data: ${JSON.stringify(queryParams)}` ) const url = path ? path : '/' @@ -375,7 +380,7 @@ const App = () => { log('[Web Console]', ...args) } else if (type === 'startedListening') { log('Client started listening') - setListeningToNative(true) + listeningToNative.current = true } else { log('Unhandled message from web type: ', type) log('Unhandled message from web data: ', data) @@ -404,7 +409,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, @@ -416,6 +426,8 @@ const App = () => { const resetWebView = () => { setHasLoadedWebView(false) setListeningToNative(false) + hasLoadedWebView.current = false + listeningToNative.current = false setEndpointWithNativeQuery() setTimeout(() => { log('Reloading webview, webview.current:', webview.current) @@ -424,7 +436,7 @@ const App = () => { } const isConnected = useIsConnected() - const fullyLoaded = hasLoadedWebView && fbUser && isConnected + const fullyLoaded = hasLoadedWebView.current && fbUser && isConnected const width = Dimensions.get('window').width //full width const height = Dimensions.get('window').height //full height const styles = StyleSheet.create({ @@ -462,7 +474,7 @@ const App = () => { width={width} source={require('./assets/splash.png')} webview={webview} - hasLoadedWebView={hasLoadedWebView} + hasLoadedWebView={hasLoadedWebView.current} fbUser={fbUser} isConnected={isConnected} /> @@ -488,7 +500,7 @@ const App = () => { // Load start and end is for whole website loading, not navigations within manifold onLoadEnd={() => { log('WebView onLoadEnd') - setHasLoadedWebView(true) + hasLoadedWebView.current = true }} source={{ uri: urlToLoad }} ref={webview} From 314d5af329e36d82d4db78b91590c738c454641f Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 11:33:22 -0400 Subject: [PATCH 06/14] Use refs instead of state --- native/App.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/native/App.tsx b/native/App.tsx index 5e8638ebc1..255942a0b9 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -424,8 +424,6 @@ const App = () => { } const resetWebView = () => { - setHasLoadedWebView(false) - setListeningToNative(false) hasLoadedWebView.current = false listeningToNative.current = false setEndpointWithNativeQuery() From ffe830a40a39067bc5dea54b7b4fa48ce5040927 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 11:34:02 -0400 Subject: [PATCH 07/14] Undo expo upgrade, remove sentry to build android --- native/App.tsx | 38 +- native/android/app/build.gradle | 6 +- .../manifold/ReactNativeFlipper.java | 0 native/app.config.js | 12 - native/app.json | 2 +- native/components/auth-page.tsx | 4 - native/components/ios-iap-listener.tsx | 34 +- native/components/web-view-utils.tsx | 15 +- native/init.ts | 23 +- .../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/ItunesArtwork@2x.png | Bin 76306 -> 0 bytes native/ios/Podfile | 1 + native/ios/Podfile.lock | 76 +- native/package.json | 10 +- native/yarn.lock | 993 +++--------------- 28 files changed, 209 insertions(+), 1005 deletions(-) rename native/android/app/src/release/java/com/{ => markets}/manifold/ReactNativeFlipper.java (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 delete mode 100644 native/ios/Manifold/Images.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png diff --git a/native/App.tsx b/native/App.tsx index 255942a0b9..a24d783d27 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -3,7 +3,6 @@ import React, { useEffect, useRef, useState } from 'react' import WebView from 'react-native-webview' import 'expo-dev-client' import { EXTERNAL_REDIRECTS } from 'common/envs/constants' -import * as Device from 'expo-device' import * as Notifications from 'expo-notifications' import { Platform, @@ -24,7 +23,6 @@ import * as LinkingManager from 'react-native/Libraries/Linking/NativeLinkingMan import * as Linking from 'expo-linking' import { Subscription } from 'expo-modules-core' import { setFirebaseUserViaJson } from 'common/firebase-auth' -import * as Sentry from 'sentry-expo' import { StatusBar } from 'expo-status-bar' import { IosIapListener } from 'components/ios-iap-listener' import { withIAPContext } from 'react-native-iap' @@ -50,9 +48,9 @@ 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 = - ENV === 'DEV' ? 'https://dev.manifold.markets/' : 'https://manifold.markets/' +const baseUri = 'http://192.168.1.154:3000/' +// const baseUri = +// ENV === 'DEV' ? 'https://dev.manifold.markets/' : 'https://manifold.markets/' const nativeQuery = `?nativePlatform=${Platform.OS}` const isIOS = Platform.OS === 'ios' const App = () => { @@ -246,9 +244,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 +276,6 @@ const App = () => { } const registerForPushNotificationsAsync = async () => { - if (!Device.isDevice) return null - try { const existingStatus = await getExistingPushNotificationStatus() let finalStatus = existingStatus @@ -299,9 +292,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 } @@ -358,11 +348,7 @@ const App = () => { await setFirebaseUserViaJson(fbUser, app) await storeData('user', fbUser) } - } catch (e) { - Sentry.Native.captureException(e, { - extra: { message: 'error parsing users from client' }, - }) - } + } catch (e) {} } else if (type === 'share') { const { url, title, message } = payload as NativeShareData log('Sharing:', message, url, title) @@ -392,16 +378,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' }, - }) }) } @@ -455,14 +435,14 @@ const App = () => { const handleExternalLink = (url: string) => { if ( - !url.startsWith(baseUri) || + (!url.startsWith(baseUri) && + !url.startsWith('https://manifold.markets')) || EXTERNAL_REDIRECTS.some((u) => url.endsWith(u)) ) { webview.current?.stopLoading() WebBrowser.openBrowserAsync(url) - return false + return } - return true } return ( @@ -476,7 +456,7 @@ const App = () => { fbUser={fbUser} isConnected={isConnected} /> - {Platform.OS === 'ios' && Device.isDevice && fullyLoaded && ( + {Platform.OS === 'ios' && fullyLoaded && ( { /> - {/**/} + ) } diff --git a/native/android/app/build.gradle b/native/android/app/build.gradle index 3d947a7ce2..bc1b3e61af 100644 --- a/native/android/app/build.gradle +++ b/native/android/app/build.gradle @@ -108,16 +108,12 @@ def reactNativeArchitectures() { return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] } -project.ext.sentryCli=[collectModulesScript: new File(["node", "--print", "require.resolve('@sentry/react-native/package.json')"].execute().text.trim(), "../dist/js/tools/collectModules.js")] - -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 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/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 ed3885f653..22c608bbff 100644 --- a/native/components/auth-page.tsx +++ b/native/components/auth-page.tsx @@ -30,7 +30,6 @@ import { auth } from '../init' import WebView from 'react-native-webview' import * as Google from 'expo-auth-session/providers/google' import { ENV_CONFIG } from 'common/envs/constants' -import * as Sentry from 'sentry-expo' 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 690571295e..d2bc9c329e 100644 --- a/native/components/ios-iap-listener.tsx +++ b/native/components/ios-iap-listener.tsx @@ -7,7 +7,6 @@ import { Sku, useIAP, } from 'react-native-iap' -import * as Sentry from 'sentry-expo' import { nativeToWebMessageType } from 'common/native-message' const SKUS = ['mana_1000', 'mana_2500', 'mana_10000'] @@ -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 7622b781dd..2e68f918b9 100644 --- a/native/components/web-view-utils.tsx +++ b/native/components/web-view-utils.tsx @@ -6,7 +6,6 @@ import { 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/native-message' @@ -50,12 +49,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 +59,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 53c129bc9b..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/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/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 zcmV;)3O4nLP)? z#_-XR!JsTj*!y7}LLdmC|E=tb)oCS{y*u8h0&wzp~+dA zD$0BSlI%KM55rIoJ)W@fwRD=MwyZBB1ZPe*RaNi^fk9__rR(!H_O5dTauyc;;T9u+ z1N-XTO~S-!G1Zm)u6Jt@!qgd7o|nG(>?(lTYJVUgCEIoAQhX21^1QU0`WeoiYTB@- z^q%|UXqwuy%Yo1sbdZpw&EK5f;t`k5ztq$ycsK!ofu*-@D2t8P%zYxUrpkZ(OBXt@ z+SHlD%?Cfd>fuBHq9|8a`jhNBgf@O+^t{E%Di!tmmWqPi4y}%!I4!2Q$a~?u8=*01 zFWRbJzcpR2r(b!g{FZ^n#AIEcz7YTnEF%bVUQY2V+xsqkA+^3P@XOC0v^VKaD@{}T z3!G?GQRW*w#6(e$W&Dqb2zuTU`?%XJ6=lBs+>+uVFMvCyL>pLo&&v*Ui9s6?273M0 zbX%MTz;i27aE-S`1Ylrk0GwM`@odqnfA5>OvDY(mFFI=dXvHwp#Az{w7h8%hwV+jb zsc-bSsOT7Vy)%F|`eqoG=cUEPYYzOYe%t19o|ga+LQS7#Yq%ObdZ+Jo=Qc@G7Kz@RzF~-RL7+g;lC<|f z7(Z`u^5z%I5|g#J3^eZD?eOyw+NiGJMNv+&>i~=z8?|tmT^~Wev%UJCZ`Vkoj5d0u zN8CJs{baAx-7MgG7%1T3L<38sy|>@2N=VdBzROx&>9@qF0PNrEM03a?x%$RMHWfbhLg8~c`@Nj~GWze21V?*8*TdexwrxF7J>B4z; zWjT)yD$4kwBh7vKMjSol+OodX!-?p?60OP_Z#jFqsiMpW1qc-Ia3agn=)muna+h4L zclxzja`^KGv`0~xIXiYxrpf1%URqnaW<{}w6VaJzf3&Go)SeFRckl(equpVS*iEQIX`{AzaAlIG-S$M)+@!{@4j(E83F}7 zoT!hW38B!L(qiwLl_fnAwYmAd7={8cFw^w6_c8_#HGllRW8T9TD=T<}HhyBX$;|B8 z<&b44#6SU$TOfqeM-UGuqBCbtHNC#I;^{@n^Ox8;w{Z9UaZRpZ&cecTUpJ#m6onc0 z*cuyxM-IB67y|`3P6S{uFdj}s2>U*)yQ!aH;?1 zIuMYc7y|`7oB+VU(x^o!Q)gI5WJLx8@>|;~3wAqX8A{BY9UJgV`wN`75eyXYa3TN$ z%b+u?ky*4nW#pL1igG@GWpQzl7s}XEbpvlRU3CU#&bGPT0_PSvx4<1&$K~ zehHmnpn!)H02o*r9c1)pbN-rUja47`cm1}_<-AXVVl!sP0x(CZ?wu2l4rCbtzvOlc zoLl(lea9CEuA&tK1vpLwU|<=vK?rrYF+r#S>^Ky!hf9b-FFh?@uZ?~K{>dMP0 z*6C@Zkzq}Y(Zm>yjM2mxO^ngR3>#&(#cHA~Dj_JN4F(E$I01lxrO_(Jre3}(?dAdO zj~BRgt4f@X07A&<&tCf3BM36un=;+1){s5B>SP(-7SY=xI%@rBrB;*2<|W!}nmUI+ zKey!PA3SJ-fdU>*1YlqpTr(mo^4XjeeFXjPTh;IFtdT?+Aw2L<{DY4sO>>j8#BQYWl_EPN(DNYI4$O>MadL}tsBbr7dX)w z1`6=J6b#5c(<8R+?3bLPJ9gN$`NdKXCnB_Aqax=ov0uK_vT9ke5R}p0%zI+5)(4Iq zcAEgNK?3jm+U@ zuU9;CvWe#UV|iZsWSI zbkHMFn>pP4={~2sSpX1aQ7z3)9hhml_@gI3x5QEFhXM=~D=qPsmUwr*QPsOoL{@gx z=y6eFvMnth@#OKwqlaAIo^96a>2+JuO=f2Kg2Ix^UUX*0JvNF$!EOhD!9z?-a#Kxa z)d%m?yuH0z6l5sF;KmhQYAL$Zvi-Hnz8QwBY|E&zQ4=ObyPE~KTS!RMZpgdx{kI%C z!?MhT$uVb6HPu%8AALIU?)&2!8-mN`U;6f(8#jVZO?U*qR=qQD?sRj(uDT27IYQ7Y zJwmG`gNB%T_SVZX95sGXl+niYS+>mK=8xWYJhRw7dR)}GubY=GC@d}U;YLsd)VRzu z_?^%+HDItYYkbs*(UAt0@p{G6Uo{>5qT!n}&B35dGt@u!^pB2F@jgkVCOclQ{P+Wh zEaOHI8q~PVGx)u!RMem$rmXRnVI$2tJ@r z=mx={eEO@V(_b}dG$eDFIV(GAOtwX%B>)cpr(x@cGH;8B-+)1P^82OZM_k8`xO94Y z=m@hY%Eu17@S8FCzwmj*FAp~0cR~<`2*MCS7$OKm1Yw9E3=xDOf-v-7=b(UC;Hz9s 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 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 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 zcmbtZg=dg#o!~tU1U@z{f?xWDrrvLrj3kd{*x1_Ojk}5veNp^s&f)1ml+>P3 zWg<1{(rGxw-LOPKX<_jXn&|(>C5WiBL;drZ&)BkJJ@ZGezoH}YGRx_xO#S7n9V4Mw zcwg52zWnny1ZyMFaAY-wk?r#SE$9%_*HW>bzz`a_fpN zFp{nQeLyDye+U5%iZZz0^ziHttzG$*?#dbJ-{*~e8>vhX-j1}JSZLr~Xc7C(h4P8V zHC^^Gh~ZY4pr{pvdQ!@k9Tzc}-UwM~P=cSG6CsLdLR@veZMG*{NYWHn_TYDi2=u%i z$&XPz-=3|fEW61+G%hVChIdwxX!y^kutTUiA5>KBc{W%uvnGh8B)w%B9n7;Q$X}^| z1l~O=5*i__d^Bz(h{if9KPmOa#Tw;`5!AuFp$fYNcSXr>X(p{EEr~+%R=$#LxBO^> z@?laGWR6C*Uo+Ko%CC$w-A9g(Z!UHeQqODS%sFh@`tydy-NnaxF1hRsjigw}pjT$O z3ME89o)sN{A!O!`KPjCJC*LrXS`c$@NJvfH*R>_j_OJ`@_#{=BB_1p+pkM#9m4s4= zp?g8JEt?rCmw6xt{79RIpqLtKf?=V%e>_F0Z`PfX-hzGm)|1J*Nnz`6O`ei#Ft>p6 z=x^)HtP@12Bg!sZr7f}GxYG2)Pk%CLE0TzIhoiq*VjG?vhy=dJk~AiUdKOn5lFQ6Y ziDRjF!BHj{sLSav)Q$|AlG+Ar?7;+!LX59q*cREdUl);?+br2Y)}joIv758FFXNlK z`=-cbTu)8#Lv_sp&WObt>72ly{e0QuB zzIRX=vkfd;W<0$L0o`V)d{R!#YtOwfT&%uxmcD^>}woxJw1~g%%a-I3eR{B4jM>Y&Ugo?Z8^M5_;C_mnB31$NN{? z+FF?Zpm;RH%0#Wt3E_KK4!>ne{@m;jp@6s~B-nlO<45ckpW>UR6S9$VoG6fL-h1Ri zS*GMwkS4^ZRJxh#O_IPg0 z)RprOx+YK_L68Q&p_Q9Rk^5(!R%@HxV0s{ZW)D$9;rZ{skco;|KIP?5llz(4Ov%9M z4Vt*UmKCxXqvTk{0;e$AQ$Ib_dWra>^mXW3aJ(R>`AlNxdDcB_Xj9c)d>ktxD7Qzf zJUTI6@6(q^Id&9MT*_DNY)#PA0)#O-iEW%&1@n?*DTq*xsC9Y=K!r~16un7s86w^R0^k+*WNpouK*76q4Q0DoITM2zGMw*E zP(FX;W@Z*EI#c}emW7uBOAb3NH}pnJ*VeN}R|eHI8h$yOdZhnU;eOusu}k*w_rG); zHc-f1(--{Li$V|<^-@mIOG0;N2X@{)tBXG%S7fiz4M#Z~?j`b~e>QN>rmj4(t8h>FP69wlxulA61x9)Dy$A=Jy$gAv z`1Fy+{Bt(RP)ClgH@MGUKJg^=A-d*|lleM67JBJi?*B`kqgP;Nw^1ej*CGWaIrJ^n zH8+;#mRG%+SHxM75*68Zih`-zdAD@L>MDWaJ=v6cdad3cbbr*OvYNPg@}AnEGUSWKEzo8!!yU#!OP(wCFP%|_66LXRt{%tunqpiJ*W6p zxA0^B>7L?nTqfr!fwTw%Q@Jv-^mNZ$Y!2rIYbzEXShSA@Df2KxfeH#Y*2?kODSYooc0pW{OGh z`%*p+OHYp573<>b+0&exiafBP2aYo6NI`ZOuMJTO5wFARpnO>9wOc1>)90}YK8q=- zHx}h}YkO!wixHyQVs+)swnUY28PypZN@$2heGgRXuUdqN1Dl&$E}^!^@L7vxuU)g} zzi{{>B!^(f`%MDu;%MyebQNBXc>FtHL!2=XS0;3x@q2+xJat4d!%%qV2Xl_9?{Ln)P9VMv8O-~INzEsIVv5_Zv zdUo?BrlR^~+u#&D;qAehnz^uFyR}nNCnQJ#=}(0I zZrhsv#bXRM(tZp1%8y8>iPUi`jCWgDgvu_PoUYR{IFTSg`{JQU(H`TlQks<kFms6(sWZe69Pv?BHgsj>=;d05P>?2|Mr@56*+!Zd8?JvjWW)f@#@xMe zAL(AYU*%{Uy7G!=KHm(tQPLA}=;>ze+`)j=ViGoq2KOOWm@wrupXv^ug?Evv7Zo=t z$XtXAe8;kg%5B#Cv)@{!vo8G%&e*x%PTG_d1lKrQg_5(vUnz4lvpOMQ|z|TyI z5Z;!LKX&ipiR1{5SVdcDV42&&mqs$+FWd~t=q7S-IAV+=00;(f!TwSN4mI_ZY72|Oy z@kkq<0jUDc$d2z3q0Z4gsnQe{>MbVnST3yrr^Xt~#X*F2&lQ6+2cng27zI?sPCy|%KZ4t=K-FhO+%Kn^fY*-ORc(Hio3k0nW?>w6a)2gh&zh_-}SDiiIc>C73!+%JozWP zRQ>S3@7>6a$k;nR@aRfRcWr1FE-^o#LDvWq_UKaRj6a{ zUACo<~PlrmAt8A=&J7YiymMm~e0 zFaubCyUd`f1R?S+1ELg=(+=O6VD!=C08%}&vgHZAI`-4072MO!@PQ#-ev_;0yjN7D&8Oq5Se93Md0K#Z)%a>?{{)|Z~)=~TK@tNXr z1BG5TWW-BpZo+d42yIi;-^ro<#i~?S3IVwbYS*z7g{J_3eIYp2R}wyx+$048&uv0YdzJC!^EP{CsC{q->Q@0W&JuLd z+2qO2@1iaT-~H1tozW~3VOjSjz=r1;iX+OZ|8&+i z(UP=;d&cuKf<}$c&{wmVFb%Zxd3>MrjK89Hj#Ind+wWjQ8e`GjJK)@a65(N*BJv1q z_aw=nL?*?sd>!Ra>_A=JdQN8Zbu0Y>v||gwY{EHCUR(qOSo4=p8TW0aztvrVILqbS z?LAzxf9R5ZNdTj8W3`&f?29K&aruXOKVMu7p94V@2w%W(Qt5405`@Bz^{v>p-vU`y z{gEC3bppk6@P?-&`G$J4w}09jL6E(y2Ubh0LQ)0X4Gb(q0=E1|ldeC7aHjUjX_QGM$!L4UhIYo2d(cU%_h@G&UXhT4~8Dj5($8a+Ofx0}QXi9QJzmbcig8Z~UM= zFZ6iTJ=?BaAWK{43H~IQX!{m^XZITjh$R2;P^K$D_?^JcFvETc|Xfo+&4VrLpFYg$2-h)~qAH0sU0WASdLiik)L^ zJqJk^REU0Le{m-6R%78MQ@L`K;dr#;J<>w)1H$ir1bgU0q`$CC1X(cY*Lt~tL&a;w28d*n_oEj@b>R9HP zJec|%9#ABAwVI^u@FhL?FC7V3y`(>58EkDQNHd&hRHr-(oZ!l(9AdU}TVX?_%t4cY7EF{XjvvS^D}ERG9WpE=gV z{{p-PjPd>zORx*_^Lp#?TJfrJZNbM}befx0>hzp8kwjKyot`KM*9gn;IbUcx8THrg z3_J+)Gpe*LECLQQs`NZ~@uF-3|D0aF%%Y)lY;9)%^gJ>CPA%*y9vm^t`TN_kNkh{C z&KO@4Gn9h>WbI%@+LhKhR|py9`qxS>2$A_RdyRGYVe22dPw62l*N#B_Oi5Yw3<6?c z7XoBr8n!WD`Wm2C6K&HQp`XuANsfU@W`ixgx>ua?S~VW%VUU*vf_`iX0F5{ZP$w<- zQF0(n0Ld>#eiV@r5>mc3_VyMQ(+R3V;HZ8d>~CxO%?CGYn~jSKKFZ1`4%WxF2x?Z~ zLEA8nG-uv4XPs!E?X8sFe{&2xldH=*NSsFXo5dx5L9-yF=`1kFBW%y~(_K}yTlF0# zINJx0^BipHC7GG79v<<@*j@k1%GzWeI~}C>=`u3uF-rT_s9$1<(}t=i`swX(YT@yX?m-1g0(7w=G0 zhJGVx^+(0y_X4qF#X$a~{s20+I^(}bA#Ar}C(_2GxFLFKVOFpr@{z>;>|yU+KSfdzBs4H=ik0;l=OifH5(R* z{L*+zhj8I|@}zkcC@{FGMk$z7p!LS__M(iSS&N_d3IOS^F1_T|{Tx&9z2AB4$)@*F zaG;^{QwAQR`)59Ubd&B9V_&|lJn=*A023re+yAT}UN*&*o8krgS8S;0uiuUx6V|^G zJZ)NAkGiE{2n=KTs&<~ViE+3=w;#+U569U71am`!Us%bF?JY=3mC*2k@qc!H_5s@Fz7-qbHGU0A(DY9Y{83;ID9EK| zApU?~wbXRM-X61Zs3{yOZH0vnI@3|;F`rx{TN1UH!q0e-d*@D!=n-$AfQJe8af2gW zMEk?FInHe-bw=>u=uC92swg<>|1qHl2K>wCAaDBzcC$OAbq%rcC{t~{Xg+d 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 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 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/package.json b/native/package.json index 8ed69b1bf3..13f2f3456d 100644 --- a/native/package.json +++ b/native/package.json @@ -28,14 +28,11 @@ "@react-native-async-storage/async-storage": "1.17.11", "@react-native-clipboard/clipboard": "^1.11.1", "@react-native-community/netinfo": "9.3.7", - "@sentry/react-native": "4.15.2", - "expo": "^49.0.0", + "expo": "~48.0.18", "expo-apple-authentication": "~6.0.1", - "expo-application": "~5.1.1", "expo-auth-session": "~4.0.3", - "expo-constants": "14.4.2", + "expo-constants": "~14.2.1", "expo-dev-client": "~2.2.1", - "expo-device": "~5.2.1", "expo-file-system": "~15.2.2", "expo-font": "~11.1.1", "expo-notifications": "~0.18.1", @@ -53,8 +50,7 @@ "react-native-iap": "^12.4.2", "react-native-logs": "^5.0.1", "react-native-web": "~0.18.10", - "react-native-webview": "13.3.1", - "sentry-expo": "~6.2.0" + "react-native-webview": "13.3.1" }, "devDependencies": { "@babel/core": "^7.19.3", diff --git a/native/yarn.lock b/native/yarn.lock index 817ef5e431..cf6874c3a7 100644 --- a/native/yarn.lock +++ b/native/yarn.lock @@ -513,7 +513,7 @@ "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -581,7 +581,7 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== @@ -589,7 +589,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.0.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": +"@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== @@ -608,7 +608,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.18.8" -"@babel/plugin-proposal-object-rest-spread@^7.12.13", "@babel/plugin-proposal-object-rest-spread@^7.20.0", "@babel/plugin-proposal-object-rest-spread@^7.20.2": +"@babel/plugin-proposal-object-rest-spread@^7.12.13", "@babel/plugin-proposal-object-rest-spread@^7.20.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== @@ -627,7 +627,7 @@ "@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.20.0": +"@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== @@ -699,7 +699,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== @@ -727,13 +727,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" - integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-import-assertions@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" @@ -825,7 +818,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.20.0": +"@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== @@ -908,13 +901,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-destructuring@^7.20.0": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2" - integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-destructuring@^7.20.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" @@ -953,14 +939,6 @@ "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-flow" "^7.18.6" -"@babel/plugin-transform-flow-strip-types@^7.20.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" - integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.22.5" - "@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" @@ -1435,24 +1413,23 @@ mv "~2" safe-json-stringify "~1" -"@expo/cli@0.10.11": - version "0.10.11" - resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.10.11.tgz#d4fa73e5629b9de71a9ba4bc517e6c910e99b529" - integrity sha512-ehaAOw4SwkJ9uL5z9c3RD4LJpmMDCXZBCWZG4fonUGutks4t/GLoNRcdENkWsf6NSgkdPNgNl8KwphU1p083PQ== +"@expo/cli@0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.7.3.tgz#8d61490f4961d40c38af72b7184e3c7cab70773e" + integrity sha512-uMGHbAhApqXR2sd1KPhgvpbOhBBnspad8msEqHleT2PHXwKIwTUDzBGO9+jdOAWwCx2MJfw3+asYjzoD3DN9Bg== dependencies: "@babel/runtime" "^7.20.0" "@expo/code-signing-certificates" "0.0.5" - "@expo/config" "~8.1.0" - "@expo/config-plugins" "~7.2.0" - "@expo/dev-server" "0.5.5" + "@expo/config" "~8.0.0" + "@expo/config-plugins" "~6.0.0" + "@expo/dev-server" "0.3.0" "@expo/devcert" "^1.0.0" - "@expo/env" "0.0.5" "@expo/json-file" "^8.2.37" - "@expo/metro-config" "~0.10.0" + "@expo/metro-config" "~0.7.0" "@expo/osascript" "^2.0.31" "@expo/package-manager" "~1.0.0" "@expo/plist" "^0.0.20" - "@expo/prebuild-config" "6.2.6" + "@expo/prebuild-config" "6.0.1" "@expo/rudder-sdk-node" "1.1.1" "@expo/spawn-async" "1.5.0" "@expo/xcpretty" "^4.2.1" @@ -1489,10 +1466,9 @@ progress "2.0.3" prompts "^2.3.2" qrcode-terminal "0.11.0" - require-from-string "^2.0.2" requireg "^0.2.2" resolve-from "^5.0.0" - semver "^7.5.3" + semver "^6.3.0" send "^0.18.0" slugify "^1.3.4" structured-headers "^0.4.1" @@ -1512,12 +1488,12 @@ node-forge "^1.2.1" nullthrows "^1.1.1" -"@expo/config-plugins@7.2.5", "@expo/config-plugins@~7.2.0": - version "7.2.5" - resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.2.5.tgz#b15f22878975fdc4ddcfa8cdc971937ddc4c0249" - integrity sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ== +"@expo/config-plugins@6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-6.0.2.tgz#cf07319515022ba94d9aa9fa30e0cff43a14256f" + integrity sha512-Cn01fXMHwjU042EgO9oO3Mna0o/UCrW91MQLMbJa4pXM41CYGjNgVy1EVXiuRRx/upegHhvltBw5D+JaUm8aZQ== dependencies: - "@expo/config-types" "^49.0.0-alpha.1" + "@expo/config-types" "^48.0.0" "@expo/json-file" "~8.2.37" "@expo/plist" "^0.0.20" "@expo/sdk-runtime-versions" "^1.0.0" @@ -1528,10 +1504,10 @@ getenv "^1.0.0" glob "7.1.6" resolve-from "^5.0.0" - semver "^7.5.3" + semver "^7.3.5" slash "^3.0.0" xcode "^3.0.1" - xml2js "0.6.0" + xml2js "0.4.23" "@expo/config-plugins@~6.0.0": version "6.0.1" @@ -1559,25 +1535,20 @@ resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-48.0.0.tgz#15a46921565ffeda3c3ba010701398f05193d5b3" integrity sha512-DwyV4jTy/+cLzXGAo1xftS6mVlSiLIWZjl9DjTCLPFVgNYQxnh7htPilRv4rBhiNs7KaznWqKU70+4zQoKVT9A== -"@expo/config-types@^49.0.0-alpha.1": - version "49.0.0" - resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-49.0.0.tgz#15ffef715285c06703f6fb7ec0cda853f645cc09" - integrity sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA== - -"@expo/config@8.1.2", "@expo/config@~8.1.0": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.1.2.tgz#7fff28b3acefe39702e9f3ce1c9fd896a52caa80" - integrity sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug== +"@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" "~7.2.0" - "@expo/config-types" "^49.0.0-alpha.1" + "@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.5.3" + semver "7.3.2" slugify "^1.3.4" sucrase "^3.20.0" @@ -1612,13 +1583,13 @@ xcode "^3.0.0" xml-js "^1.6.11" -"@expo/dev-server@0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.5.5.tgz#33f9065e0cf5f36ac61944a92d11390cc71b7035" - integrity sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA== +"@expo/dev-server@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.3.0.tgz#c575c88b0ec28f127f328a80ea6a3a4c6f785800" + integrity sha512-2A6/8uZADSKAtzyR6YqhCBUFxb5DFmjxmFn0EHMqnPnsh13ZSiKEjrZPrRkM6Li2EHLYqHK2rmweJ7O/7q9pPQ== dependencies: "@expo/bunyan" "4.0.0" - "@expo/metro-config" "~0.10.0" + "@expo/metro-config" "~0.7.0" "@expo/osascript" "2.0.33" "@expo/spawn-async" "^1.5.0" body-parser "^1.20.1" @@ -1630,6 +1601,7 @@ node-fetch "^2.6.0" open "^8.3.0" resolve-from "^5.0.0" + semver "7.3.2" serialize-error "6.0.0" temp-dir "^2.0.0" @@ -1652,17 +1624,6 @@ tmp "^0.0.33" tslib "^1.10.0" -"@expo/env@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@expo/env/-/env-0.0.5.tgz#86526ed5c966fc39b2644341f7a10f4b855e59b8" - integrity sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ== - dependencies: - chalk "^4.0.0" - debug "^4.3.4" - dotenv "~16.0.3" - dotenv-expand "~10.0.0" - getenv "^1.0.0" - "@expo/image-utils@0.3.22", "@expo/image-utils@^0.3.18": version "0.3.22" resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.22.tgz#3a45fb2e268d20fcc761c87bca3aca7fd8e24260" @@ -1689,24 +1650,6 @@ json5 "^2.2.2" write-file-atomic "^2.3.0" -"@expo/metro-config@~0.10.0": - version "0.10.7" - resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.10.7.tgz#d1b91baffcb7feb52fc7e2e122450bfc5d01e7c1" - integrity sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ== - dependencies: - "@expo/config" "~8.1.0" - "@expo/env" "0.0.5" - "@expo/json-file" "~8.2.37" - chalk "^4.1.0" - debug "^4.3.2" - find-yarn-workspace-root "~2.0.0" - getenv "^1.0.0" - jsc-safe-url "^0.2.4" - lightningcss "~1.19.0" - postcss "~8.4.21" - resolve-from "^5.0.0" - sucrase "^3.20.0" - "@expo/metro-config@~0.7.0": version "0.7.1" resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.7.1.tgz#eaae792da23554c1abbc401df868566fab29951b" @@ -1770,22 +1713,6 @@ semver "7.3.2" xml2js "0.4.23" -"@expo/prebuild-config@6.2.6": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz#c5b4f8adcba4be00c874d6b24a8267d45c555261" - integrity sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q== - dependencies: - "@expo/config" "~8.1.0" - "@expo/config-plugins" "~7.2.0" - "@expo/config-types" "^49.0.0-alpha.1" - "@expo/image-utils" "0.3.22" - "@expo/json-file" "^8.2.37" - debug "^4.3.1" - fs-extra "^9.0.0" - resolve-from "^5.0.0" - semver "7.5.3" - xml2js "0.6.0" - "@expo/rudder-sdk-node@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz#6aa575f346833eb6290282118766d4919c808c6a" @@ -1811,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== @@ -2699,147 +2626,6 @@ component-type "^1.2.1" join-component "^1.1.0" -"@sentry/browser@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.37.2.tgz#355dd28ad12677d63e0b12c5209d12b3f98ac3a4" - integrity sha512-UvKfpx6+BUdV+rGAXqDBznagfz44Ut+x2h/i0OZPNCEpXaH9KAQOlv06I66861aXiucWFRb1lAMrN4+cE9aJIg== - dependencies: - "@sentry/core" "7.37.2" - "@sentry/replay" "7.37.2" - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - 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.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.37.2.tgz#959b2bf953f442b07f8377d90f4f7735cf260ae4" - integrity sha512-LjofMDSTyVeBErl9N7TTqlyEVuW1g6U4iuJtdZ75JohnvVxzWdpZfWfddwQ6h7nGWfe9dNg0fGs1wxKtMhY+MA== - dependencies: - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - tslib "^1.9.3" - -"@sentry/hub@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-7.37.2.tgz#5082c20780b0518ebaf9f298e08aac08bf44fd58" - integrity sha512-DxZCMTAVnoliJ+18OeocWUIBuzlVNIZI0hOvugaIxEf5sGPrC2HEfq6vyhJyHz2oNc68xs/f9k0maOgGpWUqmg== - dependencies: - "@sentry/core" "7.37.2" - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - tslib "^1.9.3" - -"@sentry/integrations@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.37.2.tgz#2ea6b228c8df24f201802eea1306035b0fc7e571" - integrity sha512-kqfXo2hRLo3y0vM9ZcjbrB3grOYfPuKpSHN8MZVx3MHTbAUkjHVwjPf5dfi5a0nMvMYAjg2v/Olt8OGayBgjmg== - dependencies: - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - localforage "^1.8.1" - tslib "^1.9.3" - -"@sentry/react-native@4.15.2": - version "4.15.2" - resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-4.15.2.tgz#39411aae8fce2707b0f4c8b7570e0305f75e0be4" - integrity sha512-1VcCUqf5sgBrDubq/8MjEkRHW+ynGOjq5qv9Oig2D3BQD9M76zNw3J4nGbLHob5e0w3kM5pXM+dXv1s+j7RmGg== - dependencies: - "@sentry/browser" "7.37.2" - "@sentry/cli" "1.74.4" - "@sentry/core" "7.37.2" - "@sentry/hub" "7.37.2" - "@sentry/integrations" "7.37.2" - "@sentry/react" "7.37.2" - "@sentry/tracing" "7.37.2" - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - "@sentry/wizard" "1.4.0" - -"@sentry/react@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.37.2.tgz#f5ecc4071c5dd0e8446103c24e94edda520a1217" - integrity sha512-e5NFQAwHSGVyMUGYjvYXLI/QECkXkZ2BNUo+OHr5mAYqcIyGSA38tX7RJetrhonVjjpJp/ZVzlOyxQkpnBfBLw== - dependencies: - "@sentry/browser" "7.37.2" - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - hoist-non-react-statics "^3.3.2" - tslib "^1.9.3" - -"@sentry/replay@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.37.2.tgz#eb49b7a1286335c1a4de49b386d0258e5c789682" - integrity sha512-y8Gfc7EGfGU4eVae5HAtch2YgkiTzNPi16dcqPX9jtIHDwiurGqWcaOgs5HoGJm45eMfl6LvcE7MPbwqcDkPIA== - dependencies: - "@sentry/core" "7.37.2" - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - -"@sentry/tracing@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.37.2.tgz#88f149aea6a4d5a3cfb9145868d885fac9fffb52" - integrity sha512-XBVvxbV5TADq2rHg/kJqGqDfOP8n2myMUxMMpfHMb38NrxkxQwXy+gDe41bA8FJKA2k7Y3Wkn8ZC/PelQ8c+ag== - dependencies: - "@sentry/core" "7.37.2" - "@sentry/types" "7.37.2" - "@sentry/utils" "7.37.2" - tslib "^1.9.3" - -"@sentry/types@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.37.2.tgz#99fd76230d7c1d3c6901ed4c0bea35be7d6fe26d" - integrity sha512-SxKQOCX94ZaQM4C2ysNjHdJsjYapu/NYZCz1cnPyCdDvYfhwiVge1uq6ZHiQ/ARfxAAOmc3R4Mh3VvEz7WUOdw== - -"@sentry/utils@7.37.2": - version "7.37.2" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.37.2.tgz#14dea644454e3df247fb113fc834f509c1f0e48c" - integrity sha512-5irN1nN/mtdOoWwsJiwBK0gPgNMkciUubEMbCaaXqJaGyGz8+yfDvXj7L+xGYiU57z+7+QkkSKxKEZ/IcBpjVQ== - dependencies: - "@sentry/types" "7.37.2" - 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" @@ -3015,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== @@ -3036,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" @@ -3098,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" @@ -3227,16 +2990,16 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-module-resolver@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.0.tgz#2b7fc176bd55da25f516abf96015617b4f70fc73" - integrity sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q== +babel-plugin-module-resolver@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2" + integrity sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA== dependencies: - find-babel-config "^2.0.0" - glob "^8.0.3" + find-babel-config "^1.2.0" + glob "^7.1.6" pkg-up "^3.1.0" - reselect "^4.1.7" - resolve "^1.22.1" + reselect "^4.0.0" + resolve "^1.13.1" babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" @@ -3272,31 +3035,23 @@ babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== -babel-plugin-transform-flow-enums@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz#d1d0cc9bdc799c850ca110d0ddc9f21b9ec3ef25" - integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== - dependencies: - "@babel/plugin-syntax-flow" "^7.12.1" - babel-plugin-transform-inline-environment-variables@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.4.tgz#974245008b3cbbd646bd81707af147aea3acca43" integrity sha512-bJILBtn5a11SmtR2j/3mBOjX4K3weC6cq+NNZ7hG22wCAqpc3qtj/iN7dSe9HDiS46lgp1nHsQgeYrea/RUe+g== -babel-preset-expo@~9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.5.2.tgz#5ed1756c8434ca972d7a940e4f13570a283641df" - integrity sha512-hU1G1TDiikuXV6UDZjPnX+WdbjbtidDiYhftMEVrZQSst45pDPVBWbM41TUKrpJMwv4FypsLzK+378gnMPRVWQ== +babel-preset-expo@~9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.3.2.tgz#0fe408d8d816a3e10fde2e1d1f7aa51b112baf3a" + integrity sha512-BjyvjwjJG0MaaDBLP/esbXRrAItM76po9L9zfnLxeqgFsHCIPmD+6ir45coDLGAXwR8m9It3G1yqYM9JPyemsQ== dependencies: "@babel/plugin-proposal-decorators" "^7.12.9" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" "@babel/plugin-proposal-object-rest-spread" "^7.12.13" "@babel/plugin-transform-react-jsx" "^7.12.17" "@babel/preset-env" "^7.20.0" - babel-plugin-module-resolver "^5.0.0" + babel-plugin-module-resolver "^4.1.0" babel-plugin-react-native-web "~0.18.10" - metro-react-native-babel-preset "0.76.8" + metro-react-native-babel-preset "0.73.9" babel-preset-fbjs@^3.4.0: version "3.4.0" @@ -3432,13 +3187,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -3591,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" @@ -3611,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== @@ -3633,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" @@ -3692,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" @@ -3743,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" @@ -3897,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" @@ -4117,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" @@ -4146,11 +3859,6 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4158,16 +3866,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -dotenv-expand@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" - integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== - -dotenv@~16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -4357,19 +4055,14 @@ expo-application@~5.1.0, expo-application@~5.1.1: resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-5.1.1.tgz#5206bf0cf89cb0e32d1f5037a0481e5c86b951ab" integrity sha512-aDatTcTTCdTbHw8h4/Tq2ilc6InM5ntF9xWCJdOcnUEcglxxGphVI/lzJKBaBF6mJECA8mEOjpVg2EGxOctTwg== -expo-application@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-5.3.0.tgz#0811f2de69a3a7f521762fd7f8a0a4563276dada" - integrity sha512-XLkaELwmiXW6JjFVkwuiFQaGZoNKAxNAcSJkFdz8s4rCljEwehylbzoPk37QHw3cxqb4v0/2EICtg4C4kpEVCA== - -expo-asset@~8.10.1: - version "8.10.1" - resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.10.1.tgz#a7e8cf1c555ab8f844599822cb084fee95a93644" - integrity sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA== +expo-asset@~8.9.1: + 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.4.2" - expo-file-system "~15.4.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" @@ -4387,15 +4080,7 @@ expo-auth-session@~4.0.3: invariant "^2.2.4" qs "^6.11.0" -expo-constants@14.4.2, expo-constants@~14.4.2: - version "14.4.2" - resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.4.2.tgz#cac5e8b524069545739b8d8595ce96cc5be6578c" - integrity sha512-nOB122DOAjk+KrJT69lFQAoYVQGQjFHSigCPVBzVdko9S1xGsfiOH9+X5dygTsZTIlVLpQJDdmZ7ONiv3i+26w== - dependencies: - "@expo/config" "~8.1.0" - uuid "^3.3.2" - -expo-constants@~14.2.0: +expo-constants@~14.2.0, expo-constants@~14.2.1: version "14.2.1" resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.2.1.tgz#b5b6b8079d2082c31ccf2cbc7cf97a0e83c229c3" integrity sha512-DD5u4QmBds2U7uYo409apV7nX+XjudARcgqe7S9aRFJ/6kyftmuxvk1DpaU4X42Av8z/tfKwEpuxl+vl7HHx/Q== @@ -4403,6 +4088,14 @@ expo-constants@~14.2.0: "@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" @@ -4443,13 +4136,6 @@ expo-dev-menu@2.2.0: 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" @@ -4462,10 +4148,10 @@ expo-file-system@~15.2.2: dependencies: uuid "^3.4.0" -expo-file-system@~15.4.0, expo-file-system@~15.4.3: - version "15.4.3" - resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.4.3.tgz#0cb2464c6e663ad8e8a742d5c538ed8ff1013b11" - integrity sha512-HaaCBTUATs2+i7T4jxIvoU9rViAHMvOD2eBaJ1H7xPHlwZlMORjQs7bsNKonR/TQoduxZBJLVZGawvaAJNCH8g== +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" @@ -4476,22 +4162,15 @@ expo-font@~11.1.1: dependencies: fontfaceobserver "^2.1.0" -expo-font@~11.4.0: - version "11.4.0" - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.4.0.tgz#e2d31c0bb76ba3c37c2d84703a49aeafc3afef28" - integrity sha512-nkmezCFD7gR/I6R+e3/ry18uEfF8uYrr6h+PdBJu+3dawoLOpo+wFb/RG9bHUekU1/cPanR58LR7G5MEMKHR2w== - dependencies: - fontfaceobserver "^2.1.0" - expo-json-utils@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.5.1.tgz#fcb01050b8aa66592eea2024a48979f2d090c6f9" integrity sha512-Y5boshyf40vPjwxNnOIfacZPNkOymecZRQ1k+TSXlq6gnw5XRsnM5hnP0VLVYhdv8x+9CX6E1fDsDUNvsK38Dg== -expo-keep-awake@~12.3.0: - version "12.3.0" - resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz#c42449ae19c993274ddc43aafa618792b6aec408" - integrity sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw== +expo-keep-awake@~12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.0.1.tgz#19c5ab55391394ded3f6c262b0707c7140658a11" + integrity sha512-hqeCnb4033TyuZaXs93zTK7rjVJ3bywXATyMmKmKkLEsH2PKBAl/VmjlCOPQL/2Ncqz6aj7Wo//tjeJTARBD4g== expo-linking@~4.0.0: version "4.0.1" @@ -4511,22 +4190,21 @@ expo-manifests@~0.5.0: dependencies: expo-json-utils "~0.5.0" -expo-modules-autolinking@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz#363f90c172769ce12bf56c7be9ca0897adfc7a81" - integrity sha512-yt5a1VCp2BF9CrsO689PCD5oXKP14MMhnOanQMvDn4BDpURYfzAlDVGC5fZrNQKtwn/eq3bcrxIwZ7D9QjVVRg== +expo-modules-autolinking@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.2.0.tgz#3ead115510a43fe196fc0498586b6133bd573209" + integrity sha512-QOPh/iXykNDCAzUual1imSrn2aDakzCGUp2QmxVREr0llajXygroUWlT9sQXh1zKzbNp+a+i/xK375ZeBFiNJA== dependencies: - "@expo/config" "~8.1.0" chalk "^4.1.0" commander "^7.2.0" fast-glob "^3.2.5" find-up "^5.0.0" fs-extra "^9.1.0" -expo-modules-core@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.5.10.tgz#b829ef0c65208870555d604d4602bfe84d0e8bb7" - integrity sha512-+m+poHkhjAhRZmngSLUpJJoxhjoExYKSr4J5luy4N+YMlowK31Zewztg4xsPrNRoPvGK/B5uCm0UEzIQvLsNGg== +expo-modules-core@1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.2.7.tgz#c80627b13a8f1c94ae9da8eea41e1ef1df5788c8" + integrity sha512-sulqn2M8+tIdxi6QFkKppDEzbePAscgE2LEHocYoQOgHxJpeT7axE0Hkzc+81EeviQilZzGeFZMtNMGh3c9yJg== dependencies: compare-versions "^3.4.0" invariant "^2.2.4" @@ -4572,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" @@ -4606,26 +4284,28 @@ expo-web-browser@~12.1.0, expo-web-browser@~12.1.1: compare-urls "^2.0.0" url "^0.11.0" -expo@^49.0.0: - version "49.0.8" - resolved "https://registry.yarnpkg.com/expo/-/expo-49.0.8.tgz#97e2ffcf239326898a3b803394e069f7df7a381e" - integrity sha512-lkTRwMvJP8j7KAHJB+aZqI9dH1hw7j2QE1X9Okpcf+t0deGqH36XqkjUCcU6KYgCOjSnt8fvRm89TJR5Oq0ElA== +expo@~48.0.18: + 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.10.11" - "@expo/config" "8.1.2" - "@expo/config-plugins" "7.2.5" + "@expo/cli" "0.7.3" + "@expo/config" "8.0.5" + "@expo/config-plugins" "6.0.2" "@expo/vector-icons" "^13.0.0" - babel-preset-expo "~9.5.2" - expo-application "~5.3.0" - expo-asset "~8.10.1" - expo-constants "~14.4.2" - expo-file-system "~15.4.3" - expo-font "~11.4.0" - expo-keep-awake "~12.3.0" - expo-modules-autolinking "1.5.1" - expo-modules-core "1.5.10" + babel-preset-expo "~9.3.2" + cross-spawn "^6.0.5" + expo-application "~5.1.1" + expo-asset "~8.9.1" + expo-constants "~14.2.1" + expo-file-system "~15.2.2" + expo-font "~11.1.1" + expo-keep-awake "~12.0.1" + expo-modules-autolinking "1.2.0" + expo-modules-core "1.2.7" fbemitter "^3.0.0" + getenv "^1.0.0" invariant "^2.2.4" md5-file "^3.2.3" node-fetch "^2.6.7" @@ -4647,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" @@ -4739,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" @@ -4776,13 +4440,13 @@ finalhandler@1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-babel-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-2.0.0.tgz#a8216f825415a839d0f23f4d18338a1cc966f701" - integrity sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw== +find-babel-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== dependencies: - json5 "^2.1.1" - path-exists "^4.0.0" + json5 "^0.5.1" + path-exists "^3.0.0" find-cache-dir@^2.0.0: version "2.1.0" @@ -4974,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" @@ -5079,17 +4729,6 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -5158,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" @@ -5220,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" @@ -5250,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== @@ -5263,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== @@ -5343,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" @@ -5543,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" @@ -5707,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" @@ -5915,7 +5511,7 @@ 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, jsc-safe-url@^0.2.4: +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== @@ -5974,16 +5570,21 @@ json-schema-deref-sync@^0.13.0: traverse "~0.6.6" valid-url "~1.0.9" -json5@^2.1.1, json5@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -6044,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" @@ -6058,74 +5652,11 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" -lightningcss-darwin-arm64@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz#56ab071e932f845dbb7667f44f5b78441175a343" - integrity sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg== - -lightningcss-darwin-x64@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz#c867308b88859ba61a2c46c82b1ca52ff73a1bd0" - integrity sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw== - -lightningcss-linux-arm-gnueabihf@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz#0f921dc45f2e5c3aea70fab98844ac0e5f2f81be" - integrity sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig== - -lightningcss-linux-arm64-gnu@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz#027f9df9c7f4ffa127c37a71726245a5794d7ba2" - integrity sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww== - -lightningcss-linux-arm64-musl@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz#85ea987da868524eac6db94f8e1eaa23d0b688a3" - integrity sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA== - -lightningcss-linux-x64-gnu@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz#02bec89579ab4153dccc0def755d1fd9e3ee7f3c" - integrity sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ== - -lightningcss-linux-x64-musl@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz#e36a5df8193ae961d22974635e4c100a1823bb8c" - integrity sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg== - -lightningcss-win32-x64-msvc@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz#0854dbd153035eca1396e2227c708ad43655a61c" - integrity sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg== - -lightningcss@~1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.19.0.tgz#fbbad0975de66252e38d96b5bdd2a62f2dd0ffbf" - integrity sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - lightningcss-darwin-arm64 "1.19.0" - lightningcss-darwin-x64 "1.19.0" - lightningcss-linux-arm-gnueabihf "1.19.0" - lightningcss-linux-arm64-gnu "1.19.0" - lightningcss-linux-arm64-musl "1.19.0" - lightningcss-linux-x64-gnu "1.19.0" - lightningcss-linux-x64-musl "1.19.0" - lightningcss-win32-x64-msvc "1.19.0" - lines-and-columns@^1.1.6: version "1.2.4" 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" @@ -6163,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== @@ -6503,51 +6034,6 @@ metro-react-native-babel-preset@0.73.9: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-preset@0.76.8: - version "0.76.8" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz#7476efae14363cbdfeeec403b4f01d7348e6c048" - integrity sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.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.20.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.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.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-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - babel-plugin-transform-flow-enums "^0.0.2" - 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" @@ -6802,13 +6288,6 @@ mimic-fn@^2.1.0: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - minimist@^1.2.0, minimist@^1.2.6: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" @@ -6865,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== @@ -6892,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" @@ -6915,11 +6389,6 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -6974,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== @@ -7037,26 +6506,11 @@ 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" @@ -7179,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" @@ -7423,15 +6870,6 @@ postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@~8.4.21: - version "8.4.28" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" - integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -7466,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== @@ -7544,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" @@ -7598,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" @@ -7653,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== @@ -7769,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== @@ -7789,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" @@ -7927,7 +7344,7 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -reselect@^4.1.7: +reselect@^4.0.0: version "4.1.8" resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== @@ -7947,6 +7364,15 @@ 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: + 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" @@ -7956,15 +7382,6 @@ resolve@^1.14.2: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.22.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.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" @@ -8031,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" @@ -8043,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" @@ -8112,13 +7517,6 @@ semver@7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -semver@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" - integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== - dependencies: - lru-cache "^6.0.0" - semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -8136,13 +7534,6 @@ semver@^7.3.5: dependencies: lru-cache "^6.0.0" -semver@^7.5.3: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - send@0.18.0, send@^0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -8162,19 +7553,6 @@ send@0.18.0, send@^0.18.0: range-parser "~1.2.1" statuses "2.0.1" -sentry-expo@~6.2.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/sentry-expo/-/sentry-expo-6.2.2.tgz#af593f5a5927773c7398d562b6063eb257d93aa0" - integrity sha512-3T710+Hw8QuaZujv2EFsL7oyOenQm0W81UWaeWsbT8EZfM6+orEusGu25EpdDyrkPLwgcFVKDAmcwJr17OJtuw== - dependencies: - "@expo/spawn-async" "^1.7.0" - "@sentry/integrations" "7.37.2" - "@sentry/react" "7.37.2" - "@sentry/react-native" "4.15.2" - "@sentry/types" "7.37.2" - 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" @@ -8197,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== @@ -8349,11 +7727,6 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -8466,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== @@ -8484,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" @@ -8524,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== @@ -8745,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== @@ -8826,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== @@ -8874,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" @@ -9182,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" @@ -9260,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== @@ -9283,14 +8606,6 @@ xml2js@0.4.23: sax ">=0.6.0" xmlbuilder "~11.0.0" -xml2js@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.0.tgz#07afc447a97d2bd6507a1f76eeadddb09f7a8282" - integrity sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - xmlbuilder@^14.0.0: version "14.0.0" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-14.0.0.tgz#876b5aec4f05ffd5feb97b0a871c855d16fbeb8c" From 83af76200aecec2a85f880f8f7f816b0235b2f50 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 14:21:29 -0400 Subject: [PATCH 08/14] Fix broken android deep links on open after contentProcessTerminated --- native/App.tsx | 106 +++++++++++---------- web/components/native-message-listener.tsx | 20 ++-- 2 files changed, 67 insertions(+), 59 deletions(-) diff --git a/native/App.tsx b/native/App.tsx index a24d783d27..afff919a7a 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -48,9 +48,9 @@ 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.1.154:3000/' -// const baseUri = -// ENV === 'DEV' ? 'https://dev.manifold.markets/' : 'https://manifold.markets/' +// const baseUri = 'http://192.168.1.154:3000/' +const baseUri = + ENV === 'DEV' ? 'https://dev.manifold.markets/' : 'https://manifold.markets/' const nativeQuery = `?nativePlatform=${Platform.OS}` const isIOS = Platform.OS === 'ios' const App = () => { @@ -60,8 +60,9 @@ const App = () => { useFonts({ ReadexPro_400Regular }) // This tracks if the webview has loaded its first page - const hasLoadedWebView = useRef(false) + const [hasLoadedWebView, setHasLoadedWebView] = useState(false) // This tracks if the app has its nativeMessageListener set up + // 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() @@ -76,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) @@ -90,19 +92,17 @@ const App = () => { }, []) // Sends the saved user to the web client to make the log in process faster - useEffect(() => { - if (listeningToNative.current && 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.current, 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( @@ -118,9 +118,18 @@ 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) } @@ -132,7 +141,7 @@ const App = () => { ) => { log( 'Push notification tapped, has loaded webview:', - hasLoadedWebView.current, + hasLoadedWebView, ', is listening to native:', listeningToNative.current ) @@ -142,7 +151,7 @@ const App = () => { .data as Notification // TODO: this should check if the webview is listening to native, not if it's loaded - if (hasLoadedWebView.current && listeningToNative.current) { + if (hasLoadedWebView && listeningToNative.current) { communicateWithWebview( 'notification', response.notification.request.content.data @@ -152,15 +161,14 @@ const App = () => { } useEffect(() => { - if (lastLinkInMemory) - log( - 'Running lastNotificationInMemory effect, has loaded webview:', - hasLoadedWebView.current, - '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.current) { + if (lastLinkInMemory && !hasLoadedWebView) { log( 'Setting url to load from last notification in memory:', lastLinkInMemory @@ -178,7 +186,7 @@ const App = () => { log('Cleared last notification in memory timeout') } } - }, [lastLinkInMemory, hasLoadedWebView.current]) + }, [lastLinkInMemory, hasLoadedWebView]) useEffect(() => { // This listener is fired whenever a user taps on or interacts with a notification (works when app is foregrounded, backgrounded, or killed) @@ -193,19 +201,12 @@ const App = () => { notificationResponseListener.current ) } - }, [hasLoadedWebView.current]) + }, [hasLoadedWebView]) useEffect(() => { Linking.getInitialURL().then((url) => { - log( - 'Initial url:', - url, - '- has loaded webview:', - hasLoadedWebView.current - ) - if (url) { - setUrlToLoad(url) - } + log('Initial url:', url, '- has loaded webview:', hasLoadedWebView) + if (url) setUrlWithNativeQuery(url) }) BackHandler.addEventListener('hardwareBackPress', handleBackButtonPress) return () => @@ -224,11 +225,13 @@ const App = () => { 'Linked url', linkedUrl, ', has loaded webview:', - hasLoadedWebView.current, + hasLoadedWebView, `, 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 = { @@ -367,6 +370,7 @@ const App = () => { } else if (type === 'startedListening') { log('Client started listening') listeningToNative.current = true + if (fbUser) sendWebviewAuthInfo(fbUser) } else { log('Unhandled message from web type: ', type) log('Unhandled message from web data: ', data) @@ -404,17 +408,15 @@ const App = () => { } const resetWebView = () => { - hasLoadedWebView.current = false + setHasLoadedWebView(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() - const fullyLoaded = hasLoadedWebView.current && fbUser && isConnected + const fullyLoaded = hasLoadedWebView && fbUser && isConnected const width = Dimensions.get('window').width //full width const height = Dimensions.get('window').height //full height const styles = StyleSheet.create({ @@ -452,7 +454,7 @@ const App = () => { width={width} source={require('./assets/splash.png')} webview={webview} - hasLoadedWebView={hasLoadedWebView.current} + hasLoadedWebView={hasLoadedWebView} fbUser={fbUser} isConnected={isConnected} /> @@ -477,8 +479,8 @@ const App = () => { style={styles.webView} // Load start and end is for whole website loading, not navigations within manifold onLoadEnd={() => { - log('WebView onLoadEnd') - hasLoadedWebView.current = true + log('WebView onLoadEnd for url:', urlToLoad) + setHasLoadedWebView(true) }} source={{ uri: urlToLoad }} ref={webview} @@ -499,7 +501,7 @@ const App = () => { /> - + {/**/} ) } diff --git a/web/components/native-message-listener.tsx b/web/components/native-message-listener.tsx index 95df8e7fca..56f7dbe906 100644 --- a/web/components/native-message-listener.tsx +++ b/web/components/native-message-listener.tsx @@ -95,11 +95,17 @@ export const postMessageToNative = ( data: any ) => { 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, + }) + ) + } } From 59f78f182ee070ec283b39d0938bfa7879453a57 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 14:23:54 -0400 Subject: [PATCH 09/14] Remove unused imports --- native/App.tsx | 4 +++- native/components/web-view-utils.tsx | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/native/App.tsx b/native/App.tsx index afff919a7a..213d92bf8a 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -351,7 +351,9 @@ const App = () => { await setFirebaseUserViaJson(fbUser, app) await storeData('user', fbUser) } - } catch (e) {} + } catch (e) { + log('error signing in users', e) + } } else if (type === 'share') { const { url, title, message } = payload as NativeShareData log('Sharing:', message, url, title) diff --git a/native/components/web-view-utils.tsx b/native/components/web-view-utils.tsx index 2e68f918b9..3baaa36607 100644 --- a/native/components/web-view-utils.tsx +++ b/native/components/web-view-utils.tsx @@ -1,6 +1,5 @@ -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, From 746a7effdcdf86d2423e3620f787f2efd6f0a921 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 14:27:28 -0400 Subject: [PATCH 10/14] Add note --- common/src/util/tiptap-iframe.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/common/src/util/tiptap-iframe.ts b/common/src/util/tiptap-iframe.ts index 2a29e96b28..0f43f5a4f0 100644 --- a/common/src/util/tiptap-iframe.ts +++ b/common/src/util/tiptap-iframe.ts @@ -3,6 +3,7 @@ import { Node, mergeAttributes } from '@tiptap/core' import { IS_NATIVE_KEY } from 'common/native-message' +// TODO: this should actually just return true for ANY mobile browser (not just native apps) const getIsNative = () => { if (typeof window === 'undefined') return false const isNative = From 31cd5bed7a543b1a140316c128ab31288daa0862 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 14:28:30 -0400 Subject: [PATCH 11/14] Remove completed todo --- native/App.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/native/App.tsx b/native/App.tsx index 213d92bf8a..96bf240b2a 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -150,7 +150,6 @@ const App = () => { 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 && listeningToNative.current) { communicateWithWebview( 'notification', From e0aff74ff7c169c7271333a16c89dc44038c985f Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 16:49:27 -0400 Subject: [PATCH 12/14] Remove extra url check --- native/App.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/native/App.tsx b/native/App.tsx index 96bf240b2a..06af3fcfbb 100644 --- a/native/App.tsx +++ b/native/App.tsx @@ -438,8 +438,7 @@ const App = () => { const handleExternalLink = (url: string) => { if ( - (!url.startsWith(baseUri) && - !url.startsWith('https://manifold.markets')) || + !url.startsWith(baseUri) || EXTERNAL_REDIRECTS.some((u) => url.endsWith(u)) ) { webview.current?.stopLoading() From 9a7fe45bc9ffe4ae990d75049c02bb9337411ac0 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 16:59:16 -0400 Subject: [PATCH 13/14] Add note about mobile hydration errors --- common/src/util/tiptap-iframe.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/src/util/tiptap-iframe.ts b/common/src/util/tiptap-iframe.ts index 0f43f5a4f0..2ef91321ed 100644 --- a/common/src/util/tiptap-iframe.ts +++ b/common/src/util/tiptap-iframe.ts @@ -3,7 +3,8 @@ import { Node, mergeAttributes } from '@tiptap/core' import { IS_NATIVE_KEY } from 'common/native-message' -// TODO: this should actually just return true for ANY mobile browser (not just native apps) +//TODO: this should actually just return true for ANY mobile browser (not just native apps), +// but will cause hydration errors if we do that check outside a useEffect. const getIsNative = () => { if (typeof window === 'undefined') return false const isNative = From e5db8c807007e5cb4789ee3e36ff8a17f603df87 Mon Sep 17 00:00:00 2001 From: Ian Philips Date: Thu, 24 Aug 2023 17:01:41 -0400 Subject: [PATCH 14/14] All iframes get _self treatment --- common/src/util/tiptap-iframe.ts | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/common/src/util/tiptap-iframe.ts b/common/src/util/tiptap-iframe.ts index 2ef91321ed..9b9bab88e4 100644 --- a/common/src/util/tiptap-iframe.ts +++ b/common/src/util/tiptap-iframe.ts @@ -1,17 +1,6 @@ // Adopted from https://github.com/ueberdosis/tiptap/blob/main/demos/src/Experiments/Embeds/Vue/iframe.ts import { Node, mergeAttributes } from '@tiptap/core' -import { IS_NATIVE_KEY } from 'common/native-message' - -//TODO: this should actually just return true for ANY mobile browser (not just native apps), -// but will cause hydration errors if we do that check outside a useEffect. -const getIsNative = () => { - if (typeof window === 'undefined') return false - const isNative = - localStorage?.getItem(IS_NATIVE_KEY) || - sessionStorage?.getItem(IS_NATIVE_KEY) - return isNative === 'true' -} export interface IframeOptions { HTMLAttributes: { @@ -60,16 +49,15 @@ export default Node.create({ }, renderHTML({ HTMLAttributes }) { - const isNative = getIsNative() const iframeAttributes = mergeAttributes( this.options.HTMLAttributes, HTMLAttributes ) const { src } = HTMLAttributes - // This is a hack to prevent native apps from opening the iframe in an in-app browser: - // links with target='_blank' will open in the in-app browser. - if (isNative && src.includes('manifold.markets/embed/')) { + // 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', {