diff --git a/CHANGELOG.md b/CHANGELOG.md index 40c67c4be8f..4c329eb9714 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,24 @@ # edge-react-gui ## Unreleased (develop) +- fixed: Text inputs mounted in the disabled state (such as the spending-limit amount) no longer flash their enabled look before dimming when a scene appears. +- fixed: Received-transaction and error dropdowns no longer slide in underneath the Android status bar on edge-to-edge devices. +- fixed: The header, scene footer, tab bar, and notification cards blur the scene behind them again on Android 12 and above, sampling the focused scene's content. Below Android 12 they keep their solid backgrounds. +- fixed: See-through modal sheets on Android under the new architecture. Modals blur the screen behind them again on Android 12 and above via a new blur backend (the old one snapshots the window in a way the new architecture renders as empty), and use a solid background color below Android 12, where no blur implementation can render. + +- changed: Draw gradients with expo-linear-gradient and scroll around the keyboard with react-native-keyboard-controller, replacing two libraries that rendered through the new architecture's legacy compatibility layers (react-native-linear-gradient and the unmaintained react-native-keyboard-aware-scroll-view). +- changed: The feedback survey now uses the same keyboard offset on both platforms, replacing a per-platform workaround the old scroll library required. +- fixed: The app no longer installs two copies of react-native-airship and react-native-patina (one nested under edge-login-ui-rn). + +- changed: Upgrade react-native-sound to 0.13.0 and react-native-haptic-feedback to 3.0.0, both now codegen-native under the new architecture. +- changed: Upgrade react-native-performance to 6.0.0, fixing new-architecture detection and an Android event-emitter race. +- changed: Upgrade to React Native 0.86, Expo SDK 57, and the new architecture on both platforms. On Android this substantially improves scrolling performance: in release-build benchmarks, dropped frames during wallet-list scrolling fell from 7.3% to 2.5%, the worst-case frame rate rose from 33 to 48 fps, and peak CPU fell 38%, at the cost of higher memory use. +- changed: Long labels on Android now truncate with an ellipsis instead of shrinking to fit. The new renderer ignores the minimum text size, which could render labels illegibly small. +- changed: Android 11 and below now show solid backgrounds where blur effects used to be. Those Android versions cannot render blur under the new architecture, which painted a gray wash over the content instead. +- fixed: Modals no longer sit behind the keyboard on Android, hiding their bottom buttons. +- fixed: The amount field no longer clips its leading digits or shifts sideways while typing. +- fixed: Tapping outside the side menu closes it again on Android versions that cannot animate the overlay. +- fixed: Screen readers no longer announce the amount field's hidden sizing text, which read as the amount with a stray trailing zero. ## 4.51.0 (staging) diff --git a/android/app/build.gradle b/android/app/build.gradle index f9e22b0d811..c49ecdce0f0 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -91,6 +91,14 @@ android { compileSdk rootProject.ext.compileSdkVersion namespace "co.edgesecure.app" + + lint { + // Release lint (lintVital) OOMs on this large project and isn't needed + // for benchmark/release APKs; CI runs lint separately. + checkReleaseBuilds false + abortOnError false + } + defaultConfig { applicationId "co.edgesecure.app" minSdkVersion rootProject.ext.minSdkVersion diff --git a/android/app/src/main/java/co/edgesecure/app/MainApplication.kt b/android/app/src/main/java/co/edgesecure/app/MainApplication.kt index 28e44718e40..46ee8209bf1 100644 --- a/android/app/src/main/java/co/edgesecure/app/MainApplication.kt +++ b/android/app/src/main/java/co/edgesecure/app/MainApplication.kt @@ -8,6 +8,9 @@ import com.facebook.react.ReactHost import com.facebook.react.ReactNativeHost import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags +import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android +import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsProvider import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost import com.facebook.react.modules.i18nmanager.I18nUtil @@ -15,7 +18,6 @@ import com.facebook.react.soloader.OpenSourceMergedSoMapping import com.facebook.soloader.SoLoader import expo.modules.ApplicationLifecycleDispatcher.onApplicationCreate import expo.modules.ApplicationLifecycleDispatcher.onConfigurationChanged -import expo.modules.ReactNativeHostWrapper import io.sentry.Hint import io.sentry.SentryEvent import io.sentry.SentryLevel @@ -27,26 +29,23 @@ class MainApplication : Application(), ReactApplication { override val reactNativeHost: ReactNativeHost = - ReactNativeHostWrapper( - this, - object : DefaultReactNativeHost(this) { - override fun getPackages(): List { - // Packages that cannot be autolinked yet can be added manually here, for - // example: - // packages.add(new MyReactNativePackage()); - val packages = PackageList(this).packages - packages.add(EdgeAttestationPackage()) - return packages - } + object : DefaultReactNativeHost(this) { + override fun getPackages(): List { + // Packages that cannot be autolinked yet can be added manually here, for + // example: + // packages.add(new MyReactNativePackage()); + val packages = PackageList(this).packages + packages.add(EdgeAttestationPackage()) + return packages + } - override fun getJSMainModuleName(): String = "index" + override fun getJSMainModuleName(): String = "index" - override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG - override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED - override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED - }, - ) + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } override val reactHost: ReactHost get() = getDefaultReactHost(applicationContext, reactNativeHost) @@ -109,6 +108,37 @@ class MainApplication : // If you opted-in for the New Architecture, we load the native entry point for this // app. load() + + // load() consumed the process's single feature-flag override with React + // Native's stable defaults. Replace it with those same defaults plus the + // ShadowTree commit-exhaustion protection, which React Native ships + // default-off: without it, a runaway commit loop aborts the app in + // native code (ShadowTree.cpp: "assertion failed (attempts < 1024)"). + // Android loads the RN core prebuilt, so the default cannot be patched + // in source like on iOS. Resetting here is safe because no React + // runtime exists yet. + ReactNativeFeatureFlags.dangerouslyReset() + ReactNativeFeatureFlags.override( + object : + ReactNativeFeatureFlagsProvider by ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android() { + override fun preventShadowTreeCommitExhaustion(): Boolean = true + + // View recycling only runs under the new architecture, so enabling + // it turned these on for the first time. Recycled views arrive + // carrying visual properties from their previous use: buttons stay + // dimmed after becoming enabled, and labels render at a stale font + // size. Keep them off, matching how the app rendered before the + // architecture switch. + // The master recycling switch defaults off in 0.86.0, but pin it so + // a future point release cannot flip it on and silently activate + // the image recycler (which defaults on under the master switch): + override fun enableViewRecycling(): Boolean = false + + override fun enableViewRecyclingForText(): Boolean = false + + override fun enableViewRecyclingForView(): Boolean = false + } + ) } onApplicationCreate(this) } diff --git a/android/build.gradle b/android/build.gradle index 3c5b50cf44e..748981fd3d6 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,6 +1,6 @@ buildscript { ext { - buildToolsVersion = "35.0.0" + buildToolsVersion = "36.1.0" minSdkVersion = 28 // Edge modified from 21 compileSdkVersion = 36 targetSdkVersion = 36 diff --git a/android/gradle.properties b/android/gradle.properties index 9f2db46dfb1..8f810774c02 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -10,7 +10,7 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m -org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m +org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=1g # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit @@ -37,7 +37,7 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a # your application. You should enable this flag either if you want # to write custom TurboModules/Fabric components OR use libraries that # are providing them. -newArchEnabled=false +newArchEnabled=true # Use this property to enable or disable the Hermes JS engine. # If set to false, you will be using JSC instead. diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 37f853b1c84..37f78a6af83 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/android/settings.gradle b/android/settings.gradle index f297a99f521..d0e2180cfdf 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,9 +1,39 @@ -pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } -plugins { id("com.facebook.react.settings") } -extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } +pluginManagement { + def reactNativeGradlePlugin = new File( + providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })") + }.standardOutput.asText.get().trim() + ).getParentFile().absolutePath + includeBuild(reactNativeGradlePlugin) + + def expoPluginsPath = new File( + providers.exec { + workingDir(rootDir) + commandLine("node", "--print", "require.resolve('expo-modules-autolinking/package.json', { paths: [require.resolve('expo/package.json')] })") + }.standardOutput.asText.get().trim(), + "../android/expo-gradle-plugin" + ).absolutePath + includeBuild(expoPluginsPath) +} + +plugins { + id("com.facebook.react.settings") + id("expo-autolinking-settings") +} + +extensions.configure(com.facebook.react.ReactSettingsExtension) { ex -> + if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') { + ex.autolinkLibrariesFromCommand() + } else { + ex.autolinkLibrariesFromCommand(expoAutolinking.rnConfigCommand) + } +} +expoAutolinking.useExpoModules() + rootProject.name = 'co.edgesecure.app' -include ':app' -includeBuild('../node_modules/@react-native/gradle-plugin') -apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle") -useExpoModules() +expoAutolinking.useExpoVersionCatalog() + +include ':app' +includeBuild(expoAutolinking.reactNativeGradlePlugin) diff --git a/babel.config.js b/babel.config.js index 9adf2e4f163..44e02aa732a 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,12 +1,7 @@ module.exports = function (api) { - const isAndroid = api.caller(c => c.platform === 'android') - + api.cache(true) return { presets: ['module:@react-native/babel-preset'], - plugins: [ - isAndroid - ? './node_modules/r3-hack/node_modules/react-native-reanimated/plugin' - : 'react-native-worklets/plugin' - ] + plugins: ['react-native-worklets/plugin'] } } diff --git a/eslint.config.mjs b/eslint.config.mjs index a818fa26926..75230ae962a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -139,7 +139,7 @@ export default [ 'src/app.ts', 'src/components/buttons/ButtonsView.tsx', 'src/components/buttons/EdgeSwitch.tsx', - 'src/components/buttons/IconButton.tsx', + 'src/components/buttons/MinimalButton.tsx', 'src/components/buttons/ModalButtons.tsx', 'src/components/buttons/ReturnKeyTypeButton.tsx', @@ -150,7 +150,7 @@ export default [ 'src/components/cards/FiatAmountInputCard.tsx', 'src/components/cards/FiatExchangeDetailsCard.tsx', - 'src/components/cards/HomeTileCard.tsx', + 'src/components/cards/IconMessageCard.tsx', 'src/components/cards/LoanDetailsSummaryCard.tsx', 'src/components/cards/LoanSummaryCard.tsx', @@ -168,9 +168,8 @@ export default [ 'src/components/charts/SwipeChart.tsx', 'src/components/common/AnimatedNumber.tsx', - 'src/components/common/BlurBackground.tsx', + 'src/components/common/CrossFade.tsx', - 'src/components/common/DotsBackground.tsx', 'src/components/common/ExpandableList.tsx', 'src/components/common/QrPeephole.tsx', @@ -182,7 +181,7 @@ export default [ 'src/components/FioAddress/FioActionSubmit.tsx', 'src/components/FioAddress/FioName.tsx', 'src/components/hoc/maybeComponent.tsx', - 'src/components/hoc/styled.tsx', + 'src/components/hoc/withExtendedTouchable.tsx', 'src/components/icons/FiatIcon.tsx', @@ -208,7 +207,6 @@ export default [ 'src/components/modals/FioExpiredModal.tsx', 'src/components/modals/FundAccountModal.tsx', - 'src/components/modals/GradientFadeout.tsx', 'src/components/modals/InsufficientFeesModal.tsx', 'src/components/modals/ListModal.tsx', @@ -234,7 +232,7 @@ export default [ 'src/components/navigation/EdgeLogoHeader.tsx', 'src/components/navigation/FlashNotification.tsx', 'src/components/navigation/GuiPluginBackButton.tsx', - 'src/components/navigation/HeaderBackground.tsx', + 'src/components/navigation/HeaderTextButton.tsx', 'src/components/navigation/HeaderTitle.tsx', 'src/components/navigation/NavigationButton.tsx', @@ -247,8 +245,6 @@ export default [ 'src/components/progress-indicators/FullScreenLoader.tsx', 'src/components/progress-indicators/LoadingSplashScreen.tsx', - 'src/components/progress-indicators/StepProgressBar.tsx', - 'src/components/rows/CryptoFiatAmountRow.tsx', 'src/components/rows/EdgeRow.tsx', @@ -257,9 +253,6 @@ export default [ 'src/components/rows/SwapProviderRow.tsx', 'src/components/rows/TxCryptoAmountRow.tsx', - 'src/components/scenes/ChangeMiningFeeScene.tsx', - - 'src/components/scenes/ConfirmScene.tsx', 'src/components/scenes/CreateWalletAccountSelectScene.tsx', 'src/components/scenes/CreateWalletAccountSetupScene.tsx', @@ -284,15 +277,13 @@ export default [ 'src/components/scenes/Fio/FioRequestListScene.tsx', 'src/components/scenes/Fio/FioSentRequestDetailsScene.tsx', 'src/components/scenes/Fio/FioStakingOverviewScene.tsx', - 'src/components/scenes/FormScene.tsx', + 'src/components/scenes/inputs/DigitInput.tsx', 'src/components/scenes/inputs/DigitInput/PinDots.tsx', 'src/components/scenes/LoadingScene.tsx', - 'src/components/scenes/Loans/LoanCloseScene.tsx', - 'src/components/scenes/Loans/LoanCreateScene.tsx', 'src/components/scenes/Loans/LoanDashboardScene.tsx', - 'src/components/scenes/Loans/LoanDetailsScene.tsx', + 'src/components/scenes/Loans/LoanManageScene.tsx', 'src/components/scenes/Loans/LoanStatusScene.tsx', @@ -303,7 +294,6 @@ export default [ 'src/components/scenes/PromotionSettingsScene.tsx', - 'src/components/scenes/SpendingLimitsScene.tsx', 'src/components/scenes/Staking/EarnScene.tsx', 'src/components/scenes/SwapSettingsScene.tsx', @@ -327,7 +317,6 @@ export default [ 'src/components/services/NetworkActivity.ts', 'src/components/services/PasswordReminderService.ts', 'src/components/services/PermissionsManager.tsx', - 'src/components/services/Providers.tsx', 'src/components/services/SortedWalletList.ts', 'src/components/services/StatusBarManager.tsx', @@ -347,18 +336,15 @@ export default [ 'src/components/text/TitleText.tsx', 'src/components/themed/Alert.tsx', - 'src/components/themed/DividerLine.tsx', 'src/components/themed/EdgeProviderComponent.tsx', 'src/components/themed/ExplorerCard.tsx', 'src/components/themed/Fade.tsx', - 'src/components/themed/FioRequestRow.tsx', - 'src/components/themed/LineTextDivider.tsx', 'src/components/themed/MainButton.tsx', 'src/components/themed/ManageTokensRow.tsx', - 'src/components/themed/MenuTabs.tsx', + 'src/components/themed/ModalParts.tsx', 'src/components/themed/PinDots.tsx', @@ -374,7 +360,6 @@ export default [ 'src/components/themed/ThemedButtons.tsx', 'src/components/themed/Thermostat.tsx', 'src/components/themed/Title.tsx', - 'src/components/themed/TransactionListComponents.tsx', 'src/components/themed/VectorIcon.tsx', 'src/components/themed/WalletList.tsx', @@ -483,7 +468,7 @@ export default [ 'src/styles/common/textStyles.tsx', 'src/styles/common/textStylesThemed.ts', 'src/types/reactRedux.ts', - 'src/util/borrowUtils.ts', + 'src/util/cleaners.ts', 'src/util/crypto.ts', diff --git a/ios/Podfile b/ios/Podfile index b12c435ed45..5b095d72347 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -13,11 +13,21 @@ require_relative '../node_modules/react-native-permissions/scripts/setup' $RNFirebaseAnalyticsWithoutAdIdSupport = true $RNFirebaseAsStaticFramework = true -# The min_ios_version_supported is iOS 13.4 for RN 74: -# However any device that can use iOS 13.4 can also upgrade to iOS 15.6 which -# is still supported by the latest version of Xcode for debugging -ios_platform_version = '15.6' +# Expo SDK 57 requires a minimum deployment target of iOS 16.4 +# (React Native 0.86 itself only needs 15.1). +ios_platform_version = '16.4' platform :ios, ios_platform_version + +# Pin the React/Hermes pairing so pod install is deterministic regardless of +# the machine's environment: Hermes V1 (the RN/Expo default engine, and what +# Edge already ships) with React-Core built from source. Do NOT enable +# RCT_USE_PREBUILT_RNCORE: the 0.86.0 prebuilt React-Core binary is built +# against the non-V1 jsi ABI (jsi::Runtime vs V1's jsi::IRuntime), and pairing +# it with the V1 hermesvm artifact crashes at launch with +# "Symbol not found: facebook::jsi::Array::createWithElements". +ENV['RCT_USE_PREBUILT_RNCORE'] = '0' +ENV['RCT_HERMES_V1_ENABLED'] = '1' + prepare_react_native_project! # Edge addition: @@ -44,7 +54,25 @@ target 'edge' do Pod::UI.warn e end end - config = use_native_modules! + # Expo SDK 56 autolinking: feed expo's unified native-module config (which + # registers ExpoModulesCore + expo modules + RN community modules) into + # use_native_modules!. + if ENV['EXPO_USE_COMMUNITY_AUTOLINKING'] == '1' + config_command = ['node', '-e', "process.argv=['', '', 'config'];require('@react-native-community/cli').run()"] + else + config_command = [ + 'node', + '--no-warnings', + '--eval', + 'require(\'expo/bin/autolinking\')', + 'expo-modules-autolinking', + 'react-native-config', + '--json', + '--platform', + 'ios' + ] + end + config = use_native_modules!(config_command) use_react_native!( :path => config[:reactNativePath], @@ -61,6 +89,20 @@ target 'edge' do target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = ios_platform_version + # Allow non-modular includes (e.g. @react-native-firebase headers that + # include ) under use_frameworks! + Xcode 26's strict + # explicit-modules scanning, which otherwise errors on RNFBApp. + config.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES' + + # @react-native-firebase wrappers import React/Firebase headers + # textually (#import, not @import). Under clang modules + use_frameworks + # on Xcode 26 this fails ("RCTPromiseRejectBlock must be imported from + # module RNFBApp.RNFBAppModule"). Build the RNFB pods without modules so + # their textual imports resolve directly. + if target.name.start_with?('RNFB') + config.build_settings['CLANG_ENABLE_MODULES'] = 'NO' + end + # Xcode 17+ / iOS 26 SDK workaround: Re-enable std::allocator # which was removed for stricter C++ standard compliance. # See: https://github.com/getsentry/sentry-cocoa/issues/5172 diff --git a/ios/Podfile.lock b/ios/Podfile.lock index c3abca5d09a..6b4087ba9f7 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,8 +1,5 @@ PODS: - _NIODataStructures (2.40.0) - - boost (1.84.0) - - BVLinearGradient (2.8.3): - - React-Core - CGRPCZlib (1.8.0) - CNIOAtomics (2.40.0) - CNIOBoringSSL (2.19.0) @@ -14,7 +11,6 @@ PODS: - CNIOWindows (2.40.0) - disklet (0.6.0): - React - - DoubleConversion (1.1.6) - edge-core-js (2.48.1): - React-Core - edge-currency-accountbased (4.90.1): @@ -25,14 +21,12 @@ PODS: - React-Core - edge-login-ui-rn (3.37.2): - React-Core - - EXConstants (17.1.7): + - EXConstants (57.0.6): - ExpoModulesCore - - Expo (53.0.20): - - DoubleConversion + - Expo (57.0.7): - ExpoModulesCore - - glog + - ExpoModulesJSI - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -40,7 +34,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -53,20 +46,27 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - ExpoAsset (11.1.7): + - ExpoAsset (57.0.6): + - ExpoModulesCore + - ExpoBlur (57.0.2): + - ExpoModulesCore + - ExpoDomWebView (57.0.1): - ExpoModulesCore - - ExpoFileSystem (18.1.11): + - ExpoFileSystem (57.0.1): - ExpoModulesCore - - ExpoFont (13.3.2): + - ExpoFont (57.0.1): - ExpoModulesCore - - ExpoKeepAwake (14.1.4): + - ExpoKeepAwake (57.0.1): - ExpoModulesCore - - ExpoModulesCore (2.5.0): - - DoubleConversion - - glog + - ExpoLinearGradient (57.0.1): + - ExpoModulesCore + - ExpoLogBox (57.0.1): + - React-Core + - ExpoModulesCore (57.0.6): + - ExpoModulesJSI - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -74,7 +74,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-jsinspector @@ -86,67 +85,74 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga + - ExpoModulesJSI (57.0.6): + - React-Core + - ReactCommon + - ExpoModulesWorklets (57.0.6): + - ExpoModulesCore + - ExpoModulesJSI + - ExpoModulesWorkletsAdapter (57.0.6): + - ExpoModulesCore + - ExpoModulesJSI + - ExpoModulesWorklets + - RNWorklets - ExpoQuickActions (5.0.0): - ExpoModulesCore - - fast_float (6.1.4) - - FBLazyVector (0.79.2) - - Firebase/CoreOnly (10.29.0): - - FirebaseCore (= 10.29.0) - - Firebase/Messaging (10.29.0): + - FBLazyVector (0.86.0) + - Firebase/CoreOnly (12.15.0): + - FirebaseCore (~> 12.15.0) + - Firebase/Messaging (12.15.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.29.0) - - FirebaseCore (10.29.0): - - FirebaseCoreInternal (~> 10.0) - - GoogleUtilities/Environment (~> 7.12) - - GoogleUtilities/Logger (~> 7.12) - - FirebaseCoreExtension (10.29.0): - - FirebaseCore (~> 10.0) - - FirebaseCoreInternal (10.29.0): - - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseInstallations (10.29.0): - - FirebaseCore (~> 10.0) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/UserDefaults (~> 7.8) - - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.29.0): - - FirebaseCore (~> 10.0) - - FirebaseInstallations (~> 10.0) - - GoogleDataTransport (~> 9.3) - - GoogleUtilities/AppDelegateSwizzler (~> 7.8) - - GoogleUtilities/Environment (~> 7.8) - - GoogleUtilities/Reachability (~> 7.8) - - GoogleUtilities/UserDefaults (~> 7.8) - - nanopb (< 2.30911.0, >= 2.30908.0) - - fmt (11.0.2) - - glog (0.3.5) - - GoogleDataTransport (9.4.1): - - GoogleUtilities/Environment (~> 7.7) - - nanopb (< 2.30911.0, >= 2.30908.0) - - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/AppDelegateSwizzler (7.13.3): + - FirebaseMessaging (~> 12.15.0) + - FirebaseCore (12.15.0): + - FirebaseCoreInternal (~> 12.15.0) + - GoogleUtilities/Environment (~> 8.1) + - GoogleUtilities/Logger (~> 8.1) + - FirebaseCoreExtension (12.15.0): + - FirebaseCore (~> 12.15.0) + - FirebaseCoreInternal (12.15.0): + - "GoogleUtilities/NSData+zlib (~> 8.1)" + - FirebaseInstallations (12.15.0): + - FirebaseCore (~> 12.15.0) + - GoogleUtilities/Environment (~> 8.1) + - GoogleUtilities/UserDefaults (~> 8.1) + - PromisesObjC (~> 2.4) + - FirebaseMessaging (12.15.0): + - FirebaseCore (~> 12.15.0) + - FirebaseInstallations (~> 12.15.0) + - GoogleDataTransport (~> 10.1) + - GoogleUtilities/AppDelegateSwizzler (~> 8.1) + - GoogleUtilities/Environment (~> 8.1) + - GoogleUtilities/Reachability (~> 8.1) + - GoogleUtilities/UserDefaults (~> 8.1) + - nanopb (~> 3.30910.0) + - GoogleDataTransport (10.1.0): + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) + - GoogleUtilities/AppDelegateSwizzler (8.1.2): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - GoogleUtilities/Privacy - - GoogleUtilities/Environment (7.13.3): + - GoogleUtilities/Environment (8.1.2): - GoogleUtilities/Privacy - - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.13.3): + - GoogleUtilities/Logger (8.1.2): - GoogleUtilities/Environment - GoogleUtilities/Privacy - - GoogleUtilities/Network (7.13.3): + - GoogleUtilities/Network (8.1.2): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Privacy - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.13.3)": + - "GoogleUtilities/NSData+zlib (8.1.2)": - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (7.13.3) - - GoogleUtilities/Reachability (7.13.3): + - GoogleUtilities/Privacy (8.1.2) + - GoogleUtilities/Reachability (8.1.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (7.13.3): + - GoogleUtilities/UserDefaults (8.1.2): - GoogleUtilities/Logger - GoogleUtilities/Privacy - gRPC-Swift (1.8.0): @@ -158,9 +164,9 @@ PODS: - SwiftNIOSSL (< 3.0.0, >= 2.14.0) - SwiftNIOTransportServices (< 2.0.0, >= 1.11.1) - SwiftProtobuf (< 2.0.0, >= 1.19.0) - - hermes-engine (0.79.2): - - hermes-engine/Pre-built (= 0.79.2) - - hermes-engine/Pre-built (0.79.2) + - hermes-engine (250829098.0.14): + - hermes-engine/Pre-built (= 250829098.0.14) + - hermes-engine/Pre-built (250829098.0.14) - ImageColors (2.4.0): - ExpoModulesCore - libwebp (1.5.0): @@ -177,74 +183,56 @@ PODS: - libwebp/sharpyuv - Logging (1.4.0) - MnemonicSwift (2.2.4) - - nanopb (2.30910.0): - - nanopb/decode (= 2.30910.0) - - nanopb/encode (= 2.30910.0) - - nanopb/decode (2.30910.0) - - nanopb/encode (2.30910.0) - - OpenSSL-Universal (3.3.3001) - - PromisesObjC (2.4.0) - - RCT-Folly (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Default (= 2024.11.18.00) - - RCT-Folly/Default (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - RCT-Folly/Fabric (2024.11.18.00): - - boost - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - RCTDeprecation (0.79.2) - - RCTRequired (0.79.2) - - RCTTypeSafety (0.79.2): - - FBLazyVector (= 0.79.2) - - RCTRequired (= 0.79.2) - - React-Core (= 0.79.2) - - React (0.79.2): - - React-Core (= 0.79.2) - - React-Core/DevSupport (= 0.79.2) - - React-Core/RCTWebSocket (= 0.79.2) - - React-RCTActionSheet (= 0.79.2) - - React-RCTAnimation (= 0.79.2) - - React-RCTBlob (= 0.79.2) - - React-RCTImage (= 0.79.2) - - React-RCTLinking (= 0.79.2) - - React-RCTNetwork (= 0.79.2) - - React-RCTSettings (= 0.79.2) - - React-RCTText (= 0.79.2) - - React-RCTVibration (= 0.79.2) - - React-callinvoker (0.79.2) - - React-Core (0.79.2): - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) + - nanopb (3.30910.0): + - nanopb/decode (= 3.30910.0) + - nanopb/encode (= 3.30910.0) + - nanopb/decode (3.30910.0) + - nanopb/encode (3.30910.0) + - OpenSSL-Universal (3.6.2000) + - PromisesObjC (2.4.1) + - RCTDeprecation (0.86.0) + - RCTRequired (0.86.0) + - RCTSwiftUI (0.86.0) + - RCTSwiftUIWrapper (0.86.0): + - RCTSwiftUI + - RCTTypeSafety (0.86.0): + - FBLazyVector (= 0.86.0) + - RCTRequired (= 0.86.0) + - React-Core (= 0.86.0) + - React (0.86.0): + - React-Core (= 0.86.0) + - React-Core/DevSupport (= 0.86.0) + - React-Core/RCTWebSocket (= 0.86.0) + - React-RCTActionSheet (= 0.86.0) + - React-RCTAnimation (= 0.86.0) + - React-RCTBlob (= 0.86.0) + - React-RCTImage (= 0.86.0) + - React-RCTLinking (= 0.86.0) + - React-RCTNetwork (= 0.86.0) + - React-RCTSettings (= 0.86.0) + - React-RCTText (= 0.86.0) + - React-RCTVibration (= 0.86.0) + - React-callinvoker (0.86.0) + - React-Core (0.86.0): + - hermes-engine - RCTDeprecation - - React-Core/Default (= 0.79.2) + - React-Core/Default (= 0.86.0) - React-cxxreact - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/CoreModulesHeaders (0.79.2): - - glog + - React-Core/CoreModulesHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -253,16 +241,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/Default (0.79.2): - - glog + - React-Core/Default (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-cxxreact - React-featureflags @@ -270,35 +258,35 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/DevSupport (0.79.2): - - glog + - React-Core/DevSupport (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - - React-Core/Default (= 0.79.2) - - React-Core/RCTWebSocket (= 0.79.2) + - React-Core/Default (= 0.86.0) + - React-Core/RCTWebSocket (= 0.86.0) - React-cxxreact - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTActionSheetHeaders (0.79.2): - - glog + - React-Core/RCTActionSheetHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -307,16 +295,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTAnimationHeaders (0.79.2): - - glog + - React-Core/RCTAnimationHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -325,16 +313,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTBlobHeaders (0.79.2): - - glog + - React-Core/RCTBlobHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -343,16 +331,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTImageHeaders (0.79.2): - - glog + - React-Core/RCTImageHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -361,16 +349,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTLinkingHeaders (0.79.2): - - glog + - React-Core/RCTLinkingHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -379,16 +367,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTNetworkHeaders (0.79.2): - - glog + - React-Core/RCTNetworkHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -397,16 +385,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTSettingsHeaders (0.79.2): - - glog + - React-Core/RCTSettingsHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -415,16 +403,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTTextHeaders (0.79.2): - - glog + - React-Core/RCTTextHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -433,16 +421,16 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTVibrationHeaders (0.79.2): - - glog + - React-Core/RCTVibrationHeaders (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - React-Core/Default - React-cxxreact @@ -451,154 +439,154 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-Core/RCTWebSocket (0.79.2): - - glog + - React-Core/RCTWebSocket (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTDeprecation - - React-Core/Default (= 0.79.2) + - React-Core/Default (= 0.86.0) - React-cxxreact - React-featureflags - React-hermes - React-jsi - React-jsiexecutor - React-jsinspector + - React-jsinspectorcdp - React-jsitooling - React-perflogger + - React-runtimeexecutor - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.1) + - ReactNativeDependencies - Yoga - - React-CoreModules (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - RCT-Folly (= 2024.11.18.00) - - RCTTypeSafety (= 0.79.2) - - React-Core/CoreModulesHeaders (= 0.79.2) - - React-jsi (= 0.79.2) + - React-CoreModules (0.86.0): + - RCTTypeSafety (= 0.86.0) + - React-Core/CoreModulesHeaders (= 0.86.0) + - React-debug + - React-featureflags + - React-jsi (= 0.86.0) - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.79.2) + - React-RCTImage (= 0.86.0) + - React-runtimeexecutor + - React-utils - ReactCommon - - SocketRocket (= 0.7.1) - - React-cxxreact (0.79.2): - - boost - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - React-callinvoker (= 0.79.2) - - React-debug (= 0.79.2) - - React-jsi (= 0.79.2) + - ReactNativeDependencies + - React-cxxreact (0.86.0): + - hermes-engine + - React-callinvoker (= 0.86.0) + - React-debug (= 0.86.0) + - React-jsi (= 0.86.0) - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.79.2) - - React-perflogger (= 0.79.2) - - React-runtimeexecutor (= 0.79.2) - - React-timing (= 0.79.2) - - React-debug (0.79.2) - - React-defaultsnativemodule (0.79.2): - - hermes-engine - - RCT-Folly + - React-logger (= 0.86.0) + - React-perflogger (= 0.86.0) + - React-runtimeexecutor + - React-timing (= 0.86.0) + - React-utils + - ReactNativeDependencies + - React-debug (0.86.0): + - React-debug/redbox (= 0.86.0) + - React-debug/redbox (0.86.0) + - React-defaultsnativemodule (0.86.0): + - hermes-engine - React-domnativemodule + - React-Fabric/animated + - React-featureflags - React-featureflagsnativemodule - - React-hermes - React-idlecallbacksnativemodule + - React-intersectionobservernativemodule - React-jsi - React-jsiexecutor - React-microtasksnativemodule + - React-mutationobservernativemodule - React-RCTFBReactNativeSpec - - React-domnativemodule (0.79.2): + - React-viewtransitionnativemodule + - React-webperformancenativemodule + - ReactNativeDependencies + - Yoga + - React-domnativemodule (0.86.0): - hermes-engine - - RCT-Folly - React-Fabric + - React-Fabric/bridging - React-FabricComponents - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec + - React-runtimeexecutor - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-Fabric (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-Fabric (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.79.2) - - React-Fabric/attributedstring (= 0.79.2) - - React-Fabric/componentregistry (= 0.79.2) - - React-Fabric/componentregistrynative (= 0.79.2) - - React-Fabric/components (= 0.79.2) - - React-Fabric/consistency (= 0.79.2) - - React-Fabric/core (= 0.79.2) - - React-Fabric/dom (= 0.79.2) - - React-Fabric/imagemanager (= 0.79.2) - - React-Fabric/leakchecker (= 0.79.2) - - React-Fabric/mounting (= 0.79.2) - - React-Fabric/observers (= 0.79.2) - - React-Fabric/scheduler (= 0.79.2) - - React-Fabric/telemetry (= 0.79.2) - - React-Fabric/templateprocessor (= 0.79.2) - - React-Fabric/uimanager (= 0.79.2) + - React-Fabric/animated (= 0.86.0) + - React-Fabric/animationbackend (= 0.86.0) + - React-Fabric/animations (= 0.86.0) + - React-Fabric/attributedstring (= 0.86.0) + - React-Fabric/bridging (= 0.86.0) + - React-Fabric/componentregistry (= 0.86.0) + - React-Fabric/componentregistrynative (= 0.86.0) + - React-Fabric/components (= 0.86.0) + - React-Fabric/consistency (= 0.86.0) + - React-Fabric/core (= 0.86.0) + - React-Fabric/dom (= 0.86.0) + - React-Fabric/imagemanager (= 0.86.0) + - React-Fabric/leakchecker (= 0.86.0) + - React-Fabric/mounting (= 0.86.0) + - React-Fabric/observers (= 0.86.0) + - React-Fabric/scheduler (= 0.86.0) + - React-Fabric/telemetry (= 0.86.0) + - React-Fabric/uimanager (= 0.86.0) + - React-Fabric/viewtransition (= 0.86.0) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/animated (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/animationbackend - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/animationbackend (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -606,21 +594,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/animations (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -628,21 +612,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/attributedstring (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -650,47 +630,35 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/bridging (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.79.2) - - React-Fabric/components/root (= 0.79.2) - - React-Fabric/components/scrollview (= 0.79.2) - - React-Fabric/components/view (= 0.79.2) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/componentregistry (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -698,21 +666,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/componentregistrynative (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -720,43 +684,93 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/components (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/components/legacyviewmanagerinterop (= 0.86.0) + - React-Fabric/components/root (= 0.86.0) + - React-Fabric/components/scrollview (= 0.86.0) + - React-Fabric/components/view (= 0.86.0) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/components/legacyviewmanagerinterop (0.86.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - React-Fabric/components/root (0.86.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - React-Fabric/components/scrollview (0.86.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - React-Fabric/components/view (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -764,23 +778,19 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-renderercss - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-Fabric/consistency (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-Fabric/consistency (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -788,21 +798,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/core (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/core (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -810,21 +816,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/dom (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/dom (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -832,21 +834,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/imagemanager (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -854,21 +852,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/leakchecker (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -876,21 +870,17 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/mounting (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -898,44 +888,57 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor + - React-jsinspectortracing - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/observers (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/observers (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.79.2) + - React-Fabric/observers/events (= 0.86.0) + - React-Fabric/observers/intersection (= 0.86.0) + - React-Fabric/observers/mutation (= 0.86.0) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/observers/events (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/observers/events (0.86.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - React-Fabric/observers/intersection (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -943,45 +946,58 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/observers/mutation (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimeexecutor + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - React-Fabric/scheduler (0.86.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animationbackend - React-Fabric/observers/events + - React-Fabric/viewtransition - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-performancecdpmetrics - React-performancetimeline - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/telemetry (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -989,67 +1005,56 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/uimanager (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug + - React-Fabric/uimanager/consistency (= 0.86.0) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-rendererconsistency - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/uimanager/consistency (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.79.2) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - React-rendererconsistency - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/uimanager/consistency (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-Fabric/viewtransition (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1057,81 +1062,70 @@ PODS: - React-debug - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger - - React-rendererconsistency - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-FabricComponents (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-FabricComponents (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.79.2) - - React-FabricComponents/textlayoutmanager (= 0.79.2) + - React-FabricComponents/components (= 0.86.0) + - React-FabricComponents/textlayoutmanager (= 0.86.0) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.79.2) - - React-FabricComponents/components/iostextinput (= 0.79.2) - - React-FabricComponents/components/modal (= 0.79.2) - - React-FabricComponents/components/rncore (= 0.79.2) - - React-FabricComponents/components/safeareaview (= 0.79.2) - - React-FabricComponents/components/scrollview (= 0.79.2) - - React-FabricComponents/components/text (= 0.79.2) - - React-FabricComponents/components/textinput (= 0.79.2) - - React-FabricComponents/components/unimplementedview (= 0.79.2) + - React-FabricComponents/components/inputaccessory (= 0.86.0) + - React-FabricComponents/components/iostextinput (= 0.86.0) + - React-FabricComponents/components/modal (= 0.86.0) + - React-FabricComponents/components/rncore (= 0.86.0) + - React-FabricComponents/components/safeareaview (= 0.86.0) + - React-FabricComponents/components/scrollview (= 0.86.0) + - React-FabricComponents/components/switch (= 0.86.0) + - React-FabricComponents/components/text (= 0.86.0) + - React-FabricComponents/components/textinput (= 0.86.0) + - React-FabricComponents/components/unimplementedview (= 0.86.0) + - React-FabricComponents/components/virtualview (= 0.86.0) - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/inputaccessory (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/inputaccessory (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1140,22 +1134,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/iostextinput (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/iostextinput (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1164,22 +1154,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/modal (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/modal (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1188,22 +1174,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/rncore (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/rncore (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1212,22 +1194,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/safeareaview (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/safeareaview (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1236,22 +1214,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/scrollview (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/scrollview (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1260,22 +1234,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/text (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/switch (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1284,22 +1254,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/textinput (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/text (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1308,22 +1274,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/components/unimplementedview (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/textinput (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1332,22 +1294,18 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricComponents/textlayoutmanager (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/unimplementedview (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1356,165 +1314,227 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-logger + - React-RCTFBReactNativeSpec - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - React-FabricImage (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - React-FabricComponents/components/virtualview (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - - RCTRequired (= 0.79.2) - - RCTTypeSafety (= 0.79.2) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - React-FabricComponents/textlayoutmanager (0.86.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - React-FabricImage (0.86.0): + - hermes-engine + - RCTRequired (= 0.86.0) + - RCTTypeSafety (= 0.86.0) - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.79.2) + - React-jsiexecutor (= 0.86.0) - React-logger - React-rendererdebug - React-utils - ReactCommon + - ReactNativeDependencies - Yoga - - React-featureflags (0.79.2): - - RCT-Folly (= 2024.11.18.00) - - React-featureflagsnativemodule (0.79.2): + - React-featureflags (0.86.0): + - ReactNativeDependencies + - React-featureflagsnativemodule (0.86.0): - hermes-engine - - RCT-Folly - React-featureflags - - React-hermes - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - - React-graphics (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-graphics (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - - React-hermes + - React-featureflags - React-jsi - React-jsiexecutor + - React-rendererdebug - React-utils - - React-hermes (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog + - ReactNativeDependencies + - React-hermes (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - React-cxxreact (= 0.79.2) + - React-cxxreact (= 0.86.0) - React-jsi - - React-jsiexecutor (= 0.79.2) + - React-jsiexecutor (= 0.86.0) - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.79.2) + - React-jsitooling + - React-oscompat + - React-perflogger (= 0.86.0) - React-runtimeexecutor - - React-idlecallbacksnativemodule (0.79.2): - - glog + - ReactNativeDependencies + - React-idlecallbacksnativemodule (0.86.0): - hermes-engine - - RCT-Folly - - React-hermes - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec + - React-runtimeexecutor - React-runtimescheduler - ReactCommon/turbomodule/core - - React-ImageManager (0.79.2): - - glog - - RCT-Folly/Fabric + - ReactNativeDependencies + - React-ImageManager (0.86.0): - React-Core/Default - React-debug - React-Fabric - React-graphics - React-rendererdebug - React-utils - - React-jserrorhandler (0.79.2): - - glog + - ReactNativeDependencies + - React-intersectionobservernativemodule (0.86.0): + - hermes-engine + - React-cxxreact + - React-Fabric + - React-Fabric/bridging + - React-graphics + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - React-runtimescheduler + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - React-jserrorhandler (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - React-cxxreact - React-debug - React-featureflags - React-jsi - ReactCommon/turbomodule/bridging - - React-jsi (0.79.2): - - boost - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - React-jsiexecutor (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - React-cxxreact (= 0.79.2) - - React-jsi (= 0.79.2) + - ReactNativeDependencies + - React-jsi (0.86.0): + - hermes-engine + - ReactNativeDependencies + - React-jsiexecutor (0.86.0): + - hermes-engine + - React-cxxreact + - React-debug + - React-jserrorhandler + - React-jsi - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.79.2) - - React-jsinspector (0.79.2): - - DoubleConversion - - glog + - React-jsitooling + - React-perflogger + - React-runtimeexecutor + - React-utils + - ReactNativeDependencies + - React-jsinspector (0.86.0): - hermes-engine - - RCT-Folly - React-featureflags - React-jsi + - React-jsinspectorcdp + - React-jsinspectornetwork - React-jsinspectortracing - - React-perflogger (= 0.79.2) - - React-runtimeexecutor (= 0.79.2) - - React-jsinspectortracing (0.79.2): - - RCT-Folly - React-oscompat - - React-jsitooling (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - RCT-Folly (= 2024.11.18.00) - - React-cxxreact (= 0.79.2) - - React-jsi (= 0.79.2) + - React-perflogger (= 0.86.0) + - React-runtimeexecutor + - React-utils + - ReactNativeDependencies + - React-jsinspectorcdp (0.86.0): + - ReactNativeDependencies + - React-jsinspectornetwork (0.86.0): + - React-jsinspectorcdp + - ReactNativeDependencies + - React-jsinspectortracing (0.86.0): + - hermes-engine + - React-jsi + - React-jsinspectornetwork + - React-oscompat + - React-timing + - React-utils + - ReactNativeDependencies + - React-jsitooling (0.86.0): + - hermes-engine + - React-cxxreact (= 0.86.0) + - React-debug + - React-jsi (= 0.86.0) - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing - - React-jsitracing (0.79.2): + - React-runtimeexecutor + - React-utils + - ReactNativeDependencies + - React-jsitracing (0.86.0): - React-jsi - - React-logger (0.79.2): - - glog - - React-Mapbuffer (0.79.2): - - glog + - React-logger (0.86.0): + - ReactNativeDependencies + - React-Mapbuffer (0.86.0): - React-debug - - React-microtasksnativemodule (0.79.2): + - ReactNativeDependencies + - React-microtasksnativemodule (0.86.0): - hermes-engine - - RCT-Folly - - React-hermes - React-jsi - React-jsiexecutor - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core + - ReactNativeDependencies + - React-mutationobservernativemodule (0.86.0): + - hermes-engine + - React-cxxreact + - React-Fabric + - React-Fabric/bridging + - React-Fabric/observers/mutation + - React-featureflags + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga - react-native-adservices (0.1.3): - React-Core - react-native-compat (2.21.6): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1522,7 +1542,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -1533,12 +1552,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - react-native-contacts (8.0.10): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1546,7 +1563,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -1557,14 +1573,12 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - react-native-get-random-values (1.11.0): - React-Core - react-native-image-picker (8.2.1): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1572,7 +1586,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -1583,14 +1596,12 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - react-native-in-app-review (4.3.5): - React-Core - - react-native-keyboard-controller (1.19.0): - - DoubleConversion - - glog + - react-native-keyboard-controller (1.22.2): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1598,10 +1609,9 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - - react-native-keyboard-controller/common (= 1.19.0) + - react-native-keyboard-controller/common (= 1.22.2) - React-NativeModulesApple - React-RCTFabric - React-renderercss @@ -1610,12 +1620,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - react-native-keyboard-controller/common (1.19.0): - - DoubleConversion - - glog + - react-native-keyboard-controller/common (1.22.2): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1623,7 +1631,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -1634,18 +1641,35 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - react-native-mail (6.1.1): - React-Core - react-native-monero (0.5.0): - React-Core - - react-native-netinfo (11.4.1): + - react-native-netinfo (12.0.1): + - hermes-engine + - RCTRequired + - RCTTypeSafety - React-Core - - react-native-performance (5.1.4): - - DoubleConversion - - glog + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - react-native-performance (6.0.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1653,7 +1677,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -1664,6 +1687,7 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - react-native-piratechain (0.6.3): - gRPC-Swift (~> 1.8) @@ -1674,11 +1698,8 @@ PODS: - React-Core - react-native-safari-view (1.0.0): - React - - react-native-safe-area-context (5.6.1): - - DoubleConversion - - glog + - react-native-safe-area-context (5.7.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1686,11 +1707,10 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - - react-native-safe-area-context/common (= 5.6.1) - - react-native-safe-area-context/fabric (= 5.6.1) + - react-native-safe-area-context/common (= 5.7.0) + - react-native-safe-area-context/fabric (= 5.7.0) - React-NativeModulesApple - React-RCTFabric - React-renderercss @@ -1699,12 +1719,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - react-native-safe-area-context/common (5.6.1): - - DoubleConversion - - glog + - react-native-safe-area-context/common (5.7.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1712,7 +1730,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -1723,12 +1740,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - react-native-safe-area-context/fabric (5.6.1): - - DoubleConversion - - glog + - react-native-safe-area-context/fabric (5.7.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1736,7 +1751,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - react-native-safe-area-context/common @@ -1748,12 +1762,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - react-native-webview (13.15.0): - - DoubleConversion - - glog + - react-native-webview (13.16.1): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1761,7 +1773,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -1772,6 +1783,7 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - react-native-zano (0.5.1): - OpenSSL-Universal @@ -1781,43 +1793,57 @@ PODS: - MnemonicSwift (~> 2.2) - React-Core - SQLite.swift/standalone (~> 0.14) - - React-NativeModulesApple (0.79.2): - - glog + - React-NativeModulesApple (0.86.0): - hermes-engine - React-callinvoker - React-Core - React-cxxreact + - React-debug - React-featureflags - - React-hermes - React-jsi - React-jsinspector + - React-jsinspectorcdp - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-oscompat (0.79.2) - - React-perflogger (0.79.2): - - DoubleConversion - - RCT-Folly (= 2024.11.18.00) - - React-performancetimeline (0.79.2): - - RCT-Folly (= 2024.11.18.00) - - React-cxxreact + - ReactNativeDependencies + - React-networking (0.86.0): + - React-jsinspectornetwork + - React-jsinspectortracing + - React-performancetimeline + - React-timing + - ReactNativeDependencies + - React-oscompat (0.86.0) + - React-perflogger (0.86.0): + - ReactNativeDependencies + - React-performancecdpmetrics (0.86.0): + - hermes-engine + - React-jsi + - React-performancetimeline + - React-runtimeexecutor + - React-timing + - ReactNativeDependencies + - React-performancetimeline (0.86.0): - React-featureflags + - React-jsinspector - React-jsinspectortracing - React-perflogger - React-timing - - React-RCTActionSheet (0.79.2): - - React-Core/RCTActionSheetHeaders (= 0.79.2) - - React-RCTAnimation (0.79.2): - - RCT-Folly (= 2024.11.18.00) + - ReactNativeDependencies + - React-RCTActionSheet (0.86.0): + - React-Core/RCTActionSheetHeaders (= 0.86.0) + - React-RCTAnimation (0.86.0): - RCTTypeSafety - React-Core/RCTAnimationHeaders + - React-debug + - React-featureflags - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTAppDelegate (0.79.2): + - ReactNativeDependencies + - React-RCTAppDelegate (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -1838,27 +1864,26 @@ PODS: - React-rendererdebug - React-RuntimeApple - React-RuntimeCore + - React-runtimeexecutor - React-runtimescheduler - React-utils - ReactCommon - - React-RCTBlob (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) + - ReactNativeDependencies + - React-RCTBlob (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - React-Core/RCTBlobHeaders - React-Core/RCTWebSocket - React-jsi - React-jsinspector + - React-jsinspectorcdp - React-NativeModulesApple - React-RCTFBReactNativeSpec - React-RCTNetwork - ReactCommon - - React-RCTFabric (0.79.2): - - glog + - ReactNativeDependencies + - React-RCTFabric (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) + - RCTSwiftUIWrapper - React-Core - React-debug - React-Fabric @@ -1866,34 +1891,53 @@ PODS: - React-FabricImage - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing + - React-networking + - React-performancecdpmetrics - React-performancetimeline - React-RCTAnimation + - React-RCTFBReactNativeSpec - React-RCTImage - React-RCTText - React-rendererconsistency - React-renderercss - React-rendererdebug + - React-runtimeexecutor - React-runtimescheduler - React-utils + - ReactNativeDependencies - Yoga - - React-RCTFBReactNativeSpec (0.79.2): + - React-RCTFBReactNativeSpec (0.86.0): - hermes-engine - - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core - - React-hermes - React-jsi - - React-jsiexecutor - React-NativeModulesApple + - React-RCTFBReactNativeSpec/components (= 0.86.0) - ReactCommon - - React-RCTImage (0.79.2): - - RCT-Folly (= 2024.11.18.00) + - ReactNativeDependencies + - React-RCTFBReactNativeSpec/components (0.86.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-NativeModulesApple + - React-rendererdebug + - React-utils + - ReactCommon + - ReactNativeDependencies + - Yoga + - React-RCTImage (0.86.0): - RCTTypeSafety - React-Core/RCTImageHeaders - React-jsi @@ -1901,66 +1945,69 @@ PODS: - React-RCTFBReactNativeSpec - React-RCTNetwork - ReactCommon - - React-RCTLinking (0.79.2): - - React-Core/RCTLinkingHeaders (= 0.79.2) - - React-jsi (= 0.79.2) + - ReactNativeDependencies + - React-RCTLinking (0.86.0): + - React-Core/RCTLinkingHeaders (= 0.86.0) + - React-jsi (= 0.86.0) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.79.2) - - React-RCTNetwork (0.79.2): - - RCT-Folly (= 2024.11.18.00) + - ReactCommon/turbomodule/core (= 0.86.0) + - React-RCTNetwork (0.86.0): - RCTTypeSafety - React-Core/RCTNetworkHeaders + - React-debug + - React-featureflags - React-jsi + - React-jsinspectorcdp + - React-jsinspectornetwork - React-NativeModulesApple + - React-networking - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTRuntime (0.79.2): - - glog + - ReactNativeDependencies + - React-RCTRuntime (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - React-Core - - React-hermes + - React-debug - React-jsi - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing - React-jsitooling - React-RuntimeApple - React-RuntimeCore + - React-runtimeexecutor - React-RuntimeHermes - - React-RCTSettings (0.79.2): - - RCT-Folly (= 2024.11.18.00) + - React-utils + - ReactNativeDependencies + - React-RCTSettings (0.86.0): - RCTTypeSafety - React-Core/RCTSettingsHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - React-RCTText (0.79.2): - - React-Core/RCTTextHeaders (= 0.79.2) + - ReactNativeDependencies + - React-RCTText (0.86.0): + - React-Core/RCTTextHeaders (= 0.86.0) - Yoga - - React-RCTVibration (0.79.2): - - RCT-Folly (= 2024.11.18.00) + - React-RCTVibration (0.86.0): - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - React-rendererconsistency (0.79.2) - - React-renderercss (0.79.2): + - ReactNativeDependencies + - React-rendererconsistency (0.86.0) + - React-renderercss (0.86.0): - React-debug - React-utils - - React-rendererdebug (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - RCT-Folly (= 2024.11.18.00) + - React-rendererdebug (0.86.0): - React-debug - - React-rncore (0.79.2) - - React-RuntimeApple (0.79.2): + - ReactNativeDependencies + - React-RuntimeApple (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - React-callinvoker - React-Core/Default - React-CoreModules @@ -1980,14 +2027,12 @@ PODS: - React-RuntimeHermes - React-runtimescheduler - React-utils - - React-RuntimeCore (0.79.2): - - glog + - ReactNativeDependencies + - React-RuntimeCore (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - React-cxxreact - React-Fabric - React-featureflags - - React-hermes - React-jserrorhandler - React-jsi - React-jsiexecutor @@ -1997,29 +2042,33 @@ PODS: - React-runtimeexecutor - React-runtimescheduler - React-utils - - React-runtimeexecutor (0.79.2): - - React-jsi (= 0.79.2) - - React-RuntimeHermes (0.79.2): + - ReactNativeDependencies + - React-runtimeexecutor (0.86.0): + - React-debug + - React-featureflags + - React-jsi (= 0.86.0) + - React-utils + - ReactNativeDependencies + - React-RuntimeHermes (0.86.0): - hermes-engine - - RCT-Folly/Fabric (= 2024.11.18.00) - React-featureflags - React-hermes - React-jsi - React-jsinspector + - React-jsinspectorcdp - React-jsinspectortracing - React-jsitooling - React-jsitracing - React-RuntimeCore + - React-runtimeexecutor - React-utils - - React-runtimescheduler (0.79.2): - - glog + - ReactNativeDependencies + - React-runtimescheduler (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - React-callinvoker - React-cxxreact - React-debug - React-featureflags - - React-hermes - React-jsi - React-jsinspectortracing - React-performancetimeline @@ -2028,21 +2077,39 @@ PODS: - React-runtimeexecutor - React-timing - React-utils - - React-timing (0.79.2) - - React-utils (0.79.2): - - glog + - ReactNativeDependencies + - React-timing (0.86.0): + - React-debug + - React-utils (0.86.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - React-debug - - React-hermes - - React-jsi (= 0.79.2) - - ReactAppDependencyProvider (0.79.2): + - React-jsi (= 0.86.0) + - ReactNativeDependencies + - React-viewtransitionnativemodule (0.86.0): + - hermes-engine + - React-Fabric + - React-Fabric/bridging + - React-jsi + - React-jsiexecutor + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - React-webperformancenativemodule (0.86.0): + - hermes-engine + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-performancetimeline + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - ReactAppDependencyProvider (0.86.0): - ReactCodegen - - ReactCodegen (0.79.2): - - DoubleConversion - - glog + - ReactCodegen (0.86.0): - hermes-engine - - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core @@ -2051,7 +2118,6 @@ PODS: - React-FabricImage - React-featureflags - React-graphics - - React-hermes - React-jsi - React-jsiexecutor - React-NativeModulesApple @@ -2060,54 +2126,42 @@ PODS: - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - ReactCommon (0.79.2): - - ReactCommon/turbomodule (= 0.79.2) - - ReactCommon/turbomodule (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - React-callinvoker (= 0.79.2) - - React-cxxreact (= 0.79.2) - - React-jsi (= 0.79.2) - - React-logger (= 0.79.2) - - React-perflogger (= 0.79.2) - - ReactCommon/turbomodule/bridging (= 0.79.2) - - ReactCommon/turbomodule/core (= 0.79.2) - - ReactCommon/turbomodule/bridging (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - React-callinvoker (= 0.79.2) - - React-cxxreact (= 0.79.2) - - React-jsi (= 0.79.2) - - React-logger (= 0.79.2) - - React-perflogger (= 0.79.2) - - ReactCommon/turbomodule/core (0.79.2): - - DoubleConversion - - fast_float (= 6.1.4) - - fmt (= 11.0.2) - - glog - - hermes-engine - - RCT-Folly (= 2024.11.18.00) - - React-callinvoker (= 0.79.2) - - React-cxxreact (= 0.79.2) - - React-debug (= 0.79.2) - - React-featureflags (= 0.79.2) - - React-jsi (= 0.79.2) - - React-logger (= 0.79.2) - - React-perflogger (= 0.79.2) - - React-utils (= 0.79.2) + - ReactNativeDependencies + - ReactCommon (0.86.0): + - ReactCommon/turbomodule (= 0.86.0) + - ReactNativeDependencies + - ReactCommon/turbomodule (0.86.0): + - hermes-engine + - React-callinvoker (= 0.86.0) + - React-cxxreact (= 0.86.0) + - React-jsi (= 0.86.0) + - React-logger (= 0.86.0) + - React-perflogger (= 0.86.0) + - ReactCommon/turbomodule/bridging (= 0.86.0) + - ReactCommon/turbomodule/core (= 0.86.0) + - ReactNativeDependencies + - ReactCommon/turbomodule/bridging (0.86.0): + - hermes-engine + - React-callinvoker (= 0.86.0) + - React-cxxreact (= 0.86.0) + - React-jsi (= 0.86.0) + - React-logger (= 0.86.0) + - React-perflogger (= 0.86.0) + - ReactNativeDependencies + - ReactCommon/turbomodule/core (0.86.0): + - hermes-engine + - React-callinvoker (= 0.86.0) + - React-cxxreact (= 0.86.0) + - React-debug (= 0.86.0) + - React-featureflags (= 0.86.0) + - React-jsi (= 0.86.0) + - React-logger (= 0.86.0) + - React-perflogger (= 0.86.0) + - React-utils (= 0.86.0) + - ReactNativeDependencies + - ReactNativeDependencies (0.86.0) - ReactNativeFileAccess (3.1.1): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2115,7 +2169,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2126,15 +2179,13 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - ZIPFoundation - rn-id-blurview (1.2.1): - React - - RNBootSplash (6.3.8): - - DoubleConversion - - glog + - RNBootSplash (6.3.12): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2142,7 +2193,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2153,12 +2203,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - RNCAsyncStorage (1.19.4): - - DoubleConversion - - glog + - RNCAsyncStorage (2.2.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2166,7 +2214,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2177,12 +2224,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNCClipboard (1.16.3): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2190,7 +2235,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2201,12 +2245,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - RNCPicker (2.11.2): - - DoubleConversion - - glog + - RNCPicker (2.11.4): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2214,7 +2256,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2225,12 +2266,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - RNDateTimePicker (8.4.2): - - DoubleConversion - - glog + - RNDateTimePicker (9.1.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2238,7 +2277,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2249,6 +2287,7 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNDeviceInfo (13.2.0): - React-Core @@ -2256,21 +2295,56 @@ PODS: - React-Core - SDWebImage (~> 5.11.1) - SDWebImageWebPCoder (~> 0.8.4) - - RNFBApp (20.5.0): - - Firebase/CoreOnly (= 10.29.0) + - RNFBApp (25.1.0): + - Firebase/CoreOnly (= 12.15.0) + - hermes-engine + - RCTRequired + - RCTTypeSafety - React-Core - - RNFBMessaging (20.5.0): - - Firebase/Messaging (= 10.29.0) + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - RNFBMessaging (25.1.0): + - Firebase/Messaging (= 12.15.0) - FirebaseCoreExtension + - hermes-engine + - RCTRequired + - RCTTypeSafety - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactNativeDependencies - RNFBApp + - Yoga - RNFS (2.20.0): - React-Core - - RNGestureHandler (2.28.0): - - DoubleConversion - - glog + - RNGestureHandler (2.32.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2279,7 +2353,6 @@ PODS: - React-FabricComponents - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2290,12 +2363,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNLocalize (3.4.2): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2303,7 +2374,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2314,12 +2384,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNPermissions (4.1.5): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2327,7 +2395,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2338,17 +2405,34 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNQrGenerator (1.4.6): - React - ZXingObjC - - RNReactNativeHapticFeedback (1.14.0): + - RNReactNativeHapticFeedback (3.0.0): + - hermes-engine + - RCTRequired + - RCTTypeSafety - React-Core - - RNReanimated (4.1.3): - - DoubleConversion - - glog + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - Yoga + - RNReanimated (4.5.3): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2367,14 +2451,14 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated/reanimated (= 4.1.3) + - ReactNativeDependencies + - RNReanimated/apple (= 4.5.3) + - RNReanimated/common (= 4.5.3) + - RNReanimated/view (= 4.5.3) - RNWorklets - Yoga - - RNReanimated/reanimated (4.1.3): - - DoubleConversion - - glog + - RNReanimated/apple (4.5.3): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2393,14 +2477,11 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNReanimated/reanimated/apple (= 4.1.3) + - ReactNativeDependencies - RNWorklets - Yoga - - RNReanimated/reanimated/apple (4.1.3): - - DoubleConversion - - glog + - RNReanimated/common (4.5.3): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2419,13 +2500,11 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - RNWorklets - Yoga - - RNScreens (4.16.0): - - DoubleConversion - - glog + - RNReanimated/view (4.5.3): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2438,6 +2517,28 @@ PODS: - React-jsi - React-NativeModulesApple - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactNativeDependencies + - RNWorklets + - Yoga + - RNScreens (4.25.2): + - hermes-engine + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric - React-RCTImage - React-renderercss - React-rendererdebug @@ -2445,13 +2546,11 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNScreens/common (= 4.16.0) + - ReactNativeDependencies + - RNScreens/common (= 4.25.2) - Yoga - - RNScreens/common (4.16.0): - - DoubleConversion - - glog + - RNScreens/common (4.25.2): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2459,7 +2558,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2471,14 +2569,12 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNSecureRandom (1.0.1): - React - - RNSentry (7.12.0): - - DoubleConversion - - glog + - RNSentry (7.11.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2497,13 +2593,11 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Sentry/HybridSDK (= 8.58.0) - Yoga - RNShare (12.0.11): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2511,7 +2605,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2522,12 +2615,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - RNSound (0.12.0): - - DoubleConversion - - glog + - RNSound (0.13.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2535,7 +2626,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2546,12 +2636,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNStoreReview (0.4.3): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2559,7 +2647,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2570,12 +2657,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - RNSVG (15.14.0): - - DoubleConversion - - glog + - RNSVG (15.15.4): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2583,7 +2668,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2594,13 +2678,11 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.14.0) + - ReactNativeDependencies + - RNSVG/common (= 15.15.4) - Yoga - - RNSVG/common (15.14.0): - - DoubleConversion - - glog + - RNSVG/common (15.15.4): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2608,7 +2690,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2619,12 +2700,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - RNVectorIcons (10.1.0): - - DoubleConversion - - glog - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2632,7 +2711,6 @@ PODS: - React-Fabric - React-featureflags - React-graphics - - React-hermes - React-ImageManager - React-jsi - React-NativeModulesApple @@ -2643,12 +2721,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - - RNWorklets (0.6.1): - - DoubleConversion - - glog + - RNWorklets (0.10.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2667,13 +2743,12 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNWorklets/worklets (= 0.6.1) + - ReactNativeDependencies + - RNWorklets/apple (= 0.10.0) + - RNWorklets/common (= 0.10.0) - Yoga - - RNWorklets/worklets (0.6.1): - - DoubleConversion - - glog + - RNWorklets/apple (0.10.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2692,13 +2767,10 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNWorklets/worklets/apple (= 0.6.1) + - ReactNativeDependencies - Yoga - - RNWorklets/worklets/apple (0.6.1): - - DoubleConversion - - glog + - RNWorklets/common (0.10.0): - hermes-engine - - RCT-Folly (= 2024.11.18.00) - RCTRequired - RCTTypeSafety - React-Core @@ -2717,6 +2789,7 @@ PODS: - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core + - ReactNativeDependencies - Yoga - SDWebImage (5.11.1): - SDWebImage/Core (= 5.11.1) @@ -2725,12 +2798,11 @@ PODS: - libwebp (~> 1.0) - SDWebImage/Core (~> 5.10) - Sentry/HybridSDK (8.58.0) - - SocketRocket (0.7.1) - - SQLite.swift/standalone (0.15.4): + - SQLite.swift/standalone (0.16.0): - sqlite3 - - sqlite3 (3.51.1): - - sqlite3/common (= 3.51.1) - - sqlite3/common (3.51.1) + - sqlite3 (3.52.0): + - sqlite3/common (= 3.52.0) + - sqlite3/common (3.52.0) - SwiftNIO (2.40.0): - _NIODataStructures (= 2.40.0) - CNIOAtomics (= 2.40.0) @@ -2861,12 +2933,12 @@ PODS: - SwiftNIOFoundationCompat (< 3, >= 2.32.0) - SwiftNIOPosix (< 3, >= 2.32.0) - SwiftNIOTLS (< 3, >= 2.32.0) - - SwiftProtobuf (1.33.3) - - VisionCamera (4.7.2): - - VisionCamera/Core (= 4.7.2) - - VisionCamera/React (= 4.7.2) - - VisionCamera/Core (4.7.2) - - VisionCamera/React (4.7.2): + - SwiftProtobuf (1.38.1) + - VisionCamera (4.7.3): + - VisionCamera/Core (= 4.7.3) + - VisionCamera/React (= 4.7.3) + - VisionCamera/Core (4.7.3) + - VisionCamera/React (4.7.3): - React-Core - Yoga (0.0.0) - ZIPFoundation (0.9.20) @@ -2875,10 +2947,7 @@ PODS: - ZXingObjC/All (3.6.9) DEPENDENCIES: - - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) - disklet (from `../node_modules/disklet`) - - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - edge-core-js (from `../node_modules/edge-core-js`) - edge-currency-accountbased (from `../node_modules/edge-currency-accountbased`) - edge-currency-plugins (from `../node_modules/edge-currency-plugins`) @@ -2887,21 +2956,25 @@ DEPENDENCIES: - EXConstants (from `../node_modules/expo-constants/ios`) - Expo (from `../node_modules/expo`) - ExpoAsset (from `../node_modules/expo-asset/ios`) + - ExpoBlur (from `../node_modules/expo-blur/ios`) + - "ExpoDomWebView (from `../node_modules/@expo/dom-webview/ios`)" - ExpoFileSystem (from `../node_modules/expo-file-system/ios`) - ExpoFont (from `../node_modules/expo-font/ios`) - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`) + - ExpoLinearGradient (from `../node_modules/expo-linear-gradient/ios`) + - "ExpoLogBox (from `../node_modules/@expo/log-box`)" - ExpoModulesCore (from `../node_modules/expo-modules-core`) + - ExpoModulesJSI (from `../node_modules/expo-modules-jsi/apple`) + - ExpoModulesWorklets (from `../node_modules/expo-modules-core`) + - ExpoModulesWorkletsAdapter (from `../node_modules/expo-modules-core`) - ExpoQuickActions (from `../node_modules/expo-quick-actions/ios`) - - fast_float (from `../node_modules/react-native/third-party-podspecs/fast_float.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`) - - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - ImageColors (from `../node_modules/react-native-image-colors/ios`) - - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) - RCTRequired (from `../node_modules/react-native/Libraries/Required`) + - RCTSwiftUI (from `../node_modules/react-native/ReactApple/RCTSwiftUI`) + - RCTSwiftUIWrapper (from `../node_modules/react-native/ReactApple/RCTSwiftUIWrapper`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) @@ -2921,16 +2994,20 @@ DEPENDENCIES: - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-intersectionobservernativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver`) - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) + - React-jsinspectorcdp (from `../node_modules/react-native/ReactCommon/jsinspector-modern/cdp`) + - React-jsinspectornetwork (from `../node_modules/react-native/ReactCommon/jsinspector-modern/network`) - React-jsinspectortracing (from `../node_modules/react-native/ReactCommon/jsinspector-modern/tracing`) - React-jsitooling (from `../node_modules/react-native/ReactCommon/jsitooling`) - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) + - React-mutationobservernativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/mutationobserver`) - "react-native-adservices (from `../node_modules/@brigad/react-native-adservices`)" - "react-native-compat (from `../node_modules/@walletconnect/react-native-compat`)" - react-native-contacts (from `../node_modules/react-native-contacts`) @@ -2950,8 +3027,10 @@ DEPENDENCIES: - react-native-zano (from `../node_modules/react-native-zano`) - react-native-zcash (from `../node_modules/react-native-zcash`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-networking (from `../node_modules/react-native/ReactCommon/react/networking`) - React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancecdpmetrics (from `../node_modules/react-native/ReactCommon/react/performance/cdpmetrics`) - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) @@ -2969,7 +3048,6 @@ DEPENDENCIES: - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) - React-renderercss (from `../node_modules/react-native/ReactCommon/react/renderer/css`) - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - - React-rncore (from `../node_modules/react-native/ReactCommon`) - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) @@ -2977,9 +3055,12 @@ DEPENDENCIES: - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - - ReactAppDependencyProvider (from `build/generated/ios`) - - ReactCodegen (from `build/generated/ios`) + - React-viewtransitionnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/viewtransition`) + - React-webperformancenativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/webperformance`) + - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) + - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - ReactNativeDependencies (from `../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec`) - ReactNativeFileAccess (from `../node_modules/react-native-file-access`) - rn-id-blurview (from `../node_modules/rn-id-blurview`) - RNBootSplash (from `../node_modules/react-native-bootsplash`) @@ -3039,7 +3120,6 @@ SPEC REPOS: - SDWebImage - SDWebImageWebPCoder - Sentry - - SocketRocket - SQLite.swift - sqlite3 - SwiftNIO @@ -3060,14 +3140,8 @@ SPEC REPOS: - ZXingObjC EXTERNAL SOURCES: - boost: - :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" - BVLinearGradient: - :path: "../node_modules/react-native-linear-gradient" disklet: :path: "../node_modules/disklet" - DoubleConversion: - :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" edge-core-js: :path: "../node_modules/edge-core-js" edge-currency-accountbased: @@ -3084,35 +3158,45 @@ EXTERNAL SOURCES: :path: "../node_modules/expo" ExpoAsset: :path: "../node_modules/expo-asset/ios" + ExpoBlur: + :path: "../node_modules/expo-blur/ios" + ExpoDomWebView: + :path: "../node_modules/@expo/dom-webview/ios" ExpoFileSystem: :path: "../node_modules/expo-file-system/ios" ExpoFont: :path: "../node_modules/expo-font/ios" ExpoKeepAwake: :path: "../node_modules/expo-keep-awake/ios" + ExpoLinearGradient: + :path: "../node_modules/expo-linear-gradient/ios" + ExpoLogBox: + :path: "../node_modules/@expo/log-box" ExpoModulesCore: :path: "../node_modules/expo-modules-core" + ExpoModulesJSI: + :path: "../node_modules/expo-modules-jsi/apple" + ExpoModulesWorklets: + :path: "../node_modules/expo-modules-core" + ExpoModulesWorkletsAdapter: + :path: "../node_modules/expo-modules-core" ExpoQuickActions: :path: "../node_modules/expo-quick-actions/ios" - fast_float: - :podspec: "../node_modules/react-native/third-party-podspecs/fast_float.podspec" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" - fmt: - :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec" - glog: - :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2025-03-03-RNv0.79.0-bc17d964d03743424823d7dd1a9f37633459c5c5 + :tag: hermes-v250829098.0.14 ImageColors: :path: "../node_modules/react-native-image-colors/ios" - RCT-Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTDeprecation: :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation" RCTRequired: :path: "../node_modules/react-native/Libraries/Required" + RCTSwiftUI: + :path: "../node_modules/react-native/ReactApple/RCTSwiftUI" + RCTSwiftUIWrapper: + :path: "../node_modules/react-native/ReactApple/RCTSwiftUIWrapper" RCTTypeSafety: :path: "../node_modules/react-native/Libraries/TypeSafety" React: @@ -3149,6 +3233,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" React-ImageManager: :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-intersectionobservernativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/intersectionobserver" React-jserrorhandler: :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: @@ -3157,6 +3243,10 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" + React-jsinspectorcdp: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/cdp" + React-jsinspectornetwork: + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/network" React-jsinspectortracing: :path: "../node_modules/react-native/ReactCommon/jsinspector-modern/tracing" React-jsitooling: @@ -3169,6 +3259,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon" React-microtasksnativemodule: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" + React-mutationobservernativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/mutationobserver" react-native-adservices: :path: "../node_modules/@brigad/react-native-adservices" react-native-compat: @@ -3207,10 +3299,14 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-zcash" React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-networking: + :path: "../node_modules/react-native/ReactCommon/react/networking" React-oscompat: :path: "../node_modules/react-native/ReactCommon/oscompat" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancecdpmetrics: + :path: "../node_modules/react-native/ReactCommon/react/performance/cdpmetrics" React-performancetimeline: :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: @@ -3245,8 +3341,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/renderer/css" React-rendererdebug: :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" - React-rncore: - :path: "../node_modules/react-native/ReactCommon" React-RuntimeApple: :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios" React-RuntimeCore: @@ -3261,12 +3355,18 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + React-viewtransitionnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/viewtransition" + React-webperformancenativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/webperformance" ReactAppDependencyProvider: - :path: build/generated/ios + :path: build/generated/ios/ReactAppDependencyProvider ReactCodegen: - :path: build/generated/ios + :path: build/generated/ios/ReactCodegen ReactCommon: :path: "../node_modules/react-native/ReactCommon" + ReactNativeDependencies: + :podspec: "../node_modules/react-native/third-party-podspecs/ReactNativeDependencies.podspec" ReactNativeFileAccess: :path: "../node_modules/react-native-file-access" rn-id-blurview: @@ -3328,8 +3428,6 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: _NIODataStructures: 3d45d8e70a1d17a15b1dc59d102c63dbc0525ffd - boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 - BVLinearGradient: cb006ba232a1f3e4f341bb62c42d1098c284da70 CGRPCZlib: 298dd3237ba4bd7b3eed109e7080ff3324b7d9c9 CNIOAtomics: 8edf08644e5e6fa0f021c239be9e8beb1cd9ef18 CNIOBoringSSL: 2c9c96c2e95f15e83fb8d26b9738d939cc39ae33 @@ -3339,154 +3437,165 @@ SPEC CHECKSUMS: CNIOLinux: 62e3505f50de558c393dc2f273dde71dcce518da CNIOWindows: 3047f2d8165848a3936a0a755fee27c6b5ee479b disklet: ef8ef081e35a73fbed579888d29e49edc2f327cc - DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb edge-core-js: 3685f5569441d36e98b148eae44baca1849d1874 edge-currency-accountbased: d8903dfd6b0ad2004c1b1a0eca192bfa3c602f30 edge-currency-plugins: 2b0de648624d46c0e32e4530f853673a3edfeaa6 edge-exchange-plugins: f130b52ca5d58d774bf51c851bbb38df5fbf9238 edge-login-ui-rn: 80979efda996608d927563cd770f69f7bfce80a9 - EXConstants: 98bcf0f22b820f9b28f9fee55ff2daededadd2f8 - Expo: 43d9e0c3108cc3a1c2739743e9b51086144ee4b0 - ExpoAsset: ef06e880126c375f580d4923fdd1cdf4ee6ee7d6 - ExpoFileSystem: 7f92f7be2f5c5ed40a7c9efc8fa30821181d9d63 - ExpoFont: cf508bc2e6b70871e05386d71cab927c8524cc8e - ExpoKeepAwake: bf0811570c8da182bfb879169437d4de298376e7 - ExpoModulesCore: 471ae18809dc8a5c9a623193a317eef6048a4f8a + EXConstants: 8641fb5fcb789b2bfc9d01c9206a6826ca9d49e6 + Expo: 9dca8652db31f31b9a6b748dfbca5818c044d61d + ExpoAsset: c270900c121a250ceabbf692dfecc2f1564ec82f + ExpoBlur: 69e67b4fbfed6f7325377af2aefa8aa4f00cd2af + ExpoDomWebView: beaec034e51bd028428b98bb1f2633ab79c6d095 + ExpoFileSystem: e441dae0ae671fc451640517550973d9e024fdf0 + ExpoFont: 59e1faf66ba9bcd232ae1e2ce58d202a48b6f65e + ExpoKeepAwake: c26f14275017370cc8a4b7b43a0e23361f2053a5 + ExpoLinearGradient: 903b3f5fe566c666ff78b2599add51d094483613 + ExpoLogBox: 8a3cfa2897e088083cd49fc1ff7fdb2de4385547 + ExpoModulesCore: 1026f34fbae2bfe5f34bd9b7029abc9d683633ec + ExpoModulesJSI: fb279421fb76e371f05b966244f13ae5cb2643c4 + ExpoModulesWorklets: 2ba73eabbbd0470e43f8998757f4cb8abff8355b + ExpoModulesWorkletsAdapter: f6e197437ec4b17cd455e8c307d793552250d348 ExpoQuickActions: fdbda7f5874aed3dd2b1d891ec00ab3300dc7541 - fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6 - FBLazyVector: 84b955f7b4da8b895faf5946f73748267347c975 - Firebase: cec914dab6fd7b1bd8ab56ea07ce4e03dd251c2d - FirebaseCore: 30e9c1cbe3d38f5f5e75f48bfcea87d7c358ec16 - FirebaseCoreExtension: 705ca5b14bf71d2564a0ddc677df1fc86ffa600f - FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 - FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 7b5d8033e183ab59eb5b852a53201559e976d366 - fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd - glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 - GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a - GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 + FBLazyVector: 688bade2cc6ee3de2ba9a411c85c21fd908af3bc + Firebase: a8539b633d474fbeb654c7043f9c1649e274045b + FirebaseCore: 2e86a4ea1684d4381707069e4a6d89ac808e901e + FirebaseCoreExtension: 10d2a627977b39418759ad88ada80fbbd34f1c4f + FirebaseCoreInternal: 6ab6a02c94446c026d2cf35cf5383842ebaa4992 + FirebaseInstallations: eb29ccbf64eaedf86fd5b2ccc7fabde567660b52 + FirebaseMessaging: 40017d7bc8457ee295b0f41d480a80fdabc9994e + GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 + GoogleUtilities: 766ace00c6b10d8148408f329d10c4f051931850 gRPC-Swift: 74adcaaa62ac5e0a018938840328cb1fdfb09e7b - hermes-engine: 314be5250afa5692b57b4dd1705959e1973a8ebe + hermes-engine: 5b65c58cfd9a3cd3e0c02b408a0583df2d121180 ImageColors: 869f48b27ca2afb347fd0bada3257a5f698ee55e libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 Logging: beeb016c9c80cf77042d62e83495816847ef108b MnemonicSwift: 40ba76b951b75b32e2719df989b4d6da5798fe26 - nanopb: 438bc412db1928dac798aa6fd75726007be04262 - OpenSSL-Universal: 6082b0bf950e5636fe0d78def171184e2b3899c2 - PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82 - RCTDeprecation: 83ffb90c23ee5cea353bd32008a7bca100908f8c - RCTRequired: eb7c0aba998009f47a540bec9e9d69a54f68136e - RCTTypeSafety: 659ae318c09de0477fd27bbc9e140071c7ea5c93 - React: c2d3aa44c49bb34e4dfd49d3ee92da5ebacc1c1c - React-callinvoker: 1bdfb7549b5af266d85757193b5069f60659ef9d - React-Core: 10597593fdbae06f0089881e025a172e51d4a769 - React-CoreModules: 6907b255529dd46895cf687daa67b24484a612c2 - React-cxxreact: a9f5b8180d6955bc3f6a3fcd657c4d9b4d95c1f6 - React-debug: a9861ea2196e886642887e29fd1d86c6eee93454 - React-defaultsnativemodule: 48bed05d5e7a6b90c63775bc042acba50f1ac46c - React-domnativemodule: 4603dc552b8f2b75cfd708b6175f0f3ab005d661 - React-Fabric: c48e870a557e39fc38c49bf2f43a62f837876318 - React-FabricComponents: d0c0029b9066819e736ee70ce8481fe52632ccad - React-FabricImage: a843d50c9d21f4a6255c3cd1654cdf16209ac76d - React-featureflags: 4ef61c283dfae8f327dbae70f41bb0399bd9e0fc - React-featureflagsnativemodule: 879cdf94179dc7395f28b9bf0fd340fd45c05ab7 - React-graphics: 4e247c50991de6e2c0abd25f8367cfa3113198c0 - React-hermes: 9116d4e6d07abeb519a2852672de087f44da8f12 - React-idlecallbacksnativemodule: 5fd6d838b045d3f5b630a6a0714635bc9c882fdc - React-ImageManager: ad3f561d76883d6f7f1cf3a97e823fa39ca1b132 - React-jserrorhandler: 35d127a39a5bc16d9ae97edce7ab4c06dc77e3a2 - React-jsi: 753ba30c902f3a41fa7f956aca8eea3317a44ee6 - React-jsiexecutor: 47520714aa7d9589c51c0f3713dfbfca4895d4f9 - React-jsinspector: ec984e95482ee98692ec74f78771447599ed9781 - React-jsinspectortracing: 7bd661f34f08b320bb797dc464d6002116fca145 - React-jsitooling: 90d7ecbb60f70d12f60a4964dfcad0e38d9d970d - React-jsitracing: a9de0d25bf430574dc01f1fe67f06fd50e8a578c - React-logger: 8edfcedc100544791cd82692ca5a574240a16219 - React-Mapbuffer: da73f30b000114058d6bc41490dcce204a8ede32 - React-microtasksnativemodule: 444c5701aece79629bb73bd9e7ad8937ae65238c + nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 + OpenSSL-Universal: ecee7b138fa75a74ecf00d7ffd248fb584739b9e + PromisesObjC: 752c3227f599e3467650e47ea36f433eeb10c273 + RCTDeprecation: 8f1dc8057e54ea6fd01df47d0d29487adc92c1a9 + RCTRequired: 9d02105f758490fab48d77fead2599a449321ab7 + RCTSwiftUI: 714ca60953e8b7779821eea889ebdc891851682b + RCTSwiftUIWrapper: 0a79e3288397adb17aec2877e4c2b79d29b05079 + RCTTypeSafety: 922be6f90a3addd48f57f2066dd90aacec4768b6 + React: 2574546f2d017abd14d0c9b48cf2b6a0547c2591 + React-callinvoker: b997d4d109c92cae4bc7f1edb08dc6a7c11a1ca2 + React-Core: 1a489b1f2858bbb42350be7d93a5db5925cdc446 + React-CoreModules: 549d62c411dd9e4577b770fee27dc35a101ed486 + React-cxxreact: e64c7b969d63d2b848dbc41794058ebd20b76a57 + React-debug: 307f174c04c2e1f51b31c31efcc3e635b1e56453 + React-defaultsnativemodule: 74ae80f0ca6a1a789b5ffd11f3629d096c77feba + React-domnativemodule: f3028f1e7c8811c054cabb3390f6f3a975639125 + React-Fabric: dd311b5eba8fe95dfb17d09a8ebbe6c7010ce4fe + React-FabricComponents: a4b64a13a56647954e495640cc1ba98d1e2fe4e9 + React-FabricImage: e6cfbb40ae3179fee9b9bf17e38d99a225ba8102 + React-featureflags: e7c2807e23e08b58847001c151bda8b1157e4aa6 + React-featureflagsnativemodule: 4c2db597a10b6c50b315cf0cde013322d2bd23cf + React-graphics: 128e5550b022fb9c545a35fed448eecbacf30b31 + React-hermes: bac1148a3989d50675b2afda82c96055d4cd2499 + React-idlecallbacksnativemodule: b62c4214dde10c821c8d1d3663ace56eea31953d + React-ImageManager: f1d43756974c8b63834e4766d1baf02f40c81b3e + React-intersectionobservernativemodule: 223a2201d6c488d1470763085bb2f47a8ce2d241 + React-jserrorhandler: 90e69ab153bb27ae253f0ca3cdd5e007011910a1 + React-jsi: 2c4bdee01b2963c5444541bb75a082b5102e4234 + React-jsiexecutor: 7b47e6e56d6536e50dcacca4f1b7fb145d7b9d74 + React-jsinspector: ffa9c1ea2fed86f2dd4bc1910820628d21c06295 + React-jsinspectorcdp: f38486e5aacbb6a95b2aa99db129729dd607befd + React-jsinspectornetwork: 3ca15f7f6c78157e0bf34b769f8357c9c560ba70 + React-jsinspectortracing: 3a6d7bd296b3a4fcab57992a6f645be244f0a4bc + React-jsitooling: 1008a3d0d810a7dc3727c23b7f7df23a2e7cf91b + React-jsitracing: b8638e84899c9ee24db6a30c99f58e3ce1cdc787 + React-logger: 01568ff0b6737536ae3c15a0e02f88fe3a688fcc + React-Mapbuffer: af7ecd3505e1bd285a75d2145a181523a4cb625d + React-microtasksnativemodule: b8bf6f9f7363c42dabacd510f73432248b28078a + React-mutationobservernativemodule: 654a565d30cc8d2ba4f72212f26660e34364caf4 react-native-adservices: 18087a4a5106c5133b0cde73701bf875e3163cfc - react-native-compat: d39ea5df32baea7a806bb7246444eab86d1c7617 - react-native-contacts: b854a0fabc5d037bb344deb719a1aa03c9ffd88b + react-native-compat: c96954f6d5712dcccb9908805e35ce05c1ad645f + react-native-contacts: 59013da26b7f0f9ffc2dfcbeb0af1a6e209c6ce7 react-native-get-random-values: d16467cf726c618e9c7a8c3c39c31faa2244bbba - react-native-image-picker: f6ece66f251f4a17aab08f5add7be6eb9e7f5356 + react-native-image-picker: adb86d86135d8d31009d027db361445c5a3db863 react-native-in-app-review: 668f4c80d7f95945e0ad7833e98c466cb40d6808 - react-native-keyboard-controller: c8968215c7ecdfc43663cfaf9ca991aad4179815 + react-native-keyboard-controller: d85461d7782c025cde04ee265f48846843b2e99d react-native-mail: 6e83813066984b26403d3fdfe79ac7bb31857e3c react-native-monero: d2b0167fd79d8eeda80ad357f12e8fee8edf63a7 - react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 - react-native-performance: f0471c84eda0f6625bd42a1f515b1b216f284b12 + react-native-netinfo: adec161a2fc40d327f2c1bab7d8c57a91943ab74 + react-native-performance: c2cf9c69321cd5eacfdba07ced92409a185140a8 react-native-piratechain: b8a42336b1f8e6ccfc3ee054d18ed79d68d42fa1 react-native-render-html: 5afc4751f1a98621b3009432ef84c47019dcb2bd react-native-safari-view: 07dc856a2663fef31eaca6beb79b111b8f6cf1f2 - react-native-safe-area-context: 83e0ac3d023997de1c2e035af907cc4dc05f718c - react-native-webview: 69c118d283fccfbc4fca0cd680e036ff3bf188fa + react-native-safe-area-context: 45435943d06e262f946fcc3f4c4de6bfd0c9cbe1 + react-native-webview: cac57e5c9caaac09627c910efb968bac54d5b4dd react-native-zano: d31c7ba542d1f407dd870ff431886e68d545239d react-native-zcash: e05fe0d56656702ae14c979736964e174775eb03 - React-NativeModulesApple: df8e5bc59e78ca3040ffbf41336889f3bd0fad68 - React-oscompat: ef5df1c734f19b8003e149317d041b8ce1f7d29c - React-perflogger: 9a151e0b4c933c9205fd648c246506a83f31395d - React-performancetimeline: d6a5fd3640c873875badb33020ebe5af46ef2a12 - React-RCTActionSheet: a499b0d6d9793886b67ba3e16046a3fef2cdbbc3 - React-RCTAnimation: cc64adc259aabc3354b73065e2231d796dfce576 - React-RCTAppDelegate: 9d523da768f1c9e84c5f3b7e3624d097dfb0e16b - React-RCTBlob: e727f53eeefded7e6432eb76bd22b57bc880e5d1 - React-RCTFabric: a704a0eea3a9a32621ccc79261fe5b010bfcaccb - React-RCTFBReactNativeSpec: 9064c63d99e467a3893e328ba3612745c3c3a338 - React-RCTImage: 7159cbdbb18a09d97ba1a611416eced75b3ccb29 - React-RCTLinking: 46293afdb859bccc63e1d3dedc6901a3c04ef360 - React-RCTNetwork: 4a6cd18f5bcd0363657789c64043123a896b1170 - React-RCTRuntime: 4b47b6380420e9fbfb4bd3cc16d6ea988640ddc1 - React-RCTSettings: 61e361dc85136d1cb0e148b7541993d2ee950ea7 - React-RCTText: abd1e196c3167175e6baef18199c6d9d8ac54b4e - React-RCTVibration: 490e0dcb01a3fe4a0dfb7bc51ad5856d8b84f343 - React-rendererconsistency: 68db5a64f0c42b0337e25ba7b0e9513caae1389d - React-renderercss: 59c892b54a92f2f62b98c2700f5ff7592f0629cb - React-rendererdebug: f9dfe8ef736c98268f87114d05f49615f7f9af46 - React-rncore: 0f64cacb1becc6f89c99018ca920d012f9044ebd - React-RuntimeApple: f2bc2dc51b9b3c194c0eec4351ae99d033485792 - React-RuntimeCore: 4e5475d506e7f9c4b3f3c6e6a654b83cba7f1a42 - React-runtimeexecutor: d60846710facedd1edb70c08b738119b3ee2c6c2 - React-RuntimeHermes: 2b238368a56fc50e9372afde7a3f2eeb0cdc63a7 - React-runtimescheduler: c65050ab5c3911dd553bb9223c76543198c5854f - React-timing: beb0ba912f9ffc1a6758afa767ae5c03302dc9ee - React-utils: 4b32801a05eff845d316edd59b313a3e25c5fc08 - ReactAppDependencyProvider: 04d5eb15eb46be6720e17a4a7fa92940a776e584 - ReactCodegen: 041559ba76d00f6680dfa0916b3c791f4babe5ea - ReactCommon: 1511ef100f1afa4c199fe52fe7a8d2529a41429a - ReactNativeFileAccess: 6c8f0b8a0079d90c524ac1b68c973c70e1293e8a + React-NativeModulesApple: 6f8a4b47b7561c796094a6b03ab570c63fb98548 + React-networking: 2fbe0ada4dd67c2c65656d5429f71a96df5eaa02 + React-oscompat: e3c95718adca6d0e7ca9e5b01a04d057f4aa8f72 + React-perflogger: 6956ae5fff5f3c5d8c0a2515a0c074d838d9878d + React-performancecdpmetrics: 6e3ad55d9210da51fea522900f8c82ef27795a03 + React-performancetimeline: f4f6eca5a06bc32c38786dde1769d89a6ba676d2 + React-RCTActionSheet: cbe921221b0ca00d2ea586efbaa494bc990260c1 + React-RCTAnimation: c02634834737cf4a0aeb51d5e2675fdc947d54e6 + React-RCTAppDelegate: 1b322abeff7adccb5262f21fc9fa04eddac67790 + React-RCTBlob: 0785fd2ef3668a40b7905e70a688ce2f8bf735ba + React-RCTFabric: fd9204864d3b158b79267df22eab5875d877c205 + React-RCTFBReactNativeSpec: c1e0b2582c78017be4a9355ebc6b6baf4f578a53 + React-RCTImage: a3d72e5484ea25ce3141e21df7457b83109436c4 + React-RCTLinking: 49e107939409c381e8c7d35655060579d3f855a3 + React-RCTNetwork: e07d28824e78bc544ccd16482045e919ea10bc4e + React-RCTRuntime: 37921f258529380874d7a1b0ba49327e1373322a + React-RCTSettings: 85bfeb46acf859d754f0cbcb570f3e54a9834433 + React-RCTText: 6bae9a5e52ebc012d7bc499542c42285f73d1e1d + React-RCTVibration: 53317edc4dbb7ef84b49ad7413339e9e1729995d + React-rendererconsistency: 8759d621ba9d2a3139c266d3462bf2e38ccc4b01 + React-renderercss: 7b56e138a3d800fa9e17e61cdb3b293d6b8622c6 + React-rendererdebug: 1355aabc6794c6c67673c587c270bbedf3cded69 + React-RuntimeApple: fc323e85f38e2ecf5edefa386971a1d2e390448f + React-RuntimeCore: 8eb8e699124b1869aa4659c8df665c22bf03d6a4 + React-runtimeexecutor: 370a4e864ba011a1dc142e25782e3a81a77d3d40 + React-RuntimeHermes: c53d246b77a1a9be40dd8a33951a36f68da1252e + React-runtimescheduler: e5f1ed2f62b6371122e7fd4700da08fb93611c41 + React-timing: e0fcc0610c5332a5d7c657be08f3f06d15046c08 + React-utils: 63eef0ee14f558fd0f9a63d864d0b220f61049c7 + React-viewtransitionnativemodule: ac5fb4151090f5b135b9e27878fbd20699b1e604 + React-webperformancenativemodule: 0e0d8d46696805b92ee4c6eff7d43966c34199ce + ReactAppDependencyProvider: dcdd0e1b9559a6d8d8aea05286f4ed085091978e + ReactCodegen: 999fc405f0951f19297974b3545d8f43b5f5f8d5 + ReactCommon: 8b52be35b7f65eb8c56c7ce5993c93e50f710cc9 + ReactNativeDependencies: fa0a54b3f5319ae0e3b9aff32bfee7a424b88e66 + ReactNativeFileAccess: 90b3cca6540a6eb135533d6295e3eacf38cf3d1e rn-id-blurview: 35bf4f960b8b108d12ed8a8ff14cbc22ed908081 - RNBootSplash: 1280eeb18d887de0a45bb4923d4fc56f25c8b99c - RNCAsyncStorage: 95c930ec966b842547968e370feced362d8f461c - RNCClipboard: 45b13251c8938aabfc25b9ecc35b5d42ab4eb0b0 - RNCPicker: e77e886fbfa88f62b3399195a192a24f7ffff709 - RNDateTimePicker: 0e6a0255c82d5ab6eb40a33dda0d8886f249ca9f + RNBootSplash: 6707708e83082515da71df02aa88821e5a336193 + RNCAsyncStorage: a455ed0edb854f0c8471b3049935680d5868796a + RNCClipboard: d73fd4b2ac59e792596e7cd615b6321d577c1a2b + RNCPicker: 47d8598233e5858a65f6d91a80505d5ca86bd5f0 + RNDateTimePicker: 2e1dc353ee0e3598f636928f7a8d180f12be7c16 RNDeviceInfo: ae26ae45db3f9937f038a284bcd0a1db8d70db96 RNFastImage: 462a183c4b0b6b26fdfd639e1ed6ba37536c3b87 - RNFBApp: 4e6da65e29a144d20bcb5bf264fc8e2055831bab - RNFBMessaging: fb5a9b0a3043d5d3e6e9fe7b27b78fcc3a0f753f + RNFBApp: fb7f711cbcd95385a6d889c8c22967b1e7e72308 + RNFBMessaging: a7322a4753f9b1c47dff7b6c09ec4d83bdab89c3 RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8 - RNGestureHandler: c50b05a3941646c4e4098344033ca4609b42be85 - RNLocalize: ae28fc65c1ae7f595c86a926b6beb43790e491c3 - RNPermissions: 60b23d827dc7a4b2e347356fc20206184676637c + RNGestureHandler: a6fc176c2a0224a64fa635a65fac7baf2de379ed + RNLocalize: 1034c494e25d2e8d4c5c9062418f1cd6db24e27e + RNPermissions: 950d9f3b9c0225c92c1103366721e53491aec3f1 RNQrGenerator: af2f0888eb81b8ff99517a3929d6399444dcc56d - RNReactNativeHapticFeedback: 8364333ca888b1b7ec9d2daf04b010ee5436366e - RNReanimated: 0516f7712064007219d296b7788c585ecbf73d52 - RNScreens: eb3800639b236501d2d6487d930b35fe3db68cb0 + RNReactNativeHapticFeedback: ab7ef0c4befc540f5431166f98d74edfc70001f7 + RNReanimated: b9153787cb2d022e800229b75efcf87627117e3e + RNScreens: df54f9e1092ce77fe96fc0c3a5314862d05a506e RNSecureRandom: b64d263529492a6897e236a22a2c4249aa1b53dc - RNSentry: 0c2660868695668bf93eef20033d0e8bc6016666 - RNShare: 6300b941668273d502ecee9122cade0d5ea966bd - RNSound: cfeaf6c6a734303c887e04b946cbb7e294bff123 - RNStoreReview: b3cb7df1405d56afd51301ada4660f6c9b970055 - RNSVG: ca807495c5219c05c747254200b89a4e3078db31 - RNVectorIcons: f1bc9e04b6f67ec09ea54e6f092e75a9e205c1d7 - RNWorklets: b1faafefb82d9f29c4018404a0fb33974b494a7b + RNSentry: 18fc2982a2c646dfada4ddd6fc8e225e1bcad812 + RNShare: 8607a66b8edd8cf2d5781fb66250d8a07ec6d30d + RNSound: 8e9d0d0c836de07b646743a60bc976276c9edfcd + RNStoreReview: 6acb6bf05fcc90f471753d4c128954a1426018b2 + RNSVG: 02c4605f1656727c3a83059ef119dc7e469df182 + RNVectorIcons: 0763c0f64e1ec73fe18f4ed2fb1e485f96417009 + RNWorklets: 5babf83fcbca84cab18fc630519510371686ca8f SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d Sentry: d587a8fe91ca13503ecd69a1905f3e8a0fcf61be - SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - SQLite.swift: a107c734115fea616a4ad31371d39f1637e8de56 - sqlite3: 8d708bc63e9f4ce48f0ad9d6269e478c5ced1d9b + SQLite.swift: c914f905e13b6318cdc07fd66661db14c6cdd330 + sqlite3: a51c07cf16e023d6c48abd5e5791a61a47354921 SwiftNIO: 829958aab300642625091f82fc2f49cb7cf4ef24 SwiftNIOConcurrencyHelpers: 697370136789b1074e4535eaae75cbd7f900370e SwiftNIOCore: 473fdfe746534d7aa25766916459eeaf6f92ef49 @@ -3500,12 +3609,12 @@ SPEC CHECKSUMS: SwiftNIOSSL: d153c5a6fc5b2301b0519b4c4d037a9414212da6 SwiftNIOTLS: 598af547490133e9aac52aed0c23c4a90c31dcfc SwiftNIOTransportServices: 0b2b407819d82eb63af558c5396e33c945759503 - SwiftProtobuf: e1b437c8e31a4c5577b643249a0bb62ed4f02153 - VisionCamera: 30b358b807324c692064f78385e9a732ce1bebfe - Yoga: 50518ade05048235d91a78b803336dbb5b159d5d + SwiftProtobuf: 409d3aaec90e51b1705b1dd8065b56893450e77c + VisionCamera: 7187b3dac1ff3071234ead959ce311875748e14f + Yoga: a9f26333e684a192cbb5d698ed7eab3053929519 ZIPFoundation: dfd3d681c4053ff7e2f7350bc4e53b5dba3f5351 ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5 -PODFILE CHECKSUM: 3c9f8ab9de75f819ada260a3d6d3f372a510d556 +PODFILE CHECKSUM: 7104ec3e3ac4815ca6c359e22f9de82e6bcb2880 COCOAPODS: 1.16.2 diff --git a/ios/edge.xcodeproj/project.pbxproj b/ios/edge.xcodeproj/project.pbxproj index 72954219091..de6b257830f 100644 --- a/ios/edge.xcodeproj/project.pbxproj +++ b/ios/edge.xcodeproj/project.pbxproj @@ -330,7 +330,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\nSENTRY_XCODE=\"../node_modules/@sentry/react-native/scripts/sentry-xcode.sh\"\nBUNDLE_REACT_NATIVE=\"/bin/sh $SENTRY_XCODE $REACT_NATIVE_XCODE\"\n\nif grep -q 'SENTRY_MAP_UPLOAD_AUTH_TOKEN' sentry.properties; then\n echo \"Skipping Sentry source-map upload\"\n export SENTRY_DISABLE_AUTO_UPLOAD=true\nfi\n\n/bin/sh -c \"$WITH_ENVIRONMENT \\\"$BUNDLE_REACT_NATIVE\\\"\"\n"; + shellScript = "set -e\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\nSENTRY_XCODE=\"../node_modules/@sentry/react-native/scripts/sentry-xcode.sh\"\nBUNDLE_REACT_NATIVE=\"/bin/sh $SENTRY_XCODE $REACT_NATIVE_XCODE\"\n\nif grep -q 'SENTRY_MAP_UPLOAD_AUTH_TOKEN' sentry.properties; then\n echo \"Skipping Sentry source-map upload\"\n export SENTRY_DISABLE_AUTO_UPLOAD=true\nfi\n\n/bin/sh -c \"$WITH_ENVIRONMENT $SENTRY_XCODE\"\n"; }; 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; @@ -360,7 +360,7 @@ name = "[CP-User] [RNFB] Core Configuration"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##########################################################################\n##########################################################################\n#\n# NOTE THAT IF YOU CHANGE THIS FILE YOU MUST RUN pod install AFTERWARDS\n#\n# This file is installed as an Xcode build script in the project file\n# by cocoapods, and you will not see your changes until you pod install\n#\n##########################################################################\n##########################################################################\n\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_analytics_storage\n _ANALYTICS_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_analytics_storage\")\n if [[ $_ANALYTICS_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_storage\n _ANALYTICS_AD_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_storage\")\n if [[ $_ANALYTICS_AD_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_user_data\n _ANALYTICS_AD_USER_DATA=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_user_data\")\n if [[ $_ANALYTICS_AD_USER_DATA ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_USER_DATA\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##########################################################################\n##########################################################################\n#\n# NOTE THAT IF YOU CHANGE THIS FILE YOU MUST RUN pod install AFTERWARDS\n#\n# This file is installed as an Xcode build script in the project file\n# by cocoapods, and you will not see your changes until you pod install\n#\n##########################################################################\n##########################################################################\n\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"note: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"note: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"note: -> RNFB build script started\"\necho \"note: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"note: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"note: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n if ! _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\"); then\n echo \"error: Failed to parse firebase.json, check for syntax errors.\"\n exit 1\n fi\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"error: python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_analytics_storage\n _ANALYTICS_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_analytics_storage\")\n if [[ $_ANALYTICS_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_storage\n _ANALYTICS_AD_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_storage\")\n if [[ $_ANALYTICS_AD_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_user_data\n _ANALYTICS_AD_USER_DATA=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_user_data\")\n if [[ $_ANALYTICS_AD_USER_DATA ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_USER_DATA\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"note: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"note: <- RNFB build script finished\"\n"; }; C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; @@ -424,11 +424,16 @@ inputFileListPaths = ( ); inputPaths = ( + "$(SRCROOT)/.xcode.env", + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/edge/edge.entitlements", + "$(SRCROOT)/Pods/Target Support Files/Pods-edge/expo-configure-project.sh", ); name = "[Expo] Configure project"; outputFileListPaths = ( ); outputPaths = ( + "$(SRCROOT)/Pods/Target Support Files/Pods-edge/ExpoModulesProvider.swift", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -485,7 +490,7 @@ DEVELOPMENT_TEAM = G5LQ7MERPK; ENABLE_BITCODE = NO; INFOPLIST_FILE = edge/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -515,7 +520,7 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = G5LQ7MERPK; INFOPLIST_FILE = edge/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -597,6 +602,22 @@ "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + "${PODS_ROOT}/ReactCommon", + "${PODS_ROOT}/ReactCommon/react/nativemodule/core", + "${PODS_ROOT}/React-runtimeexecutor", + "${PODS_ROOT}/React-runtimeexecutor/platform/ios", + "${PODS_ROOT}/ReactCommon-Samples", + "${PODS_ROOT}/ReactCommon-Samples/platform/ios", + "${PODS_ROOT}/React-Fabric/react/renderer/components/view/platform/cxx", + "${PODS_ROOT}/React-NativeModulesApple", + "${PODS_ROOT}/React-graphics", + "${PODS_ROOT}/React-graphics/react/renderer/graphics/platform/ios", + "${PODS_ROOT}/React-featureflags", + "${PODS_ROOT}/React-renderercss", + "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-renderercss/React_renderercss.framework/Headers", ); IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD = ""; @@ -612,6 +633,10 @@ ); MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "$(inherited)", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); OTHER_CPLUSPLUSFLAGS = ( "$(OTHER_CFLAGS)", "-DFOLLY_NO_CONFIG", @@ -619,11 +644,14 @@ "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", + "-DRCT_REMOVE_LEGACY_ARCH=1", ); OTHER_LDFLAGS = "$(inherited)"; + PODFILE_DIR = "$(SRCROOT)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; USE_HERMES = true; }; name = Debug; @@ -686,6 +714,22 @@ "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + "${PODS_ROOT}/ReactCommon", + "${PODS_ROOT}/ReactCommon/react/nativemodule/core", + "${PODS_ROOT}/React-runtimeexecutor", + "${PODS_ROOT}/React-runtimeexecutor/platform/ios", + "${PODS_ROOT}/ReactCommon-Samples", + "${PODS_ROOT}/ReactCommon-Samples/platform/ios", + "${PODS_ROOT}/React-Fabric/react/renderer/components/view/platform/cxx", + "${PODS_ROOT}/React-NativeModulesApple", + "${PODS_ROOT}/React-graphics", + "${PODS_ROOT}/React-graphics/react/renderer/graphics/platform/ios", + "${PODS_ROOT}/React-featureflags", + "${PODS_ROOT}/React-renderercss", + "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-runtimeexecutor/React_runtimeexecutor.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-featureflags/React_featureflags.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-renderercss/React_renderercss.framework/Headers", ); IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD = ""; @@ -700,6 +744,10 @@ "\"$(inherited)\"", ); MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CFLAGS = ( + "$(inherited)", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); OTHER_CPLUSPLUSFLAGS = ( "$(OTHER_CFLAGS)", "-DFOLLY_NO_CONFIG", @@ -707,10 +755,13 @@ "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", + "-DRCT_REMOVE_LEGACY_ARCH=1", ); OTHER_LDFLAGS = "$(inherited)"; + PODFILE_DIR = "$(SRCROOT)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; USE_HERMES = true; VALIDATE_PRODUCT = YES; }; diff --git a/ios/edge/AppDelegate.swift b/ios/edge/AppDelegate.swift index 5e72ff52b2e..93601671ee0 100644 --- a/ios/edge/AppDelegate.swift +++ b/ios/edge/AppDelegate.swift @@ -1,10 +1,10 @@ -import ExpoQuickActions +internal import Expo +internal import ExpoQuickActions import Firebase import FirebaseMessaging import RNBootSplash import React import ReactAppDependencyProvider -import React_RCTAppDelegate import UIKit import UserNotifications @@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var securityView: UIView? var reactNativeDelegate: ReactNativeDelegate? - var reactNativeFactory: RCTReactNativeFactory? + var reactNativeFactory: ExpoReactNativeFactory? /** * Handles deep links. @@ -67,7 +67,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // React Native template code: let delegate = ReactNativeDelegate() - let factory = RCTReactNativeFactory(delegate: delegate) + let factory = ExpoReactNativeFactory(delegate: delegate) delegate.dependencyProvider = RCTAppDependencyProvider() reactNativeDelegate = delegate @@ -182,13 +182,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate { /// Configures the React Native instance. /// React Native template code. -class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate { +class ReactNativeDelegate: ExpoReactNativeFactoryDelegate { override func sourceURL(for bridge: RCTBridge) -> URL? { self.bundleURL() } // react-native-bootsplash integration: - override func customize(_ rootView: RCTRootView) { + // (Expo SDK 57's factory delegate passes the new-architecture root view as a + // plain UIView; RCTRootView is the old-architecture type.) + override func customize(_ rootView: UIView) { super.customize(rootView) RNBootSplash.initWithStoryboard("LaunchScreen", rootView: rootView) } diff --git a/ios/edge/Info.plist b/ios/edge/Info.plist index 7f52713a1e4..9916f370fa2 100644 --- a/ios/edge/Info.plist +++ b/ios/edge/Info.plist @@ -75,10 +75,10 @@ zcash reqaddr - LSRequiresIPhoneOS - LSMinimumSystemVersion 13.0 + LSRequiresIPhoneOS + NFCReaderUsageDescription $(PRODUCT_NAME) does not use NFC. NSAppTransportSecurity @@ -114,6 +114,8 @@ $(PRODUCT_NAME) uses photos to retrieve QR Code images. NSSpeechRecognitionUsageDescription $(PRODUCT_NAME) does not access speech recognition. + RCTNewArchEnabled + UIAppFonts AntDesign.ttf @@ -157,6 +159,8 @@ fetch remote-notification + UIDesignRequiresCompatibility + UILaunchStoryboardName LaunchScreen.storyboard UIRequiredDeviceCapabilities @@ -181,7 +185,5 @@ applinks:edge.app - UIDesignRequiresCompatibility - diff --git a/jest.config.js b/jest.config.js index b04a05bf1b3..236fcb4b397 100644 --- a/jest.config.js +++ b/jest.config.js @@ -8,7 +8,10 @@ module.exports = { // We want the Node.js version of edge-core-js, not the RN one: 'edge-core-js': require.resolve('edge-core-js') }, - preset: 'react-native', + preset: '@react-native/jest-preset', + // Custom resolver: worklets -> non-native build (reanimated 4 jest crash), and + // msw -> node export conditions (the RN preset's react-native condition nulls them). + resolver: './scripts/jestResolver.js', setupFilesAfterEnv: ['./jestSetup.js'], transformIgnorePatterns: [ '/node_modules/(?!(@react-native|react-native|@react-navigation|zcashname-sdk|@noble/ed25519))' diff --git a/jestSetup.js b/jestSetup.js index 2bae801fbaf..f44e17bf61f 100644 --- a/jestSetup.js +++ b/jestSetup.js @@ -10,8 +10,24 @@ import mockSafeAreaContext from 'react-native-safe-area-context/jest/mock' // -------------------------------------------------------------------- jest.mock('@react-native-clipboard/clipboard', () => mockClipboard) +jest.mock('react-native-haptic-feedback', () => ({ + __esModule: true, + default: { trigger() {} } +})) jest.mock('react-native-permissions', () => mockPermissions) jest.mock('react-native-safe-area-context', () => mockSafeAreaContext) +// Firebase 25 instantiates a native event emitter on import, which crashes in +// jest. Mock messaging (the only firebase module the app imports) to the methods +// the app uses. +jest.mock('@react-native-firebase/messaging', () => { + const messaging = () => ({ + getToken: jest.fn(async () => 'mock-device-token'), + getInitialNotification: jest.fn(async () => null), + onMessage: jest.fn(() => () => {}), + onNotificationOpenedApp: jest.fn(() => () => {}) + }) + return { __esModule: true, default: messaging } +}) require('react-native-reanimated').setUpTests() // -------------------------------------------------------------------- @@ -20,6 +36,11 @@ require('react-native-reanimated').setUpTests() jest.mock('react-native/Libraries/EventEmitter/NativeEventEmitter') +// The NativeEventEmitter automock above makes Keyboard.addListener return +// undefined; return a removable subscription so effect cleanups +// (showListener.remove()) don't throw. +require('react-native').Keyboard.addListener = () => ({ remove: () => {} }) + for (const log in global.console) { global.console[log] = jest.fn() } @@ -61,6 +82,7 @@ jest.mock('react-native-image-colors', () => ({ })) jest.mock('react-native-keyboard-controller', () => ({ + KeyboardAwareScrollView: 'KeyboardAwareScrollView', useReanimatedKeyboardAnimation: () => ({ height: { value: 0 }, progress: { value: 0 } @@ -119,6 +141,18 @@ jest.mock('edge-login-ui-rn', () => ({ } })) +// expo-blur is ESM and reaches for native globals, like expo-linear-gradient: +jest.mock('expo-blur', () => ({ + BlurTargetView: 'BlurTargetView', + BlurView: 'ExpoBlurView' +})) + +// expo-linear-gradient reaches for expo-modules-core's native globals on +// import, which don't exist under the react-native jest preset: +jest.mock('expo-linear-gradient', () => ({ + LinearGradient: 'ExpoLinearGradient' +})) + jest.mock('react-native-share', () => 'RNShare') jest.mock( @@ -250,11 +284,6 @@ jest.mock('react-native-device-info', () => { } }) -jest.mock('react-native-keyboard-aware-scroll-view', () => { - const { ScrollView } = require('react-native') - return { KeyboardAwareScrollView: ScrollView } -}) - jest.mock('react-native-reorderable-list', () => ({ ...jest.requireActual('react-native-reorderable-list'), useReorderableDrag: () => jest.fn() diff --git a/metro.config.js b/metro.config.js index 95fff748522..d28168ed44f 100644 --- a/metro.config.js +++ b/metro.config.js @@ -2,7 +2,6 @@ const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config') const { wrapWithReanimatedMetroConfig } = require('react-native-reanimated/metro-config') -const r3Paths = require('r3-hack') const defaultConfig = getDefaultConfig(__dirname) const { assetExts, sourceExts } = defaultConfig.resolver @@ -20,30 +19,6 @@ const config = { ) }, resolver: { - resolveRequest(context, moduleName, platform) { - if (platform === 'android') { - // Use Reanimated 3 on Android: - const filePath = r3Paths[moduleName] - if (filePath != null) { - return { type: 'sourceFile', filePath } - } - - // Ensure we aren't missing any reanimated 3 -> 4 mappings: - if ( - moduleName.startsWith('react-native-reanimated') || - moduleName.startsWith('react-native-worklets') - ) { - console.log( - `Could not find "${moduleName}". Please update r3-hack to include it.` - ) - return { type: 'empty' } - } - } - - // Otherwise use the normal Metro resolution: - return context.resolveRequest(context, moduleName, platform) - }, - // From react-native-svg-transformer: assetExts: assetExts.filter(ext => ext !== 'svg'), sourceExts: [...sourceExts, 'svg'] diff --git a/package-lock.json b/package-lock.json index a78c2afdca1..4d0c034cd0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,19 +15,19 @@ "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@paraswap/sdk": "^6.12.0", - "@react-native-async-storage/async-storage": "^1.19.4", + "@react-native-async-storage/async-storage": "2.2.0", "@react-native-clipboard/clipboard": "^1.16.3", - "@react-native-community/datetimepicker": "^8.4.2", - "@react-native-community/netinfo": "^11.4.1", - "@react-native-firebase/app": "^20.5.0", - "@react-native-firebase/messaging": "^20.5.0", - "@react-native-picker/picker": "^2.11.2", + "@react-native-community/datetimepicker": "9.1.0", + "@react-native-community/netinfo": "12.0.1", + "@react-native-firebase/app": "^25.1.0", + "@react-native-firebase/messaging": "^25.1.0", + "@react-native-picker/picker": "2.11.4", "@react-navigation/bottom-tabs": "^6.5.4", "@react-navigation/drawer": "^6.7.2", "@react-navigation/elements": "^1.3.14", "@react-navigation/native": "^6.1.3", "@react-navigation/stack": "^6.3.12", - "@sentry/react-native": "^7.12.0", + "@sentry/react-native": "~7.11.0", "@tanstack/react-query": "^5.84.2", "@types/jsrsasign": "^10.5.13", "@unstoppabledomains/resolution": "^9.3.0", @@ -44,7 +44,6 @@ "date-fns": "^2.22.1", "dateformat": "^3.0.3", "deepmerge": "^4.3.1", - "deprecated-react-native-prop-types": "^5.0.0", "detect-bundler": "^1.1.0", "disklet": "^0.6.0", "edge-core-js": "^2.48.1", @@ -54,7 +53,9 @@ "edge-info-server": "^3.12.0", "edge-login-ui-rn": "^3.37.2", "ethers": "^5.7.2", - "expo": "^53.0.0", + "expo": "^57.0.7", + "expo-blur": "~57.0.2", + "expo-linear-gradient": "~57.0.1", "expo-quick-actions": "^5.0.0", "jsrsasign": "^11.1.0", "marked": "^15.0.9", @@ -63,12 +64,11 @@ "posthog-react-native": "^2.8.1", "prompts": "^2.4.2", "qrcode-generator": "^1.4.4", - "r3-hack": "./scripts/r3-hack", - "react": "19.0.0", - "react-native": "0.79.2", + "react": "19.2.3", + "react-native": "0.86.0", "react-native-airship": "^0.3.0", "react-native-battery-optimization-check": "^1.0.8", - "react-native-bootsplash": "^6.3.8", + "react-native-bootsplash": "^6.3.10", "react-native-confetti-cannon": "^1.5.2", "react-native-contacts": "^8.0.10", "react-native-custom-tabs": "https://github.com/adminphoeniixx/react-native-custom-tabs#develop", @@ -78,40 +78,38 @@ "react-native-fast-shadow": "^0.1.0", "react-native-file-access": "^3.1.1", "react-native-fs": "^2.19.0", - "react-native-gesture-handler": "^2.28.0", + "react-native-gesture-handler": "~2.32.0", "react-native-get-random-values": "^1.11.0", "react-native-gifted-charts": "1.4.63", "react-native-gradle-plugin": "^0.71.19", - "react-native-haptic-feedback": "^1.14.0", + "react-native-haptic-feedback": "^3.0.0", "react-native-image-colors": "^2.4.0", "react-native-image-picker": "^8.2.1", "react-native-in-app-review": "^4.3.5", - "react-native-keyboard-aware-scroll-view": "^0.9.5", - "react-native-keyboard-controller": "^1.19.0", - "react-native-linear-gradient": "^2.8.3", + "react-native-keyboard-controller": "1.22.2", "react-native-localize": "^3.4.2", "react-native-mail": "^6.1.1", "react-native-monero": "0.5.0", "react-native-patina": "^0.2.0", - "react-native-performance": "^5.1.4", + "react-native-performance": "^6.0.0", "react-native-permissions": "^4.1.5", "react-native-piratechain": "0.6.3", - "react-native-reanimated": "^4.1.3", + "react-native-reanimated": "4.5.3", "react-native-render-html": "^6.3.4", "react-native-reorderable-list": "^0.5.0", "react-native-safari-view": "^2.1.0", - "react-native-safe-area-context": "^5.6.1", - "react-native-screens": "^4.16.0", + "react-native-safe-area-context": "~5.7.0", + "react-native-screens": "4.25.2", "react-native-securerandom": "^1.0.1", "react-native-share": "^12.0.11", - "react-native-sound": "^0.12.0", + "react-native-sound": "^0.13.0", "react-native-store-review": "https://github.com/EdgeApp/react-native-store-review#b0a3379829056e7328b550d5b135271f7a777083", - "react-native-svg": "^15.12.1", + "react-native-svg": "15.15.4", "react-native-vector-icons": "^10.1.0", - "react-native-vision-camera": "^4.7.2", - "react-native-webview": "^13.15.0", + "react-native-vision-camera": "^4.7.3", + "react-native-webview": "13.16.1", "react-native-wheel-picker-android": "^2.0.6", - "react-native-worklets": "^0.6.1", + "react-native-worklets": "0.10.0", "react-native-zano": "^0.5.1", "react-native-zcash": "0.13.4", "react-redux": "^8.1.1", @@ -131,17 +129,18 @@ "zcashname-sdk": "^0.7.2" }, "devDependencies": { - "@babel/core": "^7.25.2", + "@babel/core": "^7.29.0", "@babel/plugin-transform-export-namespace-from": "^7.23.3", "@babel/preset-env": "^7.25.3", "@babel/preset-typescript": "^7.18.6", "@babel/runtime": "^7.25.0", - "@react-native-community/cli": "18.0.0", - "@react-native-community/cli-platform-android": "18.0.0", - "@react-native-community/cli-platform-ios": "18.0.0", - "@react-native/babel-preset": "0.79.2", - "@react-native/metro-config": "0.79.2", - "@react-native/typescript-config": "0.79.2", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.86.0", + "@react-native/jest-preset": "0.86.0", + "@react-native/metro-config": "0.86.0", + "@react-native/typescript-config": "0.86.0", "@rollup/plugin-babel": "^6.0.3", "@stakekit/api-hooks": "^0.0.93", "@testing-library/react-native": "^13.2.0", @@ -156,8 +155,7 @@ "@types/lodash": "^4.14.149", "@types/node-fetch": "^2.6.2", "@types/prompts": "^2.0.14", - "@types/react": "^19.0.0", - "@types/react-native": "^0.71.1", + "@types/react": "^19.2.0", "@types/react-native-custom-tabs": "^0.1.2", "@types/react-native-safari-view": "^2.0.5", "@types/react-native-snap-carousel": "^3.8.9", @@ -180,7 +178,7 @@ "fs-extra": "^10.1.0", "https-browserify": "^1.0.0", "husky": "^7.0.0", - "jest": "^30.0.0", + "jest": "~29.7.0", "jetifier": "^1.6.5", "lint-staged": "^10.5.3", "msw": "^2.8.4", @@ -192,7 +190,7 @@ "prettier": "2.8.8", "process": "^0.11.10", "react-native-svg-transformer": "^1.5.1", - "react-test-renderer": "19.0.0", + "react-test-renderer": "19.2.3", "readable-stream": "^3.6.2", "rollup": "^3.20.6", "rollup-plugin-node-resolve": "4.0.0", @@ -201,7 +199,7 @@ "string_decoder": "^1.3.0", "sucrase": "^3.35.0", "typechain": "^8.3.2", - "typescript": "5.0.4", + "typescript": "~5.8.3", "updot": "^1.2.0", "vm-browserify": "^1.1.2", "xcode": "^3.0.1" @@ -234,22 +232,13 @@ "typescript": "^5.0.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/code-frame": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -258,26 +247,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.28.0", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -300,11 +293,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -314,21 +309,25 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -352,15 +351,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", "semver": "^6.3.1" }, "engines": { @@ -414,41 +415,49 @@ } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -458,17 +467,21 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -490,12 +503,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -505,32 +520,40 @@ } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -549,11 +572,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.2", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -630,10 +655,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.0" + "@babel/types": "^7.29.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -717,12 +744,14 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.24.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.7.tgz", + "integrity": "sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-decorators": "^7.24.1" + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-decorators": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -757,6 +786,7 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -767,6 +797,7 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -777,6 +808,7 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" @@ -787,6 +819,7 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -799,10 +832,12 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.24.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.29.7.tgz", + "integrity": "sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -863,6 +898,7 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -876,6 +912,7 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -886,6 +923,7 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -895,10 +933,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -909,6 +949,7 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -929,6 +970,7 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" @@ -939,6 +981,7 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -949,6 +992,7 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" @@ -969,6 +1013,7 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -982,6 +1027,7 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -994,10 +1040,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1092,11 +1140,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1107,7 +1157,6 @@ }, "node_modules/@babel/plugin-transform-class-static-block": { "version": "7.27.1", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", @@ -1121,15 +1170,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1140,6 +1191,7 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -1296,6 +1348,7 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", @@ -1325,6 +1378,7 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1379,11 +1433,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1453,10 +1509,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1467,6 +1525,7 @@ }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1524,11 +1583,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1607,14 +1668,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.29.7.tgz", + "integrity": "sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1624,10 +1687,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.29.7.tgz", + "integrity": "sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==", "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.27.1" + "@babel/plugin-transform-react-jsx": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1638,6 +1703,7 @@ }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1651,6 +1717,7 @@ }, "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1663,11 +1730,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.29.7.tgz", + "integrity": "sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1678,6 +1747,7 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.28.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1758,6 +1828,7 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -1772,6 +1843,7 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.27.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1811,14 +1883,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz", + "integrity": "sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-syntax-typescript": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1989,33 +2063,17 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/preset-react": { - "version": "7.27.1", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-react-display-name": "^7.27.1", - "@babel/plugin-transform-react-jsx": "^7.27.1", - "@babel/plugin-transform-react-jsx-development": "^7.27.1", - "@babel/plugin-transform-react-pure-annotations": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/preset-typescript": { - "version": "7.27.1", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz", + "integrity": "sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.27.1" + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-syntax-jsx": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-typescript": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -2032,44 +2090,31 @@ } }, "node_modules/@babel/template": { - "version": "7.27.2", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.0", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse--for-generate-function-map": { - "name": "@babel/traverse", - "version": "7.28.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", "debug": "^4.3.1" }, "engines": { @@ -2077,11 +2122,13 @@ } }, "node_modules/@babel/types": { - "version": "7.28.2", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -2089,6 +2136,8 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, @@ -2475,40 +2524,6 @@ "integrity": "sha512-UE2x9N7XD/1qqtXA+4CZPD1RQAlM0lEdXdy09CJ/wNR+mgGKqwLRH4BGGfOAWwwz06pIT3c2tC4gvXbntGAeMA==", "license": "MIT" }, - "node_modules/@emnapi/core": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.0.tgz", - "integrity": "sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.0.tgz", - "integrity": "sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { "version": "14.1.2", "license": "MIT" @@ -3577,32 +3592,37 @@ } }, "node_modules/@expo/cli": { - "version": "0.24.20", - "license": "MIT", - "dependencies": { - "@0no-co/graphql.web": "^1.0.8", - "@babel/runtime": "^7.20.0", - "@expo/code-signing-certificates": "^0.0.5", - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/devcert": "^1.1.2", - "@expo/env": "~1.0.7", - "@expo/image-utils": "^0.7.6", - "@expo/json-file": "^9.1.5", - "@expo/metro-config": "~0.20.17", - "@expo/osascript": "^2.2.5", - "@expo/package-manager": "^1.8.6", - "@expo/plist": "^0.3.5", - "@expo/prebuild-config": "^9.0.11", - "@expo/spawn-async": "^1.7.2", - "@expo/ws-tunnel": "^1.0.1", - "@expo/xcpretty": "^4.3.0", - "@react-native/dev-middleware": "0.79.5", - "@urql/core": "^5.0.6", - "@urql/exchange-retry": "^1.3.0", + "version": "57.0.9", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-57.0.9.tgz", + "integrity": "sha512-41z9z68SynNXasZOjuT1si5Sq5OKL6SLf40ZjikbtZgDuvBO8HaUsaDzsJ0c1UZJ3N+vMzYCc1JUIDyRkVBjkA==", + "license": "MIT", + "dependencies": { + "@expo/code-signing-certificates": "^0.0.6", + "@expo/config": "~57.0.5", + "@expo/config-plugins": "~57.0.5", + "@expo/devcert": "^1.2.1", + "@expo/env": "~2.4.2", + "@expo/image-utils": "^0.11.3", + "@expo/inline-modules": "^0.1.3", + "@expo/json-file": "^11.0.1", + "@expo/log-box": "^57.0.1", + "@expo/metro": "~56.0.0", + "@expo/metro-config": "~57.0.6", + "@expo/metro-file-map": "^57.0.1", + "@expo/osascript": "^2.7.1", + "@expo/package-manager": "^1.13.1", + "@expo/plist": "^0.8.1", + "@expo/prebuild-config": "^57.0.8", + "@expo/require-utils": "^57.0.3", + "@expo/router-server": "^57.0.3", + "@expo/schema-utils": "^57.0.2", + "@expo/spawn-async": "^1.8.0", + "@expo/ws-tunnel": "^2.0.0", + "@expo/xcpretty": "^4.4.4", + "@react-native/dev-middleware": "0.86.0", "accepts": "^1.3.8", + "agent-cli-detector": "^0.1.2", "arg": "^5.0.2", - "better-opn": "~3.0.2", "bplist-creator": "0.1.0", "bplist-parser": "^0.3.1", "chalk": "^4.0.0", @@ -3610,165 +3630,392 @@ "compression": "^1.7.4", "connect": "^3.7.0", "debug": "^4.3.4", - "env-editor": "^0.4.1", - "freeport-async": "^2.0.0", + "dnssd-advertise": "^1.1.4", + "expo-server": "^57.0.1", + "fetch-nodeshim": "^0.4.10", "getenv": "^2.0.0", - "glob": "^10.4.2", - "lan-network": "^0.1.6", - "minimatch": "^9.0.0", - "node-forge": "^1.3.1", + "glob": "^13.0.0", + "lan-network": "^0.2.1", + "multitars": "^1.0.0", + "node-forge": "^1.3.3", "npm-package-arg": "^11.0.0", "ora": "^3.4.0", - "picomatch": "^3.0.1", - "pretty-bytes": "^5.6.0", + "picomatch": "^4.0.4", "pretty-format": "^29.7.0", "progress": "^2.0.3", "prompts": "^2.3.2", - "qrcode-terminal": "0.11.0", - "require-from-string": "^2.0.2", - "requireg": "^0.2.2", - "resolve": "^1.22.2", "resolve-from": "^5.0.0", - "resolve.exports": "^2.0.3", "semver": "^7.6.0", "send": "^0.19.0", "slugify": "^1.3.4", - "source-map-support": "~0.5.21", "stacktrace-parser": "^0.1.10", "structured-headers": "^0.4.1", - "tar": "^7.4.3", "terminal-link": "^2.1.1", - "undici": "^6.18.2", + "toqr": "^0.1.1", "wrap-ansi": "^7.0.0", - "ws": "^8.12.1" + "ws": "^8.12.1", + "zod": "^3.25.76" }, "bin": { - "expo-internal": "build/bin/cli" + "expo-internal": "main.js" + }, + "peerDependencies": { + "expo": "*", + "expo-router": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "expo-router": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "node_modules/@expo/cli/node_modules/@react-native/debugger-frontend": { - "version": "0.79.5", - "license": "BSD-3-Clause", - "engines": { - "node": ">=18" + "node_modules/@expo/cli/node_modules/@expo/config-plugins": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.5.tgz", + "integrity": "sha512-xhUGgzpFWRghDUH98+Wl4RDakYhTsbyMg6aOYiBjRzPO/THH8tKMw3vlksgFYlU2PkiAdABJN3tNPf5qmvOQhA==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^57.0.2", + "@expo/json-file": "~11.0.1", + "@expo/plist": "^0.8.1", + "@expo/require-utils": "^57.0.3", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "node_modules/@expo/cli/node_modules/@react-native/dev-middleware": { - "version": "0.79.5", + "node_modules/@expo/cli/node_modules/@expo/config-types": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.2.tgz", + "integrity": "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==", + "license": "MIT" + }, + "node_modules/@expo/cli/node_modules/@expo/image-utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.11.3.tgz", + "integrity": "sha512-yMVjkndhXm9mct0uMq+ndxqT6FgAnhucdUfmXuQ6V6uE021GOiYCACO+KZ0MB4vearPSvbWTGfi32QQr2qocfQ==", "license": "MIT", "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.79.5", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" - }, - "engines": { - "node": ">=18" + "@expo/require-utils": "^57.0.3", + "@expo/spawn-async": "^1.8.0", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "semver": "^7.6.0" } }, - "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/debug": { - "version": "2.6.9", + "node_modules/@expo/cli/node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", "license": "MIT", "dependencies": { - "ms": "2.0.0" + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" } }, - "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/@expo/cli/node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "6.2.3", + "node_modules/@expo/cli/node_modules/@expo/plist": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.1.tgz", + "integrity": "sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==", "license": "MIT", "dependencies": { - "async-limiter": "~1.0.0" + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" } }, - "node_modules/@expo/cli/node_modules/ansi-styles": { - "version": "5.2.0", + "node_modules/@expo/cli/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/@expo/cli/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/@expo/cli/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@expo/cli/node_modules/ci-info": { - "version": "3.9.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@expo/cli/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "license": "MIT", "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" } }, - "node_modules/@expo/cli/node_modules/encodeurl": { - "version": "2.0.0", + "node_modules/@expo/cli/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, "engines": { - "node": ">= 0.8" + "node": "18 || 20 || >=22" } }, - "node_modules/@expo/cli/node_modules/minimatch": { - "version": "9.0.5", - "license": "ISC", + "node_modules/@expo/cli/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@expo/cli/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@expo/cli/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@expo/cli/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@expo/cli/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/cli/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/cli/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/cli/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/cli/node_modules/picomatch": { - "version": "3.0.1", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@expo/cli/node_modules/pretty-format": { - "version": "29.7.0", + "node_modules/@expo/cli/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/@expo/cli/node_modules/react-is": { - "version": "18.3.1", - "license": "MIT" - }, "node_modules/@expo/cli/node_modules/send": { - "version": "0.19.1", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -3777,13 +4024,13 @@ "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -3791,6 +4038,8 @@ }, "node_modules/@expo/cli/node_modules/send/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -3798,40 +4047,77 @@ }, "node_modules/@expo/cli/node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/@expo/cli/node_modules/undici": { - "version": "6.21.3", + "node_modules/@expo/cli/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@expo/cli/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/cli/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/cli/node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "license": "MIT", "engines": { - "node": ">=18.17" + "node": ">=8.0" } }, "node_modules/@expo/code-signing-certificates": { - "version": "0.0.5", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.6.tgz", + "integrity": "sha512-iNe0puxwBNEcuua9gmTGzq+SuMDa0iATai1FlFTMHJ/vUmKvN/V//drXoLJkVb5i5H3iE/n/qIJxyoBnXouD0w==", "license": "MIT", "dependencies": { - "node-forge": "^1.2.1", - "nullthrows": "^1.1.1" + "node-forge": "^1.3.3" } }, "node_modules/@expo/config": { - "version": "11.0.13", + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-57.0.5.tgz", + "integrity": "sha512-XqveHQzr6PTqHGnv6NVVZ1CFgB/TgR2mKtHsJA/gYS/76pe2cP1yK/O820xGW2RTnDGTmyhOdagmK6khcN46vg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "~7.10.4", - "@expo/config-plugins": "~10.1.2", - "@expo/config-types": "^53.0.5", - "@expo/json-file": "^9.1.5", + "@expo/config-plugins": "~57.0.5", + "@expo/config-types": "^57.0.2", + "@expo/json-file": "^11.0.1", + "@expo/require-utils": "^57.0.3", "deepmerge": "^4.3.1", "getenv": "^2.0.0", - "glob": "^10.4.2", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0", + "glob": "^13.0.0", "resolve-workspace-root": "^2.0.0", "semver": "^7.6.0", - "slugify": "^1.3.4", - "sucrase": "3.35.0" + "slugify": "^1.3.4" } }, "node_modules/@expo/config-plugins": { @@ -3858,87 +4144,318 @@ "version": "53.0.5", "license": "MIT" }, - "node_modules/@expo/config/node_modules/@babel/code-frame": { - "version": "7.10.4", + "node_modules/@expo/config/node_modules/@expo/config-plugins": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.5.tgz", + "integrity": "sha512-xhUGgzpFWRghDUH98+Wl4RDakYhTsbyMg6aOYiBjRzPO/THH8tKMw3vlksgFYlU2PkiAdABJN3tNPf5qmvOQhA==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" + "@expo/config-types": "^57.0.2", + "@expo/json-file": "~11.0.1", + "@expo/plist": "^0.8.1", + "@expo/require-utils": "^57.0.3", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "node_modules/@expo/devcert": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "@expo/sudo-prompt": "^9.3.1", - "debug": "^3.1.0", - "glob": "^10.4.2" - } + "node_modules/@expo/config/node_modules/@expo/config-types": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.2.tgz", + "integrity": "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==", + "license": "MIT" }, - "node_modules/@expo/devcert/node_modules/debug": { - "version": "3.2.7", + "node_modules/@expo/config/node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" } }, - "node_modules/@expo/env": { - "version": "1.0.7", + "node_modules/@expo/config/node_modules/@expo/plist": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.1.tgz", + "integrity": "sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "debug": "^4.3.4", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", - "getenv": "^2.0.0" + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" } }, - "node_modules/@expo/fingerprint": { - "version": "0.13.4", + "node_modules/@expo/config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.7.2", - "arg": "^5.0.2", - "chalk": "^4.1.2", - "debug": "^4.3.4", - "find-up": "^5.0.0", - "getenv": "^2.0.0", - "glob": "^10.4.2", - "ignore": "^5.3.1", - "minimatch": "^9.0.0", - "p-limit": "^3.1.0", - "resolve-from": "^5.0.0", - "semver": "^7.6.0" - }, - "bin": { - "fingerprint": "bin/cli.js" + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/@expo/fingerprint/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/@expo/config/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/@expo/fingerprint/node_modules/minimatch": { - "version": "9.0.5", - "license": "ISC", + "node_modules/@expo/config/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/image-utils": { - "version": "0.7.6", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.0.0", + "node_modules/@expo/config/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/config/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@expo/devcert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.2.1.tgz", + "integrity": "sha512-qC4eaxmKMTmJC2ahwyui6ud8f3W60Ss7pMkpBq40Hu3zyiAaugPXnZ24145U7K36qO9UHdZUVxsCvIpz2RYYCA==", + "license": "MIT", + "dependencies": { + "@expo/sudo-prompt": "^9.3.1", + "debug": "^3.1.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/devtools": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/devtools/-/devtools-57.0.1.tgz", + "integrity": "sha512-GyUf+wFNkbttaX0jR7MZa9bm77U0IrLg6d2AjpxdyoXw/w4abHoXG0oFufwLMgP9zLTd5+Ct4X/ffNUTnlzZgg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@expo/dom-webview": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/dom-webview/-/dom-webview-57.0.1.tgz", + "integrity": "sha512-lAKsME4SAq+8sf56oN0DX5TBYyruupoRxbWbD2xf9RnKY8y6x8eb9LCE5pxSN0qyWdqnp+0wmyWzDkKboThKAw==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/env": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.4.2.tgz", + "integrity": "sha512-28pqaEqwnmLduZ00Pq9HkSzE5wbj1MTwp5/n8nm8rD8MCjR9eUnVOwmNksPI3Be2ReAPO/DbPn1puy0mvoocsQ==", + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "getenv": "^2.0.0" + }, + "engines": { + "node": ">=20.12.0" + } + }, + "node_modules/@expo/expo-modules-macros-plugin": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@expo/expo-modules-macros-plugin/-/expo-modules-macros-plugin-0.6.1.tgz", + "integrity": "sha512-cpsLZE4rqkc1Y3eZTkxB98jrqY1YXgetmtxFt8q89jBRmk3quRuk1BZo+VcnCSObZardjg99r1k5xijEMONFGA==", + "license": "MIT" + }, + "node_modules/@expo/fingerprint": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.20.5.tgz", + "integrity": "sha512-XCDfmbkTpTsYVq1xvvUJvXjfFQs2Hj+icQACBrc6BZmA91YPr2H3uw8sUX13d+1ij6E8lgVCtsK9jh3J2cN/SQ==", + "license": "MIT", + "dependencies": { + "@expo/env": "^2.4.2", + "@expo/spawn-async": "^1.8.0", + "arg": "^5.0.2", + "chalk": "^4.1.2", + "debug": "^4.3.4", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "ignore": "^5.3.1", + "minimatch": "^10.2.2", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + }, + "bin": { + "fingerprint": "bin/cli.js" + } + }, + "node_modules/@expo/fingerprint/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/fingerprint/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/fingerprint/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/fingerprint/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/fingerprint/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.7.6", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.7.2", + "chalk": "^4.0.0", "getenv": "^2.0.0", "jimp-compact": "0.16.1", "parse-png": "^2.1.0", @@ -3948,6 +4465,150 @@ "unique-string": "~2.0.0" } }, + "node_modules/@expo/inline-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@expo/inline-modules/-/inline-modules-0.1.3.tgz", + "integrity": "sha512-eHSxWYfgq65mP3Qz8PclVjUkSrDIlGl3va9U7PMcTpGItOvee/i0ZzGinH5A25oARR5ouD64eESBKwtT/CwdHg==", + "license": "MIT", + "dependencies": { + "@expo/config-plugins": "~57.0.5" + } + }, + "node_modules/@expo/inline-modules/node_modules/@expo/config-plugins": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.5.tgz", + "integrity": "sha512-xhUGgzpFWRghDUH98+Wl4RDakYhTsbyMg6aOYiBjRzPO/THH8tKMw3vlksgFYlU2PkiAdABJN3tNPf5qmvOQhA==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^57.0.2", + "@expo/json-file": "~11.0.1", + "@expo/plist": "^0.8.1", + "@expo/require-utils": "^57.0.3", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/inline-modules/node_modules/@expo/config-types": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.2.tgz", + "integrity": "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==", + "license": "MIT" + }, + "node_modules/@expo/inline-modules/node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/inline-modules/node_modules/@expo/plist": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.1.tgz", + "integrity": "sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/inline-modules/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/inline-modules/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/inline-modules/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/inline-modules/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/inline-modules/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/inline-modules/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/inline-modules/node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, "node_modules/@expo/json-file": { "version": "9.1.5", "license": "MIT", @@ -3963,108 +4624,666 @@ "@babel/highlight": "^7.10.4" } }, + "node_modules/@expo/local-build-cache-provider": { + "version": "57.0.4", + "resolved": "https://registry.npmjs.org/@expo/local-build-cache-provider/-/local-build-cache-provider-57.0.4.tgz", + "integrity": "sha512-B/cI73shkLSYBYuFyh+zCbS+WhqJgawWPW4MPdMiNLJKv9RmV4dv1FGjsidiIiG2k4kYKerBDLK4bLbC7qERQQ==", + "license": "MIT", + "dependencies": { + "@expo/config": "~57.0.5", + "chalk": "^4.1.2" + } + }, + "node_modules/@expo/log-box": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/log-box/-/log-box-57.0.1.tgz", + "integrity": "sha512-fuVNHhOerdRWtpq27gD6JTSVYESsfRu+SMdrNCWxW+gFnusS6dGKfx3lKGBZ4ZkMNiLWn8maBHo39YKzJNXFYQ==", + "license": "MIT", + "dependencies": { + "@expo/dom-webview": "^57.0.1", + "anser": "^1.4.9", + "stacktrace-parser": "^0.1.10" + }, + "peerDependencies": { + "@expo/dom-webview": "^57.0.1", + "expo": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/@expo/metro": { + "version": "56.0.0", + "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-56.0.0.tgz", + "integrity": "sha512-5gIgQHtEpjjvsjKfVtIv23a98LLRV0/y07PDShEwYSytAMlE3FSF8RHXqtHc1sUJL6dn7hnuIBpIbrLXXuVi0A==", + "license": "MIT", + "dependencies": { + "metro": "0.84.4", + "metro-babel-transformer": "0.84.4", + "metro-cache": "0.84.4", + "metro-cache-key": "0.84.4", + "metro-config": "0.84.4", + "metro-core": "0.84.4", + "metro-file-map": "0.84.4", + "metro-minify-terser": "0.84.4", + "metro-resolver": "0.84.4", + "metro-runtime": "0.84.4", + "metro-source-map": "0.84.4", + "metro-symbolicate": "0.84.4", + "metro-transform-plugins": "0.84.4", + "metro-transform-worker": "0.84.4" + } + }, "node_modules/@expo/metro-config": { - "version": "0.20.17", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-57.0.6.tgz", + "integrity": "sha512-liXA9axM3aykAdil4qdHOYKmQqTDdXYkAoT3Eny+SQEo3btERJCbOk8VH48/G0sVbXCj82AbSS8s3XNEQNqbDQ==", "license": "MIT", "dependencies": { + "@babel/code-frame": "^7.20.0", "@babel/core": "^7.20.0", "@babel/generator": "^7.20.5", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "@expo/config": "~11.0.12", - "@expo/env": "~1.0.7", - "@expo/json-file": "~9.1.5", - "@expo/spawn-async": "^1.7.2", + "@expo/config": "~57.0.5", + "@expo/env": "~2.4.2", + "@expo/json-file": "~11.0.1", + "@expo/metro": "~56.0.0", + "@expo/require-utils": "^57.0.3", + "@expo/spawn-async": "^1.8.0", + "@jridgewell/gen-mapping": "^0.3.13", + "@jridgewell/remapping": "^2.3.5", + "@jridgewell/sourcemap-codec": "^1.5.5", + "browserslist": "^4.25.0", "chalk": "^4.1.0", "debug": "^4.3.2", - "dotenv": "~16.4.5", - "dotenv-expand": "~11.0.6", "getenv": "^2.0.0", - "glob": "^10.4.2", + "glob": "^13.0.0", + "hermes-parser": "^0.36.0", "jsc-safe-url": "^0.2.4", - "lightningcss": "~1.27.0", - "minimatch": "^9.0.0", - "postcss": "~8.4.32", + "lightningcss": "^1.30.1", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", "resolve-from": "^5.0.0" - } - }, - "node_modules/@expo/metro-config/node_modules/brace-expansion": { - "version": "2.0.1", + }, + "peerDependencies": { + "expo": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } + } + }, + "node_modules/@expo/metro-config/node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/metro-config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/metro-config/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/metro-config/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/metro-config/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/metro-config/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@expo/metro-file-map": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/@expo/metro-file-map/-/metro-file-map-57.0.1.tgz", + "integrity": "sha512-8JXfVstZN7QnP4NianZZnlTVboOWR0sG8trUDNajOjnbGlPln29vponXM84tY+3tAHapz5/TxE53L0ixUwqPtA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fb-watchman": "^2.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "node_modules/@expo/osascript": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.7.1.tgz", + "integrity": "sha512-Zn03EX6In7ts2lPUW2ESUSkEhEWQN1qqsiXjadtZMJOuZRkMiAg1ZQHuvz9DjByDWNJ2pBwAGyrts9lj9k389g==", + "license": "MIT", + "dependencies": { + "@expo/spawn-async": "^1.8.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.13.1.tgz", + "integrity": "sha512-y/K+CaYYpZpNGZhSX4HyLT/vyIunFjNfyoxNysPBCefeLKI/VCx6f9LNPzrxayr3rCYO5bl9O8H+HRQK265Nkg==", + "license": "MIT", + "dependencies": { + "@expo/json-file": "^11.0.1", + "@expo/spawn-async": "^1.8.0", + "chalk": "^4.0.0", + "npm-package-arg": "^11.0.0", + "ora": "^3.4.0", + "resolve-workspace-root": "^2.0.0" + } + }, + "node_modules/@expo/package-manager/node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/package-manager/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/package-manager/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@expo/package-manager/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/@expo/package-manager/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@expo/package-manager/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/package-manager/node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/package-manager/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/package-manager/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/plist": { + "version": "0.3.5", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.2.3", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/plist/node_modules/xmlbuilder": { + "version": "15.1.1", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@expo/prebuild-config": { + "version": "57.0.8", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-57.0.8.tgz", + "integrity": "sha512-NQjRuTLvxUnggK57pKTHLtzS8YYtjrQSGYu+CjgWaO8lNlqdoBbvHrxGYtc9tBuOI3xVPaTfuIvjikxX1r+UhQ==", + "license": "MIT", + "dependencies": { + "@expo/config": "~57.0.5", + "@expo/config-plugins": "~57.0.5", + "@expo/config-types": "^57.0.2", + "@expo/image-utils": "^0.11.3", + "@expo/json-file": "^11.0.1", + "@react-native/normalize-colors": "0.86.0", + "debug": "^4.3.1", + "expo-modules-autolinking": "~57.0.8", + "resolve-from": "^5.0.0", + "semver": "^7.6.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.5.tgz", + "integrity": "sha512-xhUGgzpFWRghDUH98+Wl4RDakYhTsbyMg6aOYiBjRzPO/THH8tKMw3vlksgFYlU2PkiAdABJN3tNPf5qmvOQhA==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^57.0.2", + "@expo/json-file": "~11.0.1", + "@expo/plist": "^0.8.1", + "@expo/require-utils": "^57.0.3", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config-types": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.2.tgz", + "integrity": "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==", + "license": "MIT" + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/image-utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.11.3.tgz", + "integrity": "sha512-yMVjkndhXm9mct0uMq+ndxqT6FgAnhucdUfmXuQ6V6uE021GOiYCACO+KZ0MB4vearPSvbWTGfi32QQr2qocfQ==", + "license": "MIT", + "dependencies": { + "@expo/require-utils": "^57.0.3", + "@expo/spawn-async": "^1.8.0", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "semver": "^7.6.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/plist": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.1.tgz", + "integrity": "sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/@expo/prebuild-config/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@expo/prebuild-config/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/@expo/metro-config/node_modules/minimatch": { - "version": "9.0.5", - "license": "ISC", + "node_modules/@expo/prebuild-config/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/osascript": { - "version": "2.2.5", - "license": "MIT", - "dependencies": { - "@expo/spawn-async": "^1.7.2", - "exec-async": "^2.2.0" - }, + "node_modules/@expo/prebuild-config/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12" + "node": "20 || >=22" } }, - "node_modules/@expo/package-manager": { - "version": "1.8.6", - "license": "MIT", + "node_modules/@expo/prebuild-config/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", "dependencies": { - "@expo/json-file": "^9.1.5", - "@expo/spawn-async": "^1.7.2", - "chalk": "^4.0.0", - "npm-package-arg": "^11.0.0", - "ora": "^3.4.0", - "resolve-workspace-root": "^2.0.0" + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/plist": { - "version": "0.3.5", - "license": "MIT", + "node_modules/@expo/prebuild-config/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.2.3", - "xmlbuilder": "^15.1.1" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/plist/node_modules/xmlbuilder": { + "node_modules/@expo/prebuild-config/node_modules/xmlbuilder": { "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "license": "MIT", "engines": { "node": ">=8.0" } }, - "node_modules/@expo/prebuild-config": { - "version": "9.0.11", + "node_modules/@expo/require-utils": { + "version": "57.0.3", + "resolved": "https://registry.npmjs.org/@expo/require-utils/-/require-utils-57.0.3.tgz", + "integrity": "sha512-ns05X1K8tM+Qtzp6dNloUFOopSdh3J+HC61BtOR8WHhgtPFyX8TKuO2diqZUqVg9K8yfkWug7g8tBS0qRniSTA==", "license": "MIT", "dependencies": { - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/config-types": "^53.0.5", - "@expo/image-utils": "^0.7.6", - "@expo/json-file": "^9.1.5", - "@react-native/normalize-colors": "0.79.5", - "debug": "^4.3.1", - "resolve-from": "^5.0.0", - "semver": "^7.6.0", - "xml2js": "0.6.0" + "@babel/code-frame": "^7.20.0", + "@babel/core": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8" + }, + "peerDependencies": { + "typescript": "^5.0.0 || ^5.0.0-0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@expo/router-server": { + "version": "57.0.3", + "resolved": "https://registry.npmjs.org/@expo/router-server/-/router-server-57.0.3.tgz", + "integrity": "sha512-gkboMZUv+eAK4XSBGSIQ6at3dSa/QYARm+8PKj8pMEhGnt08vgcXpWAW5rYJMoLukaDD/bUDX/JU2Iz1Azwziw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "@expo/metro-runtime": "^57.0.5", + "expo": "*", + "expo-constants": "^57.0.5", + "expo-font": "^57.0.1", + "expo-router": "*", + "expo-server": "^57.0.1", + "react": "*", + "react-dom": "*", + "react-server-dom-webpack": "~19.0.1 || ~19.1.2 || ~19.2.1" + }, + "peerDependenciesMeta": { + "@expo/metro-runtime": { + "optional": true + }, + "expo-router": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-server-dom-webpack": { + "optional": true + } } }, - "node_modules/@expo/prebuild-config/node_modules/@react-native/normalize-colors": { - "version": "0.79.5", + "node_modules/@expo/schema-utils": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/schema-utils/-/schema-utils-57.0.2.tgz", + "integrity": "sha512-fMu/jyN0l1Wzv7XkeWR4IYCx1M8ryui3FdBNGrWwbRgJ7EhxXxK8E2jxP2W3pbgUwUY0V3hG8+GyfCZwny+Lxw==", "license": "MIT" }, "node_modules/@expo/sdk-runtime-versions": { @@ -4072,10 +5291,12 @@ "license": "MIT" }, "node_modules/@expo/spawn-async": { - "version": "1.7.2", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.8.0.tgz", + "integrity": "sha512-eb9xxd/LbuEGSdua4NumCu/McVB9EM+F/JxB9pWgnERw4HQ9XyTNH1KapG6oqLWR8TuRK2LQfzJlmNi94CVobw==", "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3" + "cross-spawn": "^7.0.6" }, "engines": { "node": ">=12" @@ -4083,48 +5304,33 @@ }, "node_modules/@expo/sudo-prompt": { "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@expo/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==", "license": "MIT" }, - "node_modules/@expo/vector-icons": { - "version": "14.1.0", + "node_modules/@expo/ws-tunnel": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-2.0.0.tgz", + "integrity": "sha512-j+JfTRdCk820J9dU0sA2SqshQIKFOMo7ED84w9MJFcebfbNQgsLztEY/SABDkGnjatrW4xGqnUhVRxSBVyCkXw==", "license": "MIT", "peerDependencies": { - "expo-font": "*", - "react": "*", - "react-native": "*" + "ws": "^8.0.0" } }, - "node_modules/@expo/ws-tunnel": { - "version": "1.0.6", - "license": "MIT" - }, "node_modules/@expo/xcpretty": { - "version": "4.3.2", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.4.4.tgz", + "integrity": "sha512-4aQzz9vgxcNXFfo/iyNgDDYfsU5XGKKxWxZopw0cVotHiW+U8IJbIxMaxsINs6bHhtkG3StKNPcOrn3eBuxKPw==", "license": "BSD-3-Clause", "dependencies": { - "@babel/code-frame": "7.10.4", + "@babel/code-frame": "^7.20.0", "chalk": "^4.1.0", - "find-up": "^5.0.0", "js-yaml": "^4.1.0" }, "bin": { "excpretty": "build/cli.js" } }, - "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { - "version": "7.10.4", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/@fioprotocol/fiojs": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@fioprotocol/fiojs/-/fiojs-1.0.2.tgz", @@ -4183,14 +5389,36 @@ "url": "https://opencollective.com/bigjs" } }, + "node_modules/@firebase/ai": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-2.13.1.tgz", + "integrity": "sha512-RhT/VViTPBSplhQSuEp62HhLvfsV+LowMh8ZUo5MMRDzG7oFtSget4Kmg5oHP50hDVyWQuQj6to9iPFEZk08Tw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.4", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, "node_modules/@firebase/analytics": { - "version": "0.10.4", + "version": "0.10.22", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.22.tgz", + "integrity": "sha512-8BSaq/QRGU1+xyi8L2PTLTJU7MH9aMA72RQdIxrbhWFauOZY9OXo8f2YDN/972xA8d588tlnNVEQ2Mo69pT9Ow==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/installations": "0.6.22", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4198,13 +5426,15 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.10", + "version": "0.2.28", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.28.tgz", + "integrity": "sha512-lIAlqUUbBu93FJMlQfslryQtBwwzdzvp23ePC6FNgymXk6Ook5v4Uvc0vdutvoIeqmyA3LfP0ZeRFK8+11kOOQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.4", - "@firebase/analytics-types": "0.8.2", - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", + "@firebase/analytics": "0.10.22", + "@firebase/analytics-types": "0.8.4", + "@firebase/component": "0.7.3", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4212,84 +5442,119 @@ } }, "node_modules/@firebase/analytics-types": { - "version": "0.8.2", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.4.tgz", + "integrity": "sha512-zQ+XTgkwH6CY/eUSHJRP7e4LxM30RCxlCmob5sy2axs25GE3Ny0XdgpDscMTHHQIGqWkxPXad4w2Mw9sCgT8zQ==", "license": "Apache-2.0" }, "node_modules/@firebase/app": { - "version": "0.10.5", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.15.0.tgz", + "integrity": "sha512-soIskolmGgbpi0K/MfrjtdpO1220qRCbXA4Z8Qx3lM+fVwA3q40m+OM+7zBHd2nuQCrLXb33L6Oc1aBH3Y26AQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "idb": "7.1.1", "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" } }, "node_modules/@firebase/app-check": { - "version": "0.8.4", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.12.0.tgz", + "integrity": "sha512-wMeT6HLWRAuW7Cp/5UjWBGKgjPNxWNOoNf4PRIv0weljoGMZVeqbUY7wNBWTI2/31cX1NlXx8gQruDLsUShB3Q==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, + "engines": { + "node": ">=20.0.0" + }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/app-check-compat": { - "version": "0.3.11", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.4.5.tgz", + "integrity": "sha512-JI17mVcZs34zO6ZeSCrw4U2iohqy+n6GIzkbmsA+TbVjmvFLkUKt3bs5M+qRBteQm/0IWzqSHYFzEQLzDTQebg==", "license": "Apache-2.0", "dependencies": { - "@firebase/app-check": "0.8.4", - "@firebase/app-check-types": "0.5.2", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/app-check": "0.12.0", + "@firebase/app-check-types": "0.5.4", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, + "engines": { + "node": ">=20.0.0" + }, "peerDependencies": { "@firebase/app-compat": "0.x" } }, "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.2", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.4.tgz", + "integrity": "sha512-zz3i6e13B8BfWiLy8MABtTh8aGIACgKbf9UVnyHcWs+yQzJXgQcl8A46b0zfaiJHdQ+niF0ouAfcpuf+3LMPQg==", "license": "Apache-2.0" }, "node_modules/@firebase/app-check-types": { - "version": "0.5.2", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.4.tgz", + "integrity": "sha512-xV7JsIyzVr15aA7f3Pi0rB9gdBuVubs89FGA8VkRYA4g0l78poADgdfrScgf7NndSg9mm7cR7PJyY0+t22KaGw==", "license": "Apache-2.0" }, "node_modules/@firebase/app-compat": { - "version": "0.2.35", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.5.14.tgz", + "integrity": "sha512-rgFmiofYsdS9ZG/Bht3OBxJtPD3zWE1cffShWubEm+4+qZeyzCbmtb1q6jOEjN9fB7uufe4rQmWOPXouR3758Q==", "license": "Apache-2.0", "dependencies": { - "@firebase/app": "0.10.5", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/app": "0.15.0", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" } }, "node_modules/@firebase/app-types": { - "version": "0.9.2", - "license": "Apache-2.0" + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.5.tgz", + "integrity": "sha512-YevqTjvo7Iujsa9Dwowmd6dSoElhzmD63ZSrq6bzjvQ6POjYgNjOFHLmNIgJs48eNO093NCERibuFnxbfOvU7A==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/logger": "0.5.1" + } }, "node_modules/@firebase/auth": { - "version": "1.7.4", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.13.3.tgz", + "integrity": "sha512-bqiq4uubDN2YyQkdvSWPQeJyXAv2O76ImF41En9b6UhV5JuBVYDoHYrrrE3NzIuGkpFMKagfhMRP4Vz6t+yQSQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" }, "peerDependencies": { "@firebase/app": "0.x", - "@react-native-async-storage/async-storage": "^1.18.1" + "@react-native-async-storage/async-storage": "^2.2.0 || ^3.0.0" }, "peerDependenciesMeta": { "@react-native-async-storage/async-storage": { @@ -4298,26 +5563,34 @@ } }, "node_modules/@firebase/auth-compat": { - "version": "0.5.9", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.6.8.tgz", + "integrity": "sha512-llcBREUC4iSNKZ6rvwud7Oz9Q7aAWU6KuQLa6pdu7Q+QAQsy4JLw6yFgxwtmzabsgznHmmcsX2UjHLLzqUxi3Q==", "license": "Apache-2.0", "dependencies": { - "@firebase/auth": "1.7.4", - "@firebase/auth-types": "0.12.2", - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" + "@firebase/auth": "1.13.3", + "@firebase/auth-types": "0.13.1", + "@firebase/component": "0.7.3", + "@firebase/util": "1.15.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" }, "peerDependencies": { "@firebase/app-compat": "0.x" } }, "node_modules/@firebase/auth-interop-types": { - "version": "0.2.3", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.5.tgz", + "integrity": "sha512-1Li/YuBDBAXcKv7BzY4U28gontUmAaw53sYiqbaVOMCFb2lFKK/c3CGMUWqtwe7+TXrl3poWnTCL5umYBg85Eg==", "license": "Apache-2.0" }, "node_modules/@firebase/auth-types": { - "version": "0.12.2", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.13.1.tgz", + "integrity": "sha512-0c1Mnid0uMDfGJHeUS4zfvBa4/CedJXotGy/n/NZJnBjwiJawt0ZYU+wH2VAVLiRCEfG2ncCkAX3yd1/2nrB7g==", "license": "Apache-2.0", "peerDependencies": { "@firebase/app-types": "0.x", @@ -4325,82 +5598,124 @@ } }, "node_modules/@firebase/component": { - "version": "0.6.7", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.7.3.tgz", + "integrity": "sha512-wFofIaa2879ogD/WvkjYXJxRmfnL0scen6ORgaC3na1FNOR9ASIUANQdhqQcmWu/h77/pVHY7ch5flewa5Bcew==", "license": "Apache-2.0", "dependencies": { - "@firebase/util": "1.9.6", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@firebase/data-connect": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.7.1.tgz", + "integrity": "sha512-2LbUU8mmSA63HknxQMmWHjpzuNLBKflvVwQc2tpoVKg0biWleNEJX031ELks0vzFs+dDjOUkCJR72RP6mQHFOg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/auth-interop-types": "0.2.5", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" } }, "node_modules/@firebase/database": { - "version": "1.0.5", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.1.3.tgz", + "integrity": "sha512-XwWCa+E4TvNGpGwXrycLRNfdogADwFcvuhyow6wDWma9W54roaQIhe+4PM0KiLsIftBdSCGI7OKCXrdSRHbIhw==", "license": "Apache-2.0", "dependencies": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/app-check-interop-types": "0.3.4", + "@firebase/auth-interop-types": "0.2.5", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "faye-websocket": "0.11.4", "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" } }, "node_modules/@firebase/database-compat": { - "version": "1.0.5", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.1.4.tgz", + "integrity": "sha512-3pK35F1MAgmqFJQlf2nhQl44vtAXQO1uaCaQOEUI9kCRtLFqi7N+QRKR7lFZPg+xIZIyubgxQaxY69YgfZRZWg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/database": "1.0.5", - "@firebase/database-types": "1.0.3", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/database": "1.1.3", + "@firebase/database-types": "1.0.20", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" } }, "node_modules/@firebase/database-types": { - "version": "1.0.3", + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.20.tgz", + "integrity": "sha512-kegbOk/w8iU64pr0q6k2ItyNGjnQBMHFhwS7ohdWI4W+pc0/zhhdGXTdFj6X1oxItRjPoYOsSQmERgBkn/ihxw==", "license": "Apache-2.0", "dependencies": { - "@firebase/app-types": "0.9.2", - "@firebase/util": "1.9.6" + "@firebase/app-types": "0.9.5", + "@firebase/util": "1.15.1" } }, "node_modules/@firebase/firestore": { - "version": "4.6.3", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.16.0.tgz", + "integrity": "sha512-qdHMHMvMr0nRMuZyWNR/ArWa0YlPE3C4eAbmxTASJMYXAesKPL0Y54p70moggrNPzaK7MSIIq5RDJJyntQyIYA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "@firebase/webchannel-wrapper": "1.0.0", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", + "@firebase/webchannel-wrapper": "1.0.6", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", - "tslib": "^2.1.0", - "undici": "5.28.4" + "re2js": "^0.4.2", + "tslib": "^2.1.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=20.0.0" }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/firestore-compat": { - "version": "0.3.32", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.4.11.tgz", + "integrity": "sha512-W7o1WdwWq5aABK5Up2ncSvTQs/QGLR/fy7cVpFBNqhsXtxoMtflHf2xBIG6+aoptcuGAobddq4g2Sq27wqHaYw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/firestore": "4.6.3", - "@firebase/firestore-types": "3.0.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/firestore": "4.16.0", + "@firebase/firestore-types": "3.0.4", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, + "engines": { + "node": ">=20.0.0" + }, "peerDependencies": { "@firebase/app-compat": "0.x" } }, "node_modules/@firebase/firestore-types": { - "version": "3.0.2", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.4.tgz", + "integrity": "sha512-jGn+JSS4X9zZsrfu7Yw66v5YRdOLD1oyQh4USR0xWl4CUqV/DA6bNIXRPpxH/cUl3iVTNiP6MN7g+EL42A4qfA==", "license": "Apache-2.0", "peerDependencies": { "@firebase/app-types": "0.x", @@ -4408,7 +5723,9 @@ } }, "node_modules/@firebase/firestore/node_modules/@grpc/grpc-js": { - "version": "1.9.15", + "version": "1.9.16", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.16.tgz", + "integrity": "sha512-wE4Ut/olIzfKqp631XrG+wbF0v1vWFN4YL9FyXC2LJiG33DsV7PLzURjrCvY/6je2ntdRkeLpPDluzSRGaVltQ==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.7.8", @@ -4419,45 +5736,58 @@ } }, "node_modules/@firebase/functions": { - "version": "0.11.5", + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.13.5.tgz", + "integrity": "sha512-bWCx713f4kE/uFV7gdFOLBS7lDoiZj48MRkbAqe35gkXcCeWF4QjRNO07Jhmve7EJIoQOBczL29y2r8VRuN1kw==", "license": "Apache-2.0", "dependencies": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/auth-interop-types": "0.2.3", - "@firebase/component": "0.6.7", - "@firebase/messaging-interop-types": "0.2.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" + "@firebase/app-check-interop-types": "0.3.4", + "@firebase/auth-interop-types": "0.2.5", + "@firebase/component": "0.7.3", + "@firebase/messaging-interop-types": "0.2.5", + "@firebase/util": "1.15.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/functions-compat": { - "version": "0.3.11", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.4.5.tgz", + "integrity": "sha512-10qlUXGY25G5/1g9UihqksPp2po+ZqSE7LEizsrdUP7vrTmkysXxGSZCDyojSEp6mQe/ecRDdDDI+z4XRdb4wQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/functions": "0.11.5", - "@firebase/functions-types": "0.6.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/functions": "0.13.5", + "@firebase/functions-types": "0.6.4", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, + "engines": { + "node": ">=20.0.0" + }, "peerDependencies": { "@firebase/app-compat": "0.x" } }, "node_modules/@firebase/functions-types": { - "version": "0.6.2", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.4.tgz", + "integrity": "sha512-zV6kgqtduR4rUAdC/ilS7kmb93XD7bEZoJDlVBZqlOw2uGGGCNBQBuleww2rr0Ulr3L9o2TDjumEt68/l1f9DQ==", "license": "Apache-2.0" }, "node_modules/@firebase/installations": { - "version": "0.6.7", + "version": "0.6.22", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.22.tgz", + "integrity": "sha512-ef6nn3GGQTdReCfotRMG77PJZu8CqEbiK5pEoBnM0gTu/Z9v0i/az2p3HABsa/1beQmmyh1OsOjf7P5+pgwdZw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/util": "1.15.1", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4466,13 +5796,15 @@ } }, "node_modules/@firebase/installations-compat": { - "version": "0.2.7", + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.22.tgz", + "integrity": "sha512-C/zpAuTP5S9OgKSPvXRupw3hoY/JZSlA1wFjD/Sb7LIQE0FNbcMdO8Y4KXVEkjVzma/DDDDIAzxEXqKMAzc88w==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/installations-types": "0.5.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/installations": "0.6.22", + "@firebase/installations-types": "0.5.4", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4480,27 +5812,36 @@ } }, "node_modules/@firebase/installations-types": { - "version": "0.5.2", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.4.tgz", + "integrity": "sha512-U2eFapdHwjb43Vx9o+Pmj4dFfvcHEK1IirEFLqMtWrTHvmdrS3gBpBD1kmJk/9HjsOtoHZxJ2Paoe79e+L1ZPg==", "license": "Apache-2.0", "peerDependencies": { "@firebase/app-types": "0.x" } }, "node_modules/@firebase/logger": { - "version": "0.4.2", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.5.1.tgz", + "integrity": "sha512-vZKLsqE1ABOy8OjQiE7cUTFn4gvaqlk88yp8N94Pk/sDpq61YqZGqmVFZTvOyflTwuYFcWirBdYGoJgbDaXKYQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" } }, "node_modules/@firebase/messaging": { - "version": "0.12.9", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.13.0.tgz", + "integrity": "sha512-GZoo0uGRvEbszo83xcgbjJp4FpkmBEr4l8Z4hi8gl+P1Spn/MTK3HapanMzSX4yUHuTEiF5hasWRxOaz+o5sxQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/messaging-interop-types": "0.2.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/installations": "0.6.22", + "@firebase/messaging-interop-types": "0.2.5", + "@firebase/util": "1.15.1", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4509,12 +5850,14 @@ } }, "node_modules/@firebase/messaging-compat": { - "version": "0.2.9", + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.27.tgz", + "integrity": "sha512-JNOiu1PPgdHzEPEtoFiNxQuu0x9bm4bfETSQCpGfcTlgWkhlSK7uh7nlsjC10TQLUNgYetLmuutaYTh8aeYLVA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/messaging": "0.12.9", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/messaging": "0.13.0", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4522,32 +5865,39 @@ } }, "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.2", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.5.tgz", + "integrity": "sha512-tUEKnaAP2Y/MNIqgnriPpV6e5l13Vs/+p2yrd6NGlncPJT9O3a8muYZtdnWe+IJ4fgKLHJVC79n/asxk/N5Msw==", "license": "Apache-2.0" }, "node_modules/@firebase/performance": { - "version": "0.6.7", + "version": "0.7.12", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.7.12.tgz", + "integrity": "sha512-fe7nV8teUU3OBHlMUZ9Lw4gLhCW2k4m5Uc3pfWGV+fl8uwJQBGp9Q3lqsJ+HSrFu3Q2pJyLAgrClPGSKyDeYgQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0" + "@firebase/component": "0.7.3", + "@firebase/installations": "0.6.22", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", + "tslib": "^2.1.0", + "web-vitals": "^4.2.4" }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/performance-compat": { - "version": "0.2.7", + "version": "0.2.25", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.25.tgz", + "integrity": "sha512-q6NjTXpIPoFuUmCmMN/maCdTgzT6aExs9xZo+PxfVLj6uLVGvpyAD6XWjmcrb7jChsFBYbq7E5dyNDF7Zhy9kA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/performance": "0.6.7", - "@firebase/performance-types": "0.2.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/performance": "0.7.12", + "@firebase/performance-types": "0.2.4", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4555,17 +5905,21 @@ } }, "node_modules/@firebase/performance-types": { - "version": "0.2.2", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.4.tgz", + "integrity": "sha512-kJSEk7b0uhpcPRyL4SQ/GPujLqk52XNKcXlnsKDbWGAb9vugcLvOU3u6zfEdwd+d8hWJb5S5ZizV1JFFI0nkKg==", "license": "Apache-2.0" }, "node_modules/@firebase/remote-config": { - "version": "0.4.7", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.8.5.tgz", + "integrity": "sha512-zb+7CDGFP2wYVF1LXQoYIFdoESIQM3p0+uiW1welw8+zvDxAL50K75PKTXXtunJADUrksTVpV7mD0pn54vzJRA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/installations": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/installations": "0.6.22", + "@firebase/logger": "0.5.1", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4573,14 +5927,16 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.2.7", + "version": "0.2.26", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.26.tgz", + "integrity": "sha512-uC57Tc7GYYOCnMgLkGIVf999XlaYaPDONoa54c93YTKDctlvCZI89z0zQ2RbhGR8Zf+QuCbQHs/99vqoE84a7g==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/remote-config": "0.4.7", - "@firebase/remote-config-types": "0.3.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/logger": "0.5.1", + "@firebase/remote-config": "0.8.5", + "@firebase/remote-config-types": "0.5.1", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4588,38 +5944,51 @@ } }, "node_modules/@firebase/remote-config-types": { - "version": "0.3.2", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.5.1.tgz", + "integrity": "sha512-cX/1LT6KQwkXzck2eSzeKnuvXZCyr8qaPpDcikoJs7jmI+oBOXixpDLeDtWj1U6GNMkIoXrEDNoyT2Ypcyp5/A==", "license": "Apache-2.0" }, "node_modules/@firebase/storage": { - "version": "0.12.5", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.14.3.tgz", + "integrity": "sha512-YX4/YL6P6/fufSSeGnVhjWddcIXbFq2cWIhMKFTZo1E/Rtcl2mJj/BYUQTwJfcE1Tl8un1FOya4L05jcSLN/Eg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/util": "1.9.6", - "tslib": "^2.1.0", - "undici": "5.28.4" + "@firebase/component": "0.7.3", + "@firebase/util": "1.15.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=20.0.0" }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/storage-compat": { - "version": "0.3.8", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.4.3.tgz", + "integrity": "sha512-gruVqjtUGX8tEoeNbaWXZm0Zfcfcb7fvmDmBxV8yPAbWvExRnZYLO2+qw9idxNE7BvPXt5csyjSYHy//dAizxw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.7", - "@firebase/storage": "0.12.5", - "@firebase/storage-types": "0.8.2", - "@firebase/util": "1.9.6", + "@firebase/component": "0.7.3", + "@firebase/storage": "0.14.3", + "@firebase/storage-types": "0.8.4", + "@firebase/util": "1.15.1", "tslib": "^2.1.0" }, + "engines": { + "node": ">=20.0.0" + }, "peerDependencies": { "@firebase/app-compat": "0.x" } }, "node_modules/@firebase/storage-types": { - "version": "0.8.2", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.4.tgz", + "integrity": "sha512-BT7cwxJOx8SWwlQfrlC+bD/Sk3Cw+1odCi8UZNFNWTVZoPsBnA5W+mqtZzVnvsdJpXCFGSGQ7R7vOR6dtM/BRA==", "license": "Apache-2.0", "peerDependencies": { "@firebase/app-types": "0.x", @@ -4627,32 +5996,22 @@ } }, "node_modules/@firebase/util": { - "version": "1.9.6", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@firebase/vertexai-preview": { - "version": "0.0.2", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.15.1.tgz", + "integrity": "sha512-LUdM4Wg7YM9Pq/49nGYySJA0CSQEKnGffFzWV8+6gXN7mGxn+FL1IqvFbuZUtAQcfZgHYDwCE1wwlK7rB7gl2g==", + "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@firebase/app-check-interop-types": "0.3.2", - "@firebase/component": "0.6.7", - "@firebase/logger": "0.4.2", - "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" + "node": ">=20.0.0" } }, "node_modules/@firebase/webchannel-wrapper": { - "version": "1.0.0", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.6.tgz", + "integrity": "sha512-Vr/Mqu79dMwGRAyGbJ4uN4+BtXB3/mRTdzetD1daWNeG8QaWuzhhbG77GltO5c0yYmYls8i250iX73624GJd7Q==", "license": "Apache-2.0" }, "node_modules/@glennsl/bs-json": { @@ -4769,12 +6128,16 @@ "license": "Apache-2.0" }, "node_modules/@hapi/hoek": { - "version": "9.2.0", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@hapi/topo": { - "version": "5.0.0", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5777,18 +7140,10 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@isaacs/ttlcache": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", "license": "ISC", "engines": { "node": ">=12" @@ -5796,6 +7151,7 @@ }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.3.1", @@ -5810,6 +7166,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { "version": "1.0.10", + "dev": true, "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" @@ -5817,6 +7174,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { "version": "5.3.1", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5824,6 +7182,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", @@ -5835,6 +7194,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { "version": "3.13.1", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -5846,6 +7206,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" @@ -5856,6 +7217,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", + "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -5869,6 +7231,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" @@ -5879,67 +7242,73 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { "version": "1.0.3", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.0.0", - "jest-util": "30.0.0", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/core": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.0.0", - "@jest/pattern": "30.0.0", - "@jest/reporters": "30.0.0", - "@jest/test-result": "30.0.0", - "@jest/transform": "30.0.0", - "@jest/types": "30.0.0", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.0.0", - "jest-config": "30.0.0", - "jest-haste-map": "30.0.0", - "jest-message-util": "30.0.0", - "jest-regex-util": "30.0.0", - "jest-resolve": "30.0.0", - "jest-resolve-dependencies": "30.0.0", - "jest-runner": "30.0.0", - "jest-runtime": "30.0.0", - "jest-snapshot": "30.0.0", - "jest-util": "30.0.0", - "jest-validate": "30.0.0", - "jest-watcher": "30.0.0", - "micromatch": "^4.0.8", - "pretty-format": "30.0.0", - "slash": "^3.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -5952,6 +7321,9 @@ }, "node_modules/@jest/create-cache-key-function": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3" @@ -5960,147 +7332,117 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/environment": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.0.0", - "@jest/types": "30.0.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "30.0.0" + "jest-mock": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", "dependencies": { - "expect": "30.0.0", - "jest-snapshot": "30.0.0" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.0.0" + "jest-get-type": "^29.6.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.0", - "@sinonjs/fake-timers": "^13.0.0", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "30.0.0", - "jest-mock": "30.0.0", - "jest-util": "30.0.0" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.0.0", - "@jest/expect": "30.0.0", - "@jest/types": "30.0.0", - "jest-mock": "30.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.0.0", - "@jest/test-result": "30.0.0", - "@jest/transform": "30.0.0", - "@jest/types": "30.0.0", - "@jridgewell/trace-mapping": "^0.3.25", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", + "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "30.0.0", - "jest-util": "30.0.0", - "jest-worker": "30.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", - "string-length": "^4.0.2", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -6111,33 +7453,26 @@ } } }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@jest/schemas": { @@ -6150,134 +7485,97 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/snapshot-utils": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/source-map": { - "version": "30.0.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-result": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.0.0", - "@jest/types": "30.0.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.0.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.0", + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/transform": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.0.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.0", - "chalk": "^4.1.2", + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.0", - "jest-regex-util": "30.0.0", - "jest-util": "30.0.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform/node_modules/babel-plugin-istanbul": { - "version": "7.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/types": { - "version": "30.0.0", - "dev": true, + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.0", - "@jest/schemas": "30.0.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types/node_modules/@jest/schemas": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/types/node_modules/@sinclair/typebox": { - "version": "0.34.35", - "dev": true, - "license": "MIT" - }, "node_modules/@jimp/bmp": { "version": "0.16.13", "license": "MIT", @@ -6421,13 +7719,25 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "license": "MIT", @@ -6436,15 +7746,19 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -6612,19 +7926,6 @@ "node": ">=18" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, "node_modules/@native-html/css-processor": { "version": "1.11.0", "license": "MIT", @@ -6716,8 +8017,6 @@ }, "node_modules/@nymproject/mix-fetch": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@nymproject/mix-fetch/-/mix-fetch-1.4.4.tgz", - "integrity": "sha512-sdyXXJG7sYv2OFOEf6FYm7HglKfMvJmJjrQC3Rbusy5rH5C2ajg2KyuBbZReLgIIbkkx3mK8sc5WRUOKTcKt2Q==", "license": "Apache-2.0" }, "node_modules/@open-draft/deferred-promise": { @@ -7694,13 +8993,15 @@ "license": "BSD-3-Clause" }, "node_modules/@react-native-async-storage/async-storage": { - "version": "1.19.4", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz", + "integrity": "sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==", "license": "MIT", "dependencies": { "merge-options": "^3.0.4" }, "peerDependencies": { - "react-native": "^0.0.0-0 || 0.60 - 0.72 || 1000.0.0" + "react-native": "^0.0.0-0 || >=0.65 <1.0" } }, "node_modules/@react-native-clipboard/clipboard": { @@ -7725,23 +9026,25 @@ } }, "node_modules/@react-native-community/cli": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.0.tgz", + "integrity": "sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-clean": "18.0.0", - "@react-native-community/cli-config": "18.0.0", - "@react-native-community/cli-doctor": "18.0.0", - "@react-native-community/cli-server-api": "18.0.0", - "@react-native-community/cli-tools": "18.0.0", - "@react-native-community/cli-types": "18.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-clean": "20.1.0", + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-doctor": "20.1.0", + "@react-native-community/cli-server-api": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "@react-native-community/cli-types": "20.1.0", "commander": "^9.4.1", "deepmerge": "^4.3.0", "execa": "^5.0.0", "find-up": "^5.0.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", + "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" }, @@ -7749,31 +9052,67 @@ "rnc-cli": "build/bin.js" }, "engines": { - "node": ">=18" + "node": ">=20.19.4" } }, "node_modules/@react-native-community/cli-clean": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.0.tgz", + "integrity": "sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "18.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-glob": "^3.3.2" + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/@react-native-community/cli-config": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.0.tgz", + "integrity": "sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "18.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "cosmiconfig": "^9.0.0", "deepmerge": "^4.3.0", "fast-glob": "^3.3.2", - "joi": "^17.2.1" + "joi": "^17.2.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-config-android": { @@ -7796,8 +9135,29 @@ "fast-glob": "^3.3.2" } }, + "node_modules/@react-native-community/cli-config/node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, "node_modules/@react-native-community/cli-config/node_modules/cosmiconfig": { - "version": "9.0.0", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.2.tgz", + "integrity": "sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==", "dev": true, "license": "MIT", "dependencies": { @@ -7821,52 +9181,79 @@ } } }, + "node_modules/@react-native-community/cli-config/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/@react-native-community/cli-doctor": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.0.tgz", + "integrity": "sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config": "18.0.0", - "@react-native-community/cli-platform-android": "18.0.0", - "@react-native-community/cli-platform-apple": "18.0.0", - "@react-native-community/cli-platform-ios": "18.0.0", - "@react-native-community/cli-tools": "18.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-apple": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "command-exists": "^1.2.8", "deepmerge": "^4.3.0", "envinfo": "^7.13.0", "execa": "^5.0.0", "node-stream-zip": "^1.9.1", "ora": "^5.4.1", + "picocolors": "^1.1.1", "semver": "^7.5.2", "wcwidth": "^1.0.1", "yaml": "^2.2.1" } }, - "node_modules/@react-native-community/cli-doctor/node_modules/ora": { - "version": "5.4.1", + "node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0.0" } }, "node_modules/@react-native-community/cli-doctor/node_modules/yaml": { - "version": "2.8.0", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "dev": true, "license": "ISC", "bin": { @@ -7874,120 +9261,217 @@ }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/@react-native-community/cli-platform-android": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.0.tgz", + "integrity": "sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config-android": "18.0.0", - "@react-native-community/cli-tools": "18.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config-android": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "execa": "^5.0.0", + "logkitty": "^0.7.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/@react-native-community/cli-config-android": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.0.tgz", + "integrity": "sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", "execa": "^5.0.0", - "logkitty": "^0.7.1" + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/@react-native-community/cli-platform-apple": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.0.tgz", + "integrity": "sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config-apple": "18.0.0", - "@react-native-community/cli-tools": "18.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config-apple": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-xml-parser": "^4.4.1" + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/@react-native-community/cli-config-apple": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.0.tgz", + "integrity": "sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@react-native-community/cli-tools": "20.1.0", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" + } + }, + "node_modules/@react-native-community/cli-platform-apple/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/@react-native-community/cli-platform-ios": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.0.tgz", + "integrity": "sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-platform-apple": "18.0.0" + "@react-native-community/cli-platform-apple": "20.1.0" } }, "node_modules/@react-native-community/cli-server-api": { - "version": "18.0.0", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.0.tgz", + "integrity": "sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==", "dev": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "18.0.0", + "@react-native-community/cli-tools": "20.1.0", "body-parser": "^1.20.3", "compression": "^1.7.1", "connect": "^3.6.5", "errorhandler": "^1.5.1", "nocache": "^3.0.1", "open": "^6.2.0", - "pretty-format": "^26.6.2", + "pretty-format": "^29.7.0", "serve-static": "^1.13.1", "ws": "^6.2.3" } }, - "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { - "version": "26.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { - "version": "15.0.13", + "node_modules/@react-native-community/cli-server-api/node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" } }, "node_modules/@react-native-community/cli-server-api/node_modules/is-wsl": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/@react-native-community/cli-server-api/node_modules/open": { - "version": "6.4.0", + "node_modules/@react-native-community/cli-server-api/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", - "dependencies": { - "is-wsl": "^1.1.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { - "version": "26.6.2", + "node_modules/@react-native-community/cli-server-api/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "is-wsl": "^1.1.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { - "version": "17.0.2", - "dev": true, - "license": "MIT" - }, "node_modules/@react-native-community/cli-server-api/node_modules/ws": { - "version": "6.2.3", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.4.tgz", + "integrity": "sha512-PNIUUyLI5YpkJZj60YBzX1o0ByQ4ovvfmq9N/Kig/PAYbVlGyz4R6G0SEWrD0O9acc0sT2+IdMBVLFv8FSi0Nw==", "dev": true, "license": "MIT", "dependencies": { @@ -8020,33 +9504,33 @@ "node": ">=4.0.0" } }, - "node_modules/@react-native-community/cli-tools/node_modules/ora": { - "version": "5.4.1", + "node_modules/@react-native-community/cli-types": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.0.tgz", + "integrity": "sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "joi": "^17.2.1" } }, - "node_modules/@react-native-community/cli-types": { - "version": "18.0.0", + "node_modules/@react-native-community/cli/node_modules/@react-native-community/cli-tools": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", "dev": true, "license": "MIT", "dependencies": { - "joi": "^17.2.1" + "@vscode/sudo-prompt": "^9.0.0", + "appdirsjs": "^1.2.4", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "launch-editor": "^2.9.1", + "mime": "^2.4.1", + "ora": "^5.4.1", + "picocolors": "^1.1.1", + "prompts": "^2.4.2", + "semver": "^7.5.2" } }, "node_modules/@react-native-community/cli/node_modules/commander": { @@ -8070,8 +9554,23 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/@react-native-community/cli/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/@react-native-community/datetimepicker": { - "version": "8.4.2", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-9.1.0.tgz", + "integrity": "sha512-eadbnk+I2vxvW30iTAsm/qlCnMMAadkifIMYNEB2lzhxN/SvlKc7S2V4k5DyrwjdCbqdcMk3t9K6fnUMcAV34w==", "license": "MIT", "dependencies": { "invariant": "^2.2.4" @@ -8092,18 +9591,22 @@ } }, "node_modules/@react-native-community/netinfo": { - "version": "11.4.1", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-12.0.1.tgz", + "integrity": "sha512-P/3caXIvfYSJG8AWJVefukg+ZGRPs+M4Lp3pNJtgcTYoJxCjWrKQGNnCkj/Cz//zWa/avGed0i/wzm0T8vV2IQ==", "license": "MIT", "peerDependencies": { + "react": "*", "react-native": ">=0.59" } }, "node_modules/@react-native-firebase/app": { - "version": "20.5.0", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@react-native-firebase/app/-/app-25.1.0.tgz", + "integrity": "sha512-IRBM0Uwrs1O+SkUF8D9g7FgC8WI5b/3xEbt3JzFTTsHWvQyXxvTflKd4rNFNegV+2mFrM53XC9cS1BNVjWSSSg==", "license": "Apache-2.0", "dependencies": { - "firebase": "10.12.2", - "superstruct": "^0.6.2" + "firebase": "12.15.0" }, "peerDependencies": { "expo": ">=47.0.0", @@ -8117,10 +9620,12 @@ } }, "node_modules/@react-native-firebase/messaging": { - "version": "20.5.0", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@react-native-firebase/messaging/-/messaging-25.1.0.tgz", + "integrity": "sha512-YVhGWr6uthySTNHqnXsDh6DX4WtK4AittU9oDeKaBSjN4uoMDOe2X74TYnBFEUdcCQxOAsUavFNAexQx/o8dsw==", "license": "Apache-2.0", "peerDependencies": { - "@react-native-firebase/app": "20.5.0", + "@react-native-firebase/app": "25.1.0", "expo": ">=47.0.0" }, "peerDependenciesMeta": { @@ -8130,7 +9635,9 @@ } }, "node_modules/@react-native-picker/picker": { - "version": "2.11.2", + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.11.4.tgz", + "integrity": "sha512-Kf8h1AMnBo54b1fdiVylP2P/iFcZqzpMYcglC28EEFB1DEnOjsNr6Ucqc+3R9e91vHxEDnhZFbYDmAe79P2gjA==", "license": "MIT", "workspaces": [ "example" @@ -8141,26 +9648,31 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.86.0.tgz", + "integrity": "sha512-nIaXbm2jX1OTYp0qbviJ3O6KZivoE8z3BnhUQ2LsqfZSWRoOK/n1qsiAr6oALiNKWnXY3j2KPwtYORnZzp8xew==", "license": "MIT", "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.79.2", - "dev": true, + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.86.0.tgz", + "integrity": "sha512-qdsABWNW7uTll90l4Vh03gjeyu3WVDi2CyiiyvYGMRDcoYbjbQi6df3BMAm9lQI2yslZ1T14LlDDAsgTwNxplA==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.79.2" + "@babel/traverse": "^7.29.0", + "@react-native/codegen": "0.86.0" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/@react-native/babel-preset": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.86.0.tgz", + "integrity": "sha512-bYQcWiPySNvF4dns9Ls9gMmwgq66ohvM9Fwc/Kn8r85t66UNHxch3p1QwPiSorDelFauZwJbgo9+ReibTgvpbA==", "dev": true, "license": "MIT", "dependencies": { @@ -8170,27 +9682,19 @@ "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", @@ -8199,208 +9703,240 @@ "@babel/plugin-transform-react-jsx-source": "^7.24.7", "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.79.2", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "@react-native/babel-plugin-codegen": "0.86.0", + "babel-plugin-syntax-hermes-parser": "0.36.0", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" }, "peerDependencies": { "@babel/core": "*" } }, "node_modules/@react-native/codegen": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.86.0.tgz", + "integrity": "sha512-uTs9DBo3+/lUqinsGZK0FKJRBVClrwMXoZToaDxE1Q2SL2e55vs2GwyZfIKzPl5uJnbu4PfFMIp0/mLXLWUMuA==", "license": "MIT", "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.25.1", + "@babel/core": "^7.25.2", + "@babel/parser": "^7.29.0", + "hermes-parser": "0.36.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", "yargs": "^17.6.2" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" }, "peerDependencies": { "@babel/core": "*" } }, - "node_modules/@react-native/codegen/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.86.0.tgz", + "integrity": "sha512-Jv8p1ebEPfTzs8gmrjsdT2XMXFfeAg45Pman+XPLFGaSeGAZkutRFRyX9Cs9aGTSOyIA9YPJ6vDNb1ayTf1FKQ==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.79.2", - "chalk": "^4.0.0", - "debug": "^2.2.0", + "@react-native/dev-middleware": "0.86.0", + "debug": "^4.4.0", "invariant": "^2.2.4", - "metro": "^0.82.0", - "metro-config": "^0.82.0", - "metro-core": "^0.82.0", + "metro": "^0.84.3", + "metro-config": "^0.84.3", + "metro-core": "^0.84.3", "semver": "^7.1.3" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" }, "peerDependencies": { - "@react-native-community/cli": "*" + "@react-native-community/cli": "*", + "@react-native/metro-config": "0.86.0" }, "peerDependenciesMeta": { "@react-native-community/cli": { "optional": true + }, + "@react-native/metro-config": { + "optional": true } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, "node_modules/@react-native/debugger-frontend": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.86.0.tgz", + "integrity": "sha512-7Mb3nDfyJeys+ELF75Ageu7VKERlnIMoO+aNPoXqTXvz+b41L6l2CqMyLpDHxkBSlenij6gEepPNgaIyWHbJZw==", "license": "BSD-3-Clause", "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/@react-native/debugger-shell": { + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.86.0.tgz", + "integrity": "sha512-Y0zEkZzLz8ou6o/VLml1A31X/rMgc6DRjwxwzPMa94qRTMY070WeBCNTITQo4kKTBAUgbxh07oXPQqp0Tpja8w==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6", + "debug": "^4.4.0", + "fb-dotslash": "0.5.8" + }, + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/@react-native/dev-middleware": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.86.0.tgz", + "integrity": "sha512-20pTO6yTybmvXvro520H6C7jydIQnLKOl5qFtVEcHSdFrY63r3OGei+Rx9bILgSRmH6jgnfEcijcMx7pwWuQtw==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.79.2", + "@react-native/debugger-frontend": "0.86.0", + "@react-native/debugger-shell": "0.86.0", "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", + "chromium-edge-launcher": "^0.3.0", "connect": "^3.6.5", - "debug": "^2.2.0", + "debug": "^4.4.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", "open": "^7.0.3", "serve-static": "^1.16.2", - "ws": "^6.2.3" + "ws": "^7.5.10" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, - "node_modules/@react-native/dev-middleware/node_modules/debug": { - "version": "2.6.9", + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz", + "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==", "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@react-native/dev-middleware/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "6.2.3", + "node_modules/@react-native/gradle-plugin": { + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.86.0.tgz", + "integrity": "sha512-a1RcfaEDqWExCGfCwadIxt4l8FvKYgFqeMf2uzeKyAOnb+vTGNIeCvifFL2MqvgaeYxlER437HbMIajGcuJ1pQ==", "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.79.2", + "node_modules/@react-native/jest-preset": { + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/jest-preset/-/jest-preset-0.86.0.tgz", + "integrity": "sha512-KA+xpIP3DvJy7PQJ9c6ZdEKkOPChl+Rk/rV2MhQACEAzfhWU84407KZQv4ccyO3B4caD0gPrFjE96a4P993nsQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@jest/create-cache-key-function": "^29.7.0", + "@react-native/js-polyfills": "0.86.0", + "babel-jest": "^29.7.0", + "jest-environment-node": "^29.7.0", + "regenerator-runtime": "^0.13.2" + }, "engines": { - "node": ">=18" + "node": ">= 20.19.4" + }, + "peerDependencies": { + "react": "^19.2.3" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.86.0.tgz", + "integrity": "sha512-zYy/Cjd1VTnZ2iCNaG9bDF9C3l2ntESiPRscjIlI5FKugu6aeTwsDSv1aI8Bc4Kp3vEdoVg+UQhLAhE4svREaQ==", "license": "MIT", "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/@react-native/metro-babel-transformer": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.86.0.tgz", + "integrity": "sha512-SjKej3E5qIahqo/G+rSOrmJUQM44RyKtWtO+VfmKAAMoJWkBFomM22hTLKCIS5cdbIAJ9COAmU+KAi2wVSO0wQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.79.2", - "hermes-parser": "0.25.1", + "@react-native/babel-preset": "0.86.0", + "hermes-parser": "0.36.0", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" }, "peerDependencies": { "@babel/core": "*" } }, "node_modules/@react-native/metro-config": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.86.0.tgz", + "integrity": "sha512-7v+xbTeEci9ZcQ/Z1OqI4RXcqN69wSMDYL5BAMvOReZ7U04+aDQ0/SQhClYPn6x2/RxM4WzMKSAuNyLKqvYVtw==", "dev": true, "license": "MIT", "dependencies": { - "@react-native/js-polyfills": "0.79.2", - "@react-native/metro-babel-transformer": "0.79.2", - "metro-config": "^0.82.0", - "metro-runtime": "^0.82.0" + "@react-native/js-polyfills": "0.86.0", + "@react-native/metro-babel-transformer": "0.86.0", + "metro-config": "^0.84.3", + "metro-runtime": "^0.84.3" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/@react-native/normalize-colors": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.86.0.tgz", + "integrity": "sha512-kG0wfCGghUKlfxkJyyHCDVutWVYWK7/DG58ojA/4v9EfulgF+osuSQmlbNb3rcKX58qutm7JcldSeVLgGFha9g==", "license": "MIT" }, "node_modules/@react-native/typescript-config": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.86.0.tgz", + "integrity": "sha512-oSuFIEMVAVEXdIvDnrdXsWmIF4fYdgtvAEr2ofn8OY534m7XWm9QAqHHpGUzoK0iwDPlPZ5n2Rb25gqF1SZ0rg==", "dev": true, "license": "MIT" }, "node_modules/@react-native/virtualized-lists": { - "version": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.86.0.tgz", + "integrity": "sha512-4/ZLXdf/OSpPDVO0AsQ1SJdRIzt5t9BNQ46QwGgxvX7/cirYR5k8KXctNGGgW8lQo2gZChEfY2zFCZg9nM/jiw==", "license": "MIT", "dependencies": { "invariant": "^2.2.4", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" }, "peerDependencies": { - "@types/react": "^19.0.0", + "@types/react": "^19.2.0", "react": "*", - "react-native": "*" + "react-native": "0.86.0" }, "peerDependenciesMeta": { "@types/react": { @@ -8620,63 +10156,75 @@ } }, "node_modules/@sentry-internal/browser-utils": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.37.0.tgz", + "integrity": "sha512-rqdESYaVio9Ktz55lhUhtBsBUCF3wvvJuWia5YqoHDd+egyIfwWxITTAa0TSEyZl7283A4WNHNl0hyeEMblmfA==", "license": "MIT", "dependencies": { - "@sentry/core": "10.38.0" + "@sentry/core": "10.37.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.37.0.tgz", + "integrity": "sha512-P0PVlfrDvfvCYg2KPIS7YUG/4i6ZPf8z1MicXx09C9Cz9W9UhSBh/nii13eBdDtLav2BFMKhvaFMcghXHX03Hw==", "license": "MIT", "dependencies": { - "@sentry/core": "10.38.0" + "@sentry/core": "10.37.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.37.0.tgz", + "integrity": "sha512-snuk12ZaDerxesSnetNIwKoth/51R0y/h3eXD/bGtXp+hnSkeXN5HanI/RJl297llRjn4zJYRShW9Nx86Ay0Dw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.38.0", - "@sentry/core": "10.38.0" + "@sentry-internal/browser-utils": "10.37.0", + "@sentry/core": "10.37.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.37.0.tgz", + "integrity": "sha512-PyIYSbjLs+L5essYV0MyIsh4n5xfv2eV7l0nhUoPJv9Bak3kattQY3tholOj0EP3SgKgb+8HSZnmazgF++Hbog==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.38.0", - "@sentry/core": "10.38.0" + "@sentry-internal/replay": "10.37.0", + "@sentry/core": "10.37.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "4.9.0", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.8.0.tgz", + "integrity": "sha512-cy/9Eipkv23MsEJ4IuB4dNlVwS9UqOzI3Eu+QPake5BVFgPYCX0uP0Tr3Z43Ime6Rb+BiDnWC51AJK9i9afHYw==", "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.37.0.tgz", + "integrity": "sha512-kheqJNqGZP5TSBCPv4Vienv1sfZwXKHQDYR+xrdHHYdZqwWuZMJJW/cLO9XjYAe+B9NnJ4UwJOoY4fPvU+HQ1Q==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.38.0", - "@sentry-internal/feedback": "10.38.0", - "@sentry-internal/replay": "10.38.0", - "@sentry-internal/replay-canvas": "10.38.0", - "@sentry/core": "10.38.0" + "@sentry-internal/browser-utils": "10.37.0", + "@sentry-internal/feedback": "10.37.0", + "@sentry-internal/replay": "10.37.0", + "@sentry-internal/replay-canvas": "10.37.0", + "@sentry/core": "10.37.0" }, "engines": { "node": ">=18" @@ -8844,18 +10392,22 @@ } }, "node_modules/@sentry/core": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.37.0.tgz", + "integrity": "sha512-hkRz7S4gkKLgPf+p3XgVjVm7tAfvcEPZxeACCC6jmoeKhGkzN44nXwLiqqshJ25RMcSrhfFvJa/FlBg6zupz7g==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry/react": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.37.0.tgz", + "integrity": "sha512-XLnXJOHgsCeVAVBbO+9AuGlZWnCxLQHLOmKxpIr8wjE3g7dHibtug6cv8JLx78O4dd7aoCqv2TTyyKY9FLJ2EQ==", "license": "MIT", "dependencies": { - "@sentry/browser": "10.38.0", - "@sentry/core": "10.38.0" + "@sentry/browser": "10.37.0", + "@sentry/core": "10.37.0" }, "engines": { "node": ">=18" @@ -8865,15 +10417,17 @@ } }, "node_modules/@sentry/react-native": { - "version": "7.12.0", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-7.11.0.tgz", + "integrity": "sha512-OiDaLCAGpRN18YG/o7IIwLhU0Xpb0tYKQ5QxkGHiwb+L3VHn+MqGCGfITYNdhqr06HHMvu9Lysm+UJxaNmGaJg==", "license": "MIT", "dependencies": { - "@sentry/babel-plugin-component-annotate": "4.9.0", - "@sentry/browser": "10.38.0", + "@sentry/babel-plugin-component-annotate": "4.8.0", + "@sentry/browser": "10.37.0", "@sentry/cli": "2.58.4", - "@sentry/core": "10.38.0", - "@sentry/react": "10.38.0", - "@sentry/types": "10.38.0" + "@sentry/core": "10.37.0", + "@sentry/react": "10.37.0", + "@sentry/types": "10.37.0" }, "bin": { "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" @@ -8890,17 +10444,21 @@ } }, "node_modules/@sentry/types": { - "version": "10.38.0", + "version": "10.37.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-10.37.0.tgz", + "integrity": "sha512-umpnUKRC0AAbJrADg6SlFtqN2yzf7NHciCF9lkHau+ax2PIZ/NDmoG4RQujFVflVaVoD60Ly2t+CcPnYIWMPlw==", "license": "MIT", "dependencies": { - "@sentry/core": "10.38.0" + "@sentry/core": "10.37.0" }, "engines": { "node": ">=18" } }, "node_modules/@sideway/address": { - "version": "4.1.2", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8908,12 +10466,16 @@ } }, "node_modules/@sideway/formula": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "dev": true, "license": "BSD-3-Clause" }, @@ -8927,17 +10489,22 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^3.0.1" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@solana/buffer-layout": { @@ -9898,63 +11465,6 @@ } } }, - "node_modules/@testing-library/react-native/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/react-native/node_modules/jest-diff": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@testing-library/react-native/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@testing-library/react-native/node_modules/pretty-format": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@testing-library/react-native/node_modules/react-is": { - "version": "18.3.1", - "dev": true, - "license": "MIT" - }, "node_modules/@tokenizer/token": { "version": "0.3.0", "license": "MIT" @@ -10014,17 +11524,6 @@ "node": ">=10.13.0" } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@typechain/ethers-v5": { "version": "11.1.2", "dev": true, @@ -10056,6 +11555,7 @@ }, "node_modules/@types/babel__core": { "version": "7.20.5", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", @@ -10067,6 +11567,7 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.2", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" @@ -10074,6 +11575,7 @@ }, "node_modules/@types/babel__template": { "version": "7.4.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", @@ -10082,6 +11584,7 @@ }, "node_modules/@types/babel__traverse": { "version": "7.11.1", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.3.0" @@ -10187,7 +11690,10 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -10231,159 +11737,11 @@ "node_modules/@types/jest": { "version": "29.5.14", "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/types": { - "version": "29.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/ci-info": { - "version": "3.9.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@types/jest/node_modules/expect": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-diff": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-message-util": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-util": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -10466,10 +11824,12 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.9", + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", "license": "MIT", "dependencies": { - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-native": { @@ -10529,6 +11889,15 @@ "redux": "^4.0.0" } }, + "node_modules/@types/react-test-renderer": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.1.0.tgz", + "integrity": "sha512-XD0WZrHqjNrxA/MaR9O22w/RNidWR9YZmBdRGI7wcnWGrv/3dA8wKCJ8m63Sn+tLJhcjmuhOi629N66W6kgWzQ==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/secp256k1": { "version": "4.0.3", "license": "MIT", @@ -10578,6 +11947,7 @@ }, "node_modules/@types/stack-utils": { "version": "2.0.3", + "dev": true, "license": "MIT" }, "node_modules/@types/statuses": { @@ -10759,380 +12129,112 @@ "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.38.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.38.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.38.0", - "@typescript-eslint/tsconfig-utils": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.38.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.38.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.38.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "dev": true, - "license": "ISC" - }, - "node_modules/@unizen-io/unizen-contract-addresses": { - "version": "0.0.15", - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.0.tgz", - "integrity": "sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.0.tgz", - "integrity": "sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.9.0", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.0.tgz", - "integrity": "sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.0.tgz", - "integrity": "sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.0.tgz", - "integrity": "sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.0.tgz", - "integrity": "sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.0.tgz", - "integrity": "sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.0.tgz", - "integrity": "sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.0.tgz", - "integrity": "sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.0.tgz", - "integrity": "sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.0.tgz", - "integrity": "sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.0.tgz", - "integrity": "sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.0.tgz", - "integrity": "sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.0.tgz", - "integrity": "sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg==", - "cpu": [ - "x64" - ], + "node_modules/@typescript-eslint/types": { + "version": "8.38.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.0.tgz", - "integrity": "sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ==", - "cpu": [ - "wasm32" - ], + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.38.0", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" + "@typescript-eslint/project-service": "8.38.0", + "@typescript-eslint/tsconfig-utils": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/visitor-keys": "8.38.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": ">=14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.0.tgz", - "integrity": "sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ==", - "cpu": [ - "arm64" - ], + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.0.tgz", - "integrity": "sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A==", - "cpu": [ - "ia32" - ], + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.38.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.38.0", + "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/typescript-estree": "8.38.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.0.tgz", - "integrity": "sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw==", - "cpu": [ - "x64" - ], + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.38.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@typescript-eslint/types": "8.38.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "license": "ISC" + }, + "node_modules/@unizen-io/unizen-contract-addresses": { + "version": "0.0.15", + "license": "ISC" }, "node_modules/@unstoppabledomains/resolution": { "version": "9.3.0", @@ -11157,25 +12259,6 @@ "node-fetch": "^2.6.12" } }, - "node_modules/@urql/core": { - "version": "5.2.0", - "license": "MIT", - "dependencies": { - "@0no-co/graphql.web": "^1.0.13", - "wonka": "^6.3.2" - } - }, - "node_modules/@urql/exchange-retry": { - "version": "1.3.2", - "license": "MIT", - "dependencies": { - "@urql/core": "^5.1.2", - "wonka": "^6.3.2" - }, - "peerDependencies": { - "@urql/core": "^5.0.0" - } - }, "node_modules/@vscode/sudo-prompt": { "version": "9.3.1", "license": "MIT" @@ -11683,6 +12766,18 @@ "node": ">= 6.0.0" } }, + "node_modules/agent-cli-detector": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/agent-cli-detector/-/agent-cli-detector-0.1.4.tgz", + "integrity": "sha512-qPgevFvpaQoBaRJVKzr8R7h1WPvV3DtbgRIQlne4le66KBzXx5hNBwo/+NTw67LgkKBlhCzksrdautpUdlls0Q==", + "license": "MIT", + "bin": { + "agent-cli-detector": "dist/cli.js" + }, + "engines": { + "node": ">=18.18" + } + }, "node_modules/agentkeepalive": { "version": "4.5.0", "license": "MIT", @@ -11864,6 +12959,8 @@ }, "node_modules/ansi-fragments": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", "dev": true, "license": "MIT", "dependencies": { @@ -11873,7 +12970,9 @@ } }, "node_modules/ansi-fragments/node_modules/ansi-regex": { - "version": "4.1.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, "license": "MIT", "engines": { @@ -11882,6 +12981,8 @@ }, "node_modules/ansi-fragments/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", "dependencies": { @@ -11893,6 +12994,8 @@ }, "node_modules/ansi-fragments/node_modules/astral-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true, "license": "MIT", "engines": { @@ -11901,6 +13004,8 @@ }, "node_modules/ansi-fragments/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", "dependencies": { @@ -11909,16 +13014,22 @@ }, "node_modules/ansi-fragments/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT" }, "node_modules/ansi-fragments/node_modules/colorette": { - "version": "1.3.0", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "dev": true, "license": "MIT" }, "node_modules/ansi-fragments/node_modules/is-fullwidth-code-point": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, "license": "MIT", "engines": { @@ -11927,6 +13038,8 @@ }, "node_modules/ansi-fragments/node_modules/slice-ansi": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11940,6 +13053,8 @@ }, "node_modules/ansi-fragments/node_modules/strip-ansi": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "license": "MIT", "dependencies": { @@ -11994,6 +13109,8 @@ }, "node_modules/arg": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "license": "MIT" }, "node_modules/argparse": { @@ -12213,7 +13330,10 @@ } }, "node_modules/async-limiter": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true, "license": "MIT" }, "node_modules/async-lock": { @@ -12316,133 +13436,27 @@ }, "node_modules/babel-jest": { "version": "29.7.0", + "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/transform": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-jest/node_modules/@jest/types": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-jest/node_modules/ci-info": { - "version": "3.9.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/jest-haste-map": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/babel-jest/node_modules/jest-regex-util": { - "version": "29.6.3", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-jest/node_modules/jest-util": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-jest/node_modules/write-file-atomic": { - "version": "4.0.2", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -12457,6 +13471,7 @@ }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { "version": "5.1.0", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", @@ -12471,6 +13486,7 @@ }, "node_modules/babel-plugin-istanbul/node_modules/semver": { "version": "6.3.1", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -12478,6 +13494,7 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", @@ -12529,15 +13546,28 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + } + }, "node_modules/babel-plugin-react-native-web": { - "version": "0.19.13", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.2.tgz", + "integrity": "sha512-SPD0J6qjJn8231i0HZhlAGH6NORe+QvRSQM2mwQEzJ2Fb3E4ruWTiiicPlHjmeWShDXLcvoorOCXjeR7k/lyWA==", "license": "MIT" }, "node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.25.1", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.36.0.tgz", + "integrity": "sha512-LhD0xdoedDw7ansQgXbB2DADLZIK/LRXuWNBPuVzMc5S2WK5GyT89tCM+cQzxFGO0mGyLK6D5TrVOJJzAoDy8Q==", "license": "MIT", "dependencies": { - "hermes-parser": "0.25.1" + "hermes-parser": "0.36.0" } }, "node_modules/babel-plugin-transform-flow-enums": { @@ -12549,6 +13579,7 @@ }, "node_modules/babel-preset-current-node-syntax": { "version": "1.1.0", + "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -12572,78 +13603,33 @@ } }, "node_modules/babel-preset-expo": { - "version": "13.2.3", + "version": "57.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-57.0.3.tgz", + "integrity": "sha512-JuTLwC4dt30GF3L8sY7EBwh5iD7L3dSWumfg+i99bFK2SIXWyfn01UHxu+azfKXFU/ufim9oUt9KUoJ9AvyOPA==", "license": "MIT", "dependencies": { + "@babel/generator": "^7.20.5", "@babel/helper-module-imports": "^7.25.9", "@babel/plugin-proposal-decorators": "^7.12.9", "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.79.5", - "babel-plugin-react-native-web": "~0.19.13", - "babel-plugin-syntax-hermes-parser": "^0.25.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "debug": "^4.3.4", - "react-refresh": "^0.14.2", - "resolve-from": "^5.0.0" - }, - "peerDependencies": { - "babel-plugin-react-compiler": "^19.0.0-beta-e993439-20250405" - }, - "peerDependenciesMeta": { - "babel-plugin-react-compiler": { - "optional": true - } - } - }, - "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.79.5", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.79.5" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": { - "version": "0.79.5", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-export-default-from": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-class-static-block": "^7.27.1", "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", @@ -12651,66 +13637,41 @@ "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.28.6", + "@babel/plugin-transform-react-jsx-development": "^7.27.1", + "@babel/plugin-transform-react-pure-annotations": "^7.27.1", "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.79.5", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-plugin-codegen": "0.86.0", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.36.0", "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { - "version": "0.79.5", - "license": "MIT", - "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.25.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">=18" + "debug": "^4.3.4" }, "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/babel-preset-expo/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "@babel/runtime": "^7.20.0", + "expo": "*", + "expo-widgets": "^57.0.5", + "react-refresh": ">=0.14.0 <1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@babel/runtime": { + "optional": true + }, + "expo": { + "optional": true + }, + "expo-widgets": { + "optional": true + } } }, "node_modules/babel-preset-jest": { "version": "29.6.3", + "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", @@ -12908,31 +13869,6 @@ "version": "2.0.0", "license": "MIT" }, - "node_modules/better-opn": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/better-opn/node_modules/open": { - "version": "8.4.2", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bfs-path": { "version": "1.0.2", "license": "MIT" @@ -13232,6 +14168,8 @@ }, "node_modules/bplist-parser": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", "license": "MIT", "dependencies": { "big-integer": "1.6.x" @@ -13494,7 +14432,6 @@ }, "node_modules/bytes": { "version": "3.1.2", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -13541,33 +14478,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "callsites": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/caller-path": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/callsites": { "version": "3.1.0", "dev": true, @@ -13663,6 +14573,8 @@ }, "node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", "engines": { @@ -13717,15 +14629,10 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "3.0.0", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/chrome-launcher": { "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "license": "Apache-2.0", "dependencies": { "@types/node": "*", @@ -13741,19 +14648,22 @@ } }, "node_modules/chromium-edge-launcher": { - "version": "0.2.0", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.3.0.tgz", + "integrity": "sha512-p03azHlGjtyRvFEee3cyvtsRYdniSkwjkzmM/KmVnqT5d7QkkwpJBhis/zCLMYdQMVJ5tt140TBNqqrZPaWeFA==", "license": "Apache-2.0", "dependencies": { "@types/node": "*", "escape-string-regexp": "^4.0.0", "is-wsl": "^2.2.0", "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "mkdirp": "^1.0.4" } }, "node_modules/chromium-edge-launcher/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -13763,8 +14673,9 @@ } }, "node_modules/ci-info": { - "version": "4.2.0", - "dev": true, + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", @@ -13852,7 +14763,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "2.1.0", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true, "license": "MIT" }, @@ -14088,19 +15001,6 @@ "node": ">=0.8" } }, - "node_modules/clone-deep": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.0", - "shallow-clone": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cluster-key-slot": { "version": "1.1.2", "license": "Apache-2.0", @@ -14110,6 +15010,8 @@ }, "node_modules/co": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", "engines": { @@ -14118,7 +15020,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, @@ -14171,6 +15075,8 @@ }, "node_modules/command-exists": { "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", "dev": true, "license": "MIT" }, @@ -14297,6 +15203,8 @@ }, "node_modules/compressible": { "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" @@ -14306,30 +15214,27 @@ } }, "node_modules/compression": { - "version": "1.7.4", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -14337,11 +15242,18 @@ }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -14349,6 +15261,8 @@ }, "node_modules/connect": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -14362,6 +15276,8 @@ }, "node_modules/connect/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -14369,6 +15285,8 @@ }, "node_modules/connect/node_modules/finalhandler": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -14385,10 +15303,14 @@ }, "node_modules/connect/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/connect/node_modules/on-finished": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "license": "MIT", "dependencies": { "ee-first": "1.1.1" @@ -14399,6 +15321,8 @@ }, "node_modules/connect/node_modules/statuses": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -14557,6 +15481,28 @@ "sha.js": "^2.4.8" } }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/cross-fetch": { "version": "3.1.5", "license": "MIT", @@ -14866,7 +15812,9 @@ } }, "node_modules/dayjs": { - "version": "1.10.4", + "version": "1.11.21", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", + "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", "dev": true, "license": "MIT" }, @@ -14887,6 +15835,8 @@ }, "node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "license": "MIT", "engines": { @@ -14963,13 +15913,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/define-properties": { "version": "1.2.1", "license": "MIT", @@ -15022,22 +15965,6 @@ "node": ">= 0.8" } }, - "node_modules/deprecated-react-native-prop-types": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "@react-native/normalize-colors": "^0.73.0", - "invariant": "^2.2.4", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/deprecated-react-native-prop-types/node_modules/@react-native/normalize-colors": { - "version": "0.73.2", - "license": "MIT" - }, "node_modules/des.js": { "version": "1.0.0", "dev": true, @@ -15086,6 +16013,8 @@ }, "node_modules/detect-newline": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { @@ -15094,6 +16023,8 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { @@ -15119,6 +16050,12 @@ "rfc4648": "^1.3.0" } }, + "node_modules/dnssd-advertise": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/dnssd-advertise/-/dnssd-advertise-1.1.6.tgz", + "integrity": "sha512-Ndrrf6BMPalkQPd/zubL+4YghH2J9NspapQ09uDXwYbvOPkP0oaqf5CkcwJ0b50kS2O3ul6yVu+jz+RY62Cejg==", + "license": "MIT" + }, "node_modules/doctrine": { "version": "2.1.0", "dev": true, @@ -15186,47 +16123,14 @@ "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "16.4.7", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand/node_modules/dotenv": { - "version": "16.6.1", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" + }, + "node_modules/dot-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, "node_modules/dprint-node": { @@ -15761,21 +16665,6 @@ "react-native": "*" } }, - "node_modules/edge-login-ui-rn/node_modules/react-native-airship": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/react-native-airship/-/react-native-airship-0.2.12.tgz", - "integrity": "sha512-AFo7N11ZhFW88LacNNjZECxR5iQhIiAv0U/DDoVxgsdx2uyZXALShUbQngZftDCcPEqoOkCoQUgGt2kDYvqmFg==", - "license": "MIT", - "dependencies": { - "yavent": "^0.1.1" - } - }, - "node_modules/edge-login-ui-rn/node_modules/react-native-patina": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/react-native-patina/-/react-native-patina-0.1.6.tgz", - "integrity": "sha512-3mtDnDRbkTx3mtS9BsaYgFy5C+RuSTTHLu5VV+8g8lJtvaSdcsflpmf5dh3ZmCSJc2tDORfzU+nuRQ2keVY91Q==", - "license": "MIT" - }, "node_modules/edge-login-ui-rn/node_modules/react-redux": { "version": "7.2.4", "license": "MIT", @@ -15852,6 +16741,8 @@ }, "node_modules/emittery": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", "engines": { @@ -15913,15 +16804,10 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/env-editor": { - "version": "0.4.2", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", "engines": { @@ -15929,7 +16815,9 @@ } }, "node_modules/envinfo": { - "version": "7.14.0", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", "dev": true, "license": "MIT", "bin": { @@ -15941,28 +16829,37 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/error-stack-parser": { - "version": "2.0.6", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "license": "MIT", "dependencies": { - "stackframe": "^1.1.1" + "stackframe": "^1.3.4" } }, "node_modules/errorhandler": { - "version": "1.5.1", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", + "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "escape-html": "~1.0.3" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/es-abstract": { @@ -16641,6 +17538,7 @@ }, "node_modules/esprima": { "version": "4.0.1", + "dev": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -16916,10 +17814,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/exec-async": { - "version": "2.2.0", - "license": "MIT" - }, "node_modules/execa": { "version": "5.1.1", "license": "MIT", @@ -16944,10 +17838,11 @@ "node_modules/exif-parser": { "version": "0.1.12" }, - "node_modules/exit-x": { - "version": "0.2.2", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -16960,42 +17855,51 @@ } }, "node_modules/expect": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.0.0", - "@jest/get-type": "30.0.0", - "jest-matcher-utils": "30.0.0", - "jest-message-util": "30.0.0", - "jest-mock": "30.0.0", - "jest-util": "30.0.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/expo": { - "version": "53.0.20", + "version": "57.0.7", + "resolved": "https://registry.npmjs.org/expo/-/expo-57.0.7.tgz", + "integrity": "sha512-PJdE0EjoX878OqClmsigVKdT0jCNOAQDRLcvFkeBakxaVyEDhjcQ8baKq2YysYH2g0YNB1rEIpHUiKtluO918A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "0.24.20", - "@expo/config": "~11.0.13", - "@expo/config-plugins": "~10.1.2", - "@expo/fingerprint": "0.13.4", - "@expo/metro-config": "0.20.17", - "@expo/vector-icons": "^14.0.0", - "babel-preset-expo": "~13.2.3", - "expo-asset": "~11.1.7", - "expo-constants": "~17.1.7", - "expo-file-system": "~18.1.11", - "expo-font": "~13.3.2", - "expo-keep-awake": "~14.1.4", - "expo-modules-autolinking": "2.1.14", - "expo-modules-core": "2.5.0", - "react-native-edge-to-edge": "1.6.0", - "whatwg-url-without-unicode": "8.0.0-3" + "@expo/cli": "^57.0.9", + "@expo/config": "~57.0.5", + "@expo/config-plugins": "~57.0.5", + "@expo/devtools": "~57.0.1", + "@expo/dom-webview": "~57.0.1", + "@expo/fingerprint": "^0.20.5", + "@expo/local-build-cache-provider": "^57.0.4", + "@expo/log-box": "^57.0.1", + "@expo/metro": "~56.0.0", + "@expo/metro-config": "~57.0.6", + "@ungap/structured-clone": "^1.3.0", + "babel-preset-expo": "~57.0.3", + "expo-asset": "~57.0.6", + "expo-constants": "~57.0.6", + "expo-file-system": "~57.0.1", + "expo-font": "~57.0.1", + "expo-keep-awake": "~57.0.1", + "expo-modules-autolinking": "~57.0.8", + "expo-modules-core": "~57.0.6", + "pretty-format": "^29.7.0", + "react-refresh": "^0.14.2", + "whatwg-url-minimum": "^0.1.2" }, "bin": { "expo": "bin/cli", @@ -17006,7 +17910,9 @@ "@expo/dom-webview": "*", "@expo/metro-runtime": "*", "react": "*", + "react-dom": "*", "react-native": "*", + "react-native-web": "*", "react-native-webview": "*" }, "peerDependenciesMeta": { @@ -17016,17 +17922,25 @@ "@expo/metro-runtime": { "optional": true }, + "react-dom": { + "optional": true + }, + "react-native-web": { + "optional": true + }, "react-native-webview": { "optional": true } } }, "node_modules/expo-asset": { - "version": "11.1.7", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-57.0.6.tgz", + "integrity": "sha512-n3Yb1VxcP+BMRTyC4R1x2It4+m5EDkNXiVCHGWbnIREQUUkMs2Yeul7D5qfFWAYtIn2Z3hbGMndwU6Az1FPSEg==", "license": "MIT", "dependencies": { - "@expo/image-utils": "^0.7.6", - "expo-constants": "~17.1.7" + "@expo/image-utils": "^0.11.3", + "expo-constants": "~57.0.6" }, "peerDependencies": { "expo": "*", @@ -17034,12 +17948,39 @@ "react-native": "*" } }, + "node_modules/expo-asset/node_modules/@expo/image-utils": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.11.3.tgz", + "integrity": "sha512-yMVjkndhXm9mct0uMq+ndxqT6FgAnhucdUfmXuQ6V6uE021GOiYCACO+KZ0MB4vearPSvbWTGfi32QQr2qocfQ==", + "license": "MIT", + "dependencies": { + "@expo/require-utils": "^57.0.3", + "@expo/spawn-async": "^1.8.0", + "chalk": "^4.0.0", + "getenv": "^2.0.0", + "jimp-compact": "0.16.1", + "parse-png": "^2.1.0", + "semver": "^7.6.0" + } + }, + "node_modules/expo-blur": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/expo-blur/-/expo-blur-57.0.2.tgz", + "integrity": "sha512-Aoud8H8lmlNkbRufyvRLefmGFELdBf1n5Te/Xm+Zx8ORINH+aXL+gKb5mbftFSha860+I7pMArz77TBYz8HDVg==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-constants": { - "version": "17.1.7", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-57.0.6.tgz", + "integrity": "sha512-OV+4XUshdO18TKNlo1cxUkXeJWgUOPgalvl8ofmc7kmPPHoyfz2hGJ94tyY/RND/GG5RREE+me9YHClNEzo+Ow==", "license": "MIT", "dependencies": { - "@expo/config": "~11.0.12", - "@expo/env": "~1.0.7" + "@expo/env": "~2.4.2" }, "peerDependencies": { "expo": "*", @@ -17047,7 +17988,9 @@ } }, "node_modules/expo-file-system": { - "version": "18.1.11", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-57.0.1.tgz", + "integrity": "sha512-w7/ERvQFrGP2apTO9lDtZ+O6JQIhfakL7+Xqzh+rfMO9B4LB4qwrz+YvLgir8KFRVX64JHBnRuYBVLY1oQZcqw==", "license": "MIT", "peerDependencies": { "expo": "*", @@ -17055,35 +17998,50 @@ } }, "node_modules/expo-font": { - "version": "13.3.2", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-57.0.1.tgz", + "integrity": "sha512-QyS9L1Kh9sKJg4gfU6rdbpxpmH+DyzBX8z6jVvXMUDoqLr1GqmkO/Wu379KCXjL///kWbhpNlbi7AgBuj4VdIQ==", "license": "MIT", "dependencies": { "fontfaceobserver": "^2.1.0" }, "peerDependencies": { "expo": "*", - "react": "*" + "react": "*", + "react-native": "*" } }, "node_modules/expo-keep-awake": { - "version": "14.1.4", + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-57.0.1.tgz", + "integrity": "sha512-28lkFImeXTS+bhAjuCFV7w7tW5bXg27BJVrxv+nC/nyYa86qEa0oFeHwqol6ha5k4pdVDQgBF09GM4A1k76Ssg==", "license": "MIT", "peerDependencies": { "expo": "*", "react": "*" } }, + "node_modules/expo-linear-gradient": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-57.0.1.tgz", + "integrity": "sha512-CpS8eMqoIWcHVGKV66zbDvzotCw9qYp3f8CuI9N+h1LaO0tMLUzBpkhAKePUsXlpN3yolYlHFSPkfVZ/uSh+iA==", + "license": "MIT", + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo-modules-autolinking": { - "version": "2.1.14", + "version": "57.0.8", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-57.0.8.tgz", + "integrity": "sha512-YBDgbJHlhhhr3JaKErW6znsIL8zQsh206LaDpWrLHV/WluRwhYfZuF/fhkVN7b/DsRxIu0UeCPExaEPMxlC2Hw==", "license": "MIT", "dependencies": { - "@expo/spawn-async": "^1.7.2", + "@expo/require-utils": "^57.0.3", + "@expo/spawn-async": "^1.8.0", "chalk": "^4.1.0", - "commander": "^7.2.0", - "find-up": "^5.0.0", - "glob": "^10.4.2", - "require-from-string": "^2.0.2", - "resolve-from": "^5.0.0" + "commander": "^7.2.0" }, "bin": { "expo-modules-autolinking": "bin/expo-modules-autolinking.js" @@ -17091,16 +18049,41 @@ }, "node_modules/expo-modules-autolinking/node_modules/commander": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/expo-modules-core": { - "version": "2.5.0", + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-57.0.6.tgz", + "integrity": "sha512-hePwOh2+i+EpWrVnv95sQeQ0OD5PYuEuIhmglVLzQVaVBV3zHcRvLAc1rV8ROqUL6YtAQUXjPkoSx1ly2ZdTuQ==", "license": "MIT", "dependencies": { + "@expo/expo-modules-macros-plugin": "0.6.1", + "expo-modules-jsi": "~57.0.3", "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*", + "react-native-worklets": "^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0" + }, + "peerDependenciesMeta": { + "react-native-worklets": { + "optional": true + } + } + }, + "node_modules/expo-modules-jsi": { + "version": "57.0.6", + "resolved": "https://registry.npmjs.org/expo-modules-jsi/-/expo-modules-jsi-57.0.6.tgz", + "integrity": "sha512-WK0xFEe0FdZTCLCdfXK+HVNYfAmEbA6goecRxqjr0gh3XYRKAr9tikxqcM0ItLQoEPKntscPZhWcPLGvr97Tfw==", + "license": "MIT", + "peerDependencies": { + "react-native": "*" } }, "node_modules/expo-quick-actions": { @@ -17170,8 +18153,154 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/expo-server": { + "version": "57.0.1", + "resolved": "https://registry.npmjs.org/expo-server/-/expo-server-57.0.1.tgz", + "integrity": "sha512-sBfVDH6dmKVHZxqUxbfkzS00PZELMZt1IpnHKxcOTMZtR/t7CtRAFrbXcisG+EyzeqHSVDacZT+1tbYfZt5D8w==", + "license": "MIT", + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/expo/node_modules/@expo/config-plugins": { + "version": "57.0.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-57.0.5.tgz", + "integrity": "sha512-xhUGgzpFWRghDUH98+Wl4RDakYhTsbyMg6aOYiBjRzPO/THH8tKMw3vlksgFYlU2PkiAdABJN3tNPf5qmvOQhA==", + "license": "MIT", + "dependencies": { + "@expo/config-types": "^57.0.2", + "@expo/json-file": "~11.0.1", + "@expo/plist": "^0.8.1", + "@expo/require-utils": "^57.0.3", + "@expo/sdk-runtime-versions": "^1.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.5", + "getenv": "^2.0.0", + "glob": "^13.0.0", + "semver": "^7.5.4", + "slugify": "^1.6.6", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/expo/node_modules/@expo/config-types": { + "version": "57.0.2", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-57.0.2.tgz", + "integrity": "sha512-ewW08OonrcRIsRKIlFvvcmmafE5zemb1ocu3HkNwtVPyRtj2w42pZCAkMIROYpcVBaPnc3mDT9UZDzwXWC3i6g==", + "license": "MIT" + }, + "node_modules/expo/node_modules/@expo/json-file": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-11.0.1.tgz", + "integrity": "sha512-zxHWj4MKKMAL29ZQSY/Fssx4Thluk40JmuGNaeS078wy/NhlFhnVi+rHHunulE3xJAJ0CM73m8VK2+GkF9eRwQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.20.0", + "json5": "^2.2.3" + } + }, + "node_modules/expo/node_modules/@expo/plist": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.8.1.tgz", + "integrity": "sha512-3gTReGIUm0oRaMClsAJYxBnVPCl6fVpsl8HS+DTVxDhW4GyVyxg9E/Znm3BvcHtUJ51RJJI14pC1wvrNilCRHw==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + } + }, + "node_modules/expo/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/expo/node_modules/brace-expansion": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz", + "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/expo/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/expo/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/expo/node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, "node_modules/exponential-backoff": { - "version": "3.1.2", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", "license": "Apache-2.0" }, "node_modules/express": { @@ -17383,6 +18512,8 @@ }, "node_modules/faye-websocket": { "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" @@ -17391,6 +18522,18 @@ "node": ">=0.8.0" } }, + "node_modules/fb-dotslash": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", + "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "dotslash": "bin/dotslash" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "license": "Apache-2.0", @@ -17398,6 +18541,23 @@ "bser": "2.1.1" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/feaxios": { "version": "0.0.23", "resolved": "https://registry.npmjs.org/feaxios/-/feaxios-0.0.23.tgz", @@ -17428,6 +18588,12 @@ "node": "^12.20 || >= 14.13" } }, + "node_modules/fetch-nodeshim": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/fetch-nodeshim/-/fetch-nodeshim-0.4.10.tgz", + "integrity": "sha512-m6I8ALe4L4XpdETy7MJZWs6L1IVMbjs99bwbpIKphxX+0CTns4IKDWJY0LWfr4YsFjfg+z1TjzTMU8lKl8rG0w==", + "license": "MIT" + }, "node_modules/fflate": { "version": "0.4.8", "license": "MIT" @@ -17565,36 +18731,39 @@ } }, "node_modules/firebase": { - "version": "10.12.2", + "version": "12.15.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-12.15.0.tgz", + "integrity": "sha512-p0YTLcRSTiBXMx9sGr4ZNSfLjc/RVBEw4C/TXjVMtw65+6E1Pbm47UY3F4/AqRoDobEcNX3gsbPGy7jPjxbgSQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.4", - "@firebase/analytics-compat": "0.2.10", - "@firebase/app": "0.10.5", - "@firebase/app-check": "0.8.4", - "@firebase/app-check-compat": "0.3.11", - "@firebase/app-compat": "0.2.35", - "@firebase/app-types": "0.9.2", - "@firebase/auth": "1.7.4", - "@firebase/auth-compat": "0.5.9", - "@firebase/database": "1.0.5", - "@firebase/database-compat": "1.0.5", - "@firebase/firestore": "4.6.3", - "@firebase/firestore-compat": "0.3.32", - "@firebase/functions": "0.11.5", - "@firebase/functions-compat": "0.3.11", - "@firebase/installations": "0.6.7", - "@firebase/installations-compat": "0.2.7", - "@firebase/messaging": "0.12.9", - "@firebase/messaging-compat": "0.2.9", - "@firebase/performance": "0.6.7", - "@firebase/performance-compat": "0.2.7", - "@firebase/remote-config": "0.4.7", - "@firebase/remote-config-compat": "0.2.7", - "@firebase/storage": "0.12.5", - "@firebase/storage-compat": "0.3.8", - "@firebase/util": "1.9.6", - "@firebase/vertexai-preview": "0.0.2" + "@firebase/ai": "2.13.1", + "@firebase/analytics": "0.10.22", + "@firebase/analytics-compat": "0.2.28", + "@firebase/app": "0.15.0", + "@firebase/app-check": "0.12.0", + "@firebase/app-check-compat": "0.4.5", + "@firebase/app-compat": "0.5.14", + "@firebase/app-types": "0.9.5", + "@firebase/auth": "1.13.3", + "@firebase/auth-compat": "0.6.8", + "@firebase/data-connect": "0.7.1", + "@firebase/database": "1.1.3", + "@firebase/database-compat": "2.1.4", + "@firebase/firestore": "4.16.0", + "@firebase/firestore-compat": "0.4.11", + "@firebase/functions": "0.13.5", + "@firebase/functions-compat": "0.4.5", + "@firebase/installations": "0.6.22", + "@firebase/installations-compat": "0.2.22", + "@firebase/messaging": "0.13.0", + "@firebase/messaging-compat": "0.2.27", + "@firebase/performance": "0.7.12", + "@firebase/performance-compat": "0.2.25", + "@firebase/remote-config": "0.8.5", + "@firebase/remote-config-compat": "0.2.26", + "@firebase/storage": "0.14.3", + "@firebase/storage-compat": "0.4.3", + "@firebase/util": "1.15.1" } }, "node_modules/first-match": { @@ -17620,6 +18789,8 @@ }, "node_modules/flow-enums-runtime": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", "license": "MIT" }, "node_modules/follow-redirects": { @@ -17642,6 +18813,8 @@ }, "node_modules/fontfaceobserver": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", "license": "BSD-2-Clause" }, "node_modules/for-each": { @@ -17657,23 +18830,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/for-in": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/foreground-child": { "version": "3.3.1", "license": "ISC", @@ -17738,13 +18894,6 @@ "node": ">= 0.6" } }, - "node_modules/freeport-async": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/fresh": { "version": "0.5.2", "license": "MIT", @@ -17878,6 +19027,7 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" @@ -18280,15 +19430,25 @@ "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", "license": "MIT" }, + "node_modules/hermes-compiler": { + "version": "250829098.0.14", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.14.tgz", + "integrity": "sha512-5meXwsZxgiqFaJjNzwjzI9IyUkuGGBisu+z9BvQWmGVpjH6nz11hgqkyxe4dl8UAdyIV4lTbz91+Dlnjz0VxqA==", + "license": "MIT" + }, "node_modules/hermes-estree": { - "version": "0.25.1", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.36.0.tgz", + "integrity": "sha512-A1+8zn5oss2CFP7pKsOaxorQG6FNIz1WU1VDqruLPPZl3LVgeE2C5xfFg8Ow6/Ow4mSslLLtYP1J3n38eKyW9w==", "license": "MIT" }, "node_modules/hermes-parser": { - "version": "0.25.1", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.36.0.tgz", + "integrity": "sha512-GdpwMmH5x6IpC1cijvcvYnlPB60Mh6kTSF/NFdYV/j56gYdi+0RIakYs+eqOV+bbO0SW7mgVVGSsTJxyPQfo3w==", "license": "MIT", "dependencies": { - "hermes-estree": "0.25.1" + "hermes-estree": "0.36.0" } }, "node_modules/hi-base32": { @@ -18313,6 +19473,8 @@ }, "node_modules/hosted-git-info": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" @@ -18323,6 +19485,8 @@ }, "node_modules/html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, @@ -18355,6 +19519,7 @@ }, "node_modules/http-errors": { "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { "depd": "2.0.0", @@ -18368,7 +19533,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.5", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", "license": "MIT" }, "node_modules/http-shutdown": { @@ -18436,6 +19603,8 @@ }, "node_modules/idb": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", "license": "ISC" }, "node_modules/idb-keyval": { @@ -18480,6 +19649,8 @@ }, "node_modules/image-size": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", "license": "MIT", "dependencies": { "queue": "6.0.2" @@ -18516,6 +19687,8 @@ }, "node_modules/import-local": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { @@ -18534,6 +19707,7 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -18639,6 +19813,7 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", + "dev": true, "license": "MIT" }, "node_modules/is-async-function": { @@ -18747,13 +19922,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "license": "MIT", @@ -18767,13 +19935,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "license": "MIT", @@ -18807,6 +19968,8 @@ }, "node_modules/is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", "engines": { @@ -18963,16 +20126,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-regex": { "version": "1.2.1", "license": "MIT", @@ -19159,15 +20312,8 @@ "license": "MIT" }, "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "version": "2.0.0", + "license": "ISC" }, "node_modules/isomorphic-fetch": { "version": "3.0.0", @@ -19196,6 +20342,7 @@ }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" @@ -19203,6 +20350,8 @@ }, "node_modules/istanbul-lib-instrument": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -19217,33 +20366,39 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.1.3", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -19352,20 +20507,22 @@ } }, "node_modules/jest": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.0.0", - "@jest/types": "30.0.0", - "import-local": "^3.2.0", - "jest-cli": "30.0.0" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -19377,50 +20534,56 @@ } }, "node_modules/jest-changed-files": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.0.0", + "execa": "^5.0.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.0", - "@jest/expect": "30.0.0", - "@jest/test-result": "30.0.0", - "@jest/types": "30.0.0", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "chalk": "^4.1.2", + "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.0.0", - "jest-matcher-utils": "30.0.0", - "jest-message-util": "30.0.0", - "jest-runtime": "30.0.0", - "jest-snapshot": "30.0.0", - "jest-util": "30.0.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "30.0.0", - "pure-rand": "^7.0.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "stack-utils": "^2.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus/node_modules/dedent": { - "version": "1.6.0", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, "license": "MIT", "peerDependencies": { @@ -19433,26 +20596,29 @@ } }, "node_modules/jest-cli": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.0.0", - "@jest/test-result": "30.0.0", - "@jest/types": "30.0.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.0.0", - "jest-util": "30.0.0", - "jest-validate": "30.0.0", - "yargs": "^17.7.2" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -19464,173 +20630,135 @@ } }, "node_modules/jest-config": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.0.0", - "@jest/pattern": "30.0.0", - "@jest/test-sequencer": "30.0.0", - "@jest/types": "30.0.0", - "babel-jest": "30.0.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-circus": "30.0.0", - "jest-docblock": "30.0.0", - "jest-environment-node": "30.0.0", - "jest-regex-util": "30.0.0", - "jest-resolve": "30.0.0", - "jest-runner": "30.0.0", - "jest-util": "30.0.0", - "jest-validate": "30.0.0", - "micromatch": "^4.0.8", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "30.0.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "@types/node": "*", - "esbuild-register": ">=3.4.0", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, - "esbuild-register": { - "optional": true - }, "ts-node": { "optional": true } } }, - "node_modules/jest-config/node_modules/babel-jest": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.0.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.0", - "babel-preset-jest": "30.0.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0" - } - }, - "node_modules/jest-config/node_modules/babel-plugin-istanbul": { - "version": "7.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-config/node_modules/babel-preset-jest": { - "version": "30.0.0", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "babel-plugin-jest-hoist": "30.0.0", - "babel-preset-current-node-syntax": "^1.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "*" }, - "peerDependencies": { - "@babel/core": "^7.11.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-diff": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/diff-sequences": "30.0.0", - "@jest/get-type": "30.0.0", - "chalk": "^4.1.2", - "pretty-format": "30.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "dependencies": { - "detect-newline": "^3.1.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.0.0", - "@jest/types": "30.0.0", - "chalk": "^4.1.2", - "jest-util": "30.0.0", - "pretty-format": "30.0.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.0.0", - "@jest/fake-timers": "30.0.0", - "@jest/types": "30.0.0", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "30.0.0", - "jest-util": "30.0.0", - "jest-validate": "30.0.0" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { @@ -19641,117 +20769,101 @@ } }, "node_modules/jest-haste-map": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.0", + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.0", - "jest-util": "30.0.0", - "jest-worker": "30.0.0", - "micromatch": "^4.0.8", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", "walker": "^1.0.8" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "fsevents": "^2.3.2" } }, "node_modules/jest-leak-detector": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.0.0", - "pretty-format": "30.0.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.0.0", - "chalk": "^4.1.2", - "jest-diff": "30.0.0", - "pretty-format": "30.0.0" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.0.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.0.0", + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "stack-utils": "^2.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-mock": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.0.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "30.0.0" + "jest-util": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", "engines": { @@ -19767,92 +20879,87 @@ } }, "node_modules/jest-regex-util": { - "version": "30.0.0", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.0.0", - "jest-validate": "30.0.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "30.0.0", - "jest-snapshot": "30.0.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.0.0", - "@jest/environment": "30.0.0", - "@jest/test-result": "30.0.0", - "@jest/transform": "30.0.0", - "@jest/types": "30.0.0", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "chalk": "^4.1.2", + "chalk": "^4.0.0", "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.0.0", - "jest-environment-node": "30.0.0", - "jest-haste-map": "30.0.0", - "jest-leak-detector": "30.0.0", - "jest-message-util": "30.0.0", - "jest-resolve": "30.0.0", - "jest-runtime": "30.0.0", - "jest-util": "30.0.0", - "jest-watcher": "30.0.0", - "jest-worker": "30.0.0", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner/node_modules/source-map-support": { "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", "dependencies": { @@ -19860,54 +20967,66 @@ "source-map": "^0.6.0" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime": { - "version": "30.0.0", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/environment": "30.0.0", - "@jest/fake-timers": "30.0.0", - "@jest/globals": "30.0.0", - "@jest/source-map": "30.0.0", - "@jest/test-result": "30.0.0", - "@jest/transform": "30.0.0", - "@jest/types": "30.0.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.0", - "jest-message-util": "30.0.0", - "jest-mock": "30.0.0", - "jest-regex-util": "30.0.0", - "jest-resolve": "30.0.0", - "jest-snapshot": "30.0.0", - "jest-util": "30.0.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-runtime/node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { @@ -19915,95 +21034,89 @@ } }, "node_modules/jest-snapshot": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.0.0", - "@jest/get-type": "30.0.0", - "@jest/snapshot-utils": "30.0.0", - "@jest/transform": "30.0.0", - "@jest/types": "30.0.0", - "babel-preset-current-node-syntax": "^1.1.0", - "chalk": "^4.1.2", - "expect": "30.0.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.0.0", - "jest-matcher-utils": "30.0.0", - "jest-message-util": "30.0.0", - "jest-util": "30.0.0", - "pretty-format": "30.0.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-util": { - "version": "30.0.0", - "dev": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "license": "MIT", "dependencies": { - "@jest/types": "30.0.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-validate": { - "version": "30.0.0", - "dev": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "license": "MIT", "dependencies": { - "@jest/get-type": "30.0.0", - "@jest/types": "30.0.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "30.0.0" + "pretty-format": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-watcher": { - "version": "30.0.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.0.0", - "@jest/types": "30.0.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "30.0.0", - "string-length": "^4.0.2" + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-worker": { @@ -20019,49 +21132,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/@jest/types": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/ci-info": { - "version": "3.9.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/jest-util": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "license": "MIT", @@ -20097,14 +21167,16 @@ } }, "node_modules/joi": { - "version": "17.4.0", + "version": "17.13.4", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.4.tgz", + "integrity": "sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.0", - "@sideway/formula": "^3.0.0", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } }, @@ -20164,6 +21236,8 @@ }, "node_modules/jsc-safe-url": { "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", "license": "0BSD" }, "node_modules/jsesc": { @@ -20188,10 +21262,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "dev": true, @@ -20317,13 +21387,6 @@ "version": "1.0.0", "license": "MIT" }, - "node_modules/kind-of": { - "version": "6.0.3", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/klaw-sync": { "version": "6.0.0", "dev": true, @@ -20340,7 +21403,9 @@ } }, "node_modules/lan-network": { - "version": "0.1.7", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/lan-network/-/lan-network-0.2.1.tgz", + "integrity": "sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==", "license": "MIT", "bin": { "lan-network": "dist/lan-network-cli.js" @@ -20402,6 +21467,8 @@ }, "node_modules/lighthouse-logger": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "license": "Apache-2.0", "dependencies": { "debug": "^2.6.9", @@ -20410,6 +21477,8 @@ }, "node_modules/lighthouse-logger/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -20417,13 +21486,17 @@ }, "node_modules/lighthouse-logger/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.27.0", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", "license": "MPL-2.0", "dependencies": { - "detect-libc": "^1.0.3" + "detect-libc": "^2.0.3" }, "engines": { "node": ">= 12.0.0" @@ -20433,20 +21506,43 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.27.0", - "lightningcss-darwin-x64": "1.27.0", - "lightningcss-freebsd-x64": "1.27.0", - "lightningcss-linux-arm-gnueabihf": "1.27.0", - "lightningcss-linux-arm64-gnu": "1.27.0", - "lightningcss-linux-arm64-musl": "1.27.0", - "lightningcss-linux-x64-gnu": "1.27.0", - "lightningcss-linux-x64-musl": "1.27.0", - "lightningcss-win32-arm64-msvc": "1.27.0", - "lightningcss-win32-x64-msvc": "1.27.0" + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.27.0", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", "cpu": [ "arm64" ], @@ -20464,9 +21560,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", - "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", "cpu": [ "x64" ], @@ -20484,9 +21580,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", - "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", "cpu": [ "x64" ], @@ -20504,9 +21600,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", - "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", "cpu": [ "arm" ], @@ -20524,12 +21620,15 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", - "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -20544,12 +21643,15 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", - "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -20564,12 +21666,15 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", - "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -20584,12 +21689,15 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", - "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -20604,9 +21712,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", - "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", "cpu": [ "arm64" ], @@ -20624,9 +21732,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", - "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", "cpu": [ "x64" ], @@ -20643,6 +21751,15 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/lines-and-columns": { "version": "1.1.6", "license": "MIT" @@ -20870,6 +21987,8 @@ }, "node_modules/lodash.throttle": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", "license": "MIT" }, "node_modules/log-symbols": { @@ -20934,6 +22053,8 @@ }, "node_modules/logkitty": { "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -20947,6 +22068,8 @@ }, "node_modules/logkitty/node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", "engines": { @@ -20955,6 +22078,8 @@ }, "node_modules/logkitty/node_modules/cliui": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "license": "ISC", "dependencies": { @@ -20965,6 +22090,8 @@ }, "node_modules/logkitty/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -20977,6 +22104,8 @@ }, "node_modules/logkitty/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -20988,6 +22117,8 @@ }, "node_modules/logkitty/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -21002,6 +22133,8 @@ }, "node_modules/logkitty/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -21013,6 +22146,8 @@ }, "node_modules/logkitty/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", "dependencies": { @@ -21025,12 +22160,16 @@ } }, "node_modules/logkitty/node_modules/y18n": { - "version": "4.0.1", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true, "license": "ISC" }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "license": "MIT", "dependencies": { @@ -21052,6 +22191,8 @@ }, "node_modules/logkitty/node_modules/yargs-parser": { "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "license": "ISC", "dependencies": { @@ -21091,27 +22232,21 @@ "license": "ISC" }, "node_modules/make-dir": { - "version": "3.1.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/makeerror": { "version": "1.0.12", "license": "BSD-3-Clause", @@ -21131,6 +22266,8 @@ }, "node_modules/marky": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", + "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", "license": "Apache-2.0" }, "node_modules/math-intrinsics": { @@ -21216,43 +22353,44 @@ } }, "node_modules/metro": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.84.4.tgz", + "integrity": "sha512-8ETTubqfD6ornDy2zYDvRcKnVDOXdFJsjetYDBsY4oAsb6NJkiwFR+FaMESyGppFmQUyBQA4H4sFGxzcQSGtFA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", + "@babel/code-frame": "^7.29.0", "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", - "chalk": "^4.0.0", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "accepts": "^2.0.0", "ci-info": "^2.0.0", "connect": "^3.6.5", "debug": "^4.4.0", "error-stack-parser": "^2.0.6", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.29.1", + "hermes-parser": "0.35.0", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.82.5", - "metro-cache": "0.82.5", - "metro-cache-key": "0.82.5", - "metro-config": "0.82.5", - "metro-core": "0.82.5", - "metro-file-map": "0.82.5", - "metro-resolver": "0.82.5", - "metro-runtime": "0.82.5", - "metro-source-map": "0.82.5", - "metro-symbolicate": "0.82.5", - "metro-transform-plugins": "0.82.5", - "metro-transform-worker": "0.82.5", - "mime-types": "^2.1.27", + "metro-babel-transformer": "0.84.4", + "metro-cache": "0.84.4", + "metro-cache-key": "0.84.4", + "metro-config": "0.84.4", + "metro-core": "0.84.4", + "metro-file-map": "0.84.4", + "metro-resolver": "0.84.4", + "metro-runtime": "0.84.4", + "metro-source-map": "0.84.4", + "metro-symbolicate": "0.84.4", + "metro-transform-plugins": "0.84.4", + "metro-transform-worker": "0.84.4", + "mime-types": "^3.0.1", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", "source-map": "^0.5.6", @@ -21264,225 +22402,141 @@ "metro": "src/cli.js" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-babel-transformer": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.84.4.tgz", + "integrity": "sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.29.1", + "hermes-parser": "0.35.0", + "metro-cache-key": "0.84.4", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.29.1", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz", + "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==", "license": "MIT" }, "node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.29.1", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz", + "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==", "license": "MIT", "dependencies": { - "hermes-estree": "0.29.1" + "hermes-estree": "0.35.0" } }, "node_modules/metro-cache": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.84.4.tgz", + "integrity": "sha512-gpcFQdSLUwUCk71saKoE64jLFbx2nwTfVCcPSULMNT8QYq0p1eZZE29Jvd0HtT/UlhC3ZOutLxJME5xqD2JUZg==", "license": "MIT", "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", - "metro-core": "0.82.5" + "metro-core": "0.84.4" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-cache-key": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.84.4.tgz", + "integrity": "sha512-wVO79aGrkYImpnaVS4+d5RrRBRPX31QtvKB3wKGBuiNSznduZTQHzsrJZRroFJSwnygrzdsGUtDQPuqqFjFdvw==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-cache/node_modules/agent-base": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "license": "MIT", "engines": { "node": ">= 14" } }, - "node_modules/metro-cache/node_modules/https-proxy-agent": { - "version": "7.0.6", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/metro-config": { - "version": "0.82.5", - "license": "MIT", - "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.82.5", - "metro-cache": "0.82.5", - "metro-core": "0.82.5", - "metro-runtime": "0.82.5" - }, - "engines": { - "node": ">=18.18" - } - }, - "node_modules/metro-config/node_modules/@jest/types": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/metro-config/node_modules/ansi-styles": { - "version": "5.2.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/metro-config/node_modules/argparse": { - "version": "1.0.10", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/metro-config/node_modules/cosmiconfig": { - "version": "5.2.1", - "license": "MIT", - "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/metro-config/node_modules/import-fresh": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/metro-config/node_modules/jest-validate": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/metro-config/node_modules/js-yaml": { - "version": "3.13.1", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/metro-config/node_modules/parse-json": { - "version": "4.0.0", + "node_modules/metro-cache/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/metro-config/node_modules/pretty-format": { - "version": "29.7.0", + "node_modules/metro-config": { + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.84.4.tgz", + "integrity": "sha512-PMotGDjXcXLWo2TMRH+VR99phFNgYTwqh4OoieIKK3yTJa1Jmkl+fZJxDO0jfBvNF+WESHciHvpNuBtXaF3B0Q==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.84.4", + "metro-cache": "0.84.4", + "metro-core": "0.84.4", + "metro-runtime": "0.84.4", + "yaml": "^2.6.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, - "node_modules/metro-config/node_modules/react-is": { - "version": "18.3.1", - "license": "MIT" - }, - "node_modules/metro-config/node_modules/resolve-from": { - "version": "3.0.0", - "license": "MIT", + "node_modules/metro-config/node_modules/yaml": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">=4" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, - "node_modules/metro-config/node_modules/sprintf-js": { - "version": "1.0.3", - "license": "BSD-3-Clause" - }, "node_modules/metro-core": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.84.4.tgz", + "integrity": "sha512-HONpWC5LGXZn3ffkd4Hu6AIrfE7j4Z0g0wMo/goV24WOB3lhuFZ40KgvaDiSw8iyQHloMYay5N/wPX+z8oN/PQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.82.5" + "metro-resolver": "0.84.4" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-file-map": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.84.4.tgz", + "integrity": "sha512-KSVDi/u60hKPx++NLu3MTIvyjzNoJnFAF8PQFxaj1jiSka/wjw+Ua6sNuJ0TDHQv+7AAoFQxeMgaRAe8Yic5wQ==", "license": "MIT", "dependencies": { "debug": "^4.4.0", @@ -21496,74 +22550,85 @@ "walker": "^1.0.7" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-minify-terser": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.84.4.tgz", + "integrity": "sha512-5qpbaVOMC7CPitIpuewzVeGw7E+C3ykbv2mqTjQLl85Z3annSVGlSCTcsZjqXZzjupfK4Ztj3dDc4kc44NZwtQ==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "terser": "^5.15.0" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-resolver": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.84.4.tgz", + "integrity": "sha512-1qLgbxQ5ZGhhutuPot1Yp348ofDsATL2WkrHF65TobqTT9K3P9qJXw38bomk7ncp5B7OYMfWwtyBZo1lCV792A==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-runtime": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.84.4.tgz", + "integrity": "sha512-Jibypds4g7AhzdRKY+kDoj51s5EXMwgyp5ddtlreDAsWefMdOx+agWqgm0H2XSZ/ueanHHVM89fnf5OJnlxa8Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-source-map": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.84.4.tgz", + "integrity": "sha512-jbWkPxIesVuo1IWkvezmMJld6iu8nD62GsrZiV6jP37AOdbo4OBq1FJ+qkOg8sV05wAHB//jAbziuW0SlJfW4g==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.82.5", + "metro-symbolicate": "0.84.4", "nullthrows": "^1.1.1", - "ob1": "0.82.5", + "ob1": "0.84.4", "source-map": "^0.5.6", "vlq": "^1.0.0" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-source-map/node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/metro-symbolicate": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.84.4.tgz", + "integrity": "sha512-OnfpacxUqGPZQ27t8qK9mFa7uqHIlVWeqRqkCbvMvreEBiamEeOn8krKtcwgP5M4cYDPwuSmCTopHMVthqG4zA==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.82.5", + "metro-source-map": "0.84.4", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" @@ -21572,77 +22637,140 @@ "metro-symbolicate": "src/index.js" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-symbolicate/node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/metro-transform-plugins": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.84.4.tgz", + "integrity": "sha512-kehr6HbAecqD0/a3xLXobELdPaAmRAl8bel0qagPF4vhZtux93nS8S4eq2kgKt6J2GnQpVjSoW1PXdst04mwow==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", + "@babel/generator": "^7.29.1", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", "flow-enums-runtime": "^0.0.6", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/metro-transform-worker": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.84.4.tgz", + "integrity": "sha512-W1IYMvvXTu4MxYr7d9h7CeG2vpIr3bmLLIavkPY4O1ilzDrvS8z/NEe6y+pC44Ff7raMXQgYSfdqDUwN/i39gg==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "flow-enums-runtime": "^0.0.6", - "metro": "0.82.5", - "metro-babel-transformer": "0.82.5", - "metro-cache": "0.82.5", - "metro-cache-key": "0.82.5", - "metro-minify-terser": "0.82.5", - "metro-source-map": "0.82.5", - "metro-transform-plugins": "0.82.5", + "metro": "0.84.4", + "metro-babel-transformer": "0.84.4", + "metro-cache": "0.84.4", + "metro-cache-key": "0.84.4", + "metro-minify-terser": "0.84.4", + "metro-source-map": "0.84.4", + "metro-transform-plugins": "0.84.4", "nullthrows": "^1.1.1" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" + } + }, + "node_modules/metro/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/metro/node_modules/ci-info": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "license": "MIT" }, "node_modules/metro/node_modules/hermes-estree": { - "version": "0.29.1", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz", + "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==", "license": "MIT" }, "node_modules/metro/node_modules/hermes-parser": { - "version": "0.29.1", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz", + "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==", + "license": "MIT", + "dependencies": { + "hermes-estree": "0.35.0" + } + }, + "node_modules/metro/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { - "hermes-estree": "0.29.1" + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/metro/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/metro/node_modules/source-map": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/metro/node_modules/ws": { - "version": "7.5.10", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.11.tgz", + "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==", "license": "MIT", "engines": { "node": ">=8.3.0" @@ -21767,40 +22895,14 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "license": "ISC", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/minizlib": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mixin-object": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-object/node_modules/for-in": { - "version": "0.1.8", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "license": "MIT", @@ -21989,6 +23091,12 @@ "ieee754": "^1.1.13" } }, + "node_modules/multitars": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/multitars/-/multitars-1.0.0.tgz", + "integrity": "sha512-H/J4fMLedtudftaYMOg7ajzLYgT3/rwbWVJbqr/iUgB8DQztn38ys5HOqI1CzSxx8QhXXwOOnnBvd4v3jG5+Mg==", + "license": "MIT" + }, "node_modules/mute-stream": { "version": "2.0.0", "dev": true, @@ -22015,7 +23123,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.11", + "version": "3.3.16", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", + "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", "funding": [ { "type": "github", @@ -22034,20 +23144,6 @@ "version": "2.0.0", "license": "MIT" }, - "node_modules/napi-postinstall": { - "version": "0.2.4", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "dev": true, @@ -22060,10 +23156,6 @@ "node": ">= 0.6" } }, - "node_modules/nested-error-stacks": { - "version": "2.0.1", - "license": "MIT" - }, "node_modules/no-case": { "version": "3.0.4", "dev": true, @@ -22075,6 +23167,8 @@ }, "node_modules/nocache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", "dev": true, "license": "MIT", "engines": { @@ -22147,7 +23241,9 @@ "license": "MIT" }, "node_modules/node-forge": { - "version": "1.3.1", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -22179,11 +23275,13 @@ "license": "MIT" }, "node_modules/node-stream-zip": { - "version": "1.13.4", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" }, "funding": { "type": "github", @@ -22216,6 +23314,8 @@ }, "node_modules/npm-package-arg": { "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", "license": "ISC", "dependencies": { "hosted-git-info": "^7.0.0", @@ -22253,16 +23353,20 @@ }, "node_modules/nullthrows": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "license": "MIT" }, "node_modules/ob1": { - "version": "0.82.5", + "version": "0.84.4", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.84.4.tgz", + "integrity": "sha512-eJXMpz4aQHXF/YBB9ddqZDIS+ooO91hObo9FoW/xBkr54/zCwYYCDqT/O54vNo8kOkWs5Ou/y28NgdrV0edQNA==", "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": ">=18.18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" } }, "node_modules/object-assign": { @@ -22419,7 +23523,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -22476,140 +23582,26 @@ } }, "node_modules/ora": { - "version": "3.4.0", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "license": "MIT", "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "4.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/ora/node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ora/node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/log-symbols": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/mimic-fn": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/onetime": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "5.2.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "5.5.0", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/os-browserify": { @@ -22686,6 +23678,7 @@ }, "node_modules/p-try": { "version": "2.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -22817,22 +23810,6 @@ "npm": ">5" } }, - "node_modules/patch-package/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/patch-package/node_modules/slash": { "version": "2.0.0", "dev": true, @@ -23071,6 +24048,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -23082,6 +24061,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -23094,6 +24075,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -23105,6 +24088,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -23119,6 +24104,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -23182,7 +24169,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", + "version": "8.5.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.21.tgz", + "integrity": "sha512-v4sDNP3fdNiWMfabO7OwOQdOX8TiQSztKyT1Wj0w+j7LDallJThJRBBBmzVGyYj0crMh7jlV4zepPkiNu9UwDQ==", "funding": [ { "type": "opencollective", @@ -23199,7 +24188,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -23386,48 +24375,24 @@ "node": ">=6.0.0" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pretty-format": { - "version": "30.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.0", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/@jest/schemas": { - "version": "30.0.0", - "dev": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/pretty-format/node_modules/@sinclair/typebox": { - "version": "0.34.35", - "dev": true, - "license": "MIT" - }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "dev": true, + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "license": "MIT", "engines": { "node": ">=10" @@ -23438,11 +24403,14 @@ }, "node_modules/pretty-format/node_modules/react-is": { "version": "18.3.1", - "dev": true, + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, "node_modules/proc-log": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -23598,7 +24566,9 @@ } }, "node_modules/pure-rand": { - "version": "7.0.1", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -23634,12 +24604,6 @@ "version": "1.4.4", "license": "MIT" }, - "node_modules/qrcode-terminal": { - "version": "0.11.0", - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, "node_modules/qs": { "version": "6.10.3", "dev": true, @@ -23682,6 +24646,8 @@ }, "node_modules/queue": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", "license": "MIT", "dependencies": { "inherits": "~2.0.3" @@ -23709,10 +24675,6 @@ "version": "4.0.4", "license": "MIT" }, - "node_modules/r3-hack": { - "resolved": "scripts/r3-hack", - "link": true - }, "node_modules/radix3": { "version": "1.1.0", "license": "MIT" @@ -23778,8 +24740,16 @@ "node": ">=0.10.0" } }, + "node_modules/re2js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/re2js/-/re2js-0.4.3.tgz", + "integrity": "sha512-EuNmh7jurhHEE8Ge/lBo9JuMLb3qf866Xjjfyovw3wPc7+hlqDkZq4LwhrCQMEI+ARWfrKrHozEndzlpNT0WDg==", + "license": "MIT" + }, "node_modules/react": { - "version": "19.0.0", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -23827,57 +24797,59 @@ "license": "MIT" }, "node_modules/react-native": { - "version": "0.79.2", - "license": "MIT", - "dependencies": { - "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.79.2", - "@react-native/codegen": "0.79.2", - "@react-native/community-cli-plugin": "0.79.2", - "@react-native/gradle-plugin": "0.79.2", - "@react-native/js-polyfills": "0.79.2", - "@react-native/normalize-colors": "0.79.2", - "@react-native/virtualized-lists": "0.79.2", + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.86.0.tgz", + "integrity": "sha512-17ALh/dd6AO4pgOVmOO5Axll5PbErEo3XFyLokyzW6usyi+OShIEPwUW26wLPlhVifgSOIfECCH0WN+0IqtJ1w==", + "license": "MIT", + "dependencies": { + "@react-native/assets-registry": "0.86.0", + "@react-native/codegen": "0.86.0", + "@react-native/community-cli-plugin": "0.86.0", + "@react-native/gradle-plugin": "0.86.0", + "@react-native/js-polyfills": "0.86.0", + "@react-native/normalize-colors": "0.86.0", + "@react-native/virtualized-lists": "0.86.0", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", - "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.25.1", + "babel-plugin-syntax-hermes-parser": "0.36.0", "base64-js": "^1.5.1", - "chalk": "^4.0.0", "commander": "^12.0.0", - "event-target-shim": "^5.0.1", "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", + "hermes-compiler": "250829098.0.14", "invariant": "^2.2.4", - "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.82.0", - "metro-source-map": "^0.82.0", + "metro-runtime": "^0.84.3", + "metro-source-map": "^0.84.3", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", "promise": "^8.3.0", - "react-devtools-core": "^6.1.1", + "react-devtools-core": "^6.1.5", "react-refresh": "^0.14.0", "regenerator-runtime": "^0.13.2", - "scheduler": "0.25.0", + "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", + "ws": "^7.5.10", "yargs": "^17.6.2" }, "bin": { "react-native": "cli.js" }, "engines": { - "node": ">=18" + "node": "^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0" }, "peerDependencies": { - "@types/react": "^19.0.0", - "react": "^19.0.0" + "@react-native/jest-preset": "0.86.0", + "@types/react": "^19.1.1", + "react": "^19.2.3" }, "peerDependenciesMeta": { + "@react-native/jest-preset": { + "optional": true + }, "@types/react": { "optional": true } @@ -23901,7 +24873,9 @@ } }, "node_modules/react-native-bootsplash": { - "version": "6.3.8", + "version": "6.3.12", + "resolved": "https://registry.npmjs.org/react-native-bootsplash/-/react-native-bootsplash-6.3.12.tgz", + "integrity": "sha512-o+3rj6fNJGMW2tcWIyB3P1Mps4O4yU3+qcHeLmd7FFzABVzez0To7bpeQ7rTApdb3bIg8s61R8PI7+fwkakGBQ==", "license": "MIT", "dependencies": { "@expo/config-plugins": "^9.0.0 || ^10.0.0", @@ -23914,7 +24888,7 @@ "node-html-parser": "^7.0.1", "picocolors": "^1.1.1", "prettier": "^3.5.3", - "react-native-is-edge-to-edge": "^1.1.7", + "react-native-is-edge-to-edge": "^1.2.1", "sharp": "^0.32.6", "ts-dedent": "^2.2.0", "xml-formatter": "^3.6.5" @@ -24003,16 +24977,10 @@ "react-native": "*" } }, - "node_modules/react-native-edge-to-edge": { - "version": "1.6.0", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, "node_modules/react-native-email-link": { "version": "1.14.5", + "resolved": "https://registry.npmjs.org/react-native-email-link/-/react-native-email-link-1.14.5.tgz", + "integrity": "sha512-TNi9OeGcJlw6FXl1dWAKEBGJEgKPBfsiB3v8GaHqqCtzmWnKE+8y1Wfhaaloh37OJb2vqp1cwDpW5m6PiTXazA==", "license": "MIT", "peerDependencies": { "react": ">=16.8.0", @@ -24061,10 +25029,13 @@ } }, "node_modules/react-native-gesture-handler": { - "version": "2.28.0", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.32.0.tgz", + "integrity": "sha512-uYIMOKlKENORq2SABE+jIjbPU+h5I/sQKcq2v16zRq848nwEp1fWRVwML4QWqijc8UcXJC25o54S8GQd4Mf2OA==", "license": "MIT", "dependencies": { "@egjs/hammerjs": "^2.0.17", + "@types/react-test-renderer": "^19.1.0", "hoist-non-react-statics": "^3.3.0", "invariant": "^2.2.4" }, @@ -24110,10 +25081,18 @@ "license": "MIT" }, "node_modules/react-native-haptic-feedback": { - "version": "1.14.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-native-haptic-feedback/-/react-native-haptic-feedback-3.0.0.tgz", + "integrity": "sha512-yxBQFHhXU8S0xupGtzDRToGw5yMWezUdLzxtlx2Oi9YpjPwprWZWCw8foPt0S2t84B0ZikzZYyOHiMSXIelUxg==", "license": "MIT", "peerDependencies": { - "react-native": ">=0.60.0" + "react": ">=18.0.0", + "react-native": ">=0.71.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } } }, "node_modules/react-native-image-colors": { @@ -24167,7 +25146,9 @@ } }, "node_modules/react-native-keyboard-controller": { - "version": "1.19.0", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.22.2.tgz", + "integrity": "sha512-O5NfkDCzNFJPkcyCNKdaRV9ouEeUNml/x5PMpKt3m5zkER0HM/qPCgg6ajpFieZSOUhZRrdUWd+966Abs2oERw==", "license": "MIT", "dependencies": { "react-native-is-edge-to-edge": "^1.2.1" @@ -24178,14 +25159,6 @@ "react-native-reanimated": ">=3.0.0" } }, - "node_modules/react-native-linear-gradient": { - "version": "2.8.3", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, "node_modules/react-native-localize": { "version": "3.4.2", "license": "MIT", @@ -24223,7 +25196,9 @@ "license": "MIT" }, "node_modules/react-native-performance": { - "version": "5.1.4", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/react-native-performance/-/react-native-performance-6.0.0.tgz", + "integrity": "sha512-Sca75O8jhqXAnNbqvINnrw248Kv9cIwoGxToD8u2uX+BrkAxxXS+YhClEV5L3JdiOpdNCO1MJ5R9bgs2VkNpFg==", "license": "MIT", "peerDependencies": { "react-native": "*" @@ -24256,17 +25231,28 @@ } }, "node_modules/react-native-reanimated": { - "version": "4.1.3", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.5.3.tgz", + "integrity": "sha512-+owIckpD4sA13XKHaLrr8V1RP4paqoxKvz/jy2wl/ULjMsfcRlfIJdKJxR1kcQr4McBZ6hAoPo01NyLnmy2ycQ==", "license": "MIT", "dependencies": { - "react-native-is-edge-to-edge": "^1.2.1", - "semver": "7.7.2" + "react-native-is-edge-to-edge": "^1.3.1", + "semver": "^7.7.3" }, "peerDependencies": { - "@babel/core": "^7.0.0-0", "react": "*", - "react-native": "*", - "react-native-worklets": ">=0.5.0" + "react-native": "0.83 - 0.86", + "react-native-worklets": "0.10.x - 0.11.x" + } + }, + "node_modules/react-native-reanimated/node_modules/react-native-is-edge-to-edge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.3.1.tgz", + "integrity": "sha512-NIXU/iT5+ORyCc7p0z2nnlkouYKX425vuU1OEm6bMMtWWR9yvb+Xg5AZmImTKoF9abxCPqrKC3rOZsKzUYgYZA==", + "license": "MIT", + "peerDependencies": { + "react": "*", + "react-native": "*" } }, "node_modules/react-native-render-html": { @@ -24306,7 +25292,9 @@ "license": "ISC" }, "node_modules/react-native-safe-area-context": { - "version": "5.6.1", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.7.0.tgz", + "integrity": "sha512-/9/MtQz8ODphjsLdZ+GZAIcC/RtoqW9EeShf7Uvnfgm/pzYrJ75y3PV/J1wuAV1T5Dye5ygq4EAW20RoBq0ABQ==", "license": "MIT", "peerDependencies": { "react": "*", @@ -24314,16 +25302,17 @@ } }, "node_modules/react-native-screens": { - "version": "4.16.0", + "version": "4.25.2", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.25.2.tgz", + "integrity": "sha512-1Nj1fusFd+rIMKU/qC9yGKVG+3ofh11d3OdBQKL1iVvQfKvcB8vhvTGQf2TkfxW3bamxN+hCZIXmNuU0mRkyDg==", "license": "MIT", "dependencies": { "react-freeze": "^1.0.0", - "react-native-is-edge-to-edge": "^1.2.1", "warn-once": "^0.1.0" }, "peerDependencies": { "react": "*", - "react-native": "*" + "react-native": ">=0.82.0" } }, "node_modules/react-native-securerandom": { @@ -24344,7 +25333,9 @@ } }, "node_modules/react-native-sound": { - "version": "0.12.0", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/react-native-sound/-/react-native-sound-0.13.0.tgz", + "integrity": "sha512-SnREzaV0fmpYNuDV1Y8M7FutmaYei0pKBgpldULKKJMkoA3DBv5ppyRxY+oxRQ7HwEpt6LsonrKgM+13GH/tCw==", "license": "MIT", "peerDependencies": { "react": "*", @@ -24358,7 +25349,9 @@ "license": "MIT" }, "node_modules/react-native-svg": { - "version": "15.14.0", + "version": "15.15.4", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.4.tgz", + "integrity": "sha512-boT/vIRgj6zZKBpfTPJJiYWMbZE9duBMOwPK6kCSTgxsS947IFMOq9OgIFkpWZTB7t229H24pDRkh3W9ZK/J1A==", "license": "MIT", "dependencies": { "css-select": "^5.1.0", @@ -24442,7 +25435,9 @@ } }, "node_modules/react-native-vision-camera": { - "version": "4.7.2", + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/react-native-vision-camera/-/react-native-vision-camera-4.7.3.tgz", + "integrity": "sha512-g1/neOyjSqn1kaAa2FxI/qp5KzNvPcF0bnQw6NntfbxH6tm0+8WFZszlgb5OV+iYlB6lFUztCbDtyz5IpL47OA==", "license": "MIT", "peerDependencies": { "@shopify/react-native-skia": "*", @@ -24464,7 +25459,9 @@ } }, "node_modules/react-native-webview": { - "version": "13.15.0", + "version": "13.16.1", + "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.16.1.tgz", + "integrity": "sha512-If0eHhoEdOYDcHsX+xBFwHMbWBGK1BvGDQDQdVkwtSIXiq1uiqjkpWVP2uQ1as94J0CzvFE9PUNDuhiX0Z6ubw==", "license": "MIT", "dependencies": { "escape-string-regexp": "^4.0.0", @@ -24479,231 +25476,84 @@ "version": "2.0.6", "license": "MIT", "dependencies": { - "moment": "^2.22.0" - } - }, - "node_modules/react-native-worklets": { - "version": "0.6.1", - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-arrow-functions": "^7.0.0-0", - "@babel/plugin-transform-class-properties": "^7.0.0-0", - "@babel/plugin-transform-classes": "^7.0.0-0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", - "@babel/plugin-transform-optional-chaining": "^7.0.0-0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", - "@babel/plugin-transform-template-literals": "^7.0.0-0", - "@babel/plugin-transform-unicode-regex": "^7.0.0-0", - "@babel/preset-typescript": "^7.16.7", - "convert-source-map": "^2.0.0", - "semver": "7.7.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0", - "react": "*", - "react-native": "*" - } - }, - "node_modules/react-native-zano": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/react-native-zano/-/react-native-zano-0.5.1.tgz", - "integrity": "sha512-4kkr9fMJK4Q7BAQpmDe4aDRXfM9gEqQg3JQgp2LQf76i4Gzg+CTAXKEcgk1yU9Ww5gbaIMfk45dTzL6jU1Li6w==", - "license": "BSD-3-Clause", - "dependencies": { - "cleaners": "^0.3.17", - "rfc4648": "^1.5.4", - "tweetnacl": "^1.0.3" - } - }, - "node_modules/react-native-zcash": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/react-native-zcash/-/react-native-zcash-0.13.4.tgz", - "integrity": "sha512-WWMzbmIPme81ziEeVMGBgNcMpa7hy9Bfy84jNKCr13PUFcbP4WkeGVV+9AQkxRhZuXgAoNHqN0Fn6U6uF8FBQA==", - "license": "MIT", - "dependencies": { - "biggystring": "^4.2.3", - "rfc4648": "^1.3.0" - }, - "peerDependencies": { - "react-native": ">=0.47.0 <1.0.0" - } - }, - "node_modules/react-native/node_modules/@jest/environment": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/react-native/node_modules/@jest/fake-timers": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/react-native/node_modules/@jest/types": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/react-native/node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/react-native/node_modules/ansi-styles": { - "version": "5.2.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-native/node_modules/ci-info": { - "version": "3.9.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/react-native/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/react-native/node_modules/jest-environment-node": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/react-native/node_modules/jest-message-util": { - "version": "29.7.0", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "moment": "^2.22.0" } }, - "node_modules/react-native/node_modules/jest-mock": { - "version": "29.7.0", + "node_modules/react-native-worklets": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.10.0.tgz", + "integrity": "sha512-JhE6IxDf6iabC0qu3+TAKA4v9RlluXmoIngPQX7/QUByf75lfrsHZ6/dQhyjEWnp1EEQiwzz8Cpew140ZcewDw==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/preset-typescript": "^7.28.5", + "@babel/types": "^7.27.1", + "convert-source-map": "^2.0.0", + "semver": "^7.7.4" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "@babel/core": "*", + "@react-native/metro-config": "*", + "react": "*", + "react-native": "0.83 - 0.86" } }, - "node_modules/react-native/node_modules/jest-util": { - "version": "29.7.0", - "license": "MIT", + "node_modules/react-native-zano": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/react-native-zano/-/react-native-zano-0.5.1.tgz", + "integrity": "sha512-4kkr9fMJK4Q7BAQpmDe4aDRXfM9gEqQg3JQgp2LQf76i4Gzg+CTAXKEcgk1yU9Ww5gbaIMfk45dTzL6jU1Li6w==", + "license": "BSD-3-Clause", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "cleaners": "^0.3.17", + "rfc4648": "^1.5.4", + "tweetnacl": "^1.0.3" } }, - "node_modules/react-native/node_modules/pretty-format": { - "version": "29.7.0", + "node_modules/react-native-zcash": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/react-native-zcash/-/react-native-zcash-0.13.4.tgz", + "integrity": "sha512-WWMzbmIPme81ziEeVMGBgNcMpa7hy9Bfy84jNKCr13PUFcbP4WkeGVV+9AQkxRhZuXgAoNHqN0Fn6U6uF8FBQA==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "biggystring": "^4.2.3", + "rfc4648": "^1.3.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "react-native": ">=0.47.0 <1.0.0" } }, - "node_modules/react-native/node_modules/react-is": { - "version": "18.3.1", - "license": "MIT" - }, "node_modules/react-native/node_modules/scheduler": { - "version": "0.25.0", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/react-native/node_modules/ws": { - "version": "6.2.3", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.11.tgz", + "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==", "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/react-redux": { @@ -24755,24 +25605,30 @@ } }, "node_modules/react-test-renderer": { - "version": "19.0.0", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.2.3.tgz", + "integrity": "sha512-TMR1LnSFiWZMJkCgNf5ATSvAheTT2NvKIwiVwdBPHxjBI7n/JbWd4gaZ16DVd9foAXdvDz+sB5yxZTwMjPRxpw==", "dev": true, "license": "MIT", "dependencies": { - "react-is": "^19.0.0", - "scheduler": "^0.25.0" + "react-is": "^19.2.3", + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.0.0" + "react": "^19.2.3" } }, "node_modules/react-test-renderer/node_modules/react-is": { - "version": "19.1.1", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz", + "integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==", "dev": true, "license": "MIT" }, "node_modules/react-test-renderer/node_modules/scheduler": { - "version": "0.25.0", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "dev": true, "license": "MIT" }, @@ -25003,27 +25859,11 @@ }, "node_modules/require-main-filename": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true, "license": "ISC" }, - "node_modules/requireg": { - "version": "0.2.2", - "dependencies": { - "nested-error-stacks": "~2.0.1", - "rc": "~1.2.7", - "resolve": "~1.7.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/requireg/node_modules/resolve": { - "version": "1.7.1", - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.5" - } - }, "node_modules/requires-port": { "version": "1.0.0", "license": "MIT" @@ -25048,6 +25888,8 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", "dependencies": { @@ -25073,11 +25915,16 @@ } }, "node_modules/resolve-workspace-root": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", + "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", "license": "MIT" }, "node_modules/resolve.exports": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -25108,6 +25955,9 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -25121,6 +25971,9 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -25463,7 +26316,9 @@ "license": "BSD-3-Clause" }, "node_modules/semver": { - "version": "7.7.2", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -25515,19 +26370,23 @@ }, "node_modules/serialize-error": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/serve-static": { - "version": "1.16.2", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -25535,6 +26394,8 @@ }, "node_modules/serve-static/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { "ms": "2.0.0" @@ -25542,39 +26403,67 @@ }, "node_modules/serve-static/node_modules/debug/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { "node": ">= 0.8" } }, + "node_modules/serve-static/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/serve-static/node_modules/send": { - "version": "0.19.0", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -25586,6 +26475,8 @@ }, "node_modules/set-blocking": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true, "license": "ISC" }, @@ -25671,25 +26562,6 @@ "buffer": "6.0.3" } }, - "node_modules/shallow-clone": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shallow-clone/node_modules/kind-of": { - "version": "5.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sharp": { "version": "0.32.6", "hasInstallScript": true, @@ -25984,6 +26856,8 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -26014,6 +26888,7 @@ }, "node_modules/stack-utils": { "version": "2.0.6", + "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" @@ -26024,13 +26899,16 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/stackframe": { - "version": "1.2.0", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "license": "MIT" }, "node_modules/stacktrace-parser": { @@ -26056,6 +26934,7 @@ }, "node_modules/statuses": { "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -26187,6 +27066,8 @@ }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", "dependencies": { @@ -26428,6 +27309,8 @@ }, "node_modules/structured-headers": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==", "license": "MIT" }, "node_modules/sucrase": { @@ -26457,14 +27340,6 @@ "node": ">= 6" } }, - "node_modules/superstruct": { - "version": "0.6.2", - "license": "MIT", - "dependencies": { - "clone-deep": "^2.0.1", - "kind-of": "^6.0.1" - } - }, "node_modules/supports-color": { "version": "7.2.0", "license": "MIT", @@ -26477,6 +27352,8 @@ }, "node_modules/supports-hyperlinks": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0", @@ -26615,21 +27492,6 @@ "node": ">=6" } }, - "node_modules/tar": { - "version": "7.4.3", - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/tar-fs": { "version": "3.0.9", "license": "MIT", @@ -26651,26 +27513,6 @@ "streamx": "^2.15.0" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "3.0.1", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/temp-dir": { "version": "2.0.0", "license": "MIT", @@ -26680,6 +27522,8 @@ }, "node_modules/terminal-link": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", @@ -26693,11 +27537,13 @@ } }, "node_modules/terser": { - "version": "5.18.2", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", + "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -26710,6 +27556,8 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, "node_modules/teslabot": { @@ -26718,6 +27566,7 @@ }, "node_modules/test-exclude": { "version": "6.0.0", + "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -26730,6 +27579,7 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -26798,6 +27648,8 @@ }, "node_modules/throat": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "license": "MIT" }, "node_modules/through": { @@ -26828,6 +27680,34 @@ "version": "1.6.0", "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tmp": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", @@ -26923,6 +27803,12 @@ "node": ">=15" } }, + "node_modules/toqr": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/toqr/-/toqr-0.1.1.tgz", + "integrity": "sha512-FWAPzCIHZHnrE/5/w9MPk0kK25hSQSH2IKhYh9PyjS3SG/+IEMvlwIHbhz+oF7xl54I+ueZlVnMjyzdSwLmAwA==", + "license": "MIT" + }, "node_modules/tough-cookie": { "version": "4.1.4", "dev": true, @@ -27153,6 +28039,9 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -27342,7 +28231,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.0.4", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -27350,7 +28241,7 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/typical": { @@ -27396,16 +28287,6 @@ "version": "0.1.3", "license": "MIT" }, - "node_modules/undici": { - "version": "5.28.4", - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/undici-types": { "version": "6.20.0", "license": "MIT" @@ -27492,39 +28373,6 @@ "node": ">= 0.8" } }, - "node_modules/unrs-resolver": { - "version": "1.9.0", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.2.2" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.9.0", - "@unrs/resolver-binding-android-arm64": "1.9.0", - "@unrs/resolver-binding-darwin-arm64": "1.9.0", - "@unrs/resolver-binding-darwin-x64": "1.9.0", - "@unrs/resolver-binding-freebsd-x64": "1.9.0", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.0", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.9.0", - "@unrs/resolver-binding-linux-arm64-gnu": "1.9.0", - "@unrs/resolver-binding-linux-arm64-musl": "1.9.0", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.9.0", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.9.0", - "@unrs/resolver-binding-linux-riscv64-musl": "1.9.0", - "@unrs/resolver-binding-linux-s390x-gnu": "1.9.0", - "@unrs/resolver-binding-linux-x64-gnu": "1.9.0", - "@unrs/resolver-binding-linux-x64-musl": "1.9.0", - "@unrs/resolver-binding-wasm32-wasi": "1.9.0", - "@unrs/resolver-binding-win32-arm64-msvc": "1.9.0", - "@unrs/resolver-binding-win32-ia32-msvc": "1.9.0", - "@unrs/resolver-binding-win32-x64-msvc": "1.9.0" - } - }, "node_modules/unstorage": { "version": "1.10.1", "license": "MIT", @@ -27769,31 +28617,20 @@ } }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/v8-to-istanbul/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/valibot": { "version": "0.36.0", "license": "MIT" @@ -27814,6 +28651,8 @@ }, "node_modules/validate-npm-package-name": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -27846,6 +28685,8 @@ }, "node_modules/vlq": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "license": "MIT" }, "node_modules/vm-browserify": { @@ -27878,12 +28719,20 @@ "node": ">= 8" } }, + "node_modules/web-vitals": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", + "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==", + "license": "Apache-2.0" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "license": "BSD-2-Clause" }, "node_modules/websocket-driver": { - "version": "0.7.4", + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.5.tgz", + "integrity": "sha512-ZL2+3c7kMBdIRCMz6l8jQMHyGVxj+UL+xVk74Ombiciboca8rHa15L86B19E5oh1pL9Ii/uj54gtsIrZGMo6zA==", "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", @@ -27896,6 +28745,8 @@ }, "node_modules/websocket-extensions": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "license": "Apache-2.0", "engines": { "node": ">=0.8.0" @@ -27913,6 +28764,12 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/whatwg-url-minimum": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/whatwg-url-minimum/-/whatwg-url-minimum-0.1.2.tgz", + "integrity": "sha512-XPEm0XFQWNVG292lII1PrRRJl3sItrs7CettZ4ncYxuDVpLyy+NwlGyut2hXI0JswcJUxeCH+CyOJK0ZzAXD6A==", + "license": "MIT" + }, "node_modules/whatwg-url-without-unicode": { "version": "8.0.0-3", "license": "MIT", @@ -28026,7 +28883,9 @@ } }, "node_modules/which-module": { - "version": "2.0.0", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true, "license": "ISC" }, @@ -28089,10 +28948,6 @@ "hashes-grs": "1.2.0" } }, - "node_modules/wonka": { - "version": "6.3.4", - "license": "MIT" - }, "node_modules/word-wrap": { "version": "1.2.5", "dev": true, @@ -28149,26 +29004,17 @@ "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "5.0.1", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "signal-exit": "^3.0.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/ws": { @@ -28192,8 +29038,6 @@ }, "node_modules/xcode": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", - "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", "license": "Apache-2.0", "dependencies": { "simple-plist": "^1.1.0", @@ -28388,7 +29232,9 @@ } }, "node_modules/zod": { - "version": "3.23.8", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -28400,44 +29246,10 @@ }, "scripts/r3-hack": { "version": "0.0.1", + "extraneous": true, "dependencies": { "react-native-reanimated": "^3.19.1" } - }, - "scripts/r3-hack/node_modules/react-native-is-edge-to-edge": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.1.7.tgz", - "integrity": "sha512-EH6i7E8epJGIcu7KpfXYXiV2JFIYITtq+rVS8uEb+92naMRBdxhTuS8Wn2Q7j9sqyO0B+Xbaaf9VdipIAmGW4w==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "scripts/r3-hack/node_modules/react-native-reanimated": { - "version": "3.19.5", - "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.19.5.tgz", - "integrity": "sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==", - "license": "MIT", - "dependencies": { - "@babel/plugin-transform-arrow-functions": "^7.0.0-0", - "@babel/plugin-transform-class-properties": "^7.0.0-0", - "@babel/plugin-transform-classes": "^7.0.0-0", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", - "@babel/plugin-transform-optional-chaining": "^7.0.0-0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", - "@babel/plugin-transform-template-literals": "^7.0.0-0", - "@babel/plugin-transform-unicode-regex": "^7.0.0-0", - "@babel/preset-typescript": "^7.16.7", - "convert-source-map": "^2.0.0", - "invariant": "^2.2.4", - "react-native-is-edge-to-edge": "1.1.7" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0", - "react": "*", - "react-native": "*" - } } } } diff --git a/package.json b/package.json index d607d2c2f3b..66b743c0c8a 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,11 @@ "*.{js,jsx,ts,tsx}": "eslint" }, "overrides": { - "bip39": "3.0.4" + "yaob": "^0.4.0", + "bip39": "3.0.4", + "react-native-airship": "^0.3.0", + "react-native-haptic-feedback": "^3.0.0", + "react-native-patina": "^0.2.0" }, "dependencies": { "@brigad/react-native-adservices": "^0.1.3", @@ -74,19 +78,19 @@ "@noble/curves": "^1.9.7", "@noble/hashes": "^1.8.0", "@paraswap/sdk": "^6.12.0", - "@react-native-async-storage/async-storage": "^1.19.4", + "@react-native-async-storage/async-storage": "2.2.0", "@react-native-clipboard/clipboard": "^1.16.3", - "@react-native-community/datetimepicker": "^8.4.2", - "@react-native-community/netinfo": "^11.4.1", - "@react-native-firebase/app": "^20.5.0", - "@react-native-firebase/messaging": "^20.5.0", - "@react-native-picker/picker": "^2.11.2", + "@react-native-community/datetimepicker": "9.1.0", + "@react-native-community/netinfo": "12.0.1", + "@react-native-firebase/app": "^25.1.0", + "@react-native-firebase/messaging": "^25.1.0", + "@react-native-picker/picker": "2.11.4", "@react-navigation/bottom-tabs": "^6.5.4", "@react-navigation/drawer": "^6.7.2", "@react-navigation/elements": "^1.3.14", "@react-navigation/native": "^6.1.3", "@react-navigation/stack": "^6.3.12", - "@sentry/react-native": "^7.12.0", + "@sentry/react-native": "~7.11.0", "@tanstack/react-query": "^5.84.2", "@types/jsrsasign": "^10.5.13", "@unstoppabledomains/resolution": "^9.3.0", @@ -103,7 +107,6 @@ "date-fns": "^2.22.1", "dateformat": "^3.0.3", "deepmerge": "^4.3.1", - "deprecated-react-native-prop-types": "^5.0.0", "detect-bundler": "^1.1.0", "disklet": "^0.6.0", "edge-core-js": "^2.48.1", @@ -113,7 +116,9 @@ "edge-info-server": "^3.12.0", "edge-login-ui-rn": "^3.37.2", "ethers": "^5.7.2", - "expo": "^53.0.0", + "expo": "^57.0.7", + "expo-blur": "~57.0.2", + "expo-linear-gradient": "~57.0.1", "expo-quick-actions": "^5.0.0", "jsrsasign": "^11.1.0", "marked": "^15.0.9", @@ -122,12 +127,11 @@ "posthog-react-native": "^2.8.1", "prompts": "^2.4.2", "qrcode-generator": "^1.4.4", - "r3-hack": "./scripts/r3-hack", - "react": "19.0.0", - "react-native": "0.79.2", + "react": "19.2.3", + "react-native": "0.86.0", "react-native-airship": "^0.3.0", "react-native-battery-optimization-check": "^1.0.8", - "react-native-bootsplash": "^6.3.8", + "react-native-bootsplash": "^6.3.10", "react-native-confetti-cannon": "^1.5.2", "react-native-contacts": "^8.0.10", "react-native-custom-tabs": "https://github.com/adminphoeniixx/react-native-custom-tabs#develop", @@ -137,40 +141,38 @@ "react-native-fast-shadow": "^0.1.0", "react-native-file-access": "^3.1.1", "react-native-fs": "^2.19.0", - "react-native-gesture-handler": "^2.28.0", + "react-native-gesture-handler": "~2.32.0", "react-native-get-random-values": "^1.11.0", "react-native-gifted-charts": "1.4.63", "react-native-gradle-plugin": "^0.71.19", - "react-native-haptic-feedback": "^1.14.0", + "react-native-haptic-feedback": "^3.0.0", "react-native-image-colors": "^2.4.0", "react-native-image-picker": "^8.2.1", "react-native-in-app-review": "^4.3.5", - "react-native-keyboard-aware-scroll-view": "^0.9.5", - "react-native-keyboard-controller": "^1.19.0", - "react-native-linear-gradient": "^2.8.3", + "react-native-keyboard-controller": "1.22.2", "react-native-localize": "^3.4.2", "react-native-mail": "^6.1.1", "react-native-monero": "0.5.0", "react-native-patina": "^0.2.0", - "react-native-performance": "^5.1.4", + "react-native-performance": "^6.0.0", "react-native-permissions": "^4.1.5", "react-native-piratechain": "0.6.3", - "react-native-reanimated": "^4.1.3", + "react-native-reanimated": "4.5.3", "react-native-render-html": "^6.3.4", "react-native-reorderable-list": "^0.5.0", "react-native-safari-view": "^2.1.0", - "react-native-safe-area-context": "^5.6.1", - "react-native-screens": "^4.16.0", + "react-native-safe-area-context": "~5.7.0", + "react-native-screens": "4.25.2", "react-native-securerandom": "^1.0.1", "react-native-share": "^12.0.11", - "react-native-sound": "^0.12.0", + "react-native-sound": "^0.13.0", "react-native-store-review": "https://github.com/EdgeApp/react-native-store-review#b0a3379829056e7328b550d5b135271f7a777083", - "react-native-svg": "^15.12.1", + "react-native-svg": "15.15.4", "react-native-vector-icons": "^10.1.0", - "react-native-vision-camera": "^4.7.2", - "react-native-webview": "^13.15.0", + "react-native-vision-camera": "^4.7.3", + "react-native-webview": "13.16.1", "react-native-wheel-picker-android": "^2.0.6", - "react-native-worklets": "^0.6.1", + "react-native-worklets": "0.10.0", "react-native-zano": "^0.5.1", "react-native-zcash": "0.13.4", "react-redux": "^8.1.1", @@ -190,17 +192,18 @@ "zcashname-sdk": "^0.7.2" }, "devDependencies": { - "@babel/core": "^7.25.2", + "@babel/core": "^7.29.0", "@babel/plugin-transform-export-namespace-from": "^7.23.3", "@babel/preset-env": "^7.25.3", "@babel/preset-typescript": "^7.18.6", "@babel/runtime": "^7.25.0", - "@react-native-community/cli": "18.0.0", - "@react-native-community/cli-platform-android": "18.0.0", - "@react-native-community/cli-platform-ios": "18.0.0", - "@react-native/babel-preset": "0.79.2", - "@react-native/metro-config": "0.79.2", - "@react-native/typescript-config": "0.79.2", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.86.0", + "@react-native/jest-preset": "0.86.0", + "@react-native/metro-config": "0.86.0", + "@react-native/typescript-config": "0.86.0", "@rollup/plugin-babel": "^6.0.3", "@stakekit/api-hooks": "^0.0.93", "@testing-library/react-native": "^13.2.0", @@ -215,8 +218,7 @@ "@types/lodash": "^4.14.149", "@types/node-fetch": "^2.6.2", "@types/prompts": "^2.0.14", - "@types/react": "^19.0.0", - "@types/react-native": "^0.71.1", + "@types/react": "^19.2.0", "@types/react-native-custom-tabs": "^0.1.2", "@types/react-native-safari-view": "^2.0.5", "@types/react-native-snap-carousel": "^3.8.9", @@ -239,7 +241,7 @@ "fs-extra": "^10.1.0", "https-browserify": "^1.0.0", "husky": "^7.0.0", - "jest": "^30.0.0", + "jest": "~29.7.0", "jetifier": "^1.6.5", "lint-staged": "^10.5.3", "msw": "^2.8.4", @@ -251,7 +253,7 @@ "prettier": "2.8.8", "process": "^0.11.10", "react-native-svg-transformer": "^1.5.1", - "react-test-renderer": "19.0.0", + "react-test-renderer": "19.2.3", "readable-stream": "^3.6.2", "rollup": "^3.20.6", "rollup-plugin-node-resolve": "4.0.0", @@ -260,7 +262,7 @@ "string_decoder": "^1.3.0", "sucrase": "^3.35.0", "typechain": "^8.3.2", - "typescript": "5.0.4", + "typescript": "~5.8.3", "updot": "^1.2.0", "vm-browserify": "^1.1.2", "xcode": "^3.0.1" diff --git a/patches/@react-navigation+drawer+6.7.2.patch b/patches/@react-navigation+drawer+6.7.2.patch index 663d5904502..c4a2831a8b9 100644 --- a/patches/@react-navigation+drawer+6.7.2.patch +++ b/patches/@react-navigation+drawer+6.7.2.patch @@ -13,7 +13,7 @@ index 94770c4..9e091d3 100644 // Reanimated v3 dropped legacy v1 syntax const legacyImplemenationNotAvailable = diff --git a/node_modules/@react-navigation/drawer/src/views/modern/Drawer.tsx b/node_modules/@react-navigation/drawer/src/views/modern/Drawer.tsx -index 57af20c..77aca6a 100644 +index 57af20c..e5d3d9a 100644 --- a/node_modules/@react-navigation/drawer/src/views/modern/Drawer.tsx +++ b/node_modules/@react-navigation/drawer/src/views/modern/Drawer.tsx @@ -11,20 +11,15 @@ import { @@ -146,7 +146,15 @@ index 57af20c..77aca6a 100644 > {/* Immediate child of gesture handler needs to be an Animated.View */} + toggleDrawer({ open: false, isUserInitiated: true }) + } +@@ -400,7 +379,7 @@ export default function Drawer({ {renderDrawerContent()} @@ -155,3 +163,104 @@ index 57af20c..77aca6a 100644 ); } +diff --git a/node_modules/@react-navigation/drawer/src/views/modern/Overlay.tsx b/node_modules/@react-navigation/drawer/src/views/modern/Overlay.tsx +index a77a7fb..1a26cec 100644 +--- a/node_modules/@react-navigation/drawer/src/views/modern/Overlay.tsx ++++ b/node_modules/@react-navigation/drawer/src/views/modern/Overlay.tsx +@@ -1,5 +1,5 @@ + import * as React from 'react'; +-import { Platform, Pressable, StyleSheet } from 'react-native'; ++import { Platform, Pressable, StyleSheet, View } from 'react-native'; + import Animated, { + useAnimatedProps, + useAnimatedStyle, +@@ -7,8 +7,19 @@ import Animated, { + + const PROGRESS_EPSILON = 0.05; + ++// PATCHED (Edge): on Android below 12 (API 31) under the new architecture, ++// reanimated style/prop updates driven by shared values never reach these ++// views: the overlay never painted its dimming scrim and never captured ++// touches, so taps fell through to the scene behind the open drawer and the ++// drawer could not be closed by tapping outside. On those devices, render a ++// plain View driven by the discrete `open` prop instead. Capable devices ++// keep the original animated overlay unchanged. ++const useLegacyOverlay = ++ Platform.OS === 'android' && Number(Platform.Version) < 31; ++ + type Props = React.ComponentProps & { + progress: Animated.SharedValue; ++ open?: boolean; + onPress: () => void; + accessibilityLabel?: string; + }; +@@ -16,6 +27,7 @@ type Props = React.ComponentProps & { + const Overlay = React.forwardRef(function Overlay( + { + progress, ++ open, + onPress, + style, + accessibilityLabel = 'Close drawer', +@@ -42,6 +54,47 @@ const Overlay = React.forwardRef(function Overlay( + } as const; + }); + ++ const pressable = ( ++ ++ ); ++ ++ if (useLegacyOverlay) { ++ const active = open === true; ++ ++ return ( ++ )} ++ ref={ref as React.Ref} ++ pointerEvents={active ? 'auto' : 'none'} ++ accessibilityElementsHidden={!active} ++ importantForAccessibility={active ? 'auto' : 'no-hide-descendants'} ++ style={[ ++ // Size explicitly: on these devices an absolute view sized only by ++ // insets (top/left/right/bottom: 0) measures 0x0 under Fabric, so ++ // it neither paints nor receives touches. ++ { ++ position: 'absolute', ++ top: 0, ++ left: 0, ++ width: '100%', ++ height: '100%', ++ backgroundColor: 'rgba(0, 0, 0, 0.5)', ++ }, ++ overlayStyle, ++ { opacity: active ? 1 : 0, zIndex: active ? 0 : -1 }, ++ style, ++ ]} ++ > ++ {pressable} ++ ++ ); ++ } ++ + return ( + +- ++ {pressable} + + ); + }); diff --git a/patches/edge-login-ui-rn+3.37.2.patch b/patches/edge-login-ui-rn+3.37.2.patch new file mode 100644 index 00000000000..ff0c8d65500 --- /dev/null +++ b/patches/edge-login-ui-rn+3.37.2.patch @@ -0,0 +1,752 @@ +diff --git a/node_modules/edge-login-ui-rn/lib/components/buttons/EdgeButton.js b/node_modules/edge-login-ui-rn/lib/components/buttons/EdgeButton.js +index 11c6f1e..7cba2e9 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/buttons/EdgeButton.js ++++ b/node_modules/edge-login-ui-rn/lib/components/buttons/EdgeButton.js +@@ -2,9 +2,9 @@ + * IMPORTANT: Changes in this file MUST be synced between edge-react-gui and + * edge-login-ui-rn! + */ ++import { LinearGradient } from 'expo-linear-gradient'; + import * as React from 'react'; + import { ActivityIndicator, Platform, StyleSheet, View } from 'react-native'; +-import LinearGradient from 'react-native-linear-gradient'; + import { cacheStyles } from 'react-native-patina'; + import { usePendingPress } from '../../hooks/usePendingPress'; + import { fixSides, mapSides, sidesToMargin } from '../../util/sides'; +diff --git a/node_modules/edge-login-ui-rn/lib/components/common/AlertDropdown.js b/node_modules/edge-login-ui-rn/lib/components/common/AlertDropdown.js +index be4835b..cbf5719 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/common/AlertDropdown.js ++++ b/node_modules/edge-login-ui-rn/lib/components/common/AlertDropdown.js +@@ -1,7 +1,8 @@ + import * as React from 'react'; +-import { View } from 'react-native'; ++import { Platform, View } from 'react-native'; + import { AirshipDropdown } from 'react-native-airship'; + import { cacheStyles } from 'react-native-patina'; ++import { useSafeAreaInsets } from 'react-native-safe-area-context'; + import AntDesignIcon from 'react-native-vector-icons/AntDesign'; + import EntypoIcon from 'react-native-vector-icons/Entypo'; + import { lstrings } from '../../common/locales/strings'; +@@ -10,7 +11,13 @@ import { UnscaledText } from './UnscaledText'; + function AlertDropdownComponent(props) { + const { bridge, message, theme, warning } = props; + const styles = getStyles(theme); +- return (React.createElement(AirshipDropdown, { bridge: bridge, backgroundColor: warning ? theme.dropdownWarning : theme.dropdownError }, ++ // The Airship layer's own safe-area measurement only works on iOS, and ++ // edge-to-edge Android draws the window under the status bar, so push the ++ // content below it ourselves. iOS already gets this from the layer, so ++ // adding it here would double the gap: ++ const insets = useSafeAreaInsets(); ++ const androidTopInset = Platform.OS === 'android' ? insets.top : 0; ++ return (React.createElement(AirshipDropdown, { bridge: bridge, backgroundColor: warning ? theme.dropdownWarning : theme.dropdownError, padding: [androidTopInset, 0, 0, 0] }, + React.createElement(View, { style: styles.container }, + React.createElement(EntypoIcon, { name: "warning", size: theme.rem(1.25), style: styles.icon }), + React.createElement(UnscaledText, { style: styles.text }, +diff --git a/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.d.ts b/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.d.ts +index 4fdfab4..adfeca7 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.d.ts ++++ b/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.d.ts +@@ -1,5 +1,6 @@ + /// ++export declare const isBlurDisabled: boolean; + /** A blur background WITH rounded corners, used for most components */ +-export declare const BlurBackground: () => JSX.Element; ++export declare const BlurBackground: () => JSX.Element | null; + /** A blur background WITHOUT rounded corners. For the scene header/footer */ +-export declare const BlurBackgroundNoRoundedCorners: () => JSX.Element; ++export declare const BlurBackgroundNoRoundedCorners: () => JSX.Element | null; +diff --git a/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.js b/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.js +index 296ed73..cbb46aa 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.js ++++ b/node_modules/edge-login-ui-rn/lib/components/common/BlurBackground.js +@@ -4,16 +4,26 @@ import { cacheStyles } from 'react-native-patina'; + import { BlurView } from 'rn-id-blurview'; + import { useTheme } from '../services/ThemeContext'; + const isAndroid = Platform.OS === 'android'; ++// Android below 12 (API 31) blurs via RenderScript, which cannot snapshot ++// content rendered by the new architecture - BlurView paints a light gray ++// wash instead of blurred content. Worse, plain sibling Views also fail to ++// paint inside modals on those devices, so hosts must provide their own ++// solid background color and this component renders nothing. ++export const isBlurDisabled = isAndroid && Number(Platform.Version) < 31; + /** A blur background WITH rounded corners, used for most components */ + export const BlurBackground = () => { + const theme = useTheme(); + const styles = getStyles(theme); ++ if (isBlurDisabled) ++ return null; + return (React.createElement(BlurView, { blurType: theme.isDark ? 'dark' : 'light', style: [styles.blurView, styles.roundCorner], overlayColor: "rgba(0, 0, 0, 0)" })); + }; + /** A blur background WITHOUT rounded corners. For the scene header/footer */ + export const BlurBackgroundNoRoundedCorners = () => { + const theme = useTheme(); + const styles = getStyles(theme); ++ if (isBlurDisabled) ++ return null; + return (React.createElement(BlurView, { blurType: theme.isDark ? 'dark' : 'light', style: styles.blurView, overlayColor: "rgba(0, 0, 0, 0)" })); + }; + const getStyles = cacheStyles((theme) => ({ +diff --git a/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.d.ts b/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.d.ts +index cff6869..da58b8a 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.d.ts ++++ b/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.d.ts +@@ -1,11 +1,12 @@ + import * as React from 'react'; ++import type { GradientColors } from '../../types/Theme'; + interface Props { + /** Extend to the right outside of the container. For scene-level usage. */ + extendRight?: boolean; + /** @deprecated Only to be used during the UI4 transition */ + marginRem?: number[] | number; + /** Unused by current Edge themes, but supported for third-party integrations. */ +- colors?: string[]; ++ colors?: GradientColors; + } + /** + * A simple horizontal divider line for separating content sections. +diff --git a/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.js b/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.js +index 2468702..d7eafde 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.js ++++ b/node_modules/edge-login-ui-rn/lib/components/common/DividerLineUi4.js +@@ -1,5 +1,5 @@ ++import { LinearGradient } from 'expo-linear-gradient'; + import * as React from 'react'; +-import LinearGradient from 'react-native-linear-gradient'; + import { cacheStyles } from 'react-native-patina'; + import { fixSides, mapSides, sidesToMargin } from '../../util/sides'; + import { useTheme } from '../services/ThemeContext'; +@@ -19,7 +19,10 @@ export const DividerLineUi4 = (props) => { + : extendRight + ? styles.extendRight + : styles.default; +- const dividerColors = colors !== null && colors !== void 0 ? colors : [theme.lineDivider, theme.lineDivider]; ++ const dividerColors = colors !== null && colors !== void 0 ? colors : [ ++ theme.lineDivider, ++ theme.lineDivider ++ ]; + return (React.createElement(LinearGradient, { colors: dividerColors, start: start, end: end, style: [styles.divider, margin] })); + }; + const getStyles = cacheStyles((theme) => ({ +diff --git a/node_modules/edge-login-ui-rn/lib/components/icons/ThemedIcons.js b/node_modules/edge-login-ui-rn/lib/components/icons/ThemedIcons.js +index 462a84a..3e65f32 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/icons/ThemedIcons.js ++++ b/node_modules/edge-login-ui-rn/lib/components/icons/ThemedIcons.js +@@ -28,7 +28,10 @@ function AnimatedFontIcon(props) { + return ({ + color: (_a = color === null || color === void 0 ? void 0 : color.value) !== null && _a !== void 0 ? _a : defaultColor, + fontFamily, +- fontSize: (_b = size === null || size === void 0 ? void 0 : size.value) !== null && _b !== void 0 ? _b : defaultSize, ++ // Fabric on Android throws on non-positive text font sizes, and icon ++ // sizes legitimately animate to 0 (e.g. FilledTextInput side icons), so ++ // clamp to 1 (invisible - the containers collapse to zero width anyway): ++ fontSize: Math.max((_b = size === null || size === void 0 ? void 0 : size.value) !== null && _b !== void 0 ? _b : defaultSize, 1), + fontStyle: 'normal', + fontWeight: 'normal' + }); +diff --git a/node_modules/edge-login-ui-rn/lib/components/modals/EdgeModal.js b/node_modules/edge-login-ui-rn/lib/components/modals/EdgeModal.js +index e70234c..d14a3b2 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/modals/EdgeModal.js ++++ b/node_modules/edge-login-ui-rn/lib/components/modals/EdgeModal.js +@@ -3,7 +3,7 @@ + * edge-login-ui-rn! + */ + import * as React from 'react'; +-import { BackHandler, Dimensions, View } from 'react-native'; ++import { BackHandler, Dimensions, Keyboard, Platform, View } from 'react-native'; + import { Gesture, GestureDetector, ScrollView } from 'react-native-gesture-handler'; + import { cacheStyles } from 'react-native-patina'; + import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated'; +@@ -13,7 +13,7 @@ import { EdgeTouchableWithoutFeedback } from '../common/EdgeTouchableWithoutFeed + import { CloseIcon } from '../icons/ThemedIcons'; + import { useTheme } from '../services/ThemeContext'; + import { EdgeText } from '../themed/EdgeText'; +-import { BlurBackground } from '../ui4/BlurBackground'; ++import { BlurBackground, isBlurDisabled } from '../ui4/BlurBackground'; + const BACKGROUND_ALPHA = 0.7; + const SCROLL_INDICATOR_INSET_FIX = { right: 1 }; + const safeAreaGap = 64; // Overkill to avoid bottom of screen +@@ -66,6 +66,22 @@ export function EdgeModal(props) { + backHandler.remove(); + }; + }, [handleCancel]); ++ // Track the keyboard on the JS thread. This file cannot use ++ // react-native-keyboard-controller like edge-react-gui's copy: the host ++ // app's KeyboardProvider mounts below this library's Airship layer, so ++ // listen to React Native's own keyboard events instead: ++ // Seed from the live state, since a modal can mount while the keyboard is ++ // already open. (Optional call: isVisible is missing on very old RN.) ++ const [isKeyboardOpen, setIsKeyboardOpen] = React.useState(() => { var _a, _b; return (_b = (_a = Keyboard.isVisible) === null || _a === void 0 ? void 0 : _a.call(Keyboard)) !== null && _b !== void 0 ? _b : false; }); ++ React.useEffect(() => { ++ const isIos = Platform.OS === 'ios'; ++ const showListener = Keyboard.addListener(isIos ? 'keyboardWillShow' : 'keyboardDidShow', () => setIsKeyboardOpen(true)); ++ const hideListener = Keyboard.addListener(isIos ? 'keyboardWillHide' : 'keyboardDidHide', () => setIsKeyboardOpen(false)); ++ return () => { ++ showListener.remove(); ++ hideListener.remove(); ++ }; ++ }, []); + const gesture = Gesture.Pan() + .onUpdate(e => { + offset.value = e.translationY; +@@ -86,7 +102,10 @@ export function EdgeModal(props) { + const modalStyle = useAnimatedStyle(() => ({ + transform: [{ translateY: Math.max(-dragSlop, offset.value) }] + })); +- const bottomGap = safeAreaGap + dragSlop; ++ // The gap that lets the modal bleed past the bottom of the screen is ++ // rendered behind the keyboard, so drop it while the keyboard is open or ++ // it pushes the modal's own content underneath: ++ const bottomGap = (isKeyboardOpen ? 0 : safeAreaGap) + dragSlop; + const isHeaderless = title == null && onCancel == null; + const isCustomTitle = title != null && typeof title !== 'string'; + const modalLayout = { +@@ -123,7 +142,13 @@ const getStyles = cacheStyles((theme) => ({ + }, + modal: { + alignSelf: 'flex-end', +- backgroundColor: theme.modalBackground, ++ // Devices that cannot render the blur background (Android below 12) get ++ // a solid color approximating the blurred glass look: ++ backgroundColor: isBlurDisabled ++ ? theme.isDark ++ ? '#2b2b2b' ++ : '#f2f2f2' ++ : theme.modalBackground, + borderTopLeftRadius: theme.rem(1), + borderTopRightRadius: theme.rem(1), + flexShrink: 1, +diff --git a/node_modules/edge-login-ui-rn/lib/components/modals/GradientFadeout.js b/node_modules/edge-login-ui-rn/lib/components/modals/GradientFadeout.js +index 6bf6555..361902f 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/modals/GradientFadeout.js ++++ b/node_modules/edge-login-ui-rn/lib/components/modals/GradientFadeout.js +@@ -1,5 +1,5 @@ ++import { LinearGradient } from 'expo-linear-gradient'; + import * as React from 'react'; +-import LinearGradient from 'react-native-linear-gradient'; + import { cacheStyles } from 'react-native-patina'; + import { useTheme } from '../services/ThemeContext'; + const MARKS = [0, 0.2, 0.75, 1]; +@@ -12,8 +12,12 @@ export const GradientFadeOut = () => { + const theme = useTheme(); + const styles = getStyles(theme); + const color = theme.modal; ++ // Written out rather than mapped so the colors stay a fixed-length tuple: ++ // `LinearGradient` wants at least two stops, and as many colors as marks. + const colors = React.useMemo(() => { +- return MARKS.map(mark => color + `0${Math.floor(255 * mark).toString(16)}`.slice(-2)); ++ const fade = (mark) => color + `0${Math.floor(255 * mark).toString(16)}`.slice(-2); ++ const [first, second, third, fourth] = MARKS; ++ return [fade(first), fade(second), fade(third), fade(fourth)]; + }, [color]); + return (React.createElement(LinearGradient, { style: styles.container, start: START, end: END, colors: colors, locations: MARKS, pointerEvents: "none" })); + }; +diff --git a/node_modules/edge-login-ui-rn/lib/components/publicApi/LoginUiProvider.js b/node_modules/edge-login-ui-rn/lib/components/publicApi/LoginUiProvider.js +index b876f76..9bafaf8 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/publicApi/LoginUiProvider.js ++++ b/node_modules/edge-login-ui-rn/lib/components/publicApi/LoginUiProvider.js +@@ -3,6 +3,7 @@ import { SafeAreaProvider } from 'react-native-safe-area-context'; + import { asOptionalTheme } from '../../types/Theme'; + import { Airship } from '../services/AirshipInstance'; + import { changeTheme, getTheme, ThemeProvider } from '../services/ThemeContext'; ++import { BlurTarget, BlurTargetProvider } from '../ui4/BlurBackground'; + /** + * We use this context to determine if `LoginUiProvider` is mounted, and whether + * we are on mobile or desktop. +@@ -33,7 +34,9 @@ function LoginUiProviderComponent(props) { + return (React.createElement(loginUiContext.Provider, { value: { hasProvider: true, isDesktop: (_a = props.isDesktop) !== null && _a !== void 0 ? _a : false } }, + React.createElement(SafeAreaProvider, null, + React.createElement(ThemeProvider, null, +- React.createElement(Airship, null, props.children))))); ++ React.createElement(BlurTargetProvider, null, ++ React.createElement(Airship, null, ++ React.createElement(BlurTarget, null, props.children))))))); + } + export const LoginUiProvider = React.memo(LoginUiProviderComponent); + export function MaybeProvideLoginUi(props) { +diff --git a/node_modules/edge-login-ui-rn/lib/components/scenes/ChangePasswordScene.js b/node_modules/edge-login-ui-rn/lib/components/scenes/ChangePasswordScene.js +index 99fe5a5..ccf7529 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/scenes/ChangePasswordScene.js ++++ b/node_modules/edge-login-ui-rn/lib/components/scenes/ChangePasswordScene.js +@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge + }; + import * as React from 'react'; + import { Keyboard, Platform, ScrollView } from 'react-native'; +-import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; ++import { KeyboardAwareScrollView } from 'react-native-keyboard-controller'; + import { cacheStyles } from 'react-native-patina'; + import { lstrings } from '../../common/locales/strings'; + import { useHandler } from '../../hooks/useHandler'; +@@ -91,7 +91,7 @@ const ChangePasswordSceneComponent = ({ initPassword, title, onBack, onSkip, onS + onPress: handleNext, + spinner + }, animDistanceStart: 0 }))); +- return (React.createElement(ThemedScene, { onBack: onBack, onSkip: onSkip, title: title }, isIos ? (React.createElement(ScrollView, { ref: scrollViewRef, contentContainerStyle: [styles.container, keyboardPadding], keyboardShouldPersistTaps: "handled" }, content)) : (React.createElement(KeyboardAwareScrollView, { contentContainerStyle: [styles.container, keyboardPadding], keyboardShouldPersistTaps: "handled", extraScrollHeight: theme.rem(6), enableAutomaticScroll: true, enableOnAndroid: true }, content)))); ++ return (React.createElement(ThemedScene, { onBack: onBack, onSkip: onSkip, title: title }, isIos ? (React.createElement(ScrollView, { ref: scrollViewRef, contentContainerStyle: [styles.container, keyboardPadding], keyboardShouldPersistTaps: "handled" }, content)) : (React.createElement(KeyboardAwareScrollView, { contentContainerStyle: [styles.container, keyboardPadding], keyboardShouldPersistTaps: "handled", bottomOffset: theme.rem(6) }, content)))); + }; + const getStyles = cacheStyles((theme) => ({ + container: { +diff --git a/node_modules/edge-login-ui-rn/lib/components/scenes/PasswordLoginScene.js b/node_modules/edge-login-ui-rn/lib/components/scenes/PasswordLoginScene.js +index 83eb678..7087057 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/scenes/PasswordLoginScene.js ++++ b/node_modules/edge-login-ui-rn/lib/components/scenes/PasswordLoginScene.js +@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge + import { asMaybeNetworkError, asMaybeOtpError, asMaybePasswordError, asMaybeUsernameError } from 'edge-core-js'; + import * as React from 'react'; + import { Keyboard, View } from 'react-native'; +-import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; ++import { KeyboardAwareScrollView } from 'react-native-keyboard-controller'; + import { cacheStyles } from 'react-native-patina'; + import Animated, { Easing, Extrapolate, interpolate, useAnimatedScrollHandler, useAnimatedStyle, useDerivedValue, useSharedValue, withTiming } from 'react-native-reanimated'; + import AntDesignIcon from 'react-native-vector-icons/AntDesign'; +@@ -69,10 +69,13 @@ export const PasswordLoginScene = (props) => { + }, [inputHeight]); + const sAnimationMult = useSharedValue(0); + const sScrollY = useSharedValue(0); ++ // Capture only the count in the worklets below: localUsers entries contain ++ // `lastLogin: Date`, and the worklets runtime cannot serialize Date objects ++ // (dev-mode "[Worklets] Cannot copy value of type `Date`" render error). ++ const localUserCount = localUsers.length; + const dFinalHeight = useDerivedValue(() => { +- return (usernameItemHeight * +- Math.min(localUsers.length, MAX_DISPLAYED_LOCAL_USERS)); +- }, [usernameItemHeight, localUsers]); ++ return (usernameItemHeight * Math.min(localUserCount, MAX_DISPLAYED_LOCAL_USERS)); ++ }, [usernameItemHeight, localUserCount]); + const scrollHandler = useAnimatedScrollHandler({ + onScroll: (e) => { + sScrollY.value = e.contentOffset.y; +@@ -83,11 +86,11 @@ export const PasswordLoginScene = (props) => { + const aGradientOpacity = useAnimatedStyle(() => { + // Always hide the bottom ScrollView gradient if there's no entries below + // the lower bound of the ScrollView +- if (MAX_DISPLAYED_LOCAL_USERS > localUsers.length) ++ if (MAX_DISPLAYED_LOCAL_USERS > localUserCount) + return { opacity: 0 }; + // Define the bounds at which the opacity should begin to change +- const minScroll = usernameItemHeight * (localUsers.length - MAX_DISPLAYED_LOCAL_USERS - 1); +- const maxScroll = usernameItemHeight * (localUsers.length - MAX_DISPLAYED_LOCAL_USERS); ++ const minScroll = usernameItemHeight * (localUserCount - MAX_DISPLAYED_LOCAL_USERS - 1); ++ const maxScroll = usernameItemHeight * (localUserCount - MAX_DISPLAYED_LOCAL_USERS); + return { + opacity: interpolate(sScrollY.value, [minScroll, maxScroll], [1, 0], Extrapolate.CLAMP) + }; +diff --git a/node_modules/edge-login-ui-rn/lib/components/scenes/PinLoginScene.js b/node_modules/edge-login-ui-rn/lib/components/scenes/PinLoginScene.js +index d5ba59c..0967891 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/scenes/PinLoginScene.js ++++ b/node_modules/edge-login-ui-rn/lib/components/scenes/PinLoginScene.js +@@ -8,9 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge + }); + }; + import { asMaybeNetworkError, asMaybePasswordError, asMaybeUsernameError } from 'edge-core-js'; ++import { LinearGradient } from 'expo-linear-gradient'; + import * as React from 'react'; + import { FlatList, Keyboard, Platform, View } from 'react-native'; +-import LinearGradient from 'react-native-linear-gradient'; + import { cacheStyles } from 'react-native-patina'; + import { SafeAreaView } from 'react-native-safe-area-context'; + import { SvgXml } from 'react-native-svg'; +diff --git a/node_modules/edge-login-ui-rn/lib/components/scenes/newAccount/NewAccountUsernameScene.js b/node_modules/edge-login-ui-rn/lib/components/scenes/newAccount/NewAccountUsernameScene.js +index 8a5c3f3..e4699a4 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/scenes/newAccount/NewAccountUsernameScene.js ++++ b/node_modules/edge-login-ui-rn/lib/components/scenes/newAccount/NewAccountUsernameScene.js +@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge + }; + import { asMaybeNetworkError } from 'edge-core-js'; + import * as React from 'react'; +-import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; ++import { KeyboardAwareScrollView } from 'react-native-keyboard-controller'; + import { cacheStyles } from 'react-native-patina'; + import { sprintf } from 'sprintf-js'; + import { maybeRouteComplete } from '../../../actions/LoginInitActions'; +diff --git a/node_modules/edge-login-ui-rn/lib/components/themed/EdgeText.js b/node_modules/edge-login-ui-rn/lib/components/themed/EdgeText.js +index b8257fd..6af380a 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/themed/EdgeText.js ++++ b/node_modules/edge-login-ui-rn/lib/components/themed/EdgeText.js +@@ -45,11 +45,15 @@ export const EdgeText = (props) => { + const { children, style, disableFontScaling = false } = props, rest = __rest(props, ["children", "style", "disableFontScaling"]); + const theme = useTheme(); + const styles = getStyles(theme); ++ // Android's new architecture shrinks auto-sized text far below ++ // `minimumFontScale`, leaving labels illegibly small, so let text truncate ++ // there instead of shrinking: ++ const autoShrink = Platform.OS !== 'android' && !disableFontScaling; + let { numberOfLines = 1 } = props; + if (typeof children === 'string' && children.includes('\n')) { + numberOfLines = numberOfLines + ((_a = children.match(/\n/g)) !== null && _a !== void 0 ? _a : []).length; + } +- return (React.createElement(Text, Object.assign({ allowFontScaling: false, style: [styles.common, style, androidAdjustTextStyle(theme)], numberOfLines: numberOfLines, adjustsFontSizeToFit: !disableFontScaling, minimumFontScale: 0.65 }, rest), children)); ++ return (React.createElement(Text, Object.assign({ allowFontScaling: false, style: [styles.common, style, androidAdjustTextStyle(theme)], numberOfLines: numberOfLines, adjustsFontSizeToFit: autoShrink, minimumFontScale: 0.65 }, rest), children)); + }; + /** Makes the contents of an `EdgeText` or `Paragraph` smaller (0.75rem). + * Unless used within a `Paragraph` block, provides no outer spacing. */ +diff --git a/node_modules/edge-login-ui-rn/lib/components/themed/FilledTextInput.js b/node_modules/edge-login-ui-rn/lib/components/themed/FilledTextInput.js +index 324ee0f..22c791a 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/themed/FilledTextInput.js ++++ b/node_modules/edge-login-ui-rn/lib/components/themed/FilledTextInput.js +@@ -83,8 +83,9 @@ export const FilledTextInput = React.forwardRef((props, ref) => { + isFocused, + setNativeProps + })); +- // Animates between 0 and 1 based our disabled state: +- const disableAnimation = useSharedValue(0); ++ // Animates between 0 and 1 based our disabled state, starting at the ++ // mounted state so the input doesn't flash its enabled look on entry: ++ const disableAnimation = useSharedValue(disabled ? 1 : 0); + React.useEffect(() => { + disableAnimation.value = withTiming(disabled ? 1 : 0); + }, [disableAnimation, disabled]); +@@ -312,7 +313,8 @@ const PlaceholderText = styled(Animated.Text)(theme => ({ disableAnimation, focu + const fontSizeScaled = oneRem * scale.value * 0.75; + return { + color: interpolatePlaceholderTextColor(focusAnimation, disableAnimation), +- fontSize: interpolate(shift.value, [0, 1], [fontSizeBase, fontSizeScaled]) ++ // Clamp in case an animated scale passes through 0: ++ fontSize: Math.max(interpolate(shift.value, [0, 1], [fontSizeBase, fontSizeScaled]), 1) + }; + }) + ]; +@@ -337,7 +339,8 @@ const StyledAnimatedTextInput = styledWithRef(AnimatedTextInput)(theme => ({ dis + }, + useAnimatedStyle(() => ({ + color: interpolateTextColor(focusAnimation, disableAnimation), +- fontSize: scale.value * rem ++ // Clamp in case an animated scale passes through 0: ++ fontSize: Math.max(scale.value * rem, 1) + })) + ]; + }); +@@ -361,7 +364,8 @@ const StyledNumericInput = styledWithRef(NumericInput)(theme => ({ disableAnimat + }, + useAnimatedStyle(() => ({ + color: interpolateTextColor(focusAnimation, disableAnimation), +- fontSize: scale.value * rem ++ // Clamp in case an animated scale passes through 0: ++ fontSize: Math.max(scale.value * rem, 1) + })) + ]; + }); +diff --git a/node_modules/edge-login-ui-rn/lib/components/themed/PinButton.js b/node_modules/edge-login-ui-rn/lib/components/themed/PinButton.js +index 5fed31f..ad8aea7 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/themed/PinButton.js ++++ b/node_modules/edge-login-ui-rn/lib/components/themed/PinButton.js +@@ -1,5 +1,5 @@ ++import { LinearGradient } from 'expo-linear-gradient'; + import * as React from 'react'; +-import LinearGradient from 'react-native-linear-gradient'; + import { cacheStyles } from 'react-native-patina'; + import { usePendingPress } from '../../hooks/usePendingPress'; + import { fixSides, mapSides, sidesToMargin, sidesToPadding } from '../../util/sides'; +diff --git a/node_modules/edge-login-ui-rn/lib/components/themed/SimpleTextInput.js b/node_modules/edge-login-ui-rn/lib/components/themed/SimpleTextInput.js +index 7288462..e6f001e 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/themed/SimpleTextInput.js ++++ b/node_modules/edge-login-ui-rn/lib/components/themed/SimpleTextInput.js +@@ -69,8 +69,9 @@ export const SimpleTextInput = React.forwardRef((props, ref) => { + isFocused, + setNativeProps + })); +- // Animates between 0 and 1 based our disabled state: +- const disableAnimation = useSharedValue(0); ++ // Animates between 0 and 1 based our disabled state, starting at the ++ // mounted state so the input doesn't flash its enabled look on entry: ++ const disableAnimation = useSharedValue(disabled ? 1 : 0); + React.useEffect(() => { + disableAnimation.value = withTiming(disabled ? 1 : 0); + }, [disableAnimation, disabled]); +@@ -183,7 +184,8 @@ const PlaceholderText = styled(Animated.Text)(theme => ({ disableAnimation, focu + return { + opacity: interpolate(hasValueAnimation.value, [0, 1], [1, 0]), + color: interpolatePlaceholderTextColor(focusAnimation, disableAnimation), +- fontSize: scale.value * rem ++ // Clamp in case an animated scale passes through 0: ++ fontSize: Math.max(scale.value * rem, 1) + }; + }) + ]; +@@ -202,7 +204,8 @@ const InputField = styledWithRef(AnimatedTextInput)(theme => ({ disableAnimation + }, + useAnimatedStyle(() => ({ + color: interpolateTextColor(focusAnimation, disableAnimation), +- fontSize: scale.value * rem ++ // Clamp in case an animated scale passes through 0: ++ fontSize: Math.max(scale.value * rem, 1) + })) + ]; + }); +diff --git a/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.d.ts b/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.d.ts +index 1ce7388..d6101c1 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.d.ts ++++ b/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.d.ts +@@ -1,5 +1,22 @@ + /** + * IMPORTANT: Changes in this file MUST be synced with edge-react-gui! + */ +-/// +-export declare const BlurBackground: () => JSX.Element; ++import React from 'react'; ++export declare const isBlurDisabled: boolean; ++/** Owns the blur-target ref. Mounted by LoginUiProvider above both the ++ * target and the Airship layer whose modals sample it. */ ++export declare function BlurTargetProvider(props: { ++ children: React.ReactNode; ++}): React.ReactElement; ++/** Marks its children as the content blur surfaces sample. Wraps the app ++ * content, NOT the modal layer - a modal must not sample itself. */ ++export declare function BlurTarget(props: { ++ children: React.ReactNode; ++}): React.ReactElement; ++/** The Android 12+ blur: expo-blur's Dimezis 3 backend, which works under ++ * the new architecture but needs the BlurTarget above. Falls back to a plain ++ * tint when no target is mounted. */ ++export declare const AndroidBlur: (props: { ++ rounded?: boolean; ++}) => React.ReactElement; ++export declare const BlurBackground: () => React.ReactElement | null; +diff --git a/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.js b/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.js +index 9c77bc0..3ff7ba5 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.js ++++ b/node_modules/edge-login-ui-rn/lib/components/ui4/BlurBackground.js +@@ -1,16 +1,62 @@ + /** + * IMPORTANT: Changes in this file MUST be synced with edge-react-gui! + */ ++import { BlurTargetView, BlurView as ExpoBlurView } from 'expo-blur'; + import React from 'react'; + import { Platform, StyleSheet } from 'react-native'; ++import { cacheStyles } from 'react-native-patina'; + import { BlurView } from 'rn-id-blurview'; +-import { cacheStyles, useTheme } from '../services/ThemeContext'; ++import { useTheme } from '../services/ThemeContext'; + const isAndroid = Platform.OS === 'android'; ++// Android below 12 (API 31) has no working blur under the new architecture: ++// RenderScript cannot snapshot Fabric-rendered content, so the modal must ++// provide its own solid background color and this component renders nothing. ++export const isBlurDisabled = isAndroid && Number(Platform.Version) < 31; ++/** ++ * The content blur surfaces sample from. On Android 12+ the blur ++ * implementation (Dimezis BlurView 3, via expo-blur) can only blur content ++ * wrapped in an explicit target view - the old whole-window snapshot renders ++ * nothing under the new architecture. On iOS this wrapper is a plain View. ++ */ ++const BlurTargetContext = React.createContext(null); ++/** Owns the blur-target ref. Mounted by LoginUiProvider above both the ++ * target and the Airship layer whose modals sample it. */ ++export function BlurTargetProvider(props) { ++ const ref = React.useRef(null); ++ return (React.createElement(BlurTargetContext.Provider, { value: ref }, props.children)); ++} ++/** Marks its children as the content blur surfaces sample. Wraps the app ++ * content, NOT the modal layer - a modal must not sample itself. */ ++export function BlurTarget(props) { ++ const ref = React.useContext(BlurTargetContext); ++ return (React.createElement(BlurTargetView, { ref: ref !== null && ref !== void 0 ? ref : undefined, collapsable: false, style: styles.blurTarget }, props.children)); ++} ++/** The Android 12+ blur: expo-blur's Dimezis 3 backend, which works under ++ * the new architecture but needs the BlurTarget above. Falls back to a plain ++ * tint when no target is mounted. */ ++export const AndroidBlur = (props) => { ++ const { rounded = false } = props; ++ const theme = useTheme(); ++ const stylesLocal = getStyles(theme); ++ const blurTarget = React.useContext(BlurTargetContext); ++ return (React.createElement(ExpoBlurView, { blurMethod: "dimezisBlurViewSdk31Plus", blurTarget: blurTarget !== null && blurTarget !== void 0 ? blurTarget : undefined, tint: theme.isDark ? 'dark' : 'light', intensity: 100, style: [ ++ StyleSheet.absoluteFill, ++ stylesLocal.clip, ++ rounded ? stylesLocal.roundCorner : null ++ ] })); ++}; + export const BlurBackground = () => { + const theme = useTheme(); +- const styles = getStyles(theme); +- return (React.createElement(BlurView, { blurType: theme.isDark ? 'dark' : 'light', style: styles.blurView, overlayColor: "rgba(0, 0, 0, 0)" })); ++ const stylesLocal = getStyles(theme); ++ if (isBlurDisabled) ++ return null; ++ if (isAndroid) ++ return React.createElement(AndroidBlur, { rounded: true }); ++ return (React.createElement(BlurView, { blurType: theme.isDark ? 'dark' : 'light', style: stylesLocal.blurView, overlayColor: "rgba(0, 0, 0, 0)" })); + }; ++const styles = StyleSheet.create({ ++ blurTarget: { flex: 1 } ++}); + const getStyles = cacheStyles((theme) => ({ + blurView: Object.assign(Object.assign({}, StyleSheet.absoluteFillObject), { + // We need this backgroundColor because Android applies an overlay to the +@@ -21,5 +67,11 @@ const getStyles = cacheStyles((theme) => ({ + ? theme.isDark + ? '#161616aa' + : '#ffffff55' +- : undefined }) ++ : undefined }), ++ clip: { ++ overflow: 'hidden' ++ }, ++ roundCorner: { ++ borderRadius: theme.cardBorderRadius ++ } + })); +diff --git a/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.d.ts b/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.d.ts +index 1fc2957..8ce3c4b 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.d.ts ++++ b/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.d.ts +@@ -1,5 +1,5 @@ ++import { LinearGradientProps } from 'expo-linear-gradient'; + import * as React from 'react'; +-import { LinearGradientProps } from 'react-native-linear-gradient'; + interface Props { + overlay?: React.ReactNode; + children: React.ReactNode | React.ReactNode[]; +diff --git a/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.js b/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.js +index 9e5b49d..a4d9930 100644 +--- a/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.js ++++ b/node_modules/edge-login-ui-rn/lib/components/ui4/EdgeCard.js +@@ -7,9 +7,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; ++import { LinearGradient } from 'expo-linear-gradient'; + import * as React from 'react'; + import { StyleSheet, View } from 'react-native'; +-import LinearGradient from 'react-native-linear-gradient'; + import { cacheStyles } from 'react-native-patina'; + import { useHandler } from '../../hooks/useHandler'; + import { triggerHaptic } from '../../util/haptic'; +diff --git a/node_modules/edge-login-ui-rn/lib/types/Theme.d.ts b/node_modules/edge-login-ui-rn/lib/types/Theme.d.ts +index b98562b..b407833 100644 +--- a/node_modules/edge-login-ui-rn/lib/types/Theme.d.ts ++++ b/node_modules/edge-login-ui-rn/lib/types/Theme.d.ts +@@ -3,8 +3,14 @@ declare const asGradientCoords: import("cleaners").ObjectCleaner<{ + y: number; + }>; + type GradientCoords = ReturnType; ++/** ++ * A gradient needs at least two stops to interpolate between, which ++ * `LinearGradient` enforces in its own prop types. A plain `string[]` says ++ * nothing about length, so themes declare the tuple instead. ++ */ ++export type GradientColors = readonly [string, string, ...string[]]; + declare const asThemeGradientParams: import("cleaners").ObjectCleaner<{ +- colors: string[]; ++ colors: GradientColors; + start: { + x: any; + y: any; +@@ -68,7 +74,7 @@ export interface Theme { + buttonBorderRadiusRem: number; + keypadButtonOutline: string; + keypadButtonOutlineWidth: number; +- keypadButton: string[]; ++ keypadButton: GradientColors; + keypadButtonColorStart: GradientCoords; + keypadButtonColorEnd: GradientCoords; + keypadButtonText: string; +@@ -79,7 +85,7 @@ export interface Theme { + keypadButtonFont: string; + primaryButtonOutline: string; + primaryButtonOutlineWidth: number; +- primaryButton: string[]; ++ primaryButton: GradientColors; + primaryButtonColorStart: GradientCoords; + primaryButtonColorEnd: GradientCoords; + primaryButtonText: string; +@@ -89,7 +95,7 @@ export interface Theme { + primaryButtonFont: string; + secondaryButtonOutline: string; + secondaryButtonOutlineWidth: number; +- secondaryButton: string[]; ++ secondaryButton: GradientColors; + secondaryButtonColorStart: GradientCoords; + secondaryButtonColorEnd: GradientCoords; + secondaryButtonText: string; +@@ -99,7 +105,7 @@ export interface Theme { + secondaryButtonFont: string; + escapeButtonOutline: string; + escapeButtonOutlineWidth: number; +- escapeButton: string[]; ++ escapeButton: GradientColors; + escapeButtonColorStart: GradientCoords; + escapeButtonColorEnd: GradientCoords; + escapeButtonText: string; +@@ -109,7 +115,7 @@ export interface Theme { + escapeButtonFont: string; + dangerButtonOutline: string; + dangerButtonOutlineWidth: number; +- dangerButton: string[]; ++ dangerButton: GradientColors; + dangerButtonColorStart: GradientCoords; + dangerButtonColorEnd: GradientCoords; + dangerButtonText: string; +@@ -119,7 +125,7 @@ export interface Theme { + dangerButtonFont: string; + pinUsernameButtonOutline: string; + pinUsernameButtonOutlineWidth: number; +- pinUsernameButton: string[]; ++ pinUsernameButton: GradientColors; + pinUsernameButtonColorStart: GradientCoords; + pinUsernameButtonColorEnd: GradientCoords; + pinUsernameButtonText: string; +diff --git a/node_modules/edge-login-ui-rn/lib/types/Theme.js b/node_modules/edge-login-ui-rn/lib/types/Theme.js +index f5c8d89..4f2d0ef 100644 +--- a/node_modules/edge-login-ui-rn/lib/types/Theme.js ++++ b/node_modules/edge-login-ui-rn/lib/types/Theme.js +@@ -8,8 +8,15 @@ const asGradientCoords = asObject({ + x: asNumber, + y: asNumber + }); ++const asGradientColors = raw => { ++ const [first, second, ...rest] = asArray(asString)(raw); ++ if (first == null || second == null) { ++ throw new TypeError('A gradient needs at least two colors'); ++ } ++ return [first, second, ...rest]; ++}; + const asThemeGradientParams = asObject({ +- colors: asArray(asString), ++ colors: asGradientColors, + start: asGradientCoords, + end: asGradientCoords + }); +@@ -82,7 +89,7 @@ export const asOptionalTheme = asObject({ + buttonBorderRadiusRem: asOptional(asNumber), + keypadButtonOutline: asOptional(asString), + keypadButtonOutlineWidth: asOptional(asNumber), +- keypadButton: asOptional(asArray(asString)), ++ keypadButton: asOptional(asGradientColors), + keypadButtonColorStart: asOptional(asGradientCoords), + keypadButtonColorEnd: asOptional(asGradientCoords), + keypadButtonText: asOptional(asString), +@@ -93,7 +100,7 @@ export const asOptionalTheme = asObject({ + keypadButtonFont: asOptional(asString), + primaryButtonOutline: asOptional(asString), + primaryButtonOutlineWidth: asOptional(asNumber), +- primaryButton: asOptional(asArray(asString)), ++ primaryButton: asOptional(asGradientColors), + primaryButtonColorStart: asOptional(asGradientCoords), + primaryButtonColorEnd: asOptional(asGradientCoords), + primaryButtonText: asOptional(asString), +@@ -103,7 +110,7 @@ export const asOptionalTheme = asObject({ + primaryButtonFont: asOptional(asString), + secondaryButtonOutline: asOptional(asString), + secondaryButtonOutlineWidth: asOptional(asNumber), +- secondaryButton: asOptional(asArray(asString)), ++ secondaryButton: asOptional(asGradientColors), + secondaryButtonColorStart: asOptional(asGradientCoords), + secondaryButtonColorEnd: asOptional(asGradientCoords), + secondaryButtonText: asOptional(asString), +@@ -113,7 +120,7 @@ export const asOptionalTheme = asObject({ + secondaryButtonFont: asOptional(asString), + escapeButtonOutline: asOptional(asString), + escapeButtonOutlineWidth: asOptional(asNumber), +- escapeButton: asOptional(asArray(asString)), ++ escapeButton: asOptional(asGradientColors), + escapeButtonColorStart: asOptional(asGradientCoords), + escapeButtonColorEnd: asOptional(asGradientCoords), + escapeButtonText: asOptional(asString), +@@ -123,7 +130,7 @@ export const asOptionalTheme = asObject({ + escapeButtonFont: asOptional(asString), + pinUsernameButtonOutline: asOptional(asString), + pinUsernameButtonOutlineWidth: asOptional(asNumber), +- pinUsernameButton: asOptional(asArray(asString)), ++ pinUsernameButton: asOptional(asGradientColors), + pinUsernameButtonColorStart: asOptional(asGradientCoords), + pinUsernameButtonColorEnd: asOptional(asGradientCoords), + pinUsernameButtonText: asOptional(asString), diff --git a/patches/expo-modules-core+57.0.6.patch b/patches/expo-modules-core+57.0.6.patch new file mode 100644 index 00000000000..181ea874f9a --- /dev/null +++ b/patches/expo-modules-core+57.0.6.patch @@ -0,0 +1,44 @@ +diff --git a/node_modules/expo-modules-core/ios/Core/Events/EventEmitter.swift b/node_modules/expo-modules-core/ios/Core/Events/EventEmitter.swift +index 3046568..dd03845 100644 +--- a/node_modules/expo-modules-core/ios/Core/Events/EventEmitter.swift ++++ b/node_modules/expo-modules-core/ios/Core/Events/EventEmitter.swift +@@ -42,14 +42,14 @@ public extension EventEmitter { + return + } + // The emitter is not necessarily `Sendable` - some modules hold non-sendable state — so we can't let +- // the compiler send `self` into the `@JavaScriptActor` region. Capturing it as `nonisolated(unsafe)` is +- // safe here because the scheduled closure only calls `withEventTarget`, which touches `@JavaScriptActor`- +- // isolated or `Sendable` state (the JS object, the registry, `appContext`) and the emitter's identity - +- // never the module's own mutable state. +- nonisolated(unsafe) weak let emitter = self ++ // the compiler send `self` into the `@JavaScriptActor` region. Wrapping it in a weak, `@unchecked ++ // Sendable` box is safe here because the scheduled closure only calls `withEventTarget`, which touches ++ // `@JavaScriptActor`-isolated or `Sendable` state (the JS object, the registry, `appContext`) and the ++ // emitter's identity - never the module's own mutable state. ++ let emitter = NonisolatedUnsafeWeakVar(self) + + runtime.schedule { +- guard let emitter else { ++ guard let emitter = emitter.value else { + return + } + let dispatched = emitter.withEventTarget { target in +@@ -70,13 +70,13 @@ public extension EventEmitter { + log.warn("Trying to send event '\(event)' to \(type(of: self)), but the JS runtime has been lost") + return + } +- // See the note in `emit(event:payload:)` above - the emitter is captured as `nonisolated(unsafe)` +- // because it isn't necessarily `Sendable`, and the scheduled closure only reaches `@JavaScriptActor`- +- // isolated or `Sendable` state through it. +- nonisolated(unsafe) weak let emitter = self ++ // See the note in `emit(event:payload:)` above - the emitter is captured in a weak, `@unchecked ++ // Sendable` box because it isn't necessarily `Sendable`, and the scheduled closure only reaches ++ // `@JavaScriptActor`-isolated or `Sendable` state through it. ++ let emitter = NonisolatedUnsafeWeakVar(self) + + runtime.schedule { [weak appContext] in +- guard let emitter, let appContext else { ++ guard let emitter = emitter.value, let appContext else { + return + } + let jsPayload: JavaScriptValue diff --git a/patches/expo-modules-jsi+57.0.6.patch b/patches/expo-modules-jsi+57.0.6.patch new file mode 100644 index 00000000000..b831dcd68ea --- /dev/null +++ b/patches/expo-modules-jsi+57.0.6.patch @@ -0,0 +1,22 @@ +diff --git a/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI-Cxx/include/RuntimeScheduler.h b/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI-Cxx/include/RuntimeScheduler.h +index 6115e87..957527c 100644 +--- a/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI-Cxx/include/RuntimeScheduler.h ++++ b/node_modules/expo-modules-jsi/apple/Sources/ExpoModulesJSI-Cxx/include/RuntimeScheduler.h +@@ -50,7 +50,7 @@ public: + `scheduleTask` dispatches through `fn`, which the host implements against + the real react::RuntimeScheduler. + */ +- SWIFT_RETURNS_RETAINED RuntimeScheduler(void *scheduler, ScheduleFn fn) noexcept ++ RuntimeScheduler(void *scheduler, ScheduleFn fn) noexcept + : nativeScheduler(scheduler), scheduleFn(fn) {} + + /** +@@ -58,7 +58,7 @@ public: + caller's thread — intended for standalone runtimes (e.g. tests) that have + no React scheduler. + */ +- SWIFT_RETURNS_RETAINED RuntimeScheduler() {} ++ RuntimeScheduler() {} + + RuntimeScheduler(const RuntimeScheduler &) = delete; + diff --git a/patches/react-native+0.79.2.patch b/patches/react-native+0.79.2.patch deleted file mode 100644 index 69291f444fd..00000000000 --- a/patches/react-native+0.79.2.patch +++ /dev/null @@ -1,133 +0,0 @@ -diff --git a/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp b/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp -index 522ec57..e6ad1df 100644 ---- a/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp -+++ b/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp -@@ -22,6 +22,10 @@ - - namespace facebook::react { - -+namespace { -+const int MAX_COMMIT_ATTEMPTS_BEFORE_LOCKING = 3; -+} // namespace -+ - using CommitStatus = ShadowTree::CommitStatus; - using CommitMode = ShadowTree::CommitMode; - -@@ -207,7 +211,8 @@ void ShadowTree::setCommitMode(CommitMode commitMode) const { - auto revision = ShadowTreeRevision{}; - - { -- std::unique_lock lock(commitMutex_); -+ ShadowTree::UniqueLock lock = uniqueCommitLock(); -+ - if (commitMode_ == commitMode) { - return; - } -@@ -224,7 +229,7 @@ void ShadowTree::setCommitMode(CommitMode commitMode) const { - } - - CommitMode ShadowTree::getCommitMode() const { -- std::shared_lock lock(commitMutex_); -+ SharedLock lock = sharedCommitLock(); - return commitMode_; - } - -@@ -238,17 +243,17 @@ CommitStatus ShadowTree::commit( - const CommitOptions& commitOptions) const { - [[maybe_unused]] int attempts = 0; - -- while (true) { -- attempts++; -- -+ while (attempts < MAX_COMMIT_ATTEMPTS_BEFORE_LOCKING) { - auto status = tryCommit(transaction, commitOptions); - if (status != CommitStatus::Failed) { - return status; - } -+ attempts++; -+ } - -- // After multiple attempts, we failed to commit the transaction. -- // Something internally went terribly wrong. -- react_native_assert(attempts < 1024); -+ { -+ std::unique_lock lock(commitMutexRecursive_); -+ return tryCommit(transaction, commitOptions); - } - } - -@@ -266,7 +271,7 @@ CommitStatus ShadowTree::tryCommit( - - { - // Reading `currentRevision_` in shared manner. -- std::shared_lock lock(commitMutex_); -+ SharedLock lock = sharedCommitLock(); - commitMode = commitMode_; - oldRevision = currentRevision_; - } -@@ -307,7 +312,7 @@ CommitStatus ShadowTree::tryCommit( - - { - // Updating `currentRevision_` in unique manner if it hasn't changed. -- std::unique_lock lock(commitMutex_); -+ UniqueLock lock = uniqueCommitLock(); - - if (currentRevision_.number != oldRevision.number) { - return CommitStatus::Failed; -@@ -345,7 +350,7 @@ CommitStatus ShadowTree::tryCommit( - } - - ShadowTreeRevision ShadowTree::getCurrentRevision() const { -- std::shared_lock lock(commitMutex_); -+ SharedLock lock = sharedCommitLock(); - return currentRevision_; - } - -@@ -392,4 +397,12 @@ void ShadowTree::notifyDelegatesOfUpdates() const { - delegate_.shadowTreeDidFinishTransaction(mountingCoordinator_, true); - } - -+inline ShadowTree::UniqueLock ShadowTree::uniqueCommitLock() const { -+ return std::unique_lock{commitMutexRecursive_}; -+} -+ -+inline ShadowTree::SharedLock ShadowTree::sharedCommitLock() const { -+ return std::unique_lock{commitMutexRecursive_}; -+} -+ - } // namespace facebook::react -diff --git a/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.h b/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.h -index ae9d005..c3bef0b 100644 ---- a/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.h -+++ b/node_modules/react-native/ReactCommon/react/renderer/mounting/ShadowTree.h -@@ -8,6 +8,8 @@ - #pragma once - - #include -+#include -+#include - - #include - #include -@@ -139,10 +141,21 @@ class ShadowTree final { - const SurfaceId surfaceId_; - const ShadowTreeDelegate& delegate_; - mutable std::shared_mutex commitMutex_; -+ mutable std::recursive_mutex commitMutexRecursive_; - mutable CommitMode commitMode_{ - CommitMode::Normal}; // Protected by `commitMutex_`. - mutable ShadowTreeRevision currentRevision_; // Protected by `commitMutex_`. - std::shared_ptr mountingCoordinator_; -+ -+ using UniqueLock = std::variant< -+ std::unique_lock, -+ std::unique_lock>; -+ using SharedLock = std::variant< -+ std::shared_lock, -+ std::unique_lock>; -+ -+ inline UniqueLock uniqueCommitLock() const; -+ inline SharedLock sharedCommitLock() const; - }; - - } // namespace facebook::react diff --git a/patches/react-native+0.86.0.patch b/patches/react-native+0.86.0.patch new file mode 100644 index 00000000000..f076377529f --- /dev/null +++ b/patches/react-native+0.86.0.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h b/node_modules/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +index ecc79d8..7ecb740 100644 +--- a/node_modules/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h ++++ b/node_modules/react-native/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +@@ -300,7 +300,7 @@ class ReactNativeFeatureFlagsDefaults : public ReactNativeFeatureFlagsProvider { + } + + bool preventShadowTreeCommitExhaustion() override { +- return false; ++ return true; + } + + bool redBoxV2Android() override { diff --git a/patches/react-native-securerandom+1.0.1.patch b/patches/react-native-securerandom+1.0.1.patch new file mode 100644 index 00000000000..123240cca50 --- /dev/null +++ b/patches/react-native-securerandom+1.0.1.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-native-securerandom/android/build.gradle b/node_modules/react-native-securerandom/android/build.gradle +index 4e725c3..bb212d2 100644 +--- a/node_modules/react-native-securerandom/android/build.gradle ++++ b/node_modules/react-native-securerandom/android/build.gradle +@@ -56,7 +56,7 @@ repositories { + excludeGroup "com.facebook.react" + } + } +- jcenter() ++ mavenCentral() + } + + dependencies { diff --git a/patches/react-native-vision-camera+4.7.2.patch b/patches/react-native-vision-camera+4.7.2.patch deleted file mode 100644 index c1de2480255..00000000000 --- a/patches/react-native-vision-camera+4.7.2.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt -index 21ac2b2..b0b2254 100644 ---- a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt -+++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/react/CameraDevicesManager.kt -@@ -99,6 +99,7 @@ class CameraDevicesManager(private val reactContext: ReactApplicationContext) : - } - - fun sendAvailableDevicesChangedEvent() { -+ if (!reactContext.hasActiveCatalystInstance()) return; - val eventEmitter = reactContext.getJSModule(RCTDeviceEventEmitter::class.java) - val devices = getDevicesJson() - eventEmitter.emit("CameraDevicesChanged", devices) diff --git a/react-native.config.js b/react-native.config.js index 10ca5143757..a1348c7ef4b 100644 --- a/react-native.config.js +++ b/react-native.config.js @@ -4,23 +4,6 @@ module.exports = { platforms: { ios: null } - }, - - // We want Reanimated 3 on Android: - 'react-native-reanimated': { - platforms: { - android: { - sourceDir: - '../node_modules/r3-hack/node_modules/react-native-reanimated/android' - } - } - }, - - // We don't want Reanimated 4 worklets on Android: - 'react-native-worklets': { - platforms: { - android: null - } } } } diff --git a/scripts/jestResolver.js b/scripts/jestResolver.js new file mode 100644 index 00000000000..76b20033c8a --- /dev/null +++ b/scripts/jestResolver.js @@ -0,0 +1,35 @@ +// Custom jest resolver handling two RN-0.85-ecosystem quirks: +// +// 1. Reanimated 4 splits out react-native-worklets, whose `.native` modules +// instantiate native code that crashes in jest. Resolve worklets to its +// non-native build (mirrors react-native-worklets/jest/resolver.js). +// +// 2. The React Native jest preset sets the `react-native` export condition. +// msw (and @mswjs/*) map their Node exports to `null` under that condition, +// so `msw/node` fails to resolve. Resolve anything msw-related with Node +// export conditions (preferring CommonJS) instead. +module.exports = (request, options) => { + const { defaultResolver } = options + + if ( + options.basedir.includes('react-native-worklets') || + request.includes('react-native-worklets') + ) { + options = { + ...options, + extensions: options.extensions?.filter(ext => !ext.includes('native')) + } + } + + const isMsw = + request === 'msw' || + request.startsWith('msw/') || + request.startsWith('@mswjs/') || + options.basedir.includes('/node_modules/msw') || + options.basedir.includes('/node_modules/@mswjs') + if (isMsw) { + options = { ...options, conditions: ['node', 'require', 'default'] } + } + + return defaultResolver(request, options) +} diff --git a/scripts/r3-hack/README.md b/scripts/r3-hack/README.md deleted file mode 100644 index dcda549350c..00000000000 --- a/scripts/r3-hack/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Reanimated Hack - -Here is the problem: - -- iOS: We need to run Reanimated 4 on the new achitecture to get decent performance. -- Android: We cannot use the new architecture yet (there are unsolved performance problems), so we need to use Reanimated 3. - -How can we have two versions of a native library at once? Well... - -- Require Reanimated 4 normally through package.json. -- Require Reanimated 3 indirectly through this r3-hack shim package. -- Use react-native.config.js to override the native module with Reanimated 3. -- Tell babel.config.js to use the right plugin based on platform. -- Hack metro.config.js to resolve 'react-native-reanimated' to - this package's exported paths on Android. - -Super sketchy, but it works! diff --git a/scripts/r3-hack/index.js b/scripts/r3-hack/index.js deleted file mode 100644 index 2ecc6710b0c..00000000000 --- a/scripts/r3-hack/index.js +++ /dev/null @@ -1,14 +0,0 @@ -// The various react-native-reanimated entry points the app uses, -// but resolved to our internal copy of Reanimated 3: -module.exports = { - // Reanimated itself: - 'react-native-reanimated': require.resolve('react-native-reanimated'), - - // react-native-keyboard-controller reaches into our internals: - 'react-native-reanimated/src/core': require.resolve( - 'react-native-reanimated/src/core.ts' - ), - - // Some functions like `runOnJs` have moved, so put them back: - 'react-native-worklets': require.resolve('react-native-reanimated') -} diff --git a/scripts/r3-hack/package.json b/scripts/r3-hack/package.json deleted file mode 100644 index 8dcec0a2ac5..00000000000 --- a/scripts/r3-hack/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "r3-hack", - "version": "0.0.1", - "description": "Makes it possible to have Reanimated 3 alongside Reanimated 4", - "main": "index.js", - "files": [ - "index.js" - ], - "dependencies": { - "react-native-reanimated": "^3.19.1" - } -} diff --git a/src/__tests__/components/Card.test.tsx b/src/__tests__/components/Card.test.tsx index 819a9887f00..e08ba59acb5 100644 --- a/src/__tests__/components/Card.test.tsx +++ b/src/__tests__/components/Card.test.tsx @@ -8,7 +8,7 @@ import { EdgeCard } from '../../components/cards/EdgeCard' import { EdgeText } from '../../components/themed/EdgeText' import { FakeProviders } from '../../util/fake/FakeProviders' -const testColors = ['#4c669f', '#3b5998', '#192f6a'] +const testColors = ['#4c669f', '#3b5998', '#192f6a'] as const const testIconUri = 'https://content.edge.app/currencyIconsV3/bitcoin/bitcoin.png' diff --git a/src/__tests__/components/__snapshots__/AccountSyncBar.test.tsx.snap b/src/__tests__/components/__snapshots__/AccountSyncBar.test.tsx.snap index 7c62619eca7..10b50e3f12e 100644 --- a/src/__tests__/components/__snapshots__/AccountSyncBar.test.tsx.snap +++ b/src/__tests__/components/__snapshots__/AccountSyncBar.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ProgressBar should render with loading props 1`] = ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Section 1 - - - hello , - - - - - - - - - - - - - - - - - - + - , + - - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/CreateWalletEditNameScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/CreateWalletEditNameScene.test.tsx.snap index 0969f4d2a78..f1e3db6bc8d 100644 --- a/src/__tests__/scenes/__snapshots__/CreateWalletEditNameScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/CreateWalletEditNameScene.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CreateWalletEditNameComponent should render with loading props 1`] = ` - - - + - - - + `; diff --git a/src/__tests__/scenes/__snapshots__/CreateWalletImportScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/CreateWalletImportScene.test.tsx.snap index 14e26ace388..a3ab9808e7f 100644 --- a/src/__tests__/scenes/__snapshots__/CreateWalletImportScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/CreateWalletImportScene.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CreateWalletImportScene should render with loading props 1`] = ` - - - + - - - + + + + + Enter your private seed, private key, or active key to verify and restore the associated wallet + + - - - - Enter your private seed, private key, or active key to verify and restore the associated wallet - - + - - - - Private Key or Private Seed - - - + + > + Private Key or Private Seed + - + + + - - -  - - +  + + + - + - - - - Next - - + ], + null, + ] + } + > + Next + - + - + `; diff --git a/src/__tests__/scenes/__snapshots__/CreateWalletSelectCryptoScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/CreateWalletSelectCryptoScene.test.tsx.snap index c1c21141995..f5acb8badb0 100644 --- a/src/__tests__/scenes/__snapshots__/CreateWalletSelectCryptoScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/CreateWalletSelectCryptoScene.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CreateWalletSelectCrypto should render with loading props 1`] = ` [ @@ -27,18 +27,8 @@ exports[`CreateWalletSelectCrypto should render with loading props 1`] = ` "height": 1334, "width": 750, }, - { - "paddingBottom": 0, - "paddingLeft": 0, - "paddingRight": 0, - "paddingTop": 64, - }, - { - "padding": 0, - }, ] } - nativeID="0" style={ [ { @@ -50,166 +40,91 @@ exports[`CreateWalletSelectCrypto should render with loading props 1`] = ` "height": 1334, "width": 750, }, - { - "paddingBottom": 0, - "paddingLeft": 0, - "paddingRight": 0, - "paddingTop": 64, - }, { "maxHeight": 1334, }, - { - "padding": 0, - }, ] } > - - - - - - - - - + - + - + + + + opacity={0.1} + > + + + + - - - - + + - - Choose Wallets to Add - - - - - + Choose Wallets to Add + + + + - -  - - - -  +  - - - + + +  + + + + - - -  - - - - - - - - + submitBehavior="submit" + testID="undefined.textInput" + textAlignVertical="top" + /> - - - +  + + + + + + + - - ETH - - + + + + - Ethereum - - - - + ETH + + + Ethereum + + + + + "selected": false, + } + } + onChange={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + onTintColor="#00f1a2" + style={ + [ + { + "alignSelf": "flex-start", + }, + { + "backgroundColor": "#888888", + "borderRadius": 16, + }, + ] + } + tintColor="#888888" + value={false} + /> + - - - + + + + + + + + } + > + + REP (Ethereum) + + + Augur + - + + - - REP (Ethereum) - - - Augur - - - - - - - - - - - - - - - + + + + > + + - - - - REPV2 (Ethereum) - - - Augur v2 - - - - - - - - - - - - + REPV2 (Ethereum) + + + > + Augur v2 + - + + - - HERC (Ethereum) - - - Hercules - - - - - - - - - - - + + + + + + + + } + > + + HERC (Ethereum) + + + Hercules + - + + - - DAI (Ethereum) - - - Dai Stablecoin - - - - - - - - - - - + + + + + + + + + + DAI (Ethereum) + + + Dai Stablecoin + + + - + + + + + + + - - + + - Add Custom Token - + ] + } + > + Add Custom Token + + - - - + + + , + - , + - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/CurrencySettings.ui.test.tsx.snap b/src/__tests__/scenes/__snapshots__/CurrencySettings.ui.test.tsx.snap index 2dd5d7b0a28..a0ffe9391e1 100644 --- a/src/__tests__/scenes/__snapshots__/CurrencySettings.ui.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/CurrencySettings.ui.test.tsx.snap @@ -1,23 +1,34 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`CurrencySettings should render 1`] = ` -[ - + - , + - - - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/DefaultFiatSettingScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/DefaultFiatSettingScene.test.tsx.snap index 1654070573f..0c12d425535 100644 --- a/src/__tests__/scenes/__snapshots__/DefaultFiatSettingScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/DefaultFiatSettingScene.test.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`DefaultFiatSettingComponent should render with loading props 1`] = ` - - - - - - - - - + - + - + + + + opacity={0.1} + > + + + + - - - - + + - - - Select Fiat - - + + Select Fiat + + + - -  - - - -  +  - - - + + +  + + + + - + - -  - + +  + + - - + - - - + stickyHeaderIndices={[]} + viewabilityConfigCallbackPairs={[]} + > + - - - - - + /> - - USD - - + + + + - United States Dollar - + + USD + + + United States Dollar + + - - - + + + `; diff --git a/src/__tests__/scenes/__snapshots__/EdgeLoginScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/EdgeLoginScene.test.tsx.snap index 168dc8c9bda..b674cbcca3a 100644 --- a/src/__tests__/scenes/__snapshots__/EdgeLoginScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/EdgeLoginScene.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`EdgeLoginScene should render with loading props 1`] = ` - - - + - + `; diff --git a/src/__tests__/scenes/__snapshots__/FioAddressDetailsScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/FioAddressDetailsScene.test.tsx.snap index caa49069a3b..45a4abf090f 100644 --- a/src/__tests__/scenes/__snapshots__/FioAddressDetailsScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/FioAddressDetailsScene.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`FioAddressDetails should render with loading props 1`] = ` - - - + - - - - + `; diff --git a/src/__tests__/scenes/__snapshots__/FioAddressListScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/FioAddressListScene.test.tsx.snap index 81897f61bd9..bd22ca5cf4a 100644 --- a/src/__tests__/scenes/__snapshots__/FioAddressListScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/FioAddressListScene.test.tsx.snap @@ -1,8 +1,14 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`FioAddressList should render with loading props 1`] = ` [ - - - + - - - - - , + , + - , + - - - - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/FioAddressRegisterSelectWalletScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/FioAddressRegisterSelectWalletScene.test.tsx.snap index 51b40a0aab6..74005e00a79 100644 --- a/src/__tests__/scenes/__snapshots__/FioAddressRegisterSelectWalletScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/FioAddressRegisterSelectWalletScene.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`FioAddressRegistered should render with loading props 1`] = ` - - - + - - + `; diff --git a/src/__tests__/scenes/__snapshots__/FioAddressRegisteredScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/FioAddressRegisteredScene.test.tsx.snap index e70fbcd684d..2423bf9ef3e 100644 --- a/src/__tests__/scenes/__snapshots__/FioAddressRegisteredScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/FioAddressRegisteredScene.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`FioAddressRegistered should render with loading props 1`] = ` - - - + - - + `; diff --git a/src/__tests__/scenes/__snapshots__/FioAddressSettingsScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/FioAddressSettingsScene.test.tsx.snap index 3c8049ef96d..32a8135c8c4 100644 --- a/src/__tests__/scenes/__snapshots__/FioAddressSettingsScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/FioAddressSettingsScene.test.tsx.snap @@ -1,23 +1,34 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`FioAddressSettingsComponent should render with loading props 1`] = ` -[ - + - , + - - - - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/FioConnectWalletConfirmScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/FioConnectWalletConfirmScene.test.tsx.snap index 4d716a7ff42..9828aedc0dc 100644 --- a/src/__tests__/scenes/__snapshots__/FioConnectWalletConfirmScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/FioConnectWalletConfirmScene.test.tsx.snap @@ -1,23 +1,34 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`FioConnectWalletConfirm should render with loading props 1`] = ` -[ - + - , + - - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/FioDomainRegisterScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/FioDomainRegisterScene.test.tsx.snap index 0e0e31a3d05..3c28c8c5f74 100644 --- a/src/__tests__/scenes/__snapshots__/FioDomainRegisterScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/FioDomainRegisterScene.test.tsx.snap @@ -1,23 +1,34 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`FioDomainRegister should render with loading props 1`] = ` -[ - + - , + - - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/RequestScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/RequestScene.test.tsx.snap index 4ff78549a01..5556a9f62f9 100644 --- a/src/__tests__/scenes/__snapshots__/RequestScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/RequestScene.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Request should render a blank scene with loaded props 1`] = ` - - - + - - - + `; exports[`Request should render with loaded props 1`] = ` - - - + - + + 0 + + + "value": { + "color": "rgba(255, 255, 255, 1)", + }, + } + } + jestInlineStyle={ + [ + { + "fontFamily": "Quicksand-Medium", + "fontSize": 34, + "includeFontPadding": false, + "padding": 0, + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + keyboardType="decimal-pad" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + returnKeyType="done" + style={ + [ + { + "fontFamily": "Quicksand-Medium", + "fontSize": 34, + "includeFontPadding": false, + "padding": 0, + }, + { + "color": "rgba(255, 255, 255, 1)", + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + value="" + /> + - + + 0 + + + "value": { + "color": "rgba(255, 255, 255, 1)", + }, + } + } + jestInlineStyle={ + [ + { + "fontFamily": "Quicksand-Medium", + "fontSize": 34, + "includeFontPadding": false, + "padding": 0, + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + keyboardType="decimal-pad" + onBlur={[Function]} + onChangeText={[Function]} + onFocus={[Function]} + returnKeyType="done" + style={ + [ + { + "fontFamily": "Quicksand-Medium", + "fontSize": 34, + "includeFontPadding": false, + "padding": 0, + }, + { + "color": "rgba(255, 255, 255, 1)", + }, + { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + ] + } + value="" + /> + - + `; exports[`Request should render with loading props 1`] = ` diff --git a/src/__tests__/scenes/__snapshots__/SendScene2.ui.test.tsx.snap b/src/__tests__/scenes/__snapshots__/SendScene2.ui.test.tsx.snap index d50f1d07082..414e55baf53 100644 --- a/src/__tests__/scenes/__snapshots__/SendScene2.ui.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/SendScene2.ui.test.tsx.snap @@ -1,7 +1,13 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`SendScene2 1 spendTarget 1`] = ` - - - - + - - + + - - - - Send from Wallet - - + + My Bitcoin (BTC) + + + + - My Bitcoin (BTC) - - - - -  - - +  + - + + + + + + Send to Address + + + + some pub address + + + + + +  + + + + - + - Send to Address + Amount: - + 0.00001234 BTC + + - - some pub address - - + (€0.23) + -  +  - + + + + + + + + + - + + Add Another Address + + + - - - - Amount: - - - 0.00001234 BTC - - - (€0.23) - - - - -  - - - + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + + + - - - + + 0 (0) + + + + - Add Another Address - - - - -  - - +  + - + + + + + - - - - Network Fee: - - - 0 (0) - - - +  + + + - -  - - - - + "zIndex": 1, + }, + { + "color": "#888888", + }, + ], + null, + ] + } + > + Enter an Amount + - - - + +`; + +exports[`SendScene2 1 spendTarget with info tiles 1`] = ` + + - - - - - - -  - - - - Enter an Amount - - - - - - -`; - -exports[`SendScene2 1 spendTarget with info tiles 1`] = ` - - - - + - - + + - - - - Send from Wallet - - + + My Bitcoin (BTC) + + + + - My Bitcoin (BTC) - - - - -  - - +  + - + + + + + + Send to Address + + + + some pub address + + + + + +  + + + + - + - Send to Address + Amount: - - - some pub address - - + undefined, + ], + null, + ] + } + > + 0.00001234 BTC + + + (€0.23) + -  +  - + + + + + + + + + - + + Add Another Address + + + - - - - Amount: - - - 0.00001234 BTC - - - (€0.23) - - - - -  - - - + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + + + - - - + + 0 (0) + + + + - Add Another Address - - - - -  - - +  + - - - - - - - - Network Fee: - - - 0 (0) - - - + - -  - - + info tile value 1 + - + + "borderBottomColor": "rgba(255, 255, 255, .1)", + "borderBottomWidth": 1, + "height": 1, + }, + { + "margin": 11, + }, + ] + } + /> + - - - info tile label 1 - - - info tile value 1 - - - - - - + - - info tile label 2 - - - info tile value 2 - - + info tile value 2 + - + - - + } + /> + - + `; exports[`SendScene2 2 spendTargets 1`] = ` - - - - + - - - + + + - + + + Send from Wallet + + + My Bitcoin (BTC) + + + + +  + + + + + + + + + + + - Send from Wallet + Send To some pub address - My Bitcoin (BTC) + Amount: 0.00001234 BTC (€0.23) -  +  - - - - - - - - - - Send To some pub address - - - Amount: 0.00001234 BTC (€0.23) - - - - -  - - - - - - + Send to Address 2 + + - Send to Address 2 + some pub address 2 - + + + +  + + + + + + + + - + - some pub address 2 - - + undefined, + ], + null, + ] + } + > + 0.00012345 BTC + + + (€2.26) + -  +  - - - - - - Amount: 2 - - - 0.00012345 BTC - - - (€2.26) - - - - -  - - - - - + + + - - - + + + - Add Another Address - - - - -  - - +  + - + + + - - - - Network Fee: - - + + 0 (0) + + + + - 0 (0) - - - - -  - - +  + - + - - + } + /> + - + `; exports[`SendScene2 2 spendTargets hide tiles 1`] = ` - - - - + - - - - - - - - - Send from Wallet - - - My Bitcoin (BTC) - - - - -  - - - - - - - - - - - - - - - Send To some pub address - - - Amount: 0.00001234 BTC (€0.23) - - - - -  - - - - - + + + + + - + + Send from Wallet + + + My Bitcoin (BTC) + + + - - - - Amount: 2 - - - 0.00012345 BTC - - - (€2.26) - - - - -  - - - + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + + } + > + + + + + Send To some pub address + + + Amount: 0.00001234 BTC (€0.23) + + + + +  + + + + + - + - Network Fee: + Amount: 2 + 0.00012345 BTC + + - 0 (0) + (€2.26) -  +  + + + + + + + + + Network Fee: + + + 0 (0) + + + + +  + + + + + + + - - + } + /> + - + `; exports[`SendScene2 2 spendTargets hide tiles 2`] = ` - - - - + - - - - - - - - - Send from Wallet - - - My Bitcoin (BTC) - - - - -  - - - - - - - + + - + + Send from Wallet + + + My Bitcoin (BTC) + + + - - - - Send To some pub address - - - Amount: 0.00001234 BTC (€0.23) - - - - -  - - - + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + + + + + + + + + } + > - Send to Address 2 + Send To some pub address - + Amount: 0.00001234 BTC (€0.23) + + + + +  + + + + + + + + + Send to Address 2 + + - - some pub address 2 - - - - -  + some pub address 2 + + +  + + - + - + + + - - - - Network Fee: - - + + 0 (0) + + + + - 0 (0) - - - - -  - - +  + - + - - + } + /> + - + `; exports[`SendScene2 2 spendTargets hide tiles 3`] = ` - - - - + + - + > - - - - - - Send from Wallet - - - My Bitcoin (BTC) - - - - -  - - - - - - - + /> - + ] + } + > + + Send from Wallet + + + My Bitcoin (BTC) + + + - - - - Send To some pub address - - - Amount: 0.00001234 BTC (€0.23) - - - - -  - - - + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + + } + > + - - Network Fee: + Send To some pub address - 0 (0) + Amount: 0.00001234 BTC (€0.23) -  +  + + + + + + + + + Network Fee: + + + 0 (0) + + + + +  + + + + + + + - - + } + /> + - + `; exports[`SendScene2 2 spendTargets lock tiles 1`] = ` - - - - + - - - - - - - - - Send from Wallet - - - My Bitcoin (BTC) - - - - -  - - - - - - - + + + - - - - - Send To some pub address - - - Amount: 0.00001234 BTC (€0.23) - - - + - -  - - - + "color": "#FFFFFF", + "fontSize": 22, + }, + null, + ] + } + > + My Bitcoin (BTC) + - + +  + + + + + + + + + + + + } + > - Send to Address 2 + Send To some pub address - + Amount: 0.00001234 BTC (€0.23) + + + - + - some pub address 2 - - + ], + { + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + + + - - - + + - - Amount: 2 - - - 0.00012345 BTC - - - (€2.26) - - - - -  - - + some pub address 2 + - - - - - - - + - Network Fee: + Amount: 2 + 0.00012345 BTC + + - 0 (0) + (€2.26) -  +  + + + + + + + + + Network Fee: + + + 0 (0) + + + + +  + + + + + + + - - + } + /> + - + `; exports[`SendScene2 2 spendTargets lock tiles 2`] = ` - - - - + - - - - - - - - - Send from Wallet - - - My Bitcoin (BTC) - - - - -  - - - - - - - + + - + + Send from Wallet + + + My Bitcoin (BTC) + + + - - - - Send To some pub address - - - Amount: 0.00001234 BTC (€0.23) - - - + ], + { + "fontFamily": "FontAwesome", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + + + + + + + + + - - Send to Address 2 + Send To some pub address - + Amount: 0.00001234 BTC (€0.23) + + + + + + + + + Send to Address 2 + + - - some pub address 2 - - - - -  + some pub address 2 - - + +  + + + + + + - - - Amount: 2 - - - 0.00012345 BTC - - + - (€2.26) - - + ], + null, + ] + } + > + 0.00012345 BTC + + + (€2.26) + - + + + } + > + - - - - Network Fee: - - - 0 (0) - - - + - + + + -  - - + ], + { + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + - + - - + } + /> + - + `; exports[`SendScene2 2 spendTargets lock tiles 3`] = ` - - - - - - - + + + + + + + + + + + + + Send from Wallet + + + My Bitcoin (BTC) + + + + +  + + + + + + + - + layout={ + LinearTransition { + "build": [Function], + "durationV": 300, + "randomizeDelay": false, + "reduceMotionV": "system", + } + } + > + - - - - Send from Wallet - - - My Bitcoin (BTC) - - - + -  + Send To some pub address + + + Amount: 0.00001234 BTC (€0.23) - - - - - + + Send to Address 2 + + - - - - Send To some pub address - - - Amount: 0.00001234 BTC (€0.23) - - + some pub address 2 + - + + + } + layout={ + LinearTransition { + "build": [Function], + "durationV": 300, + "randomizeDelay": false, + "reduceMotionV": "system", + } + } + > - Send to Address 2 + Amount: 2 - - - some pub address 2 - - - - - - - - + 0.00012345 BTC + + - - Amount: 2 - - - 0.00012345 BTC - - - (€2.26) - - + (€2.26) + - + + + } + > + - - - - Network Fee: - - + + 0 (0) + + + + - 0 (0) - - - - -  - - +  + - + - - + } + /> + - + `; exports[`SendScene2 Render SendScene 1`] = ` - - - - + - + } + > + + + + + + + + Send from Wallet + + + My Bitcoin (BTC) + + + + +  + + + + + + + + - - - - Send from Wallet - - - My Bitcoin (BTC) - - + Send to Address + - -  - - - - - - - - - - - - - - Send to Address - + +  + + + Enter + + + - +  + + - -  - - - Enter - - - + + + - -  - - - Scan - - - + - -  - - - Paste - - + Paste + - + - + - + + - + + + - +  + + + Scam Warning + + + + + + • + + - - + > + Edge will not give financial advice. + + -  + • - Scam Warning + Cryptocurrency transactions are irreversible. - - - • - - - Edge will not give financial advice. - - - - - • - - - Cryptocurrency transactions are irreversible. - - - + - - • - - - Do not send money to people or organizations you do not know. - - + Do not send money to people or organizations you do not know. + - - If you have any questions or concerns regarding this send, please contact support@edge.app - + + If you have any questions or concerns regarding this send, please contact support@edge.app + - + - + `; diff --git a/src/__tests__/scenes/__snapshots__/SettingsScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/SettingsScene.test.tsx.snap index 7de4ddfc3ae..392046753ec 100644 --- a/src/__tests__/scenes/__snapshots__/SettingsScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/SettingsScene.test.tsx.snap @@ -1,23 +1,34 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`SettingsScene should render SettingsScene 1`] = ` -[ - + - , + - - - - - - - - - - - - - - - - - - - - - - - - - - , -] + + `; diff --git a/src/__tests__/scenes/__snapshots__/SwapConfirmationScene.test.tsx.snap b/src/__tests__/scenes/__snapshots__/SwapConfirmationScene.test.tsx.snap index 058bf940770..c2df9296d95 100644 --- a/src/__tests__/scenes/__snapshots__/SwapConfirmationScene.test.tsx.snap +++ b/src/__tests__/scenes/__snapshots__/SwapConfirmationScene.test.tsx.snap @@ -1,152 +1,69 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`SwapConfirmationScene should render with loading props 1`] = ` [ - - - - - - - - - + - + - + + + + opacity={0.1} + > + + + + - - - , - + + - - + } + style={ + [ + { + "height": 1334, + "width": 750, + }, + { + "maxHeight": 1334, + }, + { + "padding": 0, + }, + ] + } + > + - + + Exchange + + + - Exchange - + /> - - - - + - - + > + + - -  - + +  + + + High Price Impact + + - High Price Impact + This swap rate is significantly less favorable than the current market rate. - - This swap rate is significantly less favorable than the current market rate. - - - - - + - - - - - + + + - - - - + > + + + + - - BTC - - - - My Bitcoin - - - - - ₿ 0.0001 - - + > + + BTC + + - €1.83 + My Bitcoin - - - - @@ -982,707 +899,362 @@ exports[`SwapConfirmationScene should render with loading props 1`] = ` "fontSize": 22, "includeFontPadding": false, }, - { - "fontSize": 17, - "marginTop": 6, - }, + undefined, null, ] } > - Max network fee + ₿ 0.0001 - - - - 0.00000001 BTC (<0.01 EUR) - + + €1.83 + + - - Total Amount - - - - + Max network fee + + + - 1.83 EUR - + + 0.00000001 BTC (<0.01 EUR) + + - - - - - - - - - To - - - - - - - - - - - - + - + Total Amount + + + - - - + > + 1.83 EUR + + + + + + + - + - - ETH - - - - My Ethereum - - + ], + null, + ] + } + > + To + - - Ξ 0 - - - - €0.000000 - - - (99.99%) - - - + /> - - - - + + + + vbHeight={61} + vbWidth={61} + width={61} + > + + + + - Powered by + ETH + + + My Ethereum + + + + + Ξ 0 + + - - + > + €0.000000 + - Tap to Change Provider - + (99.99%) + + + + + + + + + + + + + + + + + + Powered by + + + + + + Tap to Change Provider + + - - -  - + [ + { + "color": "#00f1a2", + "fontSize": 22, + }, + undefined, + ], + { + "fontFamily": "Feather", + "fontStyle": "normal", + "fontWeight": "normal", + }, + {}, + ] + } + > +  + + - - - - + + - + +  + + + -  + Slide to Confirm - - Slide to Confirm - - - , + + , - - - - - - - - + - + - + + + + opacity={0.1} + > + + + + - - - , - + + - - + } + style={ + [ + { + "height": 1334, + "width": 750, + }, + { + "maxHeight": 1334, + }, + { + "padding": 0, + }, + ] + } + > + - + - - - + + - Select Source Wallet - + ] + } + > + Select Source Wallet + + - - - + + - + +  + + + -  - + /> - - - - + - - - + + - Select Receiving Wallet - + ] + } + > + Select Receiving Wallet + + - - - + + /> + - - , + + , - - + - , + , - - - - - - - + - + + + + opacity={0.1} + > + + + - - - , - + + - - + } + style={ + [ + { + "height": 1334, + "width": 750, + }, + { + "maxHeight": 1334, + }, + { + "padding": 0, + }, + ] + } + > + - + } + jestAnimatedStyle={ + { + "value": {}, + } + } + layout={ + LinearTransition { + "build": [Function], + "durationV": 300, + "randomizeDelay": false, + "reduceMotionV": "system", + } + } + > - - + } + /> - - Sender Name - + + - timmy + Sender Name + + + timmy + + - - - + -  - + {}, + ] + } + > +  + + - - - + - - - - - Bitcoin Amount - - - ₿ 0.123 - - - - - - Amount in USD - - - $ + Bitcoin Amount - 0.00 + ₿ 0.123 - - -  - - - - - + /> - - Amount at Current Price - - - $ + Amount in USD + + + $ + + + 0.00 + + + + - 1230.00 +  + + + + + - (0%) + Amount at Current Price + + + $ + + + 1230.00 + + + (0%) + + - - - + "x": 0, + "y": 0.5, + } + } + style={ + [ + { + "borderBottomColor": "rgba(255, 255, 255, .1)", + "borderBottomWidth": 1, + "height": 1, + }, + { + "margin": 11, + }, + ] + } + /> - - Date - - + Date + + + 8/31/2018, 2:59:40 PM + + + + + + - 8/31/2018, 2:59:40 PM - + + Wallet + + + wallet name + + - + + + + - - Wallet - - + Category + + + Income + + + + +  + + + + + + - wallet name - + + Notes + + + Tap to Add Note (Optional) + + + + +  + + - - + /> + - + } + jestAnimatedStyle={ + { + "value": {}, + } + } + layout={ + LinearTransition { + "build": [Function], + "durationV": 300, + "randomizeDelay": false, + "reduceMotionV": "system", + } + } + > + - - Category - - - Income - - - - + Transaction ID + + + this is the txid + + + -  - + +  + + - + + + + - - Notes - - - Tap to Add Note (Optional) - - - - + View Advanced Transaction Data + + + Show in Explorer + + + -  - + +  + + - - - - - - - - - - - + "x": 0, + "y": 0.5, + } + } + style={ + [ + { + "borderBottomColor": "rgba(255, 255, 255, .1)", + "borderBottomWidth": 1, + "height": 1, + }, + { + "margin": 11, + }, + ] + } + /> - - Transaction ID - - + My Receive Addresses + + + this is an address + + + + +  + + + + + + - this is the txid - + + Raw Transaction Bytes + + + this is a signed tx + + + + +  + + + + + + + + - + -  - + + Done + + - + + , + , +] +`; + +exports[`TransactionDetailsScene should render with negative nativeAmount and fiatAmount 1`] = ` +[ + + + + - + + + + - - - + + + + + + + + - - - View Advanced Transaction Data - - - Show in Explorer - - - - -  - - - - - - - - My Receive Addresses - - - this is an address - - - - -  - - - - - - - - Raw Transaction Bytes - - - this is a signed tx - - - - -  - - - - - - - - - - - - - - Done - - - - - - - - - , - , -] -`; - -exports[`TransactionDetailsScene should render with negative nativeAmount and fiatAmount 1`] = ` -[ - - - - - - - - - - - - - - , - - - - - - - - - - - - - Recipient Name - - - - timmy - - - - - -  - - - - - - - - - - - - - - Bitcoin Amount - - - ₿ 0.12299999 (+0 fee) - - - - - - - - Amount in USD - - - - $ - - - 6392.93 - - - - - -  - - - - - - - - Amount at Current Price - - - - $ - - - 1230.00 - - - (-80.75%) - - - - - - - - - Date - - - 8/31/2018, 2:59:40 PM - - - - + + + + + - Wallet + Recipient Name + + + timmy + + + + - wallet name +  - - + /> - + } + jestAnimatedStyle={ + { + "value": {}, + } + } + layout={ + LinearTransition { + "build": [Function], + "durationV": 300, + "randomizeDelay": false, + "reduceMotionV": "system", + } + } + > + - - Category - - + - Expense - + + Bitcoin Amount + + + ₿ 0.12299999 (+0 fee) + + - + - + + Amount in USD + + + + $ + + + 6392.93 + + + + -  - + +  + + - - - - - - Notes - - + + - Tap to Add Note (Optional) - + + Amount at Current Price + + + + $ + + + 1230.00 + + + (-80.75%) + + + - + - + -  - + null, + ] + } + > + Date + + + 8/31/2018, 2:59:40 PM + + - - - - - - - - - - - + "x": 1, + "y": 0.5, + } + } + start={ + { + "x": 0, + "y": 0.5, + } + } + style={ + [ + { + "borderBottomColor": "rgba(255, 255, 255, .1)", + "borderBottomWidth": 1, + "height": 1, + }, + { + "margin": 11, + }, + ] + } + /> - - Transaction ID - - - this is the txid - - - - -  - + null, + ] + } + > + Wallet + + + wallet name + + - - - - + - - View Advanced Transaction Data - - + - Show in Explorer - + + Category + + + Expense + + + + +  + + - + - + + Notes + + + Tap to Add Note (Optional) + + + -  - + +  + + - + + + + + + - - My Receive Addresses - - - this is an address - - - - + Transaction ID + + + this is the txid + + + -  - + +  + + - + + + + - - Raw Transaction Bytes - - + View Advanced Transaction Data + + + Show in Explorer + + + - this is a signed tx - + +  + + - + + + + My Receive Addresses + + + this is an address + + + + +  + + + + + - + + Raw Transaction Bytes + + + this is a signed tx + + + -  - + +  + + - - - - - - + + - Done - + ] + } + > + Done + + - - , + + , { } const pillBackground: ViewStyle = { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, borderRadius: theme.rem(theme.buttonBorderRadiusRem) } @@ -282,7 +282,7 @@ const getStyles = cacheStyles((theme: Theme) => { fontSize: theme.rem(theme.escapeButtonFontSizeRem) }, spinnerOverlay: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, alignItems: 'center', justifyContent: 'center' } diff --git a/src/components/buttons/IconButton.tsx b/src/components/buttons/IconButton.tsx index 15daa2dd059..51fb6f2597b 100644 --- a/src/components/buttons/IconButton.tsx +++ b/src/components/buttons/IconButton.tsx @@ -1,6 +1,6 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { Platform, View } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import { EdgeTouchableOpacity } from '../common/EdgeTouchableOpacity' import { cacheStyles, type Theme, useTheme } from '../services/ThemeContext' diff --git a/src/components/buttons/KavButtons.tsx b/src/components/buttons/KavButtons.tsx index b429fc3541b..020cf198f34 100644 --- a/src/components/buttons/KavButtons.tsx +++ b/src/components/buttons/KavButtons.tsx @@ -1,7 +1,10 @@ import * as React from 'react' import { useHandler } from '../../hooks/useHandler' -import { BlurBackgroundNoRoundedCorners } from '../common/BlurBackground' +import { + BlurBackgroundNoRoundedCorners, + getBlurFallbackStyle +} from '../common/BlurBackground' import { EdgeAnim, fadeInDown10 } from '../common/EdgeAnim' import { cacheStyles, type Theme, useTheme } from '../services/ThemeContext' import type { ButtonInfo } from './ButtonsView' @@ -81,7 +84,8 @@ const getStyles = cacheStyles((theme: Theme) => ({ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', - padding: theme.rem(0.5) + padding: theme.rem(0.5), + ...getBlurFallbackStyle(theme) }, tertiary: { marginTop: theme.rem(0.25) diff --git a/src/components/buttons/PillButton.tsx b/src/components/buttons/PillButton.tsx index 33bbc421128..2e9db942d0d 100644 --- a/src/components/buttons/PillButton.tsx +++ b/src/components/buttons/PillButton.tsx @@ -1,6 +1,6 @@ +import { LinearGradient } from 'expo-linear-gradient' import React from 'react' import { StyleSheet } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import { type LayoutStyleProps, @@ -95,7 +95,7 @@ const getStyles = cacheStyles((theme: ReturnType) => ({ margin: theme.rem(0.5) }, gradient: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, borderRadius: theme.rem(3) }, label: { diff --git a/src/components/cards/EdgeCard.tsx b/src/components/cards/EdgeCard.tsx index fa8cf216822..8c85cc27c02 100644 --- a/src/components/cards/EdgeCard.tsx +++ b/src/components/cards/EdgeCard.tsx @@ -1,9 +1,7 @@ +import { LinearGradient, type LinearGradientProps } from 'expo-linear-gradient' import * as React from 'react' import { StyleSheet, View } from 'react-native' import FastImage from 'react-native-fast-image' -import LinearGradient, { - type LinearGradientProps -} from 'react-native-linear-gradient' import { useHandler } from '../../hooks/useHandler' import { triggerHaptic } from '../../util/haptic' @@ -196,7 +194,7 @@ export const EdgeCard: React.FC = props => { const getStyles = cacheStyles((theme: Theme) => ({ backgroundFill: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, borderRadius: theme.cardBorderRadius, backgroundColor: theme.cardBaseColor, overflow: 'hidden' @@ -212,7 +210,7 @@ const getStyles = cacheStyles((theme: Theme) => ({ position: 'absolute' }, overlayContainer: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, alignItems: 'center', backgroundColor: theme.cardOverlayDisabled, borderRadius: theme.cardBorderRadius, diff --git a/src/components/cards/GiftCardDisplayCard.tsx b/src/components/cards/GiftCardDisplayCard.tsx index 85b3933ed76..56a28bfae49 100644 --- a/src/components/cards/GiftCardDisplayCard.tsx +++ b/src/components/cards/GiftCardDisplayCard.tsx @@ -1,8 +1,8 @@ import Clipboard from '@react-native-clipboard/clipboard' +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { StyleSheet, View } from 'react-native' import FastImage from 'react-native-fast-image' -import LinearGradient from 'react-native-linear-gradient' import { getFiatSymbol } from '../../constants/WalletAndCurrencyConstants' import { useHandler } from '../../hooks/useHandler' diff --git a/src/components/cards/HomeTileCard.tsx b/src/components/cards/HomeTileCard.tsx index 2e825255275..61df83a8730 100644 --- a/src/components/cards/HomeTileCard.tsx +++ b/src/components/cards/HomeTileCard.tsx @@ -1,6 +1,6 @@ +import type { LinearGradientProps } from 'expo-linear-gradient' import * as React from 'react' import { View } from 'react-native' -import type { LinearGradientProps } from 'react-native-linear-gradient' import { useHandler } from '../../hooks/useHandler' import { cacheStyles, type Theme, useTheme } from '../services/ThemeContext' diff --git a/src/components/cards/InfoCard.tsx b/src/components/cards/InfoCard.tsx index 8d4400ce8d1..418eb872db9 100644 --- a/src/components/cards/InfoCard.tsx +++ b/src/components/cards/InfoCard.tsx @@ -1,7 +1,7 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { View } from 'react-native' import FastImage from 'react-native-fast-image' -import LinearGradient from 'react-native-linear-gradient' import { linkReferralWithCurrencies } from '../../actions/WalletListActions' import { useHandler } from '../../hooks/useHandler' diff --git a/src/components/common/AirshipDropdown.tsx b/src/components/common/AirshipDropdown.tsx index 7308fabe8bd..624b6a3a77a 100644 --- a/src/components/common/AirshipDropdown.tsx +++ b/src/components/common/AirshipDropdown.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { Dimensions, View } from 'react-native' +import { Dimensions, Platform, View } from 'react-native' import type { AirshipBridge } from 'react-native-airship' import { Gesture, GestureDetector } from 'react-native-gesture-handler' import { cacheStyles } from 'react-native-patina' @@ -8,6 +8,7 @@ import Animated, { useSharedValue, withTiming } from 'react-native-reanimated' +import { useSafeAreaInsets } from 'react-native-safe-area-context' import { runOnJS } from 'react-native-worklets' import { useHandler } from '../../hooks/useHandler' @@ -47,6 +48,15 @@ export function AirshipDropdown(props: Props): React.ReactElement { const theme = useTheme() const styles = getStyles(theme) + // The Airship layer's own safe-area measurement only works on iOS, and + // edge-to-edge Android draws the window under the status bar, so push the + // content below it ourselves. iOS already gets this from the layer, so + // adding it here would double the gap: + const insets = useSafeAreaInsets() + const androidInsetStyle = { + paddingTop: safeAreaGap + (Platform.OS === 'android' ? insets.top : 0) + } + // The user must drag this far to close the drop-down: const closeThreshold = theme.rem(1.5) @@ -136,7 +146,7 @@ export function AirshipDropdown(props: Props): React.ReactElement { return ( - + {children} diff --git a/src/components/common/BlurBackground.tsx b/src/components/common/BlurBackground.tsx index 6f3cf1cfbad..5a3d21d5470 100644 --- a/src/components/common/BlurBackground.tsx +++ b/src/components/common/BlurBackground.tsx @@ -1,42 +1,272 @@ +import { BlurTargetView, BlurView as ExpoBlurView } from 'expo-blur' import React from 'react' -import { Platform, StyleSheet } from 'react-native' +import { Platform, StyleSheet, View } from 'react-native' import { BlurView } from 'rn-id-blurview' import { cacheStyles, type Theme, useTheme } from '../services/ThemeContext' +export { BlurTargetView } + const isAndroid = Platform.OS === 'android' -/** A blur background WITH rounded corners, used for most components */ -export const BlurBackground = () => { +// Android below 12 (API 31) has no working blur under the new architecture: +// RenderScript cannot snapshot Fabric-rendered content, and painting the +// content behind a modal is impossible there. Hosts paint a solid background +// instead (see getBlurFallbackStyle). +export const isBlurDisabled = isAndroid && Number(Platform.Version) < 31 + +/** + * Solid background for containers whose BlurBackground cannot render (see + * isBlurDisabled). Spread into a style object: it contributes nothing at all + * on capable devices, leaving their styles untouched. + */ +export const getBlurFallbackStyle = ( + theme: Theme +): { backgroundColor: string } | null => + isBlurDisabled + ? { backgroundColor: theme.isDark ? '#161616' : '#f6f6f6' } + : null + +/** + * The content the app's blur surfaces sample from. On Android 12+ the blur + * implementation (Dimezis BlurView 3, via expo-blur) can only blur content + * wrapped in an explicit target view - "snapshot the whole window" no longer + * exists, and the old whole-window path silently renders nothing under the + * new architecture. On iOS this wrapper is an ordinary View. + */ +const BlurTargetContext = + React.createContext | null>(null) + +/** Owns the blur-target ref. Mount above both the target and the Airship + * layer whose modals sample it. */ +export function BlurTargetProvider(props: { + children: React.ReactNode +}): React.ReactElement { + const ref = React.useRef(null) + return ( + + {props.children} + + ) +} + +/** Marks its children as the content blur surfaces sample. Wrap the app's + * scene tree, NOT the modal layer - a modal must not sample itself. */ +export function BlurTarget(props: { + children: React.ReactNode +}): React.ReactElement { + const ref = React.useContext(BlurTargetContext) + return ( + + {props.children} + + ) +} + +export const useBlurTarget = (): React.RefObject | undefined => + React.useContext(BlurTargetContext) ?? undefined + +// +// Focused-scene blur target: the chrome overlaying a scene (header, footer, +// tab bar, notification cards) blurs THAT scene's content. Chrome cannot use +// the app-level target above because chrome lives inside it, and a blur view +// must never sample a tree containing itself. Each SceneWrapper publishes its +// content view here while focused; chrome subscribes to the current one. +// + +const sceneBlurRegistry: { + ref: React.RefObject | null + listeners: Set<() => void> +} = { ref: null, listeners: new Set() } + +const emitSceneBlur = (): void => { + sceneBlurRegistry.listeners.forEach(listener => { + listener() + }) +} +const subscribeSceneBlur = (listener: () => void): (() => void) => { + sceneBlurRegistry.listeners.add(listener) + return () => sceneBlurRegistry.listeners.delete(listener) +} +const getFocusedSceneBlurTarget = (): React.RefObject | null => + sceneBlurRegistry.ref + +/** + * For SceneWrapper: returns a ref to attach to the scene's BlurTargetView, + * published as the focused scene's blur target while `active`. + */ +export function useSceneBlurTarget( + active: boolean +): React.RefObject { + const ref = React.useRef(null) + React.useEffect(() => { + if (!active) return + sceneBlurRegistry.ref = ref + emitSceneBlur() + return () => { + if (sceneBlurRegistry.ref === ref) { + sceneBlurRegistry.ref = null + emitSceneBlur() + } + } + }, [active]) + return ref +} + +interface AndroidBlurProps { + rounded?: boolean + /** iOS-style blur tint. Defaults to the theme's mode. */ + reverseTint?: boolean + /** Sample this target instead of the app-level one. */ + targetRef?: React.RefObject +} + +/** The Android 12+ blur: expo-blur's Dimezis 3 backend, which works under + * the new architecture but needs the BlurTarget above. Falls back to a plain + * tint when no target is mounted (e.g. tests). */ +const AndroidBlur = (props: AndroidBlurProps): React.ReactElement => { + const { rounded = false, reverseTint = false, targetRef } = props const theme = useTheme() - const styles = getStyles(theme) + const stylesLocal = getStyles(theme) + const appTarget = useBlurTarget() + const blurTarget = targetRef ?? appTarget + const dark = reverseTint ? !theme.isDark : theme.isDark + return ( + + ) +} + +/** + * A blur background WITH rounded corners, for content living INSIDE the + * blur target (cards, chrome). On Android this renders the tint only: these + * surfaces sit inside the BlurTarget, and a blur view must never sample a + * tree containing itself - that recursion overflows the renderer's stack. + * Per-surface targets are the future fix; the tint is today's shipped look. + */ +export const BlurBackground: React.FC = () => { + const theme = useTheme() + const stylesLocal = getStyles(theme) + if (isBlurDisabled) return null + if (isAndroid) { + return + } return ( ) } -/** A blur background WITHOUT rounded corners. For the scene header/footer */ -export const BlurBackgroundNoRoundedCorners = () => { +/** A blur background WITHOUT rounded corners. For the scene header/footer, + * which also live inside the blur target - see BlurBackground. */ +export const BlurBackgroundNoRoundedCorners: React.FC = () => { const theme = useTheme() - const styles = getStyles(theme) + const stylesLocal = getStyles(theme) + if (isBlurDisabled) return null + if (isAndroid) return return ( ) } +/** The blur behind chrome overlaying the focused scene: the header, scene + * footer, tab bar, and notification cards. These live inside the app-level + * target, so on Android they sample the focused scene's own target instead, + * falling back to their long-standing tint when no scene publishes one + * (login, scenes without a wrapped content view). */ +export const ChromeBlurBackground: React.FC<{ rounded?: boolean }> = props => { + const { rounded = false } = props + const theme = useTheme() + const stylesLocal = getStyles(theme) + const sceneTarget = React.useSyncExternalStore( + subscribeSceneBlur, + getFocusedSceneBlurTarget + ) + + if (isBlurDisabled) return null + if (isAndroid) { + if (sceneTarget == null) { + return ( + + ) + } + return + } + return ( + + ) +} + +/** The blur behind modal sheets. Modals mount in the Airship layer, outside + * the BlurTarget, so on Android 12+ they can sample it for real blur. */ +export const ModalBlurBackground: React.FC = () => { + const theme = useTheme() + const stylesLocal = getStyles(theme) + + if (isBlurDisabled) return null + if (isAndroid) return + return ( + + ) +} + +/** Full-screen blur with the tint flipped against the theme, for standing out + * over content rather than blending in (the QR modal's underlay). */ +export const BlurUnderlayReversed: React.FC = () => { + const theme = useTheme() + + if (isBlurDisabled) return null + if (isAndroid) return + return ( + + ) +} + +const styles = StyleSheet.create({ + blurTarget: { flex: 1 } +}) + const getStyles = cacheStyles((theme: Theme) => ({ blurView: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, // We need this backgroundColor because Android applies an overlay to the // entire screen for the BlurView by default. We change this default // behavior with the transparent overlayColor, so we add this background @@ -47,6 +277,9 @@ const getStyles = cacheStyles((theme: Theme) => ({ : '#ffffff55' : undefined }, + clip: { + overflow: 'hidden' + }, roundCorner: { // Weird quirk: iOS needs rounding at this component level to properly round // corners, even if the parent has round corners. Parents can't hide diff --git a/src/components/common/DividerLineUi4.tsx b/src/components/common/DividerLineUi4.tsx index 43b229ea024..3425d85dbb0 100644 --- a/src/components/common/DividerLineUi4.tsx +++ b/src/components/common/DividerLineUi4.tsx @@ -1,6 +1,7 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' -import LinearGradient from 'react-native-linear-gradient' +import type { GradientColors } from '../../types/Theme' import { fixSides, mapSides, sidesToMargin } from '../../util/sides' import { cacheStyles, type Theme, useTheme } from '../services/ThemeContext' import { DEFAULT_MARGIN_REM } from './Margins' @@ -12,7 +13,7 @@ interface Props { marginRem?: number[] | number /** Unused by current Edge themes, but supported for third-party integrations. */ - colors?: string[] + colors?: GradientColors } const start = { x: 0, y: 0.5 } diff --git a/src/components/common/DotsBackground.tsx b/src/components/common/DotsBackground.tsx index 265aba660df..4bc457e68f8 100644 --- a/src/components/common/DotsBackground.tsx +++ b/src/components/common/DotsBackground.tsx @@ -1,10 +1,10 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { type LayoutChangeEvent, StyleSheet } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import { Circle, Defs, G, RadialGradient, Stop, Svg } from 'react-native-svg' import { useHandler } from '../../hooks/useHandler' -import type { OverrideDots, ThemeDot } from '../../types/Theme' +import type { GradientColors, OverrideDots, ThemeDot } from '../../types/Theme' import { useTheme } from '../services/ThemeContext' export interface AccentColors { @@ -12,7 +12,7 @@ export interface AccentColors { } interface Props { // Optional backgroundGradient overrides - backgroundGradientColors?: string[] + backgroundGradientColors?: GradientColors backgroundGradientStart?: { x: number; y: number } backgroundGradientEnd?: { x: number; y: number } overrideDots?: OverrideDots diff --git a/src/components/common/EdgeAnim.tsx b/src/components/common/EdgeAnim.tsx index 78b72d4e3dd..9fa58dbaf6a 100644 --- a/src/components/common/EdgeAnim.tsx +++ b/src/components/common/EdgeAnim.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import type { ViewProps } from 'react-native' import Animated, { + type BaseAnimationBuilder, type ComplexAnimationBuilder, Easing, FadeIn, @@ -59,7 +60,13 @@ export const fadeInRight: Anim = { type: 'fadeInRight' } export const fadeOut: Anim = { type: 'fadeOut' } -type AnimBuilder = typeof ComplexAnimationBuilder +// reanimated 4.5 made ComplexAnimationBuilder generic and each preset extends +// it with its own value type, so the class sides no longer share a common +// `typeof` — describe just the static entry point the builder chain uses, +// matching reanimated's declared (widened) return type: +interface AnimBuilder { + delay: (durationMs: number) => BaseAnimationBuilder +} type AnimTypeFadeIns = | 'fadeIn' | 'fadeInDown' @@ -98,7 +105,7 @@ interface Props { * TODO: Remove default once we have audited all instances of EdgeAnim * explicitly enabling the default LAYOUT_ANIMATION for those instances. */ - layout?: ComplexAnimationBuilder + layout?: React.ComponentProps['layout'] /** TODO: This is a temporary way to disable the `layout` default * LAYOUT_ANIMATION. Remove this once we have audited all instances of @@ -138,8 +145,9 @@ const getAnimBuilder = (anim?: Anim): ComplexAnimationBuilder | undefined => { } = anim const animBuilder = builderMap[type] - let builder = animBuilder - .delay(delay) + // reanimated declares the preset statics as returning the base builder, but + // at runtime they return the preset instance with the full complex surface: + let builder = (animBuilder.delay(delay) as ComplexAnimationBuilder) .duration(duration) .easing(Easing.inOut(Easing.quad)) diff --git a/src/components/common/SceneWrapper.tsx b/src/components/common/SceneWrapper.tsx index a484d35d953..6b2b9862f2b 100644 --- a/src/components/common/SceneWrapper.tsx +++ b/src/components/common/SceneWrapper.tsx @@ -18,6 +18,7 @@ import { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller' import Reanimated, { + type AnimatedStyle, useAnimatedReaction, useAnimatedStyle, useSharedValue @@ -41,12 +42,13 @@ import { } from '../../state/SceneScrollState' import { useSelector } from '../../types/reactRedux' import type { NavigationBase } from '../../types/routerTypes' -import type { OverrideDots } from '../../types/Theme' +import type { GradientColors, OverrideDots } from '../../types/Theme' import { styled } from '../hoc/styled' // eslint-disable-next-line @typescript-eslint/no-unused-vars import { SceneContainer } from '../layout/SceneContainer' import { NotificationView } from '../notification/NotificationView' import { MAX_TAB_BAR_HEIGHT } from '../themed/MenuTabs' +import { BlurTargetView, useSceneBlurTarget } from './BlurBackground' import { type AccentColors, DotsBackground } from './DotsBackground' export interface InsetStyle { @@ -91,7 +93,7 @@ interface SceneWrapperProps { avoidKeyboard?: boolean // Optional backgroundGradient overrides - backgroundGradientColors?: string[] + backgroundGradientColors?: GradientColors backgroundGradientStart?: { x: number; y: number } backgroundGradientEnd?: { x: number; y: number } @@ -171,6 +173,11 @@ function SceneWrapperComponent(props: SceneWrapperProps): React.ReactElement { const navigation = useNavigation() const isIos = Platform.OS === 'ios' + // Publish this scene's content as the blur target chrome samples while the + // scene is focused (see BlurBackground): + const isSceneFocused = useIsFocused() + const sceneBlurTargetRef = useSceneBlurTarget(isSceneFocused) + // Track dock height for content padding when dockProps is used const [dockHeight, setDockHeight] = useState(0) @@ -399,21 +406,27 @@ function SceneWrapperComponent(props: SceneWrapperProps): React.ReactElement { if (scroll) { return ( <> - - - {memoizedChildren} - + + + {memoizedChildren} + + {renderFooter == null ? null : ( - + + - {memoizedChildren} + {memoizedChildren} + {renderFooter == null ? null : ( - {memoizedChildren} - + {renderFooter == null ? null : ( { children: React.ReactNode - keyboardAwareStyle: ViewStyle + keyboardAwareStyle: AnimatedStyle insetStyle: InsetStyle layoutStyle: { height: number diff --git a/src/components/hoc/styled.tsx b/src/components/hoc/styled.tsx index efa641e7780..aab037a790c 100644 --- a/src/components/hoc/styled.tsx +++ b/src/components/hoc/styled.tsx @@ -6,6 +6,7 @@ import { type TextStyle, type ViewStyle } from 'react-native' +import type { AnimatedStyle } from 'react-native-reanimated' import { cacheStyles, @@ -20,11 +21,18 @@ interface StyleProps { type ValidStyles = ImageStyle | TextStyle | ViewStyle +// Reanimated 4 `useAnimatedStyle` returns an AnimatedStyleHandle (which +// AnimatedStyle includes). Only the dynamic `theme => props => style` path may +// return these; the cached `theme => style` and static-object paths stay plain. +type DynamicStyles = + | ValidStyles + | AnimatedStyle + type Styler = | ValidStyles | (( theme: Theme - ) => ValidStyles | ((props: Props) => ValidStyles | ValidStyles[])) + ) => ValidStyles | ((props: Props) => DynamicStyles | DynamicStyles[])) /** * Creates a styled component using a `styler` parameter. The `styler` can be the @@ -43,13 +51,15 @@ type Styler = */ export function styled( Component: React.ComponentType -) { +): ( + styler: Styler +) => React.ComponentType & Props> { function makeStyledComponent( styler: Styler ): React.ComponentType & Props> { function addName

& Props>( StyledComponent: React.ComponentType

- ) { + ): React.ComponentType

{ // Use optional chaining to handle circular dependencies where Component // may be undefined during module loading. StyledComponent.displayName = @@ -65,7 +75,7 @@ export function styled( if (typeof rv === 'function') { const stylerNarrowed = styler as ( theme: Theme - ) => (props: Props) => ValidStyles | ValidStyles[] + ) => (props: Props) => DynamicStyles | DynamicStyles[] return addName(function StyledComponent(props) { const theme = useTheme() const style = stylerNarrowed(theme)(props) @@ -110,7 +120,12 @@ export function styled( export function styledWithRef( Component: React.ComponentType -) { +): ( + styler: Styler +) => React.ForwardRefExoticComponent< + React.PropsWithoutRef & Props> & + React.RefAttributes +> { type RefAttribute = React.RefAttributes type PropsWithoutStyle = Omit @@ -138,7 +153,7 @@ export function styledWithRef( if (typeof rv === 'function') { const stylerNarrowed = styler as ( theme: Theme - ) => (props: Props) => ValidStyles | ValidStyles[] + ) => (props: Props) => DynamicStyles | DynamicStyles[] return addName( React.forwardRef( function StyledComponent(props, ref) { diff --git a/src/components/icons/BestRateBadge.tsx b/src/components/icons/BestRateBadge.tsx index 734baabc980..54b6010df90 100644 --- a/src/components/icons/BestRateBadge.tsx +++ b/src/components/icons/BestRateBadge.tsx @@ -56,7 +56,7 @@ export const BestRateBadge: React.FC = () => { height={svgHeight} viewBox={`0 0 ${svgWidth} ${svgHeight}`} style={[ - StyleSheet.absoluteFillObject, + StyleSheet.absoluteFill, { top: -theme.rem(0.75), left: -theme.rem(0.75), diff --git a/src/components/icons/ThemedIcons.tsx b/src/components/icons/ThemedIcons.tsx index 866d7c05b2b..a09eda0ea56 100644 --- a/src/components/icons/ThemedIcons.tsx +++ b/src/components/icons/ThemedIcons.tsx @@ -59,7 +59,10 @@ function AnimatedFontIcon( const style = useAnimatedStyle(() => ({ color: color?.value ?? defaultColor, fontFamily, - fontSize: size?.value ?? defaultSize, + // Fabric on Android throws on non-positive text font sizes, and icon + // sizes legitimately animate to 0 (e.g. FilledTextInput side icons), so + // clamp to 1 (invisible - the containers collapse to zero width anyway): + fontSize: Math.max(size?.value ?? defaultSize, 1), fontStyle: 'normal', fontWeight: 'normal' })) diff --git a/src/components/modals/EdgeModal.tsx b/src/components/modals/EdgeModal.tsx index 3bda3fdffa0..efa4998d5c4 100644 --- a/src/components/modals/EdgeModal.tsx +++ b/src/components/modals/EdgeModal.tsx @@ -4,13 +4,14 @@ */ import * as React from 'react' -import { BackHandler, Dimensions, View } from 'react-native' +import { BackHandler, Dimensions, Keyboard, View } from 'react-native' import type { AirshipBridge } from 'react-native-airship' import { Gesture, GestureDetector, ScrollView } from 'react-native-gesture-handler' +import { useKeyboardHandler } from 'react-native-keyboard-controller' import { cacheStyles } from 'react-native-patina' import Animated, { useAnimatedStyle, @@ -21,7 +22,7 @@ import { runOnJS } from 'react-native-worklets' import { SCROLL_INDICATOR_INSET_FIX } from '../../constants/constantSettings' import { useHandler } from '../../hooks/useHandler' -import { BlurBackground } from '../common/BlurBackground' +import { isBlurDisabled, ModalBlurBackground } from '../common/BlurBackground' import { EdgeTouchableOpacity } from '../common/EdgeTouchableOpacity' import { EdgeTouchableWithoutFeedback } from '../common/EdgeTouchableWithoutFeedback' import { CloseIcon } from '../icons/ThemedIcons' @@ -132,6 +133,22 @@ export function EdgeModal(props: EdgeModalProps): React.ReactElement { } }, [handleCancel]) + // Insets are not shared values, so track this on the JS thread. Seed from + // the live state, since a modal can mount while the keyboard is already + // open: + const [isKeyboardOpen, setIsKeyboardOpen] = React.useState(() => + Keyboard.isVisible() + ) + useKeyboardHandler( + { + onStart(event) { + 'worklet' + runOnJS(setIsKeyboardOpen)(event.progress === 1) + } + }, + [] + ) + const gesture = Gesture.Pan() .onUpdate(e => { offset.value = e.translationY @@ -156,7 +173,10 @@ export function EdgeModal(props: EdgeModalProps): React.ReactElement { transform: [{ translateY: Math.max(-dragSlop, offset.value) }] })) - const bottomGap = safeAreaGap + dragSlop + // The gap that lets the modal bleed past the bottom of the screen is + // rendered behind the keyboard, so drop it while the keyboard is open or + // it pushes the modal's own content underneath: + const bottomGap = (isKeyboardOpen ? 0 : safeAreaGap) + dragSlop const isHeaderless = title == null && onCancel == null const isCustomTitle = title != null && typeof title !== 'string' @@ -175,7 +195,7 @@ export function EdgeModal(props: EdgeModalProps): React.ReactElement { - + @@ -238,7 +258,13 @@ const getStyles = cacheStyles((theme: Theme) => ({ }, modal: { alignSelf: 'flex-end', - backgroundColor: theme.modalBackground, + // Devices that cannot render the blur background (Android below 12) get + // a solid color approximating the blurred glass look: + backgroundColor: isBlurDisabled + ? theme.isDark + ? '#2b2b2b' + : '#f2f2f2' + : theme.modalBackground, borderTopLeftRadius: theme.rem(1), borderTopRightRadius: theme.rem(1), flexShrink: 1, diff --git a/src/components/modals/GradientFadeout.tsx b/src/components/modals/GradientFadeout.tsx index 58d032ea47f..01172cadabb 100644 --- a/src/components/modals/GradientFadeout.tsx +++ b/src/components/modals/GradientFadeout.tsx @@ -1,24 +1,28 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' -import LinearGradient from 'react-native-linear-gradient' import { cacheStyles } from 'react-native-patina' +import type { GradientColors } from '../../types/Theme' import { type Theme, useTheme } from '../services/ThemeContext' -const MARKS: number[] = [0, 0.2, 0.75, 1] +const MARKS = [0, 0.2, 0.75, 1] as const const START = { x: 0, y: 0 } const END = { x: 0, y: 1 } /* * Used for adding a gradient fadeout to the bottom of a list modal */ -export const GradientFadeOut = () => { +export const GradientFadeOut = (): React.ReactElement => { const theme = useTheme() const styles = getStyles(theme) const color = theme.modal - const colors: string[] = React.useMemo(() => { - return MARKS.map( - mark => color + `0${Math.floor(255 * mark).toString(16)}`.slice(-2) - ) + // Written out rather than mapped so the colors stay a fixed-length tuple: + // `LinearGradient` wants at least two stops, and as many colors as marks. + const colors = React.useMemo((): GradientColors => { + const fade = (mark: number): string => + color + `0${Math.floor(255 * mark).toString(16)}`.slice(-2) + const [first, second, third, fourth] = MARKS + return [fade(first), fade(second), fade(third), fade(fourth)] }, [color]) return ( = props => { const { bridge, data, tokenId, wallet } = props const theme = useTheme() + const styles = getStyles(theme) const windowSize = useSafeAreaFrame() const maxSize = Math.min(windowSize.width, windowSize.height) @@ -34,10 +35,12 @@ export const QrModal: React.FC = props => { maxHeight={maxSize} onCancel={handleCancel} underlay={ - + // Where the blur cannot render, dim the scene with a plain scrim: + isBlurDisabled ? ( + + ) : ( + + ) } > = props => { ) } + +const getStyles = cacheStyles((theme: Theme) => ({ + scrim: { + backgroundColor: theme.modalSceneOverlayColor, + opacity: 0.7 + } +})) diff --git a/src/components/modals/SurveyModal.tsx b/src/components/modals/SurveyModal.tsx index 0da0236ef74..3f0e7f43367 100644 --- a/src/components/modals/SurveyModal.tsx +++ b/src/components/modals/SurveyModal.tsx @@ -1,8 +1,8 @@ import type { InstallSurvey2 } from 'edge-info-server' import React from 'react' -import { Platform, View } from 'react-native' +import { View } from 'react-native' import type { AirshipBridge } from 'react-native-airship' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import Animated, { Easing, useAnimatedStyle, @@ -164,12 +164,8 @@ export const SurveyModal: React.FC = props => { } > - {/** HACK: iOS and Android use extraScrollHeight differently... */} { +export const HeaderBackground = (props: any): React.JSX.Element => { const theme = useTheme() const scrollY = useSceneScrollContext(state => state.scrollY) return ( - + { const HeaderBackgroundContainerView = styled(Animated.View)<{ scrollY: SharedValue -}>(() => ({ scrollY }) => [ +}>(theme => ({ scrollY }) => [ { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, alignItems: 'stretch', justifyContent: 'flex-end', + ...getBlurFallbackStyle(theme), opacity: 0 }, useAnimatedStyle(() => ({ diff --git a/src/components/notification/NotificationCard.tsx b/src/components/notification/NotificationCard.tsx index fc94c48711f..dfae17d29a9 100644 --- a/src/components/notification/NotificationCard.tsx +++ b/src/components/notification/NotificationCard.tsx @@ -13,7 +13,10 @@ import { runOnJS } from 'react-native-worklets' import { useHandler } from '../../hooks/useHandler' import { getThemedIconUri } from '../../util/CdnUris' -import { BlurBackground } from '../common/BlurBackground' +import { + ChromeBlurBackground, + getBlurFallbackStyle +} from '../common/BlurBackground' import { EdgeTouchableOpacity } from '../common/EdgeTouchableOpacity' import { styled } from '../hoc/styled' import { showError } from '../services/AirshipInstance' @@ -146,7 +149,7 @@ export const NotificationCard: React.FC = (props: Props) => { Platform.OS === 'android' ? styles.shadowAndroid : styles.shadowIos } > - + ({ overflow: 'hidden', borderRadius: theme.cardBorderRadius, marginHorizontal: theme.rem(0.5), + ...getBlurFallbackStyle(theme), // TODO: Design approval that we don't need to make ios/android specific // adjustments here. ...theme.notificationCardShadow diff --git a/src/components/progress-indicators/Shimmer.tsx b/src/components/progress-indicators/Shimmer.tsx index ead5ec83571..384c5ffa49e 100644 --- a/src/components/progress-indicators/Shimmer.tsx +++ b/src/components/progress-indicators/Shimmer.tsx @@ -1,6 +1,6 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { View } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import Animated, { useAnimatedStyle, useSharedValue, diff --git a/src/components/progress-indicators/ShimmerCard.tsx b/src/components/progress-indicators/ShimmerCard.tsx index 30e47fb4856..32011946202 100644 --- a/src/components/progress-indicators/ShimmerCard.tsx +++ b/src/components/progress-indicators/ShimmerCard.tsx @@ -1,6 +1,6 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { View } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import Animated, { useAnimatedStyle, useSharedValue, diff --git a/src/components/progress-indicators/StepProgressBar.tsx b/src/components/progress-indicators/StepProgressBar.tsx index 775447d9780..4ccf7ce45f6 100644 --- a/src/components/progress-indicators/StepProgressBar.tsx +++ b/src/components/progress-indicators/StepProgressBar.tsx @@ -1,6 +1,6 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { View } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import type { ActionDisplayInfo } from '../../controllers/action-queue/types' import { lstrings } from '../../locales/strings' @@ -24,7 +24,7 @@ const StepProgressRowComponent = ({ isNodeCompleted: boolean nodeError?: Error | undefined stepText: { title: string; message: string } -}) => { +}): React.ReactElement => { const theme = useTheme() const styles = getStyles(theme) @@ -116,7 +116,7 @@ const StepProgressRow = React.memo(StepProgressRowComponent) // ----------------------------------------------------------------------------- const StepProgressBarComponent = (props: { actionDisplayInfos: ActionDisplayInfo[] -}) => { +}): React.ReactElement => { // completedSteps of -1 will gray out all steps, while 0 will highlight the // first step const { actionDisplayInfos, ...containerProps } = props diff --git a/src/components/scenes/ChangeMiningFeeScene.tsx b/src/components/scenes/ChangeMiningFeeScene.tsx index 218ec27ea23..01bc6ff7917 100644 --- a/src/components/scenes/ChangeMiningFeeScene.tsx +++ b/src/components/scenes/ChangeMiningFeeScene.tsx @@ -13,6 +13,7 @@ import { FEE_STRINGS } from '../../constants/WalletAndCurrencyConstants' import { useIconColor } from '../../hooks/useIconColor' import { lstrings } from '../../locales/strings' import type { EdgeAppSceneProps } from '../../types/routerTypes' +import type { GradientColors } from '../../types/Theme' import type { FeeOption } from '../../types/types' import { darkenHexColor } from '../../util/utils' import { SceneButtons } from '../buttons/SceneButtons' @@ -84,7 +85,8 @@ export class ChangeMiningFeeComponent extends React.PureComponent< ) { // Reset the custom fees if they don't match the format: const defaultCustomFee = {} - // @ts-expect-error + // @ts-expect-error - defaultCustomFee starts as an empty object literal, + // so TypeScript infers no index signature to write these keys through. for (const key of customFormat) defaultCustomFee[key] = '' this.state = { networkFeeOption, customNetworkFee: defaultCustomFee } } else { @@ -101,14 +103,14 @@ export class ChangeMiningFeeComponent extends React.PureComponent< } } - onSubmit = () => { + onSubmit = (): void => { const { networkFeeOption, customNetworkFee } = this.state const { navigation, route } = this.props route.params.onSubmit(networkFeeOption, customNetworkFee) navigation.goBack() } - render() { + render(): React.ReactElement { const { iconColor, theme } = this.props const styles = getStyles(theme) @@ -120,14 +122,15 @@ export class ChangeMiningFeeComponent extends React.PureComponent< iconAccentColor: iconColor ?? '#00000000' } - const backgroundColors = [...theme.assetBackgroundGradientColors] - if (iconColor != null && theme.isDark) { - const scaledColor = darkenHexColor( - iconColor, - theme.assetBackgroundColorScale - ) - backgroundColors[0] = scaledColor - } + // Destructured rather than mutated so the gradient keeps its tuple type: + // `LinearGradient` needs a compile-time guarantee of two or more stops. + const [firstColor, ...restColors] = theme.assetBackgroundGradientColors + const backgroundColors: GradientColors = [ + iconColor != null && theme.isDark + ? darkenHexColor(iconColor, theme.assetBackgroundColorScale) + : firstColor, + ...restColors + ] return ( { return ( { - // @ts-expect-error + // @ts-expect-error - feeSetting is a plain string here, + // not the FeeOption union the state expects. this.setState({ networkFeeOption: feeSetting }) }} > @@ -185,7 +190,9 @@ export class ChangeMiningFeeComponent extends React.PureComponent< ) } - renderCustomFeeTextInput(customFormat: Array) { + renderCustomFeeTextInput( + customFormat: Array + ): React.ReactElement | null { const { networkFeeOption, customNetworkFee } = this.state if (networkFeeOption !== 'custom') return null @@ -203,7 +210,9 @@ export class ChangeMiningFeeComponent extends React.PureComponent< }) }} value={customNetworkFee[key]} - placeholder={FEE_STRINGS[key] || key} + // customFormat comes from the plugin's currencyInfo, which can name + // fee settings FEE_STRINGS has no label for, despite the key type. + placeholder={FEE_STRINGS[key] ?? key} returnKeyType="done" keyboardType="numeric" /> @@ -212,7 +221,7 @@ export class ChangeMiningFeeComponent extends React.PureComponent< ) } - renderFeeWarning() { + renderFeeWarning(): React.ReactElement | null { const { networkFeeOption } = this.state const { theme } = this.props const styles = getStyles(theme) diff --git a/src/components/scenes/ConfirmScene.tsx b/src/components/scenes/ConfirmScene.tsx index 8b4c05680c0..0758824281b 100644 --- a/src/components/scenes/ConfirmScene.tsx +++ b/src/components/scenes/ConfirmScene.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { View } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import { SCROLL_INDICATOR_INSET_FIX } from '../../constants/constantSettings' import { useHandler } from '../../hooks/useHandler' @@ -24,14 +24,14 @@ export interface ConfirmSceneParams { onBack?: () => void } -const ConfirmSceneComponent = (props: Props) => { +const ConfirmSceneComponent = (props: Props): React.ReactElement => { const { navigation, route } = props const theme = useTheme() const styles = getStyles(theme) const { titleText, bodyText, infoTiles, onConfirm, onBack } = route.params - const renderInfoTiles = () => { + const renderInfoTiles = (): React.ReactElement[] | null => { if (infoTiles == null) return null return infoTiles.map(({ label, value }) => ( @@ -56,8 +56,7 @@ const ConfirmSceneComponent = (props: Props) => { return ( {/* We have to use the SceneHeaderUi4 component here because diff --git a/src/components/scenes/CreateWalletImportScene.tsx b/src/components/scenes/CreateWalletImportScene.tsx index 5ee9f302db1..27692910efe 100644 --- a/src/components/scenes/CreateWalletImportScene.tsx +++ b/src/components/scenes/CreateWalletImportScene.tsx @@ -1,7 +1,7 @@ import type { JsonObject } from 'edge-core-js' import * as React from 'react' import { Linking, Platform, View } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import { sprintf } from 'sprintf-js' import { PLACEHOLDER_WALLET_ID } from '../../actions/CreateWalletActions' diff --git a/src/components/scenes/FormScene.tsx b/src/components/scenes/FormScene.tsx index 6d86380598f..244c8b99a0e 100644 --- a/src/components/scenes/FormScene.tsx +++ b/src/components/scenes/FormScene.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { View } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import { SCROLL_INDICATOR_INSET_FIX } from '../../constants/constantSettings' import { lstrings } from '../../locales/strings' @@ -17,7 +17,7 @@ interface Props { sliderDisabled: boolean } -export const FormScene = (props: Props) => { +export const FormScene = (props: Props): React.ReactElement => { const { headerText, headerTertiary, @@ -38,8 +38,7 @@ export const FormScene = (props: Props) => { /> {children} diff --git a/src/components/scenes/GiftCardMarketScene.tsx b/src/components/scenes/GiftCardMarketScene.tsx index 54eec5f82cb..4a8999e186f 100644 --- a/src/components/scenes/GiftCardMarketScene.tsx +++ b/src/components/scenes/GiftCardMarketScene.tsx @@ -1,8 +1,8 @@ import { useQuery } from '@tanstack/react-query' +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import type { ListRenderItem } from 'react-native' import { ScrollView, StyleSheet, View } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import Animated from 'react-native-reanimated' import { showCountrySelectionModal } from '../../actions/CountryListActions' @@ -661,7 +661,7 @@ const getStyles = cacheStyles((theme: Theme) => ({ flexShrink: 0 }, viewToggleGradient: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, borderRadius: theme.rem(1) }, tileContainer: { diff --git a/src/components/scenes/Loans/LoanCloseScene.tsx b/src/components/scenes/Loans/LoanCloseScene.tsx index 69c835b900c..536d8bf2339 100644 --- a/src/components/scenes/Loans/LoanCloseScene.tsx +++ b/src/components/scenes/Loans/LoanCloseScene.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import Ionicon from 'react-native-vector-icons/Ionicons' import { sprintf } from 'sprintf-js' @@ -49,7 +49,7 @@ export interface Props extends EdgeAppSceneProps<'loanClose'> { // TODO: Check contentPadding -export const LoanCloseSceneComponent = (props: Props) => { +export const LoanCloseSceneComponent = (props: Props): React.ReactElement => { const theme = useTheme() const styles = getStyles(theme) const dispatch = useDispatch() @@ -182,8 +182,7 @@ export const LoanCloseSceneComponent = (props: Props) => { /> {} -export const LoanCreateScene = (props: Props) => { +export const LoanCreateScene = (props: Props): React.ReactElement => { const { navigation, route } = props const { borrowEngine, borrowPlugin } = route.params @@ -456,8 +456,8 @@ export const LoanCreateScene = (props: Props) => { } } }) - .catch(e => { - showError(e.message) + .catch((e: unknown) => { + showError(e) }) } @@ -520,8 +520,7 @@ export const LoanCreateScene = (props: Props) => { withTopMargin /> diff --git a/src/components/scenes/Loans/LoanDetailsScene.tsx b/src/components/scenes/Loans/LoanDetailsScene.tsx index cccf6b8a72f..2cc149ff981 100644 --- a/src/components/scenes/Loans/LoanDetailsScene.tsx +++ b/src/components/scenes/Loans/LoanDetailsScene.tsx @@ -2,7 +2,7 @@ import { add, div, gt, max, mul, sub } from 'biggystring' import type { EdgeCurrencyWallet, EdgeTokenId } from 'edge-core-js' import * as React from 'react' import { ActivityIndicator } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import Ionicon from 'react-native-vector-icons/Ionicons' import { sprintf } from 'sprintf-js' @@ -55,7 +55,7 @@ interface Props extends EdgeAppSceneProps<'loanDetails'> { loanAccount: LoanAccount } -export const LoanDetailsSceneComponent = (props: Props) => { +export const LoanDetailsSceneComponent = (props: Props): React.ReactElement => { const theme = useTheme() const styles = getStyles(theme) @@ -144,14 +144,14 @@ export const LoanDetailsSceneComponent = (props: Props) => { sprintf(AAVE_SUPPORT_ARTICLE_URL_1S, 'loan-details') ) - const handleProgramStatusCardPress = (programEdge: LoanProgramEdge) => { + const handleProgramStatusCardPress = (programEdge: LoanProgramEdge): void => { navigation.navigate('loanStatus', { actionQueueId: programEdge.programId, loanAccountId }) } - const renderProgramStatusCard = () => { + const renderProgramStatusCard = (): React.ReactElement | null => { if (runningProgramMessage != null && runningProgramEdge != null) { return ( { withTopMargin /> @@ -447,7 +446,7 @@ export const useFiatTotal = ( export const displayFiatTotal = ( isoFiatCurrencyCode: string, fiatAmount: string -) => { +): string => { const fiatSymbol = getFiatSymbol(isoFiatCurrencyCode) return `${fiatSymbol}${formatFiatString({ autoPrecision: true, fiatAmount })}` diff --git a/src/components/scenes/LoginScene.tsx b/src/components/scenes/LoginScene.tsx index ec8bc8fb71b..4bec9d2ff86 100644 --- a/src/components/scenes/LoginScene.tsx +++ b/src/components/scenes/LoginScene.tsx @@ -2,7 +2,6 @@ import type { EdgeAccount } from 'edge-core-js' import { type InitialRouteName, LoginScreen } from 'edge-login-ui-rn' import * as React from 'react' import { Keyboard, StatusBar, View } from 'react-native' -import { BlurView } from 'rn-id-blurview' import { getDeviceSettings } from '../../actions/DeviceSettingsActions' import { showSendLogsModal } from '../../actions/LogActions' @@ -34,9 +33,6 @@ export interface LoginParams { loginUiInitialRoute?: InitialRouteName } -// @ts-expect-error Sneak the BlurView over to the login UI: -global.ReactNativeBlurView = BlurView - interface Props extends RootSceneProps<'login'> {} let firstRun = true @@ -67,6 +63,11 @@ export const LoginScene: React.FC = props => { React.useEffect(() => { if (!firstRun) return + // The core context is an empty placeholder object until EdgeCoreManager + // finishes booting. On release builds this scene mounts first, so bail + // WITHOUT disarming firstRun; the context dep re-runs this effect once + // the real context lands, and YOLO can fire then. + if (context.loginWithPassword == null) return const { YOLO_USERNAME, YOLO_PASSWORD, YOLO_PIN } = ENV if ( YOLO_USERNAME != null && diff --git a/src/components/scenes/RequestScene.tsx b/src/components/scenes/RequestScene.tsx index d09bb24a1e3..4d2ffbca17b 100644 --- a/src/components/scenes/RequestScene.tsx +++ b/src/components/scenes/RequestScene.tsx @@ -26,6 +26,7 @@ import { getExchangeRate } from '../../selectors/WalletSelectors' import { config } from '../../theme/appConfig' import { useDispatch, useSelector } from '../../types/reactRedux' import type { EdgeAppSceneProps, NavigationBase } from '../../types/routerTypes' +import type { GradientColors } from '../../types/Theme' import type { StringMap } from '../../types/types' import { getCurrencyCode, @@ -492,14 +493,15 @@ export class RequestSceneComponent extends React.Component< iconAccentColor: iconColor ?? '#00000000' } - const backgroundColors = [...theme.assetBackgroundGradientColors] - if (iconColor != null && theme.isDark) { - const scaledColor = darkenHexColor( - iconColor, - theme.assetBackgroundColorScale - ) - backgroundColors[0] = scaledColor - } + // Destructured rather than mutated so the gradient keeps its tuple type: + // `LinearGradient` needs a compile-time guarantee of two or more stops. + const [firstColor, ...restColors] = theme.assetBackgroundGradientColors + const backgroundColors: GradientColors = [ + iconColor != null && theme.isDark + ? darkenHexColor(iconColor, theme.assetBackgroundColorScale) + : firstColor, + ...restColors + ] return isLightAccount ? ( this.renderLightAccountMode() diff --git a/src/components/scenes/SendScene2.tsx b/src/components/scenes/SendScene2.tsx index 050a7e8ddf2..e42bca44279 100644 --- a/src/components/scenes/SendScene2.tsx +++ b/src/components/scenes/SendScene2.tsx @@ -22,7 +22,8 @@ import { type TextInput, View } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import type { KeyboardAwareScrollViewRef } from 'react-native-keyboard-controller' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import { sprintf } from 'sprintf-js' import type { GuiExchangeRates } from '../../actions/ExchangeRateActions' @@ -48,6 +49,7 @@ import { config } from '../../theme/appConfig' import { useState } from '../../types/reactHooks' import { useDispatch, useSelector } from '../../types/reactRedux' import type { EdgeAppSceneProps, NavigationBase } from '../../types/routerTypes' +import type { GradientColors } from '../../types/Theme' import type { FioRequest } from '../../types/types' import { getCurrencyCode } from '../../util/CurrencyInfoHelpers' import { getWalletName } from '../../util/CurrencyWalletHelpers' @@ -209,7 +211,7 @@ const SendComponent: React.FC = props => { const needsScrollToEnd = React.useRef(false) const makeSpendCounter = React.useRef(0) - const scrollViewRef = React.useRef(null) + const scrollViewRef = React.useRef(null) const isSendingRef = React.useRef(false) const initialMount = React.useRef(true) @@ -1784,14 +1786,15 @@ const SendComponent: React.FC = props => { iconAccentColor: iconColor ?? '#00000000' } - const backgroundColors = [...theme.assetBackgroundGradientColors] - if (iconColor != null && theme.isDark) { - const scaledColor = darkenHexColor( - iconColor, - theme.assetBackgroundColorScale - ) - backgroundColors[0] = scaledColor - } + // Destructured rather than mutated so the gradient keeps its tuple type: + // `LinearGradient` needs a compile-time guarantee of two or more stops. + const [firstColor, ...restColors] = theme.assetBackgroundGradientColors + const backgroundColors: GradientColors = [ + iconColor != null && theme.isDark + ? darkenHexColor(iconColor, theme.assetBackgroundColorScale) + : firstColor, + ...restColors + ] React.useEffect(() => { // Hack: While you would think to use InteractionManager.runAfterInteractions, @@ -1799,7 +1802,7 @@ const SendComponent: React.FC = props => { // determined and the scrollToEnd call would be effective. const timeout = setTimeout(() => { if (needsScrollToEnd.current) { - scrollViewRef.current?.scrollToEnd(true) + scrollViewRef.current?.scrollToEnd({ animated: true }) needsScrollToEnd.current = false } }, SCROLL_TO_END_DELAY_MS) @@ -1830,17 +1833,13 @@ const SendComponent: React.FC = props => { <> { - const kbRef: KeyboardAwareScrollView | null = ref as any - scrollViewRef.current = kbRef - }} + ref={scrollViewRef} contentContainerStyle={{ ...insetStyle, paddingTop: 0, paddingBottom: theme.rem(5) }} - extraScrollHeight={theme.rem(2.75)} - enableOnAndroid + bottomOffset={theme.rem(2.75)} scrollIndicatorInsets={SCROLL_INDICATOR_INSET_FIX} > diff --git a/src/components/scenes/SpendingLimitsScene.tsx b/src/components/scenes/SpendingLimitsScene.tsx index 475ac555c3e..ec54a270ac8 100644 --- a/src/components/scenes/SpendingLimitsScene.tsx +++ b/src/components/scenes/SpendingLimitsScene.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { View } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import { writeSpendingLimits } from '../../actions/LocalSettingsActions' import { SCROLL_INDICATOR_INSET_FIX } from '../../constants/constantSettings' @@ -20,7 +20,7 @@ import { MainButton } from '../themed/MainButton' interface Props extends EdgeAppSceneProps<'spendingLimits'> {} -export const SpendingLimitsScene = (props: Props) => { +export const SpendingLimitsScene = (props: Props): React.ReactElement => { const { navigation } = props const theme = useTheme() const styles = getStyles(theme) @@ -47,7 +47,7 @@ export const SpendingLimitsScene = (props: Props) => { setTransactionIsEnabled(!transactionIsEnabled) }) - const handleSubmitAsync = async () => { + const handleSubmitAsync = async (): Promise => { const spendingLimits = { transaction: { isEnabled: transactionIsEnabled, @@ -66,7 +66,7 @@ export const SpendingLimitsScene = (props: Props) => { // Satsify "misused promise" const handleSubmit = useHandler(() => { - handleSubmitAsync().catch(err => { + handleSubmitAsync().catch((err: unknown) => { showError(err) }) }) diff --git a/src/components/scenes/Staking/StakeOptionsScene.tsx b/src/components/scenes/Staking/StakeOptionsScene.tsx index d16db930d04..af4c49a90fc 100644 --- a/src/components/scenes/Staking/StakeOptionsScene.tsx +++ b/src/components/scenes/Staking/StakeOptionsScene.tsx @@ -13,6 +13,7 @@ import type { StakePolicy } from '../../../plugins/stake-plugins/types' import { EMPTY_STAKE_POSITION_MAP } from '../../../reducers/StakingReducer' import { useSelector } from '../../../types/reactRedux' import type { EdgeAppSceneProps } from '../../../types/routerTypes' +import type { GradientColors } from '../../../types/Theme' import { getCurrencyCode } from '../../../util/CurrencyInfoHelpers' import { getPluginFromPolicyId, @@ -130,14 +131,15 @@ const StakeOptionsSceneComponent: React.FC = props => { iconAccentColor: iconColor ?? '#00000000' } - const backgroundColors = [...theme.assetBackgroundGradientColors] - if (iconColor != null && theme.isDark) { - const scaledColor = darkenHexColor( - iconColor, - theme.assetBackgroundColorScale - ) - backgroundColors[0] = scaledColor - } + // Destructured rather than mutated so the gradient keeps its tuple type: + // `LinearGradient` needs a compile-time guarantee of two or more stops. + const [firstColor, ...restColors] = theme.assetBackgroundGradientColors + const backgroundColors: GradientColors = [ + iconColor != null && theme.isDark + ? darkenHexColor(iconColor, theme.assetBackgroundColorScale) + : firstColor, + ...restColors + ] return ( = props => { iconAccentColor: iconColor ?? '#00000000' } - const backgroundColors = [...theme.assetBackgroundGradientColors] - if (iconColor != null && theme.isDark) { - const scaledColor = darkenHexColor( - iconColor, - theme.assetBackgroundColorScale - ) - backgroundColors[0] = scaledColor - } + // Destructured rather than mutated so the gradient keeps its tuple type: + // `LinearGradient` needs a compile-time guarantee of two or more stops. + const [firstColor, ...restColors] = theme.assetBackgroundGradientColors + const backgroundColors: GradientColors = [ + iconColor != null && theme.isDark + ? darkenHexColor(iconColor, theme.assetBackgroundColorScale) + : firstColor, + ...restColors + ] const fiatAction = action != null && action.actionType === 'fiat' ? action : undefined diff --git a/src/components/scenes/WalletDetailsScene.tsx b/src/components/scenes/WalletDetailsScene.tsx index a15947e4691..f4034c07f61 100644 --- a/src/components/scenes/WalletDetailsScene.tsx +++ b/src/components/scenes/WalletDetailsScene.tsx @@ -39,6 +39,7 @@ import type { RouteProp, WalletsTabSceneProps } from '../../types/routerTypes' +import type { GradientColors } from '../../types/Theme' import { getDisplayInfoCards } from '../../util/infoUtils' import { coinrankListData, infoServerData } from '../../util/network' import { @@ -345,14 +346,15 @@ const WalletDetailsComponent: React.FC = (props: Props) => { iconAccentColor: iconColor ?? '#00000000' } - const backgroundColors = [...theme.assetBackgroundGradientColors] - if (iconColor != null && theme.isDark) { - const scaledColor = darkenHexColor( - iconColor, - theme.assetBackgroundColorScale - ) - backgroundColors[0] = scaledColor - } + // Destructured rather than mutated so the gradient keeps its tuple type: + // `LinearGradient` needs a compile-time guarantee of two or more stops. + const [firstColor, ...restColors] = theme.assetBackgroundGradientColors + const backgroundColors: GradientColors = [ + iconColor != null && theme.isDark + ? darkenHexColor(iconColor, theme.assetBackgroundColorScale) + : firstColor, + ...restColors + ] return ( { - store.dispatch(loadDeviceReferral()).catch(err => { + store.dispatch(loadDeviceReferral()).catch((err: unknown) => { console.warn(err) }) - store.dispatch(fetchCountryCode()).catch(err => { + store.dispatch(fetchCountryCode()).catch((err: unknown) => { console.warn(err) }) }, [store]) @@ -72,14 +73,19 @@ export function Providers(props: Props) { {renderStateProviders( - -

- + + + +
+ + + )} diff --git a/src/components/themed/DividerLine.tsx b/src/components/themed/DividerLine.tsx index ef632c7cc9a..e5b7d80ee86 100644 --- a/src/components/themed/DividerLine.tsx +++ b/src/components/themed/DividerLine.tsx @@ -1,6 +1,7 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' -import LinearGradient from 'react-native-linear-gradient' +import type { GradientColors } from '../../types/Theme' import { fixSides, mapSides, sidesToMargin } from '../../util/sides' import { cacheStyles, type Theme, useTheme } from '../services/ThemeContext' @@ -8,7 +9,7 @@ interface Props { // The gap around the line. Takes 0-4 numbers (top, right, bottom, left), // using the same logic as the web `margin` property. Defaults to 0. marginRem?: number | number[] - colors?: string[] + colors?: GradientColors } const start = { x: 0, y: 0.5 } @@ -25,7 +26,7 @@ const end = { x: 1, y: 0.5 } * @deprecated Use DividerLineUi4 instead, without custom margins where * possible. */ -export const DividerLine = (props: Props) => { +export const DividerLine = (props: Props): React.ReactElement => { const { marginRem } = props const theme = useTheme() const styles = getStyles(theme) diff --git a/src/components/themed/EdgeText.tsx b/src/components/themed/EdgeText.tsx index 2109a1ddca7..d043679f8d0 100644 --- a/src/components/themed/EdgeText.tsx +++ b/src/components/themed/EdgeText.tsx @@ -80,6 +80,11 @@ export const EdgeText: React.FC = (props: LabelProps) => { const theme = useTheme() const styles = getStyles(theme) + // Android's new architecture shrinks auto-sized text far below + // `minimumFontScale`, leaving labels illegibly small, so let text truncate + // there instead of shrinking: + const autoShrink = Platform.OS !== 'android' && !disableFontScaling + let { numberOfLines = 1 } = props if (typeof children === 'string' && children.includes('\n')) { numberOfLines = numberOfLines + (children.match(/\n/g) ?? []).length @@ -90,7 +95,7 @@ export const EdgeText: React.FC = (props: LabelProps) => { allowFontScaling={false} style={[styles.common, style, androidAdjustTextStyle(theme)]} numberOfLines={numberOfLines} - adjustsFontSizeToFit={!disableFontScaling} + adjustsFontSizeToFit={autoShrink} minimumFontScale={0.65} {...rest} > diff --git a/src/components/themed/FilledTextInput.tsx b/src/components/themed/FilledTextInput.tsx index dc1c7434419..444aaf35558 100644 --- a/src/components/themed/FilledTextInput.tsx +++ b/src/components/themed/FilledTextInput.tsx @@ -319,8 +319,9 @@ export const FilledTextInput = React.forwardRef< } }, [displayValue, inputRef, sharedDisplayValue]) - // Animates between 0 and 1 based our disabled state: - const disableAnimation = useSharedValue(0) + // Animates between 0 and 1 based our disabled state, starting at the + // mounted state so the input doesn't flash its enabled look on entry: + const disableAnimation = useSharedValue(disabled ? 1 : 0) React.useEffect(() => { disableAnimation.value = withTiming(disabled ? 1 : 0) }, [disableAnimation, disabled]) @@ -797,10 +798,10 @@ const PlaceholderText = styled(Animated.Text)<{ focusAnimation, disableAnimation ), - fontSize: interpolate( - shift.value, - [0, 1], - [fontSizeBase, fontSizeScaled] + // Clamp in case an animated scale passes through 0: + fontSize: Math.max( + interpolate(shift.value, [0, 1], [fontSizeBase, fontSizeScaled]), + 1 ) } }) @@ -838,7 +839,9 @@ const StyledAnimatedTextInput = styledWithRef(AnimatedTextInput)<{ }, useAnimatedStyle(() => ({ color: interpolateTextColor(focusAnimation, disableAnimation), - fontSize: scale.value * rem + // Fabric on Android throws on non-positive font sizes; clamp in case + // an animated scale passes through 0: + fontSize: Math.max(scale.value * rem, 1) })) ] }) diff --git a/src/components/themed/FioRequestRow.tsx b/src/components/themed/FioRequestRow.tsx index 0f54ab6052c..f0ff9d2eed4 100644 --- a/src/components/themed/FioRequestRow.tsx +++ b/src/components/themed/FioRequestRow.tsx @@ -52,38 +52,40 @@ type Props = OwnProps & StateProps & ThemeProps class FioRequestRowComponent extends React.PureComponent { rowRef = React.createRef() - closeRow = () => { + closeRow = (): void => { if (this.rowRef.current != null) this.rowRef.current.close() } - onPress = () => { + onPress = (): void => { const { onPress, fioRequest } = this.props - onPress(fioRequest)?.catch(err => { + onPress(fioRequest)?.catch((err: unknown) => { showError(err) }) this.closeRow() } - onSwipe = () => { + onSwipe = (): void => { const { onSwipe, fioRequest } = this.props onSwipe(fioRequest) - .catch(err => { + .catch((err: unknown) => { showError(err) }) .finally(this.closeRow) } - requestedField = () => { + requestedField = (): React.JSX.Element => { const { displayDenomination, fioRequest, theme } = this.props const styles = getStyles(theme) const name = - displayDenomination.name || fioRequest.content.token_code.toUpperCase() + displayDenomination.name !== '' + ? displayDenomination.name + : fioRequest.content.token_code.toUpperCase() const value = `${lstrings.title_fio_requested} ${name}` return {value} } - showStatus = (status: FioRequestStatus) => { + showStatus = (status: FioRequestStatus): React.JSX.Element => { const { theme } = this.props const styles = getStyles(theme) @@ -103,7 +105,7 @@ class FioRequestRowComponent extends React.PureComponent { ) } - render() { + render(): React.JSX.Element { const { displayDenomination, exchangeDenomination, @@ -132,7 +134,7 @@ class FioRequestRowComponent extends React.PureComponent { ? fioRequest.time_stamp : `${fioRequest.time_stamp}Z` const dateValue = `${formatTime(new Date(safeDate))} ${ - fioRequest.content.memo ? `- ${fioRequest.content.memo}` : '' + fioRequest.content.memo !== '' ? `- ${fioRequest.content.memo}` : '' }` return ( ({ color: theme.deactivatedText }, underlay: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, backgroundColor: theme.sliderTabSend, flexDirection: 'row', justifyContent: 'flex-end' @@ -289,10 +291,11 @@ export const FioRequestRow = connect( } const fiatSymbol = getFiatSymbol(removeIsoPrefix(defaultIsoFiat)) - const fiatAmount = - formatNumber(mul(fiatPerCrypto, fioRequest.content.amount), { - toFixed: 2 - }) || '0' + const fiatAmountFormatted = formatNumber( + mul(fiatPerCrypto, fioRequest.content.amount), + { toFixed: 2 } + ) + const fiatAmount = fiatAmountFormatted !== '' ? fiatAmountFormatted : '0' return { exchangeDenomination, diff --git a/src/components/themed/FlipInput2.tsx b/src/components/themed/FlipInput2.tsx index d69de2bd628..3b6e5c2b3de 100644 --- a/src/components/themed/FlipInput2.tsx +++ b/src/components/themed/FlipInput2.tsx @@ -1,8 +1,9 @@ import * as React from 'react' import { useMemo } from 'react' import { - Platform, type ReturnKeyType, + StyleSheet, + Text, TextInput, type TextInputProps, View @@ -231,7 +232,7 @@ export const FlipInput2 = React.forwardRef( disableAnimation={disableAnimation} focusAnimation={focusAnimation} > - {' ' + currencyName} + {currencyName} ) : null} @@ -436,6 +437,8 @@ const TopAmountText = styled(UnscaledText)(theme => () => [ } ]) +const sizerStyle = { opacity: 0 } as const + const AnimatedTextInput = Animated.createAnimatedComponent(TextInput) const AmountAnimatedNumericInput = React.forwardRef< @@ -474,27 +477,38 @@ const AmountAnimatedNumericInput = React.forwardRef< includeFontPadding: false, fontFamily: theme.fontFaceMedium, fontSize: theme.rem(1.5), - padding: 0, - - // Android has more space added to the width of the input - // after the last character in the input. It seems to be - // setting a min-width to the input to roughly 2 characters in size. - // We can compensate for this with a negative margin when the character length - // is less then 2 characters. - marginRight: - Platform.OS === 'android' - ? -theme.rem(Math.max(0, 2 - numericProps.value.length) * 0.4) - : 0 + padding: 0 } + // The input's own width is measured one edit behind its contents, so a + // value that grows by more than one character at once - like 123 becoming + // 1,234, which also gains a separator - ends up wider than its box and the + // leading digits are clipped. Size the box with a matching Text instead, + // which measures in the same pass as the value it draws. return ( - + + + {/* One character of slack: the field echoes a keystroke a frame + before this text has re-measured, and without the slack the + text scrolls for that frame and the leading digits jump. It + also absorbs rejected keystrokes, which never widen the box. */} + {numericProps.value + '0'} + + + ) }) diff --git a/src/components/themed/MenuTabs.tsx b/src/components/themed/MenuTabs.tsx index 049b01201c9..e6a23758f66 100644 --- a/src/components/themed/MenuTabs.tsx +++ b/src/components/themed/MenuTabs.tsx @@ -3,12 +3,12 @@ import type { BottomTabNavigationEventMap } from '@react-navigation/bottom-tabs' import type { NavigationHelpers, ParamListBase } from '@react-navigation/native' +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { useMemo } from 'react' import { Platform, StyleSheet, TouchableOpacity } from 'react-native' import DeviceInfo from 'react-native-device-info' import { useReanimatedKeyboardAnimation } from 'react-native-keyboard-controller' -import LinearGradient from 'react-native-linear-gradient' import Animated, { interpolate, type SharedValue, @@ -32,7 +32,10 @@ import { import { config } from '../../theme/appConfig' import { useSelector } from '../../types/reactRedux' import { scale } from '../../util/scaling' -import { BlurBackgroundNoRoundedCorners } from '../common/BlurBackground' +import { + ChromeBlurBackground, + getBlurFallbackStyle +} from '../common/BlurBackground' import { styled } from '../hoc/styled' import { useTheme } from '../services/ThemeContext' import { VectorIcon } from './VectorIcon' @@ -66,7 +69,7 @@ const title: Readonly> = { devTab: lstrings.title_dev_tab } -export const MenuTabs = (props: BottomTabBarProps) => { +export const MenuTabs = (props: BottomTabBarProps): React.JSX.Element => { const { navigation, state } = props const theme = useTheme() const activeTabFullIndex = state.index @@ -123,7 +126,7 @@ export const MenuTabs = (props: BottomTabBarProps) => { tabLabelHeight={tabLabelHeight} pointerEvents="none" > - + openRatio: SharedValue tabLabelHeight: number -}>(() => ({ footerHeight: footerHeightRef, openRatio, tabLabelHeight }) => { +}>(theme => ({ footerHeight: footerHeightRef, openRatio, tabLabelHeight }) => { return [ { - ...StyleSheet.absoluteFillObject + ...StyleSheet.absoluteFill, + ...getBlurFallbackStyle(theme) }, useAnimatedStyle(() => { const openRatioInverted = interpolate(openRatio.value, [0, 1], [1, 0]) @@ -230,7 +234,7 @@ const Tab = ({ route: BottomTabBarProps['state']['routes'][number] footerOpenRatio: SharedValue navigation: NavigationHelpers -}) => { +}): React.JSX.Element => { const theme = useTheme() const insets = useSafeAreaInsets() const color = isActive ? theme.tabBarIconHighlighted : theme.tabBarIcon @@ -262,7 +266,7 @@ const Tab = ({ switch (route.name) { case 'home': setTimeout(() => { - writeDefaultScreen('home').catch(e => { + writeDefaultScreen('home').catch(() => { console.error('Failed to write defaultScreen setting: home') }) }, SAVE_DEFAULT_SCREEN_DELAY) @@ -270,7 +274,7 @@ const Tab = ({ return case 'walletsTab': setTimeout(() => { - writeDefaultScreen('assets').catch(e => { + writeDefaultScreen('assets').catch(() => { console.error('Failed to write defaultScreen setting: assets') }) }, SAVE_DEFAULT_SCREEN_DELAY) diff --git a/src/components/themed/SafeSlider.tsx b/src/components/themed/SafeSlider.tsx index 6d5cc5911ce..8e83f5c56ba 100644 --- a/src/components/themed/SafeSlider.tsx +++ b/src/components/themed/SafeSlider.tsx @@ -189,7 +189,7 @@ const getStyles = cacheStyles((theme: Theme) => ({ backgroundColor: theme.confirmationThumbDeactivated }, progress: { - ...StyleSheet.absoluteFillObject, + ...StyleSheet.absoluteFill, backgroundColor: theme.confirmationSlider, borderRadius: theme.confirmationSliderThumbWidth / 2 }, diff --git a/src/components/themed/SceneFooterWrapper.tsx b/src/components/themed/SceneFooterWrapper.tsx index 5ae18cc7574..2dd74da73ef 100644 --- a/src/components/themed/SceneFooterWrapper.tsx +++ b/src/components/themed/SceneFooterWrapper.tsx @@ -8,7 +8,10 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context' import { useLayoutOnce } from '../../hooks/useLayoutOnce' import { useSceneFooterState } from '../../state/SceneFooterState' -import { BlurBackgroundNoRoundedCorners } from '../common/BlurBackground' +import { + ChromeBlurBackground, + getBlurFallbackStyle +} from '../common/BlurBackground' import type { SceneWrapperInfo } from '../common/SceneWrapper' import { styled } from '../hoc/styled' @@ -69,9 +72,10 @@ export const SceneFooterWrapper = ( footerOpenRatio={footerOpenRatio} isKeyboardOpen={isKeyboardOpen} insetBottom={maybeInsetBottom} + noBackgroundBlur={noBackgroundBlur} onLayout={handleLayoutOnce} > - {noBackgroundBlur ? null : } + {noBackgroundBlur ? null : } {children} ) @@ -82,16 +86,24 @@ const ContainerAnimatedView = styled(Animated.View)<{ footerOpenRatio: SharedValue isKeyboardOpen: boolean insetBottom: number + noBackgroundBlur?: boolean }>( - () => - ({ containerHeight, footerOpenRatio, isKeyboardOpen, insetBottom }) => { + theme => + ({ + containerHeight, + footerOpenRatio, + isKeyboardOpen, + insetBottom, + noBackgroundBlur = false + }) => { // Exclude inset if the keyboard is open const maybeInsetBottom = !isKeyboardOpen ? insetBottom : 0 return [ { overflow: 'hidden', - paddingBottom: maybeInsetBottom + paddingBottom: maybeInsetBottom, + ...(noBackgroundBlur ? null : getBlurFallbackStyle(theme)) }, useAnimatedStyle(() => { if (containerHeight == null) return {} diff --git a/src/components/themed/SideMenu.tsx b/src/components/themed/SideMenu.tsx index 0dece84236f..e704139c0cb 100644 --- a/src/components/themed/SideMenu.tsx +++ b/src/components/themed/SideMenu.tsx @@ -4,6 +4,7 @@ import { } from '@react-navigation/drawer' import { DrawerActions } from '@react-navigation/native' import type { EdgeUserInfo } from 'edge-core-js' +import { LinearGradient } from 'expo-linear-gradient' import hashjs from 'hash.js' import * as React from 'react' import { @@ -14,7 +15,6 @@ import { ScrollView, View } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import Animated, { Easing, useAnimatedStyle, diff --git a/src/components/themed/SimpleTextInput.tsx b/src/components/themed/SimpleTextInput.tsx index 1c167b604b2..63d94a34b00 100644 --- a/src/components/themed/SimpleTextInput.tsx +++ b/src/components/themed/SimpleTextInput.tsx @@ -197,8 +197,9 @@ export const SimpleTextInput = React.forwardRef< setNativeProps })) - // Animates between 0 and 1 based our disabled state: - const disableAnimation = useSharedValue(0) + // Animates between 0 and 1 based our disabled state, starting at the + // mounted state so the input doesn't flash its enabled look on entry: + const disableAnimation = useSharedValue(disabled ? 1 : 0) React.useEffect(() => { disableAnimation.value = withTiming(disabled ? 1 : 0) }, [disableAnimation, disabled]) diff --git a/src/components/themed/TransactionListComponents.tsx b/src/components/themed/TransactionListComponents.tsx index 361043476f6..c8cc65675ee 100644 --- a/src/components/themed/TransactionListComponents.tsx +++ b/src/components/themed/TransactionListComponents.tsx @@ -1,11 +1,11 @@ +import { LinearGradient } from 'expo-linear-gradient' import * as React from 'react' import { ActivityIndicator, View } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import { cacheStyles, type Theme, useTheme } from '../services/ThemeContext' import { EdgeText } from '../themed/EdgeText' -export const EmptyLoader = () => { +export const EmptyLoader = (): React.ReactElement => { const theme = useTheme() const styles = getStyles(theme) return ( @@ -15,7 +15,9 @@ export const EmptyLoader = () => { ) } -export const SectionHeader = (props: { title?: string }) => { +export const SectionHeader = (props: { + title?: string +}): React.ReactElement => { const theme = useTheme() const styles = getStyles(theme) @@ -42,7 +44,9 @@ export const SectionHeader = (props: { title?: string }) => { ) } -export const SectionHeaderCentered = (props: { title: string }) => { +export const SectionHeaderCentered = (props: { + title: string +}): React.ReactElement => { const theme = useTheme() const styles = getStyles(theme) return ( diff --git a/src/hooks/useCarouselGesture.ts b/src/hooks/useCarouselGesture.ts index f72109948e4..24ea17b8c90 100644 --- a/src/hooks/useCarouselGesture.ts +++ b/src/hooks/useCarouselGesture.ts @@ -1,4 +1,3 @@ -import { Platform } from 'react-native' import { Gesture, type PanGesture } from 'react-native-gesture-handler' import { type SharedValue, @@ -51,16 +50,11 @@ export const useCarouselGesture = ( 0, Math.min(itemCount - 1, startIndex.value + delta) ) - scrollIndex.value = withSpring( - destValue, - Platform.OS === 'android' - ? { damping: 12 } // Old Reanimated 3 algorithm - : { - velocity: -itemScale * event.velocityX, - stiffness: 900, - damping: 100 - } - ) + scrollIndex.value = withSpring(destValue, { + velocity: -itemScale * event.velocityX, + stiffness: 900, + damping: 100 + }) if (onGestureEnd != null) runOnJS(onGestureEnd)(destValue) }) diff --git a/src/plugins/gui/scenes/AddressFormScene.tsx b/src/plugins/gui/scenes/AddressFormScene.tsx index 1cbd9979888..c66e4eaee85 100644 --- a/src/plugins/gui/scenes/AddressFormScene.tsx +++ b/src/plugins/gui/scenes/AddressFormScene.tsx @@ -2,7 +2,7 @@ import { asArray, asObject, asOptional, asString } from 'cleaners' import * as React from 'react' import { Platform, ScrollView, View } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import { SceneButtons } from '../../../components/buttons/SceneButtons' import { EdgeTouchableOpacity } from '../../../components/common/EdgeTouchableOpacity' @@ -355,9 +355,7 @@ export const AddressFormScene = React.memo((props: Props) => { {scrollContent} diff --git a/src/plugins/gui/scenes/SepaFormScene.tsx b/src/plugins/gui/scenes/SepaFormScene.tsx index 7fdd5cfee56..61350c80f46 100644 --- a/src/plugins/gui/scenes/SepaFormScene.tsx +++ b/src/plugins/gui/scenes/SepaFormScene.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Platform, ScrollView, View } from 'react-native' -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { KeyboardAwareScrollView } from 'react-native-keyboard-controller' import { SceneButtons } from '../../../components/buttons/SceneButtons' import { SceneWrapper } from '../../../components/common/SceneWrapper' @@ -139,9 +139,7 @@ export const SepaFormScene = React.memo((props: Props) => { {scrollContent} diff --git a/src/plugins/ramps/banxa/banxaRampPlugin.ts b/src/plugins/ramps/banxa/banxaRampPlugin.ts index 2eeb886718a..501882c7031 100644 --- a/src/plugins/ramps/banxa/banxaRampPlugin.ts +++ b/src/plugins/ramps/banxa/banxaRampPlugin.ts @@ -1082,7 +1082,7 @@ export const banxaRampPlugin: RampPluginFactory = ( const maxPrices = asBanxaPricesResponse(maxResponse) const maxPriceRow = maxPrices.data.prices.find(p => { return ( - p.payment_method_id === paymentObj!.id && + p.payment_method_id === paymentObj.id && p.coin_code === banxaCoin && p.fiat_code === fiatCode ) @@ -1170,7 +1170,7 @@ export const banxaRampPlugin: RampPluginFactory = ( const banxaPrices = asBanxaPricesResponse(response) const priceRow = banxaPrices.data.prices.find(p => { return ( - p.payment_method_id === paymentObj!.id && + p.payment_method_id === paymentObj.id && p.coin_code === banxaCoin && p.fiat_code === fiatCode ) diff --git a/src/types/Theme.ts b/src/types/Theme.ts index 0629d0ef019..2b23a8cabef 100644 --- a/src/types/Theme.ts +++ b/src/types/Theme.ts @@ -15,8 +15,15 @@ export interface ThemeDot { // Updates to dots. undefined keeps the dots, null deletes them export type OverrideDots = Array | undefined | null> +/** + * A gradient needs at least two stops to interpolate between. `LinearGradient` + * enforces that in its own prop types, so the theme has to promise it too — + * a plain `string[]` says nothing about length and won't satisfy it. + */ +export type GradientColors = readonly [string, string, ...string[]] + interface ThemeGradientParams { - colors: string[] + colors: GradientColors start: GradientCoords end: GradientCoords } @@ -97,7 +104,7 @@ export interface Theme { loadingIcon: string // Background - backgroundGradientColors: string[] + backgroundGradientColors: GradientColors backgroundGradientStart: { x: number; y: number } backgroundGradientEnd: { x: number; y: number } backgroundDots: { @@ -106,7 +113,7 @@ export interface Theme { dots: ThemeDot[] assetOverrideDots: OverrideDots } - assetBackgroundGradientColors: string[] + assetBackgroundGradientColors: GradientColors assetBackgroundGradientStart: { x: number; y: number } assetBackgroundGradientEnd: { x: number; y: number } assetBackgroundColorScale: number @@ -141,7 +148,7 @@ export interface Theme { tileBackgroundMuted: string // Section Lists - listSectionHeaderBackgroundGradientColors: string[] + listSectionHeaderBackgroundGradientColors: GradientColors listSectionHeaderBackgroundGradientStart: { x: number; y: number } | null listSectionHeaderBackgroundGradientEnd: { x: number; y: number } | null @@ -178,10 +185,10 @@ export interface Theme { // Header headerIcon: ImageProp - headerBackground: string[] + headerBackground: GradientColors headerBackgroundStart: GradientCoords headerBackgroundEnd: GradientCoords - headerOutlineColors: string[] + headerOutlineColors: GradientColors // Buttons buttonBorderRadiusRem: number @@ -189,7 +196,7 @@ export interface Theme { keypadButtonOutline: string keypadButtonOutlineWidth: number - keypadButton: string[] + keypadButton: GradientColors keypadButtonColorStart: GradientCoords keypadButtonColorEnd: GradientCoords keypadButtonText: string @@ -201,7 +208,7 @@ export interface Theme { primaryButtonOutline: string primaryButtonOutlineWidth: number - primaryButton: string[] + primaryButton: GradientColors primaryButtonColorStart: GradientCoords primaryButtonColorEnd: GradientCoords primaryButtonText: string @@ -212,8 +219,8 @@ export interface Theme { secondaryButtonOutline: string secondaryButtonOutlineWidth: number - secondaryButton: string[] - secondaryButtonDisabled: string[] + secondaryButton: GradientColors + secondaryButtonDisabled: GradientColors secondaryButtonColorStart: GradientCoords secondaryButtonColorEnd: GradientCoords secondaryButtonText: string @@ -224,7 +231,7 @@ export interface Theme { escapeButtonOutline: string escapeButtonOutlineWidth: number - escapeButton: string[] + escapeButton: GradientColors escapeButtonColorStart: GradientCoords escapeButtonColorEnd: GradientCoords escapeButtonText: string @@ -235,7 +242,7 @@ export interface Theme { pinUsernameButtonOutline: string pinUsernameButtonOutlineWidth: number - pinUsernameButton: string[] + pinUsernameButton: GradientColors pinUsernameButtonColorStart: GradientCoords pinUsernameButtonColorEnd: GradientCoords pinUsernameButtonText: string @@ -274,10 +281,10 @@ export interface Theme { // Mimics raised/embossed text on physical credit cards embossedTextShadow: TextShadowParams - tabBarBackground: string[] + tabBarBackground: GradientColors tabBarBackgroundStart: GradientCoords tabBarBackgroundEnd: GradientCoords - tabBarTopOutlineColors: string[] + tabBarTopOutlineColors: GradientColors tabBarIcon: string tabBarIconHighlighted: string @@ -327,7 +334,7 @@ export interface Theme { // DividerLine component dividerLineHeight: number - dividerLineColors: string[] + dividerLineColors: GradientColors // Notifications // notificationBackground: string, diff --git a/src/util/borrowUtils.ts b/src/util/borrowUtils.ts index 8c6f4d6b9bd..87774ea2066 100644 --- a/src/util/borrowUtils.ts +++ b/src/util/borrowUtils.ts @@ -25,7 +25,6 @@ export const useTotalFiatAmount = ( const defaultIsoFiat = useSelector(state => state.ui.settings.defaultIsoFiat) return React.useMemo(() => { - // @ts-expect-error return borrowArray.reduce((total, obj) => { const { currencyCode, denominations } = obj.tokenId == null ? currencyInfo : allTokens[obj.tokenId] ?? {} diff --git a/tsconfig.json b/tsconfig.json index 6aa28d2b17c..a3510044b94 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@react-native/typescript-config/tsconfig.json", + "extends": "@react-native/typescript-config", "compilerOptions": { "allowJs": false, "noEmit": true