From c05b6357c53ca6b411e07da1daa4b82d7f8728f6 Mon Sep 17 00:00:00 2001 From: M-i-k-e-l Date: Wed, 7 May 2025 13:38:36 +0300 Subject: [PATCH 1/6] RN77 upgrade + new arch Android runs (still need to fix native) | iOS red screen | docuilib still has errors --- android/build.gradle | 6 +- android/gradle.properties | 2 +- docuilib/package.json | 2 +- docuilib/plugins/uilib.js | 5 +- docuilib/yarn.lock | 10 +- expoDemo/package.json | 2 +- ios/Podfile | 7 - ios/rnuilib.xcodeproj/project.pbxproj | 44 +- ios/rnuilib/AppDelegate.h | 6 - ios/rnuilib/AppDelegate.mm | 40 - ios/rnuilib/AppDelegate.swift | 30 + ios/rnuilib/main.m | 10 - ios/rnuilibTests/Info.plist | 24 - ios/rnuilibTests/rnuilibTests.m | 65 -- metro.config.js | 2 +- package.json | 17 +- webDemo/package.json | 4 +- yarn.lock | 1109 +++++++++++++++---------- 18 files changed, 736 insertions(+), 649 deletions(-) delete mode 100644 ios/rnuilib/AppDelegate.h delete mode 100644 ios/rnuilib/AppDelegate.mm create mode 100644 ios/rnuilib/AppDelegate.swift delete mode 100644 ios/rnuilib/main.m delete mode 100644 ios/rnuilibTests/Info.plist delete mode 100644 ios/rnuilibTests/rnuilibTests.m diff --git a/android/build.gradle b/android/build.gradle index 90919f4689..442d484690 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -6,8 +6,8 @@ buildscript { minSdkVersion = 26 compileSdkVersion = 35 targetSdkVersion = 34 - ndkVersion = "26.1.10909125" - RNNKotlinVersion = "1.9.25" + ndkVersion = "27.1.12297006" + kotlinVersion = "2.0.21" } repositories { mavenLocal() @@ -19,7 +19,7 @@ buildscript { classpath("com.facebook.react:react-native-gradle-plugin") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$RNNKotlinVersion" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } } diff --git a/android/gradle.properties b/android/gradle.properties index 87828ffa13..60916a46e0 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -28,7 +28,7 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # 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/docuilib/package.json b/docuilib/package.json index ad61d38683..651cea7c75 100644 --- a/docuilib/package.json +++ b/docuilib/package.json @@ -43,7 +43,7 @@ "@types/react": "^17.0.14", "@types/react-helmet": "^6.1.2", "@types/react-router-dom": "^5.1.8", - "metro-react-native-babel-preset": "0.76.9", + "metro-react-native-babel-preset": "0.77.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-native-linear-gradient": "2.6.2", diff --git a/docuilib/plugins/uilib.js b/docuilib/plugins/uilib.js index 2bb04982cb..f1ce054d11 100644 --- a/docuilib/plugins/uilib.js +++ b/docuilib/plugins/uilib.js @@ -6,13 +6,12 @@ module.exports = ({siteDir}, _options) => { path.resolve(siteDir, 'src'), path.resolve(siteDir, 'node_modules/react-native-web'), path.resolve(siteDir, 'node_modules/react-native-ui-lib'), - // // just for not getting warnings path.resolve(siteDir, 'node_modules/react-native-shimmer-placeholder'), + path.resolve(siteDir, 'node_modules/react-native-reanimated'), path.resolve(siteDir, 'node_modules/react-native-linear-gradient') - // // end just for not getting warnings + // just for not getting warnings // path.resolve(siteDir, 'node_modules/react-native-haptic-feedback'), // path.resolve(siteDir, 'node_modules/react-native-animatable'), - // path.resolve(siteDir, 'node_modules/react-native-reanimated'), // path.resolve(siteDir, 'node_modules/react-native-svg'), // path.resolve(siteDir, 'node_modules/react-native-svg-transformer'), // path.resolve(siteDir, 'node_modules/@react-native-community/netinfo'), diff --git a/docuilib/yarn.lock b/docuilib/yarn.lock index 592a4788dd..1a98c42a0d 100644 --- a/docuilib/yarn.lock +++ b/docuilib/yarn.lock @@ -9173,9 +9173,9 @@ __metadata: languageName: node linkType: hard -"metro-react-native-babel-preset@npm:0.76.9": - version: 0.76.9 - resolution: "metro-react-native-babel-preset@npm:0.76.9" +"metro-react-native-babel-preset@npm:0.77.0": + version: 0.77.0 + resolution: "metro-react-native-babel-preset@npm:0.77.0" dependencies: "@babel/core": ^7.20.0 "@babel/plugin-proposal-async-generator-functions": ^7.0.0 @@ -9218,7 +9218,7 @@ __metadata: react-refresh: ^0.4.0 peerDependencies: "@babel/core": "*" - checksum: 344fbcbcf82a9f8425a38a910716777cf45619d7b61a1a935a903f751e3a335ff8a54f80ba9fd9a16b96ac74e68f77760cb09d2c40ec6faf113308c91b863a9e + checksum: 09fb64735d4517f62cb0cbd386bdfa64d0de5a4f8c85b54c36b5799b242e897295d58c9d18e124033233841d8fcd33a109dda3dd9f1e5554e516f689eef14a0d languageName: node linkType: hard @@ -13524,7 +13524,7 @@ __metadata: clsx: ^1.1.1 docusaurus-plugin-sass: ^0.2.1 file-loader: ^6.2.0 - metro-react-native-babel-preset: 0.76.9 + metro-react-native-babel-preset: 0.77.0 prettier: 2.8.8 prism-react-renderer: ^2.4.1 react: ^18.2.0 diff --git a/expoDemo/package.json b/expoDemo/package.json index c1fce4cf1f..a6aa963df0 100644 --- a/expoDemo/package.json +++ b/expoDemo/package.json @@ -18,7 +18,7 @@ "metro-config": "^0.75.1", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "0.76.9", + "react-native": "0.77.2", "react-native-gesture-handler": "2.25.0", "react-native-haptic-feedback": "^1.14.0", "react-native-navigation": "8.0.0", diff --git a/ios/Podfile b/ios/Podfile index 38417c7001..84bf4d4117 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,4 +1,3 @@ -ENV['RCT_NEW_ARCH_ENABLED'] = '0' # Resolve react_native_pods.rb with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', 'require.resolve( @@ -24,12 +23,6 @@ target 'rnuilib' do # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) - - target 'rnuilibTests' do - inherit! :complete - # Pods for testing - # use_flipper!() - end post_install do |installer| # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 diff --git a/ios/rnuilib.xcodeproj/project.pbxproj b/ios/rnuilib.xcodeproj/project.pbxproj index 533e775e4a..0ee2414f34 100644 --- a/ios/rnuilib.xcodeproj/project.pbxproj +++ b/ios/rnuilib.xcodeproj/project.pbxproj @@ -7,13 +7,9 @@ objects = { /* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* rnuilibTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* rnuilibTests.m */; }; - 10A864C1285B5CB00011FF03 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 10A864C0285B5CB00011FF03 /* AppDelegate.mm */; }; + 1049B78E2DCB6CE500688FC9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1049B78D2DCB6CE500688FC9 /* AppDelegate.swift */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; - 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 2DCD954D1E0B4F2C00145EB5 /* rnuilibTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* rnuilibTests.m */; }; 56EBC4A1F72808C5B51F7BBF /* libPods-rnuilib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C5768CF5EB4CEC5AF24695D /* libPods-rnuilib.a */; }; 8E52CBDF2887DD21009D5EC5 /* DesignTokens.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8E52CBDE2887DD21009D5EC5 /* DesignTokens.xcassets */; }; 8E8B0D662744D9CD0026B520 /* void.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E8B0D652744D9CD0026B520 /* void.swift */; }; @@ -43,17 +39,13 @@ /* Begin PBXFileReference section */ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 00E356EE1AD99517003FC87E /* rnuilibTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = rnuilibTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* rnuilibTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = rnuilibTests.m; sourceTree = ""; }; - 10A864C0285B5CB00011FF03 /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = rnuilib/AppDelegate.mm; sourceTree = ""; }; + 1049B78D2DCB6CE500688FC9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = rnuilib/AppDelegate.swift; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* rnuilib.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = rnuilib.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = rnuilib/AppDelegate.h; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = rnuilib/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = rnuilib/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = rnuilib/main.m; sourceTree = ""; }; 2D02E47B1E0B4A5D006451C7 /* rnuilib-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "rnuilib-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* rnuilib-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "rnuilib-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 411699F1CD4A37F8779A4620 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = rnuilib/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 411699F1CD4A37F8779A4620 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = rnuilib/PrivacyInfo.xcprivacy; sourceTree = ""; }; 56523CB09C6A79FEBA0C210A /* Pods-rnuilib-rnuilibTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-rnuilib-rnuilibTests.release.xcconfig"; path = "Target Support Files/Pods-rnuilib-rnuilibTests/Pods-rnuilib-rnuilibTests.release.xcconfig"; sourceTree = ""; }; 65B766BC0A8D1F830F3D2004 /* Pods-rnuilib.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-rnuilib.debug.xcconfig"; path = "Target Support Files/Pods-rnuilib/Pods-rnuilib.debug.xcconfig"; sourceTree = ""; }; 66AD894C4A02A884861A27E2 /* Pods-rnuilib.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-rnuilib.release.xcconfig"; path = "Target Support Files/Pods-rnuilib/Pods-rnuilib.release.xcconfig"; sourceTree = ""; }; @@ -62,7 +54,7 @@ 8E52CBDE2887DD21009D5EC5 /* DesignTokens.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = DesignTokens.xcassets; sourceTree = ""; }; 8E8B0D652744D9CD0026B520 /* void.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = void.swift; sourceTree = ""; }; 8EA1FC8B2519E7F7008B4B36 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = rnuilib/LaunchScreen.storyboard; sourceTree = ""; }; - DED5A85D4BF49DFA47437893 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = rnuilib/PrivacyInfo.xcprivacy; sourceTree = ""; }; + DED5A85D4BF49DFA47437893 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = rnuilib/PrivacyInfo.xcprivacy; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; FB858F3A7230EAA142D23DA1 /* libPods-rnuilib-rnuilibTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-rnuilib-rnuilibTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -102,33 +94,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* rnuilibTests */ = { - isa = PBXGroup; - children = ( - 00E356F21AD99517003FC87E /* rnuilibTests.m */, - 00E356F01AD99517003FC87E /* Supporting Files */, - ); - path = rnuilibTests; - sourceTree = ""; - }; - 00E356F01AD99517003FC87E /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 00E356F11AD99517003FC87E /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; 13B07FAE1A68108700A75B9A /* rnuilib */ = { isa = PBXGroup; children = ( 8E52CBDE2887DD21009D5EC5 /* DesignTokens.xcassets */, - 10A864C0285B5CB00011FF03 /* AppDelegate.mm */, + 1049B78D2DCB6CE500688FC9 /* AppDelegate.swift */, 008F07F21AC5B25A0029DE68 /* main.jsbundle */, - 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, - 13B07FB71A68108700A75B9A /* main.m */, 8EA1FC8B2519E7F7008B4B36 /* LaunchScreen.storyboard */, 8E8B0D652744D9CD0026B520 /* void.swift */, DED5A85D4BF49DFA47437893 /* PrivacyInfo.xcprivacy */, @@ -159,7 +132,6 @@ children = ( 13B07FAE1A68108700A75B9A /* rnuilib */, 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* rnuilibTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, D99C980AB24A05601E0007F9 /* Pods */, @@ -571,7 +543,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 00E356F31AD99517003FC87E /* rnuilibTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -579,8 +550,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 13B07FC11A68108700A75B9A /* main.m in Sources */, - 10A864C1285B5CB00011FF03 /* AppDelegate.mm in Sources */, + 1049B78E2DCB6CE500688FC9 /* AppDelegate.swift in Sources */, 8E8B0D662744D9CD0026B520 /* void.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -589,7 +559,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -597,7 +566,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2DCD954D1E0B4F2C00145EB5 /* rnuilibTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ios/rnuilib/AppDelegate.h b/ios/rnuilib/AppDelegate.h deleted file mode 100644 index 5d2808256c..0000000000 --- a/ios/rnuilib/AppDelegate.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import - -@interface AppDelegate : RCTAppDelegate - -@end diff --git a/ios/rnuilib/AppDelegate.mm b/ios/rnuilib/AppDelegate.mm deleted file mode 100644 index 65e11a792d..0000000000 --- a/ios/rnuilib/AppDelegate.mm +++ /dev/null @@ -1,40 +0,0 @@ -// Reverting to using AppDelegate.m since this is causing iOS to fail on start -#import "AppDelegate.h" -#import -#import - -@implementation AppDelegate - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; - [ReactNativeNavigation bootstrapWithBridge:bridge]; - -// self.moduleName = @"rnuilib"; - // You can add your custom initial props in the dictionary below. - // They will be passed down to the ViewController used by React Native. - self.initialProps = @{}; - -// return [super application:application didFinishLaunchingWithOptions:launchOptions]; - return YES; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ - return [self bundleURL]; -} - -- (NSURL *)bundleURL -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge { - return [ReactNativeNavigation extraModulesForBridge:bridge]; -} - -@end diff --git a/ios/rnuilib/AppDelegate.swift b/ios/rnuilib/AppDelegate.swift new file mode 100644 index 0000000000..eee91b256d --- /dev/null +++ b/ios/rnuilib/AppDelegate.swift @@ -0,0 +1,30 @@ +import UIKit +import React +import React_RCTAppDelegate +import ReactAppDependencyProvider + +@main +class AppDelegate: RCTAppDelegate { + override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + self.moduleName = "rnuilib" + self.dependencyProvider = RCTAppDependencyProvider() + + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = [:] + + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + + override func sourceURL(for bridge: RCTBridge) -> URL? { + self.bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") +#else + Bundle.main.url(forResource: "main", withExtension: "jsbundle") +#endif + } +} diff --git a/ios/rnuilib/main.m b/ios/rnuilib/main.m deleted file mode 100644 index d645c7246c..0000000000 --- a/ios/rnuilib/main.m +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/ios/rnuilibTests/Info.plist b/ios/rnuilibTests/Info.plist deleted file mode 100644 index ba72822e87..0000000000 --- a/ios/rnuilibTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/ios/rnuilibTests/rnuilibTests.m b/ios/rnuilibTests/rnuilibTests.m deleted file mode 100644 index 610389222a..0000000000 --- a/ios/rnuilibTests/rnuilibTests.m +++ /dev/null @@ -1,65 +0,0 @@ -#import -#import - -#import -#import - -#define TIMEOUT_SECONDS 600 -#define TEXT_TO_LOOK_FOR @"Welcome to React" - -@interface rnuilibTests : XCTestCase - -@end - -@implementation rnuilibTests - -- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test -{ - if (test(view)) { - return YES; - } - for (UIView *subview in [view subviews]) { - if ([self findSubviewInView:subview matching:test]) { - return YES; - } - } - return NO; -} - -- (void)testRendersWelcomeScreen -{ - UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; - NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; - BOOL foundElement = NO; - - __block NSString *redboxError = nil; -#ifdef DEBUG - RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { - if (level >= RCTLogLevelError) { - redboxError = message; - } - }); -#endif - - while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; - - foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { - if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { - return YES; - } - return NO; - }]; - } - -#ifdef DEBUG - RCTSetLogFunction(RCTDefaultLogFunction); -#endif - - XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); - XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); -} - - -@end diff --git a/metro.config.js b/metro.config.js index 681a876f86..3bed1e1c94 100644 --- a/metro.config.js +++ b/metro.config.js @@ -7,7 +7,7 @@ const {assetExts, sourceExts} = defaultConfig.resolver; * Metro configuration * https://reactnative.dev/docs/metro * - * @type {import('metro-config').MetroConfig} + * @type {import('@react-native/metro-config').MetroConfig} */ const config = { diff --git a/package.json b/package.json index a6cac69452..d90d6c217c 100644 --- a/package.json +++ b/package.json @@ -78,15 +78,15 @@ "@react-native-community/cli-platform-ios": "15.0.1", "@react-native-community/datetimepicker": "^3.4.6", "@react-native-community/netinfo": "11.3.3", - "@react-native/babel-preset": "0.76.9", - "@react-native/eslint-config": "0.76.9", - "@react-native/metro-config": "0.76.9", - "@react-native/typescript-config": "0.76.9", + "@react-native/babel-preset": "0.77.2", + "@react-native/eslint-config": "0.77.2", + "@react-native/metro-config": "0.77.2", + "@react-native/typescript-config": "0.77.2", "@shopify/flash-list": "1.7.6", "@testing-library/react-hooks": "^8.0.1", "@testing-library/react-native": "^11.5.1", "@types/hoist-non-react-statics": "^3.3.1", - "@types/jest": "^29.2.1", + "@types/jest": "^29.5.13", "@types/lodash": "^4.0.0", "@types/prop-types": "^15.5.3", "@types/react": "18.3.7", @@ -96,7 +96,6 @@ "@typescript-eslint/eslint-plugin": "^5.3.1", "@typescript-eslint/parser": "^5.3.1", "@welldone-software/why-did-you-render": "^3.2.1", - "babel-jest": "^29.6.3", "babel-plugin-lodash": "^3.3.4", "babel-plugin-module-resolver": "^5.0.0", "eslint": "8.19.0", @@ -115,13 +114,13 @@ "react": "18.2.0", "react-autobind": "^1.0.6", "react-dom": "^18.2.0", - "react-native": "0.76.9", + "react-native": "0.77.2", "react-native-fs": "^2.20.0", "react-native-gesture-handler": "2.25.0", "react-native-haptic-feedback": "^1.11.0", "react-native-linear-gradient": "2.6.2", - "react-native-mmkv": "2.11.0", - "react-native-navigation": "8.0.0", + "react-native-mmkv": "3.2.0", + "react-native-navigation": "8.1.0-alpha-snapshot.1648", "react-native-reanimated": "3.17.3", "react-native-shimmer-placeholder": "^2.0.6", "react-native-svg": "15.11.2", diff --git a/webDemo/package.json b/webDemo/package.json index 9b8c10a559..299549bb5b 100644 --- a/webDemo/package.json +++ b/webDemo/package.json @@ -42,7 +42,7 @@ "@types/react-dom": "^17.0.2", "@typescript-eslint/eslint-plugin": "4.25.0", "@typescript-eslint/parser": "4.25.0", - "@react-native/babel-preset": "0.76.9", + "@react-native/babel-preset": "0.77.2", "@react-native-community/cli": "15.0.1", "@react-native-community/cli-platform-android": "15.0.1", "@react-native-community/cli-platform-ios": "15.0.1", @@ -56,7 +56,7 @@ "eslint-plugin-react": "7.24.0", "eslint-plugin-react-hooks": "^4.0.4", "html-webpack-plugin": "^4.0.0", - "metro-react-native-babel-preset": "0.76.9", + "metro-react-native-babel-preset": "0.77.0", "process": "^0.11.10", "ts-loader": "^9.3.1", "url-loader": "^4.1.1", diff --git a/yarn.lock b/yarn.lock index 0039bdd0b4..831dc10e82 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,6 +63,17 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": ^7.27.1 + js-tokens: ^4.0.0 + picocolors: ^1.1.1 + checksum: 5874edc5d37406c4a0bb14cf79c8e51ad412fb0423d176775ac14fc0259831be1bf95bdda9c2aa651126990505e09a9f0ed85deaa99893bc316d2682c5115bdc + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.2": version: 7.25.4 resolution: "@babel/compat-data@npm:7.25.4" @@ -77,7 +88,14 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9": +"@babel/compat-data@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/compat-data@npm:7.27.2" + checksum: 8d4066324e5f1275adc43f2e22110cac29ee09fe926260c43f0eaa432c148859367df4152574a28ee02dbb3e3d11dd57145eed345d49cc07f9b6e11fee06535f + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9": version: 7.25.2 resolution: "@babel/core@npm:7.25.2" dependencies: @@ -100,6 +118,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/core@npm:7.27.1" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.27.1 + "@babel/generator": ^7.27.1 + "@babel/helper-compilation-targets": ^7.27.1 + "@babel/helper-module-transforms": ^7.27.1 + "@babel/helpers": ^7.27.1 + "@babel/parser": ^7.27.1 + "@babel/template": ^7.27.1 + "@babel/traverse": ^7.27.1 + "@babel/types": ^7.27.1 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: fce205f9eea387ed8a9c6de64e5a8f50256359bfc8f1352c576c843b4c148a6c2ef187cfe8d729453e520fdcc997f65920aca6cb8911fb25dfd2286966b9b914 + languageName: node + linkType: hard + "@babel/core@npm:^7.25.2": version: 7.26.10 resolution: "@babel/core@npm:7.26.10" @@ -162,6 +203,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/generator@npm:7.27.1" + dependencies: + "@babel/parser": ^7.27.1 + "@babel/types": ^7.27.1 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^3.0.2 + checksum: d5e220eb20aca1d93aef85c4c716237f84c5aab7d3ed8dfeb7060dcd73d20c593a687fe74cfb6d3dc1604ef9faff2ca24e6cfdb1af18e03e3a5f9f63a04c0bdc + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" @@ -180,6 +234,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-annotate-as-pure@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.1" + dependencies: + "@babel/types": ^7.27.1 + checksum: 3f8e4d591458d6c0621a3d670f8798b8895580214287390126e3e621ddf3df0bd07cbcc9500c2671b9ec10162c2f9feb1194da5cf039d40df8cb69d181fc0cd8 + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7, @babel/helper-compilation-targets@npm:^7.24.8, @babel/helper-compilation-targets@npm:^7.25.2": version: 7.25.2 resolution: "@babel/helper-compilation-targets@npm:7.25.2" @@ -206,7 +269,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.24.7, @babel/helper-create-class-features-plugin@npm:^7.25.0, @babel/helper-create-class-features-plugin@npm:^7.25.4": +"@babel/helper-compilation-targets@npm:^7.27.1": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": ^7.27.2 + "@babel/helper-validator-option": ^7.27.1 + browserslist: ^4.24.0 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: 7b95328237de85d7af1dea010a4daa28e79f961dda48b652860d5893ce9b136fc8b9ea1f126d8e0a24963b09ba5c6631dcb907b4ce109b04452d34a6ae979807 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.24.7, @babel/helper-create-class-features-plugin@npm:^7.25.0, @babel/helper-create-class-features-plugin@npm:^7.25.4": version: 7.25.4 resolution: "@babel/helper-create-class-features-plugin@npm:7.25.4" dependencies: @@ -240,6 +316,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-class-features-plugin@npm:7.27.1" + 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 + semver: ^6.3.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 406954b455e5b20924e7d1b41cf932e6e98e95c3a5224c7a70c3ad96a84e8fbde915ceff7ddbf9c7d121397c4e9274f061241648475122cf6fe54e0a95caae15 + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7": version: 7.25.2 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.2" @@ -316,6 +409,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" + dependencies: + "@babel/traverse": ^7.27.1 + "@babel/types": ^7.27.1 + checksum: b13a3d120015a6fd2f6e6c2ff789cd12498745ef028710cba612cfb751b91ace700c3f96c1689228d1dcb41e9d4cf83d6dff8627dcb0c8da12d79440e783c6b8 + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-module-imports@npm:7.24.7" @@ -336,6 +439,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": ^7.27.1 + "@babel/types": ^7.27.1 + checksum: 92d01c71c0e4aacdc2babce418a9a1a27a8f7d770a210ffa0f3933f321befab18b655bc1241bebc40767516731de0b85639140c42e45a8210abe1e792f115b28 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.2": version: 7.25.2 resolution: "@babel/helper-module-transforms@npm:7.25.2" @@ -363,6 +476,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-transforms@npm:7.27.1" + dependencies: + "@babel/helper-module-imports": ^7.27.1 + "@babel/helper-validator-identifier": ^7.27.1 + "@babel/traverse": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 816dd166f0a850616d01ca198715d78fef052a834dc155dd57e4405d702f288071077be3ed58e13c86ac9e63ca560e876cc6d70cf5ef0f1f62bd9321084d4c06 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" @@ -381,7 +507,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-optimise-call-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" + dependencies: + "@babel/types": ^7.27.1 + checksum: 0fb7ee824a384529d6b74f8a58279f9b56bfe3cce332168067dddeab2552d8eeb56dc8eaf86c04a3a09166a316cb92dfc79c4c623cd034ad4c563952c98b464f + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.24.8, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.24.8 resolution: "@babel/helper-plugin-utils@npm:7.24.8" checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a @@ -395,6 +530,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 5d715055301badab62bdb2336075a77f8dc8bd290cad2bc1b37ea3bf1b3efc40594d308082229f239deb4d6b5b80b0a73bce000e595ea74416e0339c11037047 + languageName: node + linkType: hard + "@babel/helper-remap-async-to-generator@npm:^7.24.7, @babel/helper-remap-async-to-generator@npm:^7.25.0": version: 7.25.0 resolution: "@babel/helper-remap-async-to-generator@npm:7.25.0" @@ -447,6 +589,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" + dependencies: + "@babel/helper-member-expression-to-functions": ^7.27.1 + "@babel/helper-optimise-call-expression": ^7.27.1 + "@babel/traverse": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 3690266c304f21008690ba68062f889a363583cabc13c3d033b94513953147af3e0a3fdb48fa1bb9fa3734b64e221fc65e5222ab70837f02321b7225f487c6ef + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-simple-access@npm:7.24.7" @@ -457,7 +612,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" dependencies: @@ -477,6 +632,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" + dependencies: + "@babel/traverse": ^7.27.1 + "@babel/types": ^7.27.1 + checksum: 4f380c5d0e0769fa6942a468b0c2d7c8f0c438f941aaa88f785f8752c103631d0904c7b4e76207a3b0e6588b2dec376595370d92ca8f8f1b422c14a69aa146d4 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.24.8": version: 7.24.8 resolution: "@babel/helper-string-parser@npm:7.24.8" @@ -491,6 +656,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 0a8464adc4b39b138aedcb443b09f4005d86207d7126e5e079177e05c3116107d856ec08282b365e9a79a9872f40f4092a6127f8d74c8a01c1ef789dacfc25d6 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-validator-identifier@npm:7.24.7" @@ -505,6 +677,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 3c7e8391e59d6c85baeefe9afb86432f2ab821c6232b00ea9082a51d3e7e95a2f3fb083d74dc1f49ac82cf238e1d2295dafcb001f7b0fab479f3f56af5eaaa47 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.24.7, @babel/helper-validator-option@npm:^7.24.8": version: 7.24.8 resolution: "@babel/helper-validator-option@npm:7.24.8" @@ -519,6 +698,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: db73e6a308092531c629ee5de7f0d04390835b21a263be2644276cb27da2384b64676cab9f22cd8d8dbd854c92b1d7d56fc8517cf0070c35d1c14a8c828b0903 + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.25.0": version: 7.25.0 resolution: "@babel/helper-wrap-function@npm:7.25.0" @@ -561,6 +747,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helpers@npm:7.27.1" + dependencies: + "@babel/template": ^7.27.1 + "@babel/types": ^7.27.1 + checksum: 19ede1e996cbd295fb3a881ff70bc0f91c5133ebac256441e9ecd69dfba89456e75cf7ecf06cd276c638a4de7bd6eff21151961c78038d0b23d94b4d23415ee4 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.24.7": version: 7.24.7 resolution: "@babel/highlight@npm:7.24.7" @@ -573,7 +769,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6, @babel/parser@npm:^7.7.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6, @babel/parser@npm:^7.7.0": version: 7.25.6 resolution: "@babel/parser@npm:7.25.6" dependencies: @@ -584,6 +780,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.24.7, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/parser@npm:7.27.2" + dependencies: + "@babel/types": ^7.27.1 + bin: + parser: ./bin/babel-parser.js + checksum: 1ac70a75028f1cc10eefb10ed2d83cf700ca3e1ddb4cf556a003fc5c4ca53ae83350bbb8065020fcc70d476fcf7bf1c17191b72384f719614ae18397142289cf + languageName: node + linkType: hard + "@babel/parser@npm:^7.25.3, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0": version: 7.27.0 resolution: "@babel/parser@npm:7.27.0" @@ -654,18 +861,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-properties@npm:^7.13.0": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 - languageName: node - linkType: hard - "@babel/plugin-proposal-export-default-from@npm:^7.24.7": version: 7.25.9 resolution: "@babel/plugin-proposal-export-default-from@npm:7.25.9" @@ -677,31 +872,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": - version: 7.21.0 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 11c5449e01b18bb8881e8e005a577fa7be2fe5688e2382c8822d51f8f7005342a301a46af7b273b1f5645f9a7b894c428eee8526342038a275ef6ba4c8d8d746 - languageName: node - linkType: hard - "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": version: 7.21.0-placeholder-for-preset-env.2 resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" @@ -777,7 +947,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.24.7": +"@babel/plugin-syntax-flow@npm:^7.12.1": version: 7.24.7 resolution: "@babel/plugin-syntax-flow@npm:7.24.7" dependencies: @@ -799,6 +969,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-flow@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-flow@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7baca3171ed595d04c865b0ce46fca7f21900686df9d7fcd1017036ce78bb5483e33803de810831e68d39cf478953db69f49ae3f3de2e3207bc4ba49a96b6739 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-assertions@npm:^7.26.0": version: 7.26.0 resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" @@ -876,6 +1057,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c6d1324cff286a369aa95d99b8abd21dd07821b5d3affd5fe7d6058c84cff9190743287826463ee57a7beecd10fa1e4bc99061df532ee14e188c1c8937b13e3a + languageName: node + linkType: hard + "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -986,6 +1178,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 87836f7e32af624c2914c73cd6b9803cf324e07d43f61dbb973c6a86f75df725e12540d91fac7141c14b697aa9268fd064220998daced156e96ac3062d7afb41 + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1118,6 +1321,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-properties@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 475a6e5a9454912fe1bdc171941976ca10ea4e707675d671cdb5ce6b6761d84d1791ac61b6bca81a2e5f6430cb7b9d8e4b2392404110e69c28207a754e196294 + languageName: node + linkType: hard + "@babel/plugin-transform-class-properties@npm:^7.25.4": version: 7.25.4 resolution: "@babel/plugin-transform-class-properties@npm:7.25.4" @@ -1288,18 +1503,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.24.7": - version: 7.25.2 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.2" - dependencies: - "@babel/helper-plugin-utils": ^7.24.8 - "@babel/plugin-syntax-flow": ^7.24.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9f7b96cbd374077eaf04b59e468976d2e89ec353807d7ac28f129f686945447df92aeb5b60acf906f3ec0f9ebef5d9f88735c7aa39af97033a6ab96c79c9a909 - languageName: node - linkType: hard - "@babel/plugin-transform-flow-strip-types@npm:^7.25.2": version: 7.26.5 resolution: "@babel/plugin-transform-flow-strip-types@npm:7.26.5" @@ -1312,6 +1515,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-flow-strip-types@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/plugin-syntax-flow": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0885028866fadefef35292d5a27f878d6a12b6f83778f8731481d4503b49c258507882a7de2aafda9b62d5f6350042f1a06355b998d5ed5e85d693bfcb77b939 + languageName: node + linkType: hard + "@babel/plugin-transform-for-of@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-for-of@npm:7.24.7" @@ -1441,7 +1656,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.17.9, @babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8": +"@babel/plugin-transform-modules-commonjs@npm:^7.17.9, @babel/plugin-transform-modules-commonjs@npm:^7.24.7, @babel/plugin-transform-modules-commonjs@npm:^7.24.8": version: 7.24.8 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.8" dependencies: @@ -1466,6 +1681,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: bc45c1beff9b145c982bd6a614af338893d38bce18a9df7d658c9084e0d8114b286dcd0e015132ae7b15dd966153cb13321e4800df9766d0ddd892d22bf09d2a + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" @@ -1648,6 +1875,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-chaining@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-skip-transparent-expression-wrappers": ^7.27.1 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c4428d31f182d724db6f10575669aad3dbccceb0dea26aa9071fa89f11b3456278da3097fcc78937639a13c105a82cd452dc0218ce51abdbcf7626a013b928a5 + languageName: node + linkType: hard + "@babel/plugin-transform-optional-chaining@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" @@ -2012,6 +2251,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typescript@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": ^7.27.1 + "@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 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 0037db32fedaacf42b5b3df774263bb7176d455859f77322f57135f7e50e457e5c95151280fc83bb9942fc1839e785489b098d73c9539d0f3c7dc9d42b3a8e86 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-escapes@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" @@ -2150,16 +2404,16 @@ __metadata: languageName: node linkType: hard -"@babel/preset-flow@npm:^7.13.13": - version: 7.24.7 - resolution: "@babel/preset-flow@npm:7.24.7" +"@babel/preset-flow@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/preset-flow@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 - "@babel/helper-validator-option": ^7.24.7 - "@babel/plugin-transform-flow-strip-types": ^7.24.7 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/helper-validator-option": ^7.27.1 + "@babel/plugin-transform-flow-strip-types": ^7.27.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4caca02a6e0a477eb22994d686a1fbf65b5ab0240ae77530696434dba7efff4c5dcbf9186a774168dd4c492423141a22af3f2874c356aa22429f3c83eaf34419 + checksum: f3f25b390debf72a6ff0170a2d5198aea344ba96f05eaca0bae2c7072119706fd46321604d89646bda1842527cfc6eab8828a983ec90149218d2120b9cd26596 languageName: node linkType: hard @@ -2192,7 +2446,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.16.7": +"@babel/preset-typescript@npm:^7.16.7": version: 7.24.7 resolution: "@babel/preset-typescript@npm:7.24.7" dependencies: @@ -2207,9 +2461,24 @@ __metadata: languageName: node linkType: hard -"@babel/register@npm:^7.13.16": - version: 7.24.6 - resolution: "@babel/register@npm:7.24.6" +"@babel/preset-typescript@npm:^7.24.7": + version: 7.27.1 + resolution: "@babel/preset-typescript@npm:7.27.1" + 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 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 38020f1b23e88ec4fbffd5737da455d8939244bddfb48a2516aef93fb5947bd9163fb807ce6eff3e43fa5ffe9113aa131305fef0fb5053998410bbfcfe6ce0ec + languageName: node + linkType: hard + +"@babel/register@npm:^7.24.6": + version: 7.27.1 + resolution: "@babel/register@npm:7.27.1" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 @@ -2218,7 +2487,7 @@ __metadata: source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 446316c80969df89ad3515576937ddf746cd4927810f226101a8d7f476b399c14c26847e77637e09355399c645fbf413d6e53ac6987b8cf240de7932a9372cb5 + checksum: 154ab3075f245466bbd7a3f0cf972328365961a6f621ecb7795ba67e70243596138c264ac7cb79df4a93527318021b5edbab1df39b669afc83159a9e6e560770 languageName: node linkType: hard @@ -2260,6 +2529,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.27.1": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": ^7.27.1 + "@babel/parser": ^7.27.2 + "@babel/types": ^7.27.1 + checksum: ff5628bc066060624afd970616090e5bba91c6240c2e4b458d13267a523572cbfcbf549391eec8217b94b064cf96571c6273f0c04b28a8567b96edc675c28e27 + languageName: node + linkType: hard + "@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.0, @babel/traverse@npm:^7.25.1, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.3, @babel/traverse@npm:^7.25.4, @babel/traverse@npm:^7.7.0": version: 7.25.6 resolution: "@babel/traverse@npm:7.25.6" @@ -2290,6 +2570,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/traverse@npm:7.27.1" + dependencies: + "@babel/code-frame": ^7.27.1 + "@babel/generator": ^7.27.1 + "@babel/parser": ^7.27.1 + "@babel/template": ^7.27.1 + "@babel/types": ^7.27.1 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 7ea3ec36a65e734f2921f5dba6f417f5dd0c90eb44a60f6addbacbbedb44e8c82eba415a74feb7d6df58e351519b81b11b6ca3c0c7c41a3f73ebeaf6895a826c + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0": version: 7.25.6 resolution: "@babel/types@npm:7.25.6" @@ -2311,6 +2606,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/types@npm:7.27.1" + dependencies: + "@babel/helper-string-parser": ^7.27.1 + "@babel/helper-validator-identifier": ^7.27.1 + checksum: 357c13f37aaa2f2e2cfcdb63f986d5f7abc9f38df20182b620ace34387d2460620415770fe5856eb54d70c9f0ba2f71230d29465e789188635a948476b830ae4 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -3211,25 +3516,26 @@ __metadata: languageName: node linkType: hard -"@react-native/assets-registry@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/assets-registry@npm:0.76.9" - checksum: 07e7da7a20745b6bdea99620e50d69c76219b7232b21cc43982696123a330cebd9d24e1a4be2a61588ab3af5155557e651267dfad9c91ad0bc8e098e6e7ad38f +"@react-native/assets-registry@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/assets-registry@npm:0.77.2" + checksum: a1a5b650f5e78769baddb75c4e53f3f7662e97a58fc5eeabe687d1a825eeccda28cc657f00869f3e9f3cb6a84af717b889e5e08430448910979e27c9b568685f languageName: node linkType: hard -"@react-native/babel-plugin-codegen@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/babel-plugin-codegen@npm:0.76.9" +"@react-native/babel-plugin-codegen@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/babel-plugin-codegen@npm:0.77.2" dependencies: - "@react-native/codegen": 0.76.9 - checksum: 13bba234a6c9e29fa4f7bf13a23ce8aecc5fc00da6cef6f6dd0462f82cdfeeeca62842c054ffe626662a92326774bf22723a90be5ac2158990386422ceee96c5 + "@babel/traverse": ^7.25.3 + "@react-native/codegen": 0.77.2 + checksum: 10f35a509208976f460b547a9ea747f12b6631e097d7accd7f5927ca209a92396288ae97b2905a3ac1da65c9f7dacbf2e5ffce6a81d3879fb8080cae926449a0 languageName: node linkType: hard -"@react-native/babel-preset@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/babel-preset@npm:0.76.9" +"@react-native/babel-preset@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/babel-preset@npm:0.77.2" dependencies: "@babel/core": ^7.25.2 "@babel/plugin-proposal-export-default-from": ^7.24.7 @@ -3272,47 +3578,45 @@ __metadata: "@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.76.9 - babel-plugin-syntax-hermes-parser: ^0.25.1 + "@react-native/babel-plugin-codegen": 0.77.2 + babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: ^0.0.2 react-refresh: ^0.14.0 peerDependencies: "@babel/core": "*" - checksum: b48ac1195d4b52a14134f3dbfa26771aa66db0b787ebced6153d7c60802f1b959a3cf07b873da1b085e7db9b527507d1111302bb177ad52d7c77d635b6f3805b + checksum: b67d44d8ce4dcb4c9cdcb5df0ad8e00ed71adadfe76116ce110777f31419d1cf21b655f0e27625d7beff3763ab608369ee799dd082d596eb921631742a20ad67 languageName: node linkType: hard -"@react-native/codegen@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/codegen@npm:0.76.9" +"@react-native/codegen@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/codegen@npm:0.77.2" dependencies: "@babel/parser": ^7.25.3 glob: ^7.1.1 - hermes-parser: 0.23.1 + hermes-parser: 0.25.1 invariant: ^2.2.4 - jscodeshift: ^0.14.0 - mkdirp: ^0.5.1 + jscodeshift: ^17.0.0 nullthrows: ^1.1.1 yargs: ^17.6.2 peerDependencies: "@babel/preset-env": ^7.1.6 - checksum: fcb26bd5be6f923eafd05e356ab01c9bbd30cab5e950bb050312a651771bcb2cb8484a3ba511e1460d44f508700565b0b69d43039c8cc61e63b9eacca6b9c756 + checksum: 7839ee655de0372e0356d1edf369bf90eefc600d3b63ccfceb5e3e211ad0dce5611517136a65a510dd4c7814fe487f74e190766b4442f54039f9b716a06d1c44 languageName: node linkType: hard -"@react-native/community-cli-plugin@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/community-cli-plugin@npm:0.76.9" +"@react-native/community-cli-plugin@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/community-cli-plugin@npm:0.77.2" dependencies: - "@react-native/dev-middleware": 0.76.9 - "@react-native/metro-babel-transformer": 0.76.9 + "@react-native/dev-middleware": 0.77.2 + "@react-native/metro-babel-transformer": 0.77.2 chalk: ^4.0.0 - execa: ^5.1.1 + debug: ^2.2.0 invariant: ^2.2.4 - metro: ^0.81.0 - metro-config: ^0.81.0 - metro-core: ^0.81.0 - node-fetch: ^2.2.0 + metro: ^0.81.3 + metro-config: ^0.81.3 + metro-core: ^0.81.3 readline: ^1.3.0 semver: ^7.1.3 peerDependencies: @@ -3320,23 +3624,23 @@ __metadata: peerDependenciesMeta: "@react-native-community/cli": optional: true - checksum: 1c0c054d20b3b4c978928e80aa5e56cadeb8dfc1c80a374f67a23e80e2acac0fff5aea0b3f6413483f1ba2bad6a65749e8105dd0ebf2dcd6b045f88e3d7c8d24 + checksum: eb992f145dc27de54febd992437a5542eaf2fdc4fe35609679b5e8fe4909a5f68d1a91465cd2f44007e8ad9f66665d7e62cc3beedbe8127ab3026b5067781b3d languageName: node linkType: hard -"@react-native/debugger-frontend@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/debugger-frontend@npm:0.76.9" - checksum: c537ae5be75bb9a0a549d88b6545762364d87a1166c8a7339ccd774257096a2c62f83efdd86c78553a3f1c4ef35cfa7708aba477bf6eeb76b7814ceab2b98069 +"@react-native/debugger-frontend@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/debugger-frontend@npm:0.77.2" + checksum: 154d32672fe9985a0e93c77a0ab0191a1100e01b5b18691606d7082d5145b73102b9adcd7fa54ee0f2628b01200fd125f4d05f44cd3f9efdbad1cac08a73742c languageName: node linkType: hard -"@react-native/dev-middleware@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/dev-middleware@npm:0.76.9" +"@react-native/dev-middleware@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/dev-middleware@npm:0.77.2" dependencies: "@isaacs/ttlcache": ^1.4.1 - "@react-native/debugger-frontend": 0.76.9 + "@react-native/debugger-frontend": 0.77.2 chrome-launcher: ^0.15.2 chromium-edge-launcher: ^0.2.0 connect: ^3.6.5 @@ -3345,19 +3649,19 @@ __metadata: nullthrows: ^1.1.1 open: ^7.0.3 selfsigned: ^2.4.1 - serve-static: ^1.13.1 + serve-static: ^1.16.2 ws: ^6.2.3 - checksum: 1f7750ae0c4d4d7970a73cd4f8443004a93b91b998a003ddb965274eb718d2a70ff06d182903dcaeccf15d8d245f488a397ea8ae53f6ed5f25e4d476d844b90f + checksum: 062495c7642e8061b300cb4e6c0045303e09aa25593404baa49d2b5cadac8b9b182d478ba556562f24ebfa69415814b4b9cf0d3438c7e600b457e66292618567 languageName: node linkType: hard -"@react-native/eslint-config@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/eslint-config@npm:0.76.9" +"@react-native/eslint-config@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/eslint-config@npm:0.77.2" dependencies: "@babel/core": ^7.25.2 "@babel/eslint-parser": ^7.25.1 - "@react-native/eslint-plugin": 0.76.9 + "@react-native/eslint-plugin": 0.77.2 "@typescript-eslint/eslint-plugin": ^7.1.1 "@typescript-eslint/parser": ^7.1.1 eslint-config-prettier: ^8.5.0 @@ -3370,54 +3674,54 @@ __metadata: peerDependencies: eslint: ">=8" prettier: ">=2" - checksum: 79147a2c55df65358ced8d28ca2c885206c95006e48f981aeebed21528ecfe607c7786c7dda5b65bcfce96a4dcb3d9e5786ec199994c8782256f375bedd88393 + checksum: 0a2f59d242f98c61acf5aa1151f5351ebce8f146961bac25b50cf3c80c713e7447f6837591b5fd4e134a96f85983385b3abeb2c9fa97c025a3c7a2573347d1f1 languageName: node linkType: hard -"@react-native/eslint-plugin@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/eslint-plugin@npm:0.76.9" - checksum: b932f7b44590142c6bf255b3dbfcd65ff1fd76805dc3d59f4874f9d1f3a4324d02a6854fbb46bde9d205e0d68d109db2875f6ab68ac12d5f567b64a82c86e340 +"@react-native/eslint-plugin@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/eslint-plugin@npm:0.77.2" + checksum: f3386e95e22646aa2bfef4989c72f45043e147ae81f90599bf9ce84eccc82e5ee275085b314d6228af29b7de98522c31dc83b3b78422695fc47e0ef82f3a5652 languageName: node linkType: hard -"@react-native/gradle-plugin@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/gradle-plugin@npm:0.76.9" - checksum: afc6010cf278ed7dba58fb67cb789965edb6cfb3608e54b518232ef46b651f541915b7f6eae0b298457ccd8626213c687962ec250143e714de5e3bd2dc6dc210 +"@react-native/gradle-plugin@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/gradle-plugin@npm:0.77.2" + checksum: 7a1ea02ab2d7cb48b2e3426c4352d1718c899605477a6a321de8eb77240236417f2e52744be92b4b2f7b9304ed37112e9b015ed9947572a189a444a3cd64cb92 languageName: node linkType: hard -"@react-native/js-polyfills@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/js-polyfills@npm:0.76.9" - checksum: c49aac99f6973b102a9013632c204f02a57d96da500901bc6730ab96f56950d6924417e39c87be640a3a59b67e1af2583432361f55bf42c959aff02a285bcafc +"@react-native/js-polyfills@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/js-polyfills@npm:0.77.2" + checksum: 5934885baa67414aa40785470c06b21c0eee1405f48ffb3b773dc1c9fd1da7f6cb9b9c9bf1c81d54b3e9399cb0cc0d54be88ea26bdcc4bca5134a563bd8003b6 languageName: node linkType: hard -"@react-native/metro-babel-transformer@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/metro-babel-transformer@npm:0.76.9" +"@react-native/metro-babel-transformer@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/metro-babel-transformer@npm:0.77.2" dependencies: "@babel/core": ^7.25.2 - "@react-native/babel-preset": 0.76.9 - hermes-parser: 0.23.1 + "@react-native/babel-preset": 0.77.2 + hermes-parser: 0.25.1 nullthrows: ^1.1.1 peerDependencies: "@babel/core": "*" - checksum: cb38d150e30b3e07e2cb8e637e26b4dcb8b58d6accc95f51e507baea94bb970a0077573c319849a3e7d9bf976dadc39cf363bb505f53de1a209e1bb9ea0428f8 + checksum: 70526eb6fd1bc4b973daa06b836b2130891f1c5c44ea5f21612e7626bb5f2f2552f090b5b7be2bb0ab9c47077ba36ef28ded29f41892c489f9f263f7e4062dd4 languageName: node linkType: hard -"@react-native/metro-config@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/metro-config@npm:0.76.9" +"@react-native/metro-config@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/metro-config@npm:0.77.2" dependencies: - "@react-native/js-polyfills": 0.76.9 - "@react-native/metro-babel-transformer": 0.76.9 - metro-config: ^0.81.0 - metro-runtime: ^0.81.0 - checksum: c52dd64967e6ead75d735702def2e29767f56321d888eae48b683e65118852c567c066755fa0f18c554773a8a0cb44493b436f516bf2c96bb6625f86e7439fec + "@react-native/js-polyfills": 0.77.2 + "@react-native/metro-babel-transformer": 0.77.2 + metro-config: ^0.81.3 + metro-runtime: ^0.81.3 + checksum: c98bb93be27338752cedafff2551ceda0a5523fcf578c5ee51325887e68e92edd34bd02adfb34e758abb40bc259054132932e389b83464e91f11e7937d2a96f3 languageName: node linkType: hard @@ -3428,23 +3732,23 @@ __metadata: languageName: node linkType: hard -"@react-native/normalize-colors@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/normalize-colors@npm:0.76.9" - checksum: 4fddb977b8aad2e848cb698f13b9ffec539668e8ae891846327d5e23ce3de13dea59a2dfbea8a154ea034791c7abc3f7d1d4c8caae2114f7a683c78b221aed36 +"@react-native/normalize-colors@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/normalize-colors@npm:0.77.2" + checksum: 57902b123cd9421f8058b3ce9f9f3c535a97511f3a7c8e81d1090cfb727c6c231d7b7c366f0dbdabe485cfa690f9eb9baca7e98dc6672b9c78debe19b35a0753 languageName: node linkType: hard -"@react-native/typescript-config@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/typescript-config@npm:0.76.9" - checksum: 768240aacdfdc80dfab6593a497841f8e2bf2a227778f8abc60396b3e7a261d36f8243bd0926e850a34d1a98a4f372327d3cabb5c3ce1049fafbb775d852e0c1 +"@react-native/typescript-config@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/typescript-config@npm:0.77.2" + checksum: 28c513bf6e33eff27836f3feedc1e00504b6c24b83d337464ae1109b3ff248c58c7f0545c9ea5fdc942d1c930b4195c10edac892ae62e009b14de117aa082bf3 languageName: node linkType: hard -"@react-native/virtualized-lists@npm:0.76.9": - version: 0.76.9 - resolution: "@react-native/virtualized-lists@npm:0.76.9" +"@react-native/virtualized-lists@npm:0.77.2": + version: 0.77.2 + resolution: "@react-native/virtualized-lists@npm:0.77.2" dependencies: invariant: ^2.2.4 nullthrows: ^1.1.1 @@ -3455,7 +3759,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 697a04bdf4b5f430164bf666bf60cd0207f4d3fb06b0a62d7c39b54c166973b29c73640e5c1a44f1c6891d93398bedd63eb8addcbe78641d7ebb13b9ab022052 + checksum: 5cd03ec22d21bdb026601305317092e9774bb8585c530c40141e29f35bbdcb2f79d3ad236181c42fd4927bfd2cba25c4a691783a31daed5ac347c9646838fecb languageName: node linkType: hard @@ -3799,13 +4103,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.2.1": - version: 29.5.13 - resolution: "@types/jest@npm:29.5.13" +"@types/jest@npm:^29.5.13": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 875ac23c2398cdcf22aa56c6ba24560f11d2afda226d4fa23936322dde6202f9fdbd2b91602af51c27ecba223d9fc3c1e33c9df7e47b3bf0e2aefc6baf13ce53 + checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 languageName: node linkType: hard @@ -4564,12 +4868,12 @@ __metadata: languageName: node linkType: hard -"ast-types@npm:0.15.2": - version: 0.15.2 - resolution: "ast-types@npm:0.15.2" +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" dependencies: tslib: ^2.0.1 - checksum: 24f0d86bf9e4c8dae16fa24b13c1776f2c2677040bcfbd4eb4f27911db49020be4876885e45e6cfcc548ed4dfea3a0742d77e3346b84fae47379cb0b89e9daa0 + checksum: 21c186da9fdb1d8087b1b7dabbc4059f91aa5a1e593a9776b4393cc1eaa857e741b2dda678d20e34b16727b78fef3ab59cf8f0c75ed1ba649c78fe194e5c114b languageName: node linkType: hard @@ -4596,15 +4900,6 @@ __metadata: languageName: node linkType: hard -"babel-core@npm:^7.0.0-bridge.0": - version: 7.0.0-bridge.0 - resolution: "babel-core@npm:7.0.0-bridge.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb - languageName: node - linkType: hard - "babel-eslint@npm:^10.0.0": version: 10.1.0 resolution: "babel-eslint@npm:10.1.0" @@ -4621,7 +4916,7 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.6.3, babel-jest@npm:^29.7.0": +"babel-jest@npm:^29.7.0": version: 29.7.0 resolution: "babel-jest@npm:29.7.0" dependencies: @@ -4725,16 +5020,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-syntax-hermes-parser@npm:^0.23.1": - version: 0.23.1 - resolution: "babel-plugin-syntax-hermes-parser@npm:0.23.1" - dependencies: - hermes-parser: 0.23.1 - checksum: 5412008e8e85b08cd0d78168f746ade68b8ed69c0068831ce5e3d028f01c644f546ca0e2b7c9a4a8c6b9d5f14aff84c2453ab44b19cbec55e4366b20bbba9040 - languageName: node - linkType: hard - -"babel-plugin-syntax-hermes-parser@npm:^0.25.1": +"babel-plugin-syntax-hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1" dependencies: @@ -6659,7 +6945,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0, execa@npm:^5.1.1": +"execa@npm:^5.0.0": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -7213,7 +7499,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -7298,13 +7584,6 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.23.1": - version: 0.23.1 - resolution: "hermes-estree@npm:0.23.1" - checksum: 0f63edc365099304f4cd8e91a3666a4fb5a2a47baee751dc120df9201640112865944cae93617f554af71be9827e96547f9989f4972d6964ecc121527295fec6 - languageName: node - linkType: hard - "hermes-estree@npm:0.25.1": version: 0.25.1 resolution: "hermes-estree@npm:0.25.1" @@ -7312,15 +7591,6 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.23.1": - version: 0.23.1 - resolution: "hermes-parser@npm:0.23.1" - dependencies: - hermes-estree: 0.23.1 - checksum: a08008928aea9ea9a2cab2c0fac3cffa21f7869ab3fabb68e5add0fe057737a0c352d7a446426f7956172ccc8f2d4a215b4fc20d1d08354fc8dc16772c248fce - languageName: node - linkType: hard - "hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -8529,34 +8799,36 @@ __metadata: languageName: node linkType: hard -"jscodeshift@npm:^0.14.0": - version: 0.14.0 - resolution: "jscodeshift@npm:0.14.0" +"jscodeshift@npm:^17.0.0": + version: 17.3.0 + resolution: "jscodeshift@npm:17.3.0" dependencies: - "@babel/core": ^7.13.16 - "@babel/parser": ^7.13.16 - "@babel/plugin-proposal-class-properties": ^7.13.0 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 - "@babel/plugin-proposal-optional-chaining": ^7.13.12 - "@babel/plugin-transform-modules-commonjs": ^7.13.8 - "@babel/preset-flow": ^7.13.13 - "@babel/preset-typescript": ^7.13.0 - "@babel/register": ^7.13.16 - babel-core: ^7.0.0-bridge.0 - chalk: ^4.1.2 + "@babel/core": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/plugin-transform-class-properties": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.7 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.7 + "@babel/plugin-transform-private-methods": ^7.24.7 + "@babel/preset-flow": ^7.24.7 + "@babel/preset-typescript": ^7.24.7 + "@babel/register": ^7.24.6 flow-parser: 0.* graceful-fs: ^4.2.4 - micromatch: ^4.0.4 + micromatch: ^4.0.7 neo-async: ^2.5.0 - node-dir: ^0.1.17 - recast: ^0.21.0 - temp: ^0.8.4 - write-file-atomic: ^2.3.0 + picocolors: ^1.0.1 + recast: ^0.23.11 + tmp: ^0.2.3 + write-file-atomic: ^5.0.1 peerDependencies: "@babel/preset-env": ^7.1.6 + peerDependenciesMeta: + "@babel/preset-env": + optional: true bin: jscodeshift: bin/jscodeshift.js - checksum: 54ea6d639455883336f80b38a70648821c88b7942315dc0fbab01bc34a9ad0f0f78e3bd69304b5ab167e4262d6ed7e6284c6d32525ab01c89d9118df89b3e2a0 + checksum: 6a529c8dcab8eef48381425c706d58a0a9205397cad367925872845ff1c35924f8f838bbd1397b28a065061032047c9fd843877000a3743240db4ba6ded2546b languageName: node linkType: hard @@ -9001,68 +9273,68 @@ __metadata: languageName: node linkType: hard -"metro-babel-transformer@npm:0.81.4": - version: 0.81.4 - resolution: "metro-babel-transformer@npm:0.81.4" +"metro-babel-transformer@npm:0.81.5": + version: 0.81.5 + resolution: "metro-babel-transformer@npm:0.81.5" dependencies: "@babel/core": ^7.25.2 flow-enums-runtime: ^0.0.6 hermes-parser: 0.25.1 nullthrows: ^1.1.1 - checksum: ebcac865e463b0e84d91ac7e03d16b01c7578e35698ca30a06ca30a5fe31d5921c1293b51c0aca47286eacb2629e56dbd4a271af7dd27126d318ebaeb32477ee + checksum: 687b0657fcb2c6a01784a29abaa9979539a9047c0632c299d7764e7cafa9412cbb17f4e866212dc4c96a73eb47381d30340b30628b2d083fef0c88523ae0a293 languageName: node linkType: hard -"metro-cache-key@npm:0.81.4": - version: 0.81.4 - resolution: "metro-cache-key@npm:0.81.4" +"metro-cache-key@npm:0.81.5": + version: 0.81.5 + resolution: "metro-cache-key@npm:0.81.5" dependencies: flow-enums-runtime: ^0.0.6 - checksum: 524f11de4b907024d27de1f190ea8520e3bd7ffa9cfa6d7d4c1a067ad41e4f2acd5b40c756c5dbf0def3e2dfaa5e0780fb54f7d960cd7888c124d44905b1dcfa + checksum: d5656bc8906ff4366d8093d19304d6ac386c59429e3e7e24050f4bc9f93ca4e04d8062af6bdd28874a5e4b9bcc84f248855933ffa80af56aeed8be5ff02c85bf languageName: node linkType: hard -"metro-cache@npm:0.81.4": - version: 0.81.4 - resolution: "metro-cache@npm:0.81.4" +"metro-cache@npm:0.81.5": + version: 0.81.5 + resolution: "metro-cache@npm:0.81.5" dependencies: exponential-backoff: ^3.1.1 flow-enums-runtime: ^0.0.6 - metro-core: 0.81.4 - checksum: 61e5e129a7eed60ea7b85224df145b959ee3379eab0f5f6d00d9268ee549ff411347e0cfe1738a827d1070ec0bacc225473c80f6cf72780bc3a81a518d5e0ec6 + metro-core: 0.81.5 + checksum: cba822d3f5c38163558e8240f7b8f189a597829c7df07a3f205c9565f66c0d3a9d7deab7be9449dec3bd1c615b71918c8cd05b0e2bf9cc21c517702405d468d1 languageName: node linkType: hard -"metro-config@npm:0.81.4, metro-config@npm:^0.81.0": - version: 0.81.4 - resolution: "metro-config@npm:0.81.4" +"metro-config@npm:0.81.5, metro-config@npm:^0.81.3": + version: 0.81.5 + resolution: "metro-config@npm:0.81.5" dependencies: connect: ^3.6.5 cosmiconfig: ^5.0.5 flow-enums-runtime: ^0.0.6 jest-validate: ^29.7.0 - metro: 0.81.4 - metro-cache: 0.81.4 - metro-core: 0.81.4 - metro-runtime: 0.81.4 - checksum: 3fcee46eb84045a00f708025bd9c710531d29661d9e561eb418f342e97ed4dbffbda1b677e6045f7ec92eb9c6e06d0e429df8372f1050ad005a9820ca9cf4ad4 + metro: 0.81.5 + metro-cache: 0.81.5 + metro-core: 0.81.5 + metro-runtime: 0.81.5 + checksum: 43ba163fcfcbd0bcf69c3416901779c3de94536b0ee451ad73cad6311734e931cb1bf2c007dd71317f35ddf346cca74bc07b5a3075adf5c09b0e6e859d2169e4 languageName: node linkType: hard -"metro-core@npm:0.81.4, metro-core@npm:^0.81.0": - version: 0.81.4 - resolution: "metro-core@npm:0.81.4" +"metro-core@npm:0.81.5, metro-core@npm:^0.81.3": + version: 0.81.5 + resolution: "metro-core@npm:0.81.5" dependencies: flow-enums-runtime: ^0.0.6 lodash.throttle: ^4.1.1 - metro-resolver: 0.81.4 - checksum: d39d5e25dbb949fdeae906c511b78ee19a2caee2ddd018116866715263038baf4be8376255ee0087f892ee7220aeb17f9c8cabbd244742100dc9e87193614f91 + metro-resolver: 0.81.5 + checksum: 5fb02d055669f0d37aaffc165444aa723741e9e9a74c1e17c54b53e635e4b7246d8ec582bfb951710ff02cd2d26d5565811182464f3f42728c1f346d0e699f8a languageName: node linkType: hard -"metro-file-map@npm:0.81.4": - version: 0.81.4 - resolution: "metro-file-map@npm:0.81.4" +"metro-file-map@npm:0.81.5": + version: 0.81.5 + resolution: "metro-file-map@npm:0.81.5" dependencies: debug: ^2.2.0 fb-watchman: ^2.0.0 @@ -9073,76 +9345,76 @@ __metadata: micromatch: ^4.0.4 nullthrows: ^1.1.1 walker: ^1.0.7 - checksum: 7a1008263b527aeefdeb606cede2287f58ab11c9da6b2b68b10ffc93524d6b595c6c8fc86e36ef16c696b11322f1631b905b592f275ec88121104b1feab4e74a + checksum: dcc975a6a3a0ceaf25048cca834d6b065b719b768f332c2a720d6a0341b6b640783625d1188dc1b85204e42420853240fa0419988bade2395ce3c054079c3b65 languageName: node linkType: hard -"metro-minify-terser@npm:0.81.4": - version: 0.81.4 - resolution: "metro-minify-terser@npm:0.81.4" +"metro-minify-terser@npm:0.81.5": + version: 0.81.5 + resolution: "metro-minify-terser@npm:0.81.5" dependencies: flow-enums-runtime: ^0.0.6 terser: ^5.15.0 - checksum: 985b0023354f523608d977bcb3c45edf3c5497ca0466fdb5b1125ff2c0cca56b6184a263106c7f6f9f381e950a035f15fb12e977ed169ca13089a75733c3314f + checksum: 4623743676e2bb8bb74b99bd2b2c26feb2509a8db5596f265e21042b43e84611f9025977ae298b8271644cb27e8da8a60b8dff791f57517b4bd2f5ae366f2945 languageName: node linkType: hard -"metro-resolver@npm:0.81.4": - version: 0.81.4 - resolution: "metro-resolver@npm:0.81.4" +"metro-resolver@npm:0.81.5": + version: 0.81.5 + resolution: "metro-resolver@npm:0.81.5" dependencies: flow-enums-runtime: ^0.0.6 - checksum: 0404d549ac144d5823e4b0383e6718d5fb969c60f3cf4db4a24748f94198b692b1527a92a874b9af00ba28284719063e7aaec5f2913e82438ac5b97d9b406241 + checksum: 84d9f3c10538a747c2718ddc1cf366c38b1a6080e2b6cdfd4731511e5a25cec45fbf35101fae8691bda59fd2e9aa3f559d436bc46e05b603c446072e4a1bc6e9 languageName: node linkType: hard -"metro-runtime@npm:0.81.4, metro-runtime@npm:^0.81.0": - version: 0.81.4 - resolution: "metro-runtime@npm:0.81.4" +"metro-runtime@npm:0.81.5, metro-runtime@npm:^0.81.3": + version: 0.81.5 + resolution: "metro-runtime@npm:0.81.5" dependencies: "@babel/runtime": ^7.25.0 flow-enums-runtime: ^0.0.6 - checksum: 96029d4be2b828792431318f3a28c4cb82dae0c0c6d5a393874362b9df08ada56ae3f283ad8b6eb0a8c3358518cc7c01b53712482b891fdf292e893d038eb7d1 + checksum: 43b54e07ce0534928c12f59a3d2e68ecf4fc7e7ad1a78cb691f90a406796eec381af21fcef5af73ecc5081153a4da5f935797ebe9ea4a025a5e526039bf19b21 languageName: node linkType: hard -"metro-source-map@npm:0.81.4, metro-source-map@npm:^0.81.0": - version: 0.81.4 - resolution: "metro-source-map@npm:0.81.4" +"metro-source-map@npm:0.81.5, metro-source-map@npm:^0.81.3": + version: 0.81.5 + resolution: "metro-source-map@npm:0.81.5" dependencies: "@babel/traverse": ^7.25.3 "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3" "@babel/types": ^7.25.2 flow-enums-runtime: ^0.0.6 invariant: ^2.2.4 - metro-symbolicate: 0.81.4 + metro-symbolicate: 0.81.5 nullthrows: ^1.1.1 - ob1: 0.81.4 + ob1: 0.81.5 source-map: ^0.5.6 vlq: ^1.0.0 - checksum: 878fe5b2e69f3b658e80f50de61ca8af8085485dfffb67ec1641e80e725a87319cbcf51909ac56baaafcf6156a3a4ba78585901a164d237566b6a19767341633 + checksum: a31e459c8a18fe3fc6b3cc5d87a2f25b2f3794425d590bbbab8abafa537647110b18edd0ff025971d1783e16d3c114099bf13c406a01a6456e3e004a54f621d8 languageName: node linkType: hard -"metro-symbolicate@npm:0.81.4": - version: 0.81.4 - resolution: "metro-symbolicate@npm:0.81.4" +"metro-symbolicate@npm:0.81.5": + version: 0.81.5 + resolution: "metro-symbolicate@npm:0.81.5" dependencies: flow-enums-runtime: ^0.0.6 invariant: ^2.2.4 - metro-source-map: 0.81.4 + metro-source-map: 0.81.5 nullthrows: ^1.1.1 source-map: ^0.5.6 vlq: ^1.0.0 bin: metro-symbolicate: src/index.js - checksum: b5391c516499e2b761f366558cac4382e42c815fb7eb9551f1e64e95769e06688d6988329d59c7e769076af5ac2abb880a0544f367b523d786b249808b8fb050 + checksum: f1ec6df153be8b469c87179dcc0807e6e94e2523140e0b0044aa2fecedfd222f9d05a408bd142d3293e52e9c7ef59064332fce5f489cddb0f38d11d3ed897c2b languageName: node linkType: hard -"metro-transform-plugins@npm:0.81.4": - version: 0.81.4 - resolution: "metro-transform-plugins@npm:0.81.4" +"metro-transform-plugins@npm:0.81.5": + version: 0.81.5 + resolution: "metro-transform-plugins@npm:0.81.5" dependencies: "@babel/core": ^7.25.2 "@babel/generator": ^7.25.0 @@ -9150,34 +9422,34 @@ __metadata: "@babel/traverse": ^7.25.3 flow-enums-runtime: ^0.0.6 nullthrows: ^1.1.1 - checksum: 709e7a2ea8fef04d40dc63222cb9b42046b975c1b7eb838c6f9ca315e08a756ad18d0057f2d5e0beaf4e0561cd03be9dfb3b15de286ff102ee386cf49acbae57 + checksum: 2d156882c6545730638aeb362856288649e5049f336d532040dd4b9435ad53d35adbc808903f01519dfda5e7a9a1d80b6f2303171921f32aa823f86484ab2b60 languageName: node linkType: hard -"metro-transform-worker@npm:0.81.4": - version: 0.81.4 - resolution: "metro-transform-worker@npm:0.81.4" +"metro-transform-worker@npm:0.81.5": + version: 0.81.5 + resolution: "metro-transform-worker@npm:0.81.5" dependencies: "@babel/core": ^7.25.2 "@babel/generator": ^7.25.0 "@babel/parser": ^7.25.3 "@babel/types": ^7.25.2 flow-enums-runtime: ^0.0.6 - metro: 0.81.4 - metro-babel-transformer: 0.81.4 - metro-cache: 0.81.4 - metro-cache-key: 0.81.4 - metro-minify-terser: 0.81.4 - metro-source-map: 0.81.4 - metro-transform-plugins: 0.81.4 + metro: 0.81.5 + metro-babel-transformer: 0.81.5 + metro-cache: 0.81.5 + metro-cache-key: 0.81.5 + metro-minify-terser: 0.81.5 + metro-source-map: 0.81.5 + metro-transform-plugins: 0.81.5 nullthrows: ^1.1.1 - checksum: 947b892b0dc8836d55772d0367ed0a797fc68f8b53000e21be5b5c6cc66ab0269292e4cbff3fa9988f4c471dbd979a49dbb11fa780e7022e0ed26b810cbe19ff + checksum: 59d144c44e7979317ee702a0f11da19443e5bf56a4fb6be026e4e09377631a2704ca4aba4e7290711fbe481176e82006fe195a18cacd6007f01c6b1ebe2a7a84 languageName: node linkType: hard -"metro@npm:0.81.4, metro@npm:^0.81.0": - version: 0.81.4 - resolution: "metro@npm:0.81.4" +"metro@npm:0.81.5, metro@npm:^0.81.3": + version: 0.81.5 + resolution: "metro@npm:0.81.5" dependencies: "@babel/code-frame": ^7.24.7 "@babel/core": ^7.25.2 @@ -9200,18 +9472,18 @@ __metadata: jest-worker: ^29.7.0 jsc-safe-url: ^0.2.2 lodash.throttle: ^4.1.1 - metro-babel-transformer: 0.81.4 - metro-cache: 0.81.4 - metro-cache-key: 0.81.4 - metro-config: 0.81.4 - metro-core: 0.81.4 - metro-file-map: 0.81.4 - metro-resolver: 0.81.4 - metro-runtime: 0.81.4 - metro-source-map: 0.81.4 - metro-symbolicate: 0.81.4 - metro-transform-plugins: 0.81.4 - metro-transform-worker: 0.81.4 + metro-babel-transformer: 0.81.5 + metro-cache: 0.81.5 + metro-cache-key: 0.81.5 + metro-config: 0.81.5 + metro-core: 0.81.5 + metro-file-map: 0.81.5 + metro-resolver: 0.81.5 + metro-runtime: 0.81.5 + metro-source-map: 0.81.5 + metro-symbolicate: 0.81.5 + metro-transform-plugins: 0.81.5 + metro-transform-worker: 0.81.5 mime-types: ^2.1.27 nullthrows: ^1.1.1 serialize-error: ^2.1.0 @@ -9221,11 +9493,11 @@ __metadata: yargs: ^17.6.2 bin: metro: src/cli.js - checksum: 77d8ffa230500f9e7f834600d9d8a4a8b0a3214f17e3dd4e8b8c2039bd48e3d8322e01068b4faf29093fa8398225cef4a6f130b581c33fef53e94f5646e6e1a9 + checksum: 7665b811aa09abe5c7743764402f03cf64ccb3e1b381a46716470b58b05a952dde45e5e34c6a485f79154e2905b89fc178455c378831f9425767d76392418f9f languageName: node linkType: hard -"micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.7": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -9292,7 +9564,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -9519,29 +9791,6 @@ __metadata: languageName: node linkType: hard -"node-dir@npm:^0.1.17": - version: 0.1.17 - resolution: "node-dir@npm:0.1.17" - dependencies: - minimatch: ^3.0.2 - checksum: 29de9560e52cdac8d3f794d38d782f6799e13d4d11aaf96d3da8c28458e1c5e33bb5f8edfb42dc34172ec5516c50c5b8850c9e1526542616757a969267263328 - languageName: node - linkType: hard - -"node-fetch@npm:^2.2.0": - version: 2.7.0 - resolution: "node-fetch@npm:2.7.0" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: d76d2f5edb451a3f05b15115ec89fc6be39de37c6089f1b6368df03b91e1633fd379a7e01b7ab05089a25034b2023d959b47e59759cb38d88341b2459e89d6e5 - languageName: node - linkType: hard - "node-forge@npm:^1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" @@ -9679,12 +9928,12 @@ __metadata: languageName: node linkType: hard -"ob1@npm:0.81.4": - version: 0.81.4 - resolution: "ob1@npm:0.81.4" +"ob1@npm:0.81.5": + version: 0.81.5 + resolution: "ob1@npm:0.81.5" dependencies: flow-enums-runtime: ^0.0.6 - checksum: 76369043728f471ded35d294088e65a3c0876f2f7c73ad9a4dcdda68e1022a4ce72b8052a681f2604c93cd2e7ccf35e945bbb01855378122f7a1ef48ad1cc72c + checksum: 249ad576be69151a3099207b35b2f6da5c6bb39dfacb9295028ebdc182c2f61f6544d1f6f167af759a77174ab19d8997d1ae6aecdbd9bdc293b2826067e66c5b languageName: node linkType: hard @@ -10351,13 +10600,13 @@ __metadata: languageName: node linkType: hard -"react-devtools-core@npm:^5.3.1": - version: 5.3.1 - resolution: "react-devtools-core@npm:5.3.1" +"react-devtools-core@npm:^6.0.1": + version: 6.1.1 + resolution: "react-devtools-core@npm:6.1.1" dependencies: shell-quote: ^1.6.1 ws: ^7 - checksum: a68434a6af8261f5eb7defd823ebc77cc86f42a93521755bc58e5925956af579a312e109f9b27f652d016c2d580ef28f6e8d1643502624c0fe7913c93c743170 + checksum: 18b6d11a11a23b67eb1ff7d44b45adb914a18d9b26cdb378d8f3146834eda5d9bdefc131bb7fb793f3057f166c309681651e865814bbf491f2ea0d0bf06a2922 languageName: node linkType: hard @@ -10480,24 +10729,27 @@ __metadata: languageName: node linkType: hard -"react-native-mmkv@npm:2.11.0": - version: 2.11.0 - resolution: "react-native-mmkv@npm:2.11.0" +"react-native-mmkv@npm:3.2.0": + version: 3.2.0 + resolution: "react-native-mmkv@npm:3.2.0" peerDependencies: react: "*" - react-native: ">=0.71.0" - checksum: 23ba624db8a4c530532aaab78705b58d1c9eefc3173dae3b1f86c8cb4d0e5abe3d175079c263251bfed406dc9f6ccda3657f138177916866ea0c0dc8fa3d2389 + react-native: "*" + checksum: 766944a7cbf265e27b57576e51bff8604cd8f58c88eaec78bd93d4ce10ff9127d5f75f4c3bb03d6c7ce5dafa07c65e233d5363c0504db802cc88eaf1ccbffaa1 languageName: node linkType: hard -"react-native-navigation@npm:8.0.0": - version: 8.0.0 - resolution: "react-native-navigation@npm:8.0.0" +"react-native-navigation@npm:8.1.0-alpha-snapshot.1648": + version: 8.1.0-alpha-snapshot.1648 + resolution: "react-native-navigation@npm:8.1.0-alpha-snapshot.1648" dependencies: hoist-non-react-statics: 3.x.x lodash: 4.17.x prop-types: 15.x.x react-lifecycles-compat: ^3.0.4 + react-native-redash: ^12.6.1 + reanimated-color-picker: ^3.0.6 + ssim.js: ^3.5.0 tslib: 1.9.3 peerDependencies: react: "*" @@ -10508,7 +10760,7 @@ __metadata: optional: true bin: rnn-link: autolink/postlink/run.js - checksum: bcffb9ffba54558ba2be502e5cc0c6c65f0ef9a421743969063ffb5205b1c34e2fbe5a2de2fcaf70d21ca36830f1f87ff53169aac2d6ebcca40c9469239157b9 + checksum: c6f99588727821c4c7d591a1a8275211ef6286a4c50f7749a8697ea7061c2b9880efa44f9735b4044a9b33c05ea10f955abad54a8b9dec89010ffe93846d7f25 languageName: node linkType: hard @@ -10536,7 +10788,7 @@ __metadata: languageName: node linkType: hard -"react-native-redash@npm:^12.0.3": +"react-native-redash@npm:^12.0.3, react-native-redash@npm:^12.6.1": version: 12.6.1 resolution: "react-native-redash@npm:12.6.1" dependencies: @@ -10613,15 +10865,15 @@ __metadata: "@react-native-community/cli-platform-ios": 15.0.1 "@react-native-community/datetimepicker": ^3.4.6 "@react-native-community/netinfo": 11.3.3 - "@react-native/babel-preset": 0.76.9 - "@react-native/eslint-config": 0.76.9 - "@react-native/metro-config": 0.76.9 - "@react-native/typescript-config": 0.76.9 + "@react-native/babel-preset": 0.77.2 + "@react-native/eslint-config": 0.77.2 + "@react-native/metro-config": 0.77.2 + "@react-native/typescript-config": 0.77.2 "@shopify/flash-list": 1.7.6 "@testing-library/react-hooks": ^8.0.1 "@testing-library/react-native": ^11.5.1 "@types/hoist-non-react-statics": ^3.3.1 - "@types/jest": ^29.2.1 + "@types/jest": ^29.5.13 "@types/lodash": ^4.0.0 "@types/prop-types": ^15.5.3 "@types/react": 18.3.7 @@ -10631,7 +10883,6 @@ __metadata: "@typescript-eslint/eslint-plugin": ^5.3.1 "@typescript-eslint/parser": ^5.3.1 "@welldone-software/why-did-you-render": ^3.2.1 - babel-jest: ^29.6.3 babel-plugin-lodash: ^3.3.4 babel-plugin-module-resolver: ^5.0.0 babel-plugin-transform-inline-environment-variables: ^0.0.2 @@ -10660,13 +10911,13 @@ __metadata: react-autobind: ^1.0.6 react-dom: ^18.2.0 react-freeze: ^1.0.0 - react-native: 0.76.9 + react-native: 0.77.2 react-native-fs: ^2.20.0 react-native-gesture-handler: 2.25.0 react-native-haptic-feedback: ^1.11.0 react-native-linear-gradient: 2.6.2 - react-native-mmkv: 2.11.0 - react-native-navigation: 8.0.0 + react-native-mmkv: 3.2.0 + react-native-navigation: 8.1.0-alpha-snapshot.1648 react-native-reanimated: 3.17.3 react-native-redash: ^12.0.3 react-native-shimmer-placeholder: ^2.0.6 @@ -10690,23 +10941,23 @@ __metadata: languageName: unknown linkType: soft -"react-native@npm:0.76.9": - version: 0.76.9 - resolution: "react-native@npm:0.76.9" +"react-native@npm:0.77.2": + version: 0.77.2 + resolution: "react-native@npm:0.77.2" dependencies: "@jest/create-cache-key-function": ^29.6.3 - "@react-native/assets-registry": 0.76.9 - "@react-native/codegen": 0.76.9 - "@react-native/community-cli-plugin": 0.76.9 - "@react-native/gradle-plugin": 0.76.9 - "@react-native/js-polyfills": 0.76.9 - "@react-native/normalize-colors": 0.76.9 - "@react-native/virtualized-lists": 0.76.9 + "@react-native/assets-registry": 0.77.2 + "@react-native/codegen": 0.77.2 + "@react-native/community-cli-plugin": 0.77.2 + "@react-native/gradle-plugin": 0.77.2 + "@react-native/js-polyfills": 0.77.2 + "@react-native/normalize-colors": 0.77.2 + "@react-native/virtualized-lists": 0.77.2 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.23.1 + babel-plugin-syntax-hermes-parser: 0.25.1 base64-js: ^1.5.1 chalk: ^4.0.0 commander: ^12.0.0 @@ -10717,13 +10968,12 @@ __metadata: jest-environment-node: ^29.6.3 jsc-android: ^250231.0.0 memoize-one: ^5.0.0 - metro-runtime: ^0.81.0 - metro-source-map: ^0.81.0 - mkdirp: ^0.5.1 + metro-runtime: ^0.81.3 + metro-source-map: ^0.81.3 nullthrows: ^1.1.1 pretty-format: ^29.7.0 promise: ^8.3.0 - react-devtools-core: ^5.3.1 + react-devtools-core: ^6.0.1 react-refresh: ^0.14.0 regenerator-runtime: ^0.13.2 scheduler: 0.24.0-canary-efb381bbf-20230505 @@ -10740,7 +10990,7 @@ __metadata: optional: true bin: react-native: cli.js - checksum: cf621cef0649920bac2b730998be6eaaf9762d516bc65d9073b46f634bb640dfb6b9b5d64ce6a6e09da64d52d114d96d96435a91c9db8ec61b76c818fe209827 + checksum: 95c503e124aa00e6b90a891410775bb23070fdfacb5e082ccb6434345e459b330a2188305c9b4db4e57209cd98bab993fe941685e8d4ebb9cc145720f813619e languageName: node linkType: hard @@ -10823,6 +11073,22 @@ __metadata: languageName: node linkType: hard +"reanimated-color-picker@npm:^3.0.6": + version: 3.0.6 + resolution: "reanimated-color-picker@npm:3.0.6" + peerDependencies: + expo: ">=44.0.0" + react: "*" + react-native: "*" + react-native-gesture-handler: ">=2.0.0" + react-native-reanimated: ^2.0.0 || ^3.0.0 + peerDependenciesMeta: + expo: + optional: true + checksum: e7106c5e6c2d1f5b512b97323f9f79c86c317055629706bd9263e9c2044ee6e1cdee02250876111f5682643029f2173c34c948f9708ad44d7c2ddc8edfd83c1c + languageName: node + linkType: hard + "reassure@npm:^0.4.1": version: 0.4.1 resolution: "reassure@npm:0.4.1" @@ -10833,15 +11099,16 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.21.0": - version: 0.21.5 - resolution: "recast@npm:0.21.5" +"recast@npm:^0.23.11": + version: 0.23.11 + resolution: "recast@npm:0.23.11" dependencies: - ast-types: 0.15.2 + ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 + tiny-invariant: ^1.3.3 tslib: ^2.0.1 - checksum: 03cc7f57562238ba258d468be67bf7446ce7a707bc87a087891dad15afead46c36e9aaeedf2130e2ab5a465244a9c62bfd4127849761cf8f4085abe2f3e5f485 + checksum: 1807159b1c33bc4a2d146e4ffea13b658e54bdcfab04fc4f9c9d7f1b4626c931e2ce41323e214516ec1e02a119037d686d825fc62f28072db27962b85e5b481d languageName: node linkType: hard @@ -11162,17 +11429,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:~2.6.2": - version: 2.6.3 - resolution: "rimraf@npm:2.6.3" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: 3ea587b981a19016297edb96d1ffe48af7e6af69660e3b371dbfc73722a73a0b0e9be5c88089fbeeb866c389c1098e07f64929c7414290504b855f54f901ab10 - languageName: node - linkType: hard - "run-node@npm:^1.0.0": version: 1.0.0 resolution: "run-node@npm:1.0.0" @@ -11341,7 +11597,7 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:^1.13.1": +"serve-static@npm:^1.13.1, serve-static@npm:^1.16.2": version: 1.16.2 resolution: "serve-static@npm:1.16.2" dependencies: @@ -11644,6 +11900,13 @@ __metadata: languageName: node linkType: hard +"ssim.js@npm:^3.5.0": + version: 3.5.0 + resolution: "ssim.js@npm:3.5.0" + checksum: 3f3a63ac8bec9c45e9f72252b786dcb4c91d7a74316b49c20e7935fd6e3869541e9324233b00eb0ab6bd15701016becd62740a5fb8c98f7b5115a9237efb2d4a + languageName: node + linkType: hard + "ssri@npm:^10.0.0": version: 10.0.6 resolution: "ssri@npm:10.0.6" @@ -11968,15 +12231,6 @@ __metadata: languageName: node linkType: hard -"temp@npm:^0.8.4": - version: 0.8.4 - resolution: "temp@npm:0.8.4" - dependencies: - rimraf: ~2.6.2 - checksum: f35bed78565355dfdf95f730b7b489728bd6b7e35071bcc6497af7c827fb6c111fbe9063afc7b8cbc19522a072c278679f9a0ee81e684aa2c8617cc0f2e9c191 - languageName: node - linkType: hard - "terser@npm:^5.15.0": version: 5.33.0 resolution: "terser@npm:5.33.0" @@ -12033,6 +12287,13 @@ __metadata: languageName: node linkType: hard +"tiny-invariant@npm:^1.3.3": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + "tinycolor2@npm:^1.4.2": version: 1.6.0 resolution: "tinycolor2@npm:1.6.0" @@ -12049,6 +12310,13 @@ __metadata: languageName: node linkType: hard +"tmp@npm:^0.2.3": + version: 0.2.3 + resolution: "tmp@npm:0.2.3" + checksum: 73b5c96b6e52da7e104d9d44afb5d106bb1e16d9fa7d00dbeb9e6522e61b571fbdb165c756c62164be9a3bbe192b9b268c236d370a2a0955c7689cd2ae377b95 + languageName: node + linkType: hard + "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -12079,13 +12347,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - "ts-api-utils@npm:^1.0.1": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" @@ -12549,13 +12810,6 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - "whatwg-fetch@npm:^3.0.0": version: 3.6.20 resolution: "whatwg-fetch@npm:3.6.20" @@ -12563,16 +12817,6 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -12742,17 +12986,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^2.3.0": - version: 2.4.3 - resolution: "write-file-atomic@npm:2.4.3" - dependencies: - graceful-fs: ^4.1.11 - imurmurhash: ^0.1.4 - signal-exit: ^3.0.2 - checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae - languageName: node - linkType: hard - "write-file-atomic@npm:^4.0.2": version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" @@ -12763,6 +12996,16 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: ^0.1.4 + signal-exit: ^4.0.1 + checksum: 8dbb0e2512c2f72ccc20ccedab9986c7d02d04039ed6e8780c987dc4940b793339c50172a1008eed7747001bfacc0ca47562668a069a7506c46c77d7ba3926a9 + languageName: node + linkType: hard + "ws@npm:^6.2.3": version: 6.2.3 resolution: "ws@npm:6.2.3" From 3d4cad6070e40bc9d17850a45bb94403911d0cc8 Mon Sep 17 00:00:00 2001 From: M-i-k-e-l Date: Wed, 7 May 2025 14:58:57 +0300 Subject: [PATCH 2/6] Remove TextInputDelKeyHandlerPackage (Android) --- .../reactnativeuilib/UiLibPackageList.java | 2 - .../textinput/DefaultKeyListener.java | 33 ------------ .../textinput/KeyListenerProxy.java | 53 ------------------ .../TextInputDelKeyHandlerModule.java | 54 ------------------- .../TextInputDelKeyHandlerPackage.java | 28 ---------- .../reactnativeuilib/textinput/ViewUtils.java | 36 ------------- lib/react-native.config.js | 4 +- react-native.config.js | 4 +- 8 files changed, 2 insertions(+), 212 deletions(-) delete mode 100644 lib/android/src/main/java/com/wix/reactnativeuilib/textinput/DefaultKeyListener.java delete mode 100644 lib/android/src/main/java/com/wix/reactnativeuilib/textinput/KeyListenerProxy.java delete mode 100644 lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerModule.java delete mode 100644 lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerPackage.java delete mode 100644 lib/android/src/main/java/com/wix/reactnativeuilib/textinput/ViewUtils.java diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/UiLibPackageList.java b/lib/android/src/main/java/com/wix/reactnativeuilib/UiLibPackageList.java index 0273cda659..7340b99a9a 100644 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/UiLibPackageList.java +++ b/lib/android/src/main/java/com/wix/reactnativeuilib/UiLibPackageList.java @@ -6,7 +6,6 @@ import com.wix.reactnativeuilib.dynamicfont.DynamicFontPackage; import com.wix.reactnativeuilib.highlighterview.HighlighterViewPackage; import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage; -import com.wix.reactnativeuilib.textinput.TextInputDelKeyHandlerPackage; import java.util.Arrays; import java.util.List; @@ -23,7 +22,6 @@ public List getPackageList() { return Arrays.asList( new DynamicFontPackage(), new HighlighterViewPackage(), - new TextInputDelKeyHandlerPackage(), new KeyboardInputPackage(application) ); } diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/DefaultKeyListener.java b/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/DefaultKeyListener.java deleted file mode 100644 index 2db0286ba7..0000000000 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/DefaultKeyListener.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.wix.reactnativeuilib.textinput; - -import android.text.Editable; -import android.text.InputType; -import android.text.method.KeyListener; -import android.view.KeyEvent; -import android.view.View; - -class DefaultKeyListener implements KeyListener { - @Override - public int getInputType() { - return InputType.TYPE_NULL; - } - - @Override - public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) { - return false; - } - - @Override - public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) { - return false; - } - - @Override - public boolean onKeyOther(View view, Editable text, KeyEvent event) { - return false; - } - - @Override - public void clearMetaKeyState(View view, Editable content, int states) { - } -} diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/KeyListenerProxy.java b/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/KeyListenerProxy.java deleted file mode 100644 index a385a0b58b..0000000000 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/KeyListenerProxy.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.wix.reactnativeuilib.textinput; - -import android.text.Editable; -import android.text.method.KeyListener; -import android.view.KeyEvent; -import android.view.View; - -import com.facebook.react.bridge.Arguments; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.modules.core.DeviceEventManagerModule; - -public class KeyListenerProxy implements KeyListener { - - final private ReactApplicationContext mContext; - final private KeyListener mKeyListener; - - KeyListenerProxy(ReactApplicationContext context, KeyListener keyListener) { - mContext = context; - mKeyListener = keyListener == null ? new DefaultKeyListener() : keyListener; - } - - @Override - public int getInputType() { - return mKeyListener.getInputType(); - } - - @Override - public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) { - return mKeyListener.onKeyDown(view, text, keyCode, event); - } - - @Override - public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_DEL) { - emitBackspacePressEvent(); - } - return mKeyListener.onKeyUp(view, text, keyCode, event); - } - - @Override - public boolean onKeyOther(View view, Editable text, KeyEvent event) { - return mKeyListener.onKeyOther(view, text, event); - } - - @Override - public void clearMetaKeyState(View view, Editable content, int states) { - mKeyListener.clearMetaKeyState(view, content, states); - } - - private void emitBackspacePressEvent() { - mContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit("onBackspacePress", Arguments.createMap()); - } -} diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerModule.java b/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerModule.java deleted file mode 100644 index e6bf05cef6..0000000000 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerModule.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.wix.reactnativeuilib.textinput; - -import android.util.Log; -import android.view.View; - -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.ReactContextBaseJavaModule; -import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.uimanager.IllegalViewOperationException; -import com.facebook.react.uimanager.NativeViewHierarchyManager; -import com.facebook.react.uimanager.UIBlock; -import com.facebook.react.uimanager.UIManagerModule; -import com.facebook.react.views.textinput.ReactEditText; - -public class TextInputDelKeyHandlerModule extends ReactContextBaseJavaModule { - - private final static String REACT_CLASS = "TextInputDelKeyHandler"; - - TextInputDelKeyHandlerModule(ReactApplicationContext reactContext) { - super(reactContext); - } - - @Override - public String getName() { - return REACT_CLASS; - } - - @ReactMethod - public void register(final Integer textInputTag) { - final ReactApplicationContext reactContext = this.getReactApplicationContext(); - final UIManagerModule uiManager = reactContext.getNativeModule(UIManagerModule.class); - - uiManager.addUIBlock(new UIBlock() { - public void execute(NativeViewHierarchyManager viewHierarchyManager) { - Log.d("ReactNativeJS","registering tag = " + textInputTag); - final View view; - try { - view = viewHierarchyManager.resolveView(textInputTag); - } catch (IllegalViewOperationException e) { - Log.d("ReactNativeJS","no view for tag = " + textInputTag); - e.printStackTrace(); - return; - } - final ReactEditText editText = ViewUtils.getEditTextInView(view); - - if (editText != null) { - Log.d("ReactNativeJS","has editText for tag = " + textInputTag); - final KeyListenerProxy keyListenerProxy = new KeyListenerProxy(reactContext, editText.getKeyListener()); - editText.setKeyListener(keyListenerProxy); - } - } - }); - } -} diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerPackage.java b/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerPackage.java deleted file mode 100644 index e2119d4edc..0000000000 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/TextInputDelKeyHandlerPackage.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.wix.reactnativeuilib.textinput; - -import com.facebook.react.ReactPackage; -import com.facebook.react.bridge.JavaScriptModule; -import com.facebook.react.bridge.NativeModule; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.uimanager.ViewManager; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public class TextInputDelKeyHandlerPackage implements ReactPackage { - @Override - public List createNativeModules(ReactApplicationContext reactContext) { - return Arrays.asList(new TextInputDelKeyHandlerModule(reactContext)); - } - -// @Override -// public List> createJSModules() { -// return Collections.emptyList(); -// } - - @Override - public List createViewManagers(ReactApplicationContext reactContext) { - return Collections.emptyList(); - } -} diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/ViewUtils.java b/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/ViewUtils.java deleted file mode 100644 index 22500b07f1..0000000000 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/textinput/ViewUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.wix.reactnativeuilib.textinput; - -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; - -import com.facebook.react.views.textinput.ReactEditText; - -class ViewUtils { - - @Nullable - static ReactEditText getEditTextInView(View view) { - if (view == null) { - return null; - } - - if (view instanceof ReactEditText) { - return (ReactEditText) view; - } - - if (view instanceof ViewGroup) { - final ViewGroup viewGroup = (ViewGroup) view; - - for (int i = 0; i < viewGroup.getChildCount(); i++) { - final View child = viewGroup.getChildAt(i); - final View childView = getEditTextInView(child); - - if (childView != null) { - return (ReactEditText) childView; - } - } - } - return null; - } -} diff --git a/lib/react-native.config.js b/lib/react-native.config.js index d5fe52adda..f8d9905656 100644 --- a/lib/react-native.config.js +++ b/lib/react-native.config.js @@ -10,11 +10,9 @@ module.exports = { sourceDir: './android/', packageImportPath: `import com.wix.reactnativeuilib.dynamicfont.DynamicFontPackage; import com.wix.reactnativeuilib.highlighterview.HighlighterViewPackage; -import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage; -import com.wix.reactnativeuilib.textinput.TextInputDelKeyHandlerPackage;`, +import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;`, packageInstance: `new DynamicFontPackage(), new HighlighterViewPackage(), - new TextInputDelKeyHandlerPackage(), new KeyboardInputPackage(getApplication())` } } diff --git a/react-native.config.js b/react-native.config.js index ef376f5f64..df3b8bf9f4 100644 --- a/react-native.config.js +++ b/react-native.config.js @@ -10,11 +10,9 @@ module.exports = { sourceDir: '../uilib-native/android/', packageImportPath: `import com.wix.reactnativeuilib.dynamicfont.DynamicFontPackage; import com.wix.reactnativeuilib.highlighterview.HighlighterViewPackage; -import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage; -import com.wix.reactnativeuilib.textinput.TextInputDelKeyHandlerPackage;`, +import com.wix.reactnativeuilib.keyboardinput.KeyboardInputPackage;`, packageInstance: `new DynamicFontPackage(), new HighlighterViewPackage(), - new TextInputDelKeyHandlerPackage(), new KeyboardInputPackage(getApplication())` } } From 30042938b4c98292228c8c8c0b7e35296fa8266e Mon Sep 17 00:00:00 2001 From: M-i-k-e-l Date: Thu, 8 May 2025 16:05:16 +0300 Subject: [PATCH 3/6] KeyboardAccessoryView on Android - fix crash (one bug left) Pressing on dismiss (x) only fully works the second time --- .../keyboardinput/utils/RuntimeUtils.java | 2 +- .../CustomKeyboardView.android.tsx | 33 ++++++++-- .../KeyboardInput/CustomKeyboardViewBase.tsx | 1 + .../KeyboardInput/KeyboardAccessoryView.tsx | 17 ++++- .../KeyboardInput/utils/KeyboardUtils.ts | 64 +++++++++++++++++-- 5 files changed, 101 insertions(+), 16 deletions(-) diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/keyboardinput/utils/RuntimeUtils.java b/lib/android/src/main/java/com/wix/reactnativeuilib/keyboardinput/utils/RuntimeUtils.java index 95c5e8ea47..eed6422a73 100644 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/keyboardinput/utils/RuntimeUtils.java +++ b/lib/android/src/main/java/com/wix/reactnativeuilib/keyboardinput/utils/RuntimeUtils.java @@ -9,7 +9,7 @@ public class RuntimeUtils { private static final Runnable sUIUpdateClosure = new Runnable() { @Override public void run() { - ReactContextHolder.getContext().getNativeModule(UIManagerModule.class).onBatchComplete(); + // ReactContextHolder.getContext().getNativeModule(UIManagerModule.class).onBatchComplete(); } }; diff --git a/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx b/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx index 20492205f7..9cef7c2ccf 100644 --- a/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx +++ b/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import {requireNativeComponent} from 'react-native'; +import {Keyboard, requireNativeComponent, View} from 'react-native'; import TextInputKeyboardManager from '../TextInputKeyboardManager/TextInputKeyboardManager.android'; import KeyboardRegistry from '../KeyboardRegistry'; import CustomKeyboardViewBase, {CustomKeyboardViewBaseProps} from '../CustomKeyboardViewBase'; @@ -10,22 +10,41 @@ export default class CustomKeyboardView extends CustomKeyboardViewBase { + const {keyboardHeight} = this.props; + return { + height: keyboardHeight + }; + }; + render() { const {component, initialProps} = this.props; const KeyboardComponent = component && KeyboardRegistry.getKeyboard(component); + if (!KeyboardComponent) { + return null; + } return ( - - {KeyboardComponent && } - + + + ); } } diff --git a/lib/components/Keyboard/KeyboardInput/CustomKeyboardViewBase.tsx b/lib/components/Keyboard/KeyboardInput/CustomKeyboardViewBase.tsx index fb26ca5e40..bff0c3b8b0 100644 --- a/lib/components/Keyboard/KeyboardInput/CustomKeyboardViewBase.tsx +++ b/lib/components/Keyboard/KeyboardInput/CustomKeyboardViewBase.tsx @@ -5,6 +5,7 @@ import {EventSubscription} from 'react-native'; export type CustomKeyboardViewBaseProps = { inputRef?: any; initialProps?: any; + keyboardHeight?: number; component?: string; onItemSelected?: (component?: string, args?: any) => void; onRequestShowKeyboard?: (keyboardId: string) => void; diff --git a/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx b/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx index 00051ef3e9..5568999df5 100644 --- a/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx +++ b/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx @@ -11,7 +11,7 @@ import { } from 'react-native'; import KeyboardTrackingView, {KeyboardTrackingViewProps} from '../KeyboardTracking/KeyboardTrackingView'; import CustomKeyboardView from './CustomKeyboardView'; -import KeyboardUtils from './utils/KeyboardUtils'; +import KeyboardUtils, {KeyboardHeightListener} from './utils/KeyboardUtils'; const IsIOS = Platform.OS === 'ios'; const IsAndroid = Platform.OS === 'android'; @@ -76,6 +76,7 @@ class KeyboardAccessoryView extends Component { // TODO: fix customInputControllerEventsSubscriber: any; trackingViewRef: any; + subscription: any; constructor(props: KeyboardAccessoryViewProps) { super(props); @@ -90,12 +91,16 @@ class KeyboardAccessoryView extends Component { this.registerAndroidBackHandler(); } + state = { + keyboardHeight: 0 + }; + componentWillUnmount() { if (this.customInputControllerEventsSubscriber) { this.customInputControllerEventsSubscriber.remove(); } if (IsAndroid) { - BackHandler.removeEventListener('hardwareBackPress', this.onAndroidBackPressed); + this.subscription.remove(); } } @@ -146,7 +151,7 @@ class KeyboardAccessoryView extends Component { registerAndroidBackHandler() { if (IsAndroid) { - BackHandler.addEventListener('hardwareBackPress', this.onAndroidBackPressed); + this.subscription = BackHandler.addEventListener('hardwareBackPress', this.onAndroidBackPressed); } } @@ -167,8 +172,12 @@ class KeyboardAccessoryView extends Component { this.trackingViewRef.scrollToStart(); } } + onKeyboardHeightChange = (keyboardHeight: number) => { + this.setState({keyboardHeight}); + }; render() { + const {keyboardHeight} = this.state; const { renderContent, kbInputRef, @@ -187,8 +196,10 @@ class KeyboardAccessoryView extends Component { style={styles.trackingToolbarContainer} onLayout={this.onContainerComponentHeightChanged} > + <>{renderContent?.()} { + const [isInitialized, setIsInitialized] = useState(false); + const [keyboardHeight, setKeyboardHeight] = useState(DEFAULT_KEYBOARD_HEIGHT); + const [isVisible, setIsVisible] = useState(false); + + const keyboardDidShow = useCallback((e: KeyboardEvent) => { + if (!isInitialized) { + setIsInitialized(true); + setKeyboardHeight(e.endCoordinates.height); + } + setIsVisible(true); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const keyboardDidHide = useCallback(() => { + setIsVisible(false); + }, []); + + useEffect(() => { + const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', keyboardDidShow); + const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', keyboardDidHide); + return () => { + keyboardDidShowListener.remove(); + keyboardDidHideListener.remove(); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return {keyboardHeight, isKeyboardVisible: isVisible}; +}; + +export interface KeyboardHeightListenerProps { + onKeyboardHeightChange?: (height: number) => void; + onKeyboardVisibilityChange?: (isKeyboardVisible: boolean) => void; +} + +const KeyboardHeightListener = ({onKeyboardHeightChange, onKeyboardVisibilityChange}: KeyboardHeightListenerProps) => { + const {keyboardHeight, isKeyboardVisible} = useKeyboardHeight(); + + useEffect(() => { + onKeyboardHeightChange?.(keyboardHeight); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [keyboardHeight]); + + useEffect(() => { + onKeyboardVisibilityChange?.(isKeyboardVisible); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isKeyboardVisible]); + + return null; +}; + +export {useKeyboardHeight, KeyboardHeightListener}; From 2849be706d1ee006014e17bb716e4c91e7df14db Mon Sep 17 00:00:00 2001 From: M-i-k-e-l Date: Thu, 8 May 2025 16:22:18 +0300 Subject: [PATCH 4/6] Pressing on dismiss (x) only fully works the second time - a very complex fix --- .../CustomKeyboardView.android.tsx | 17 +++++--- .../KeyboardInput/CustomKeyboardViewBase.tsx | 2 + .../KeyboardInput/KeyboardAccessoryView.tsx | 24 ++++++++++-- .../KeyboardInput/utils/KeyboardUtils.ts | 39 +++++++++++++++++-- 4 files changed, 70 insertions(+), 12 deletions(-) diff --git a/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx b/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx index 9cef7c2ccf..27d5cae780 100644 --- a/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx +++ b/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx @@ -10,19 +10,24 @@ export default class CustomKeyboardView extends CustomKeyboardViewBase void; + shouldFocus?: boolean; component?: string; onItemSelected?: (component?: string, args?: any) => void; onRequestShowKeyboard?: (keyboardId: string) => void; diff --git a/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx b/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx index 5568999df5..1a4e77b2c9 100644 --- a/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx +++ b/lib/components/Keyboard/KeyboardInput/KeyboardAccessoryView.tsx @@ -73,10 +73,13 @@ class KeyboardAccessoryView extends Component { scrollBehavior: KeyboardTrackingView.scrollBehaviors.FIXED_OFFSET }; + static currentId = 0; + // TODO: fix customInputControllerEventsSubscriber: any; trackingViewRef: any; subscription: any; + id: number = ++KeyboardAccessoryView.currentId; constructor(props: KeyboardAccessoryViewProps) { super(props); @@ -92,7 +95,8 @@ class KeyboardAccessoryView extends Component { } state = { - keyboardHeight: 0 + keyboardHeight: 0, + shouldFocus: true }; componentWillUnmount() { @@ -176,8 +180,16 @@ class KeyboardAccessoryView extends Component { this.setState({keyboardHeight}); }; + onDismiss = () => { + this.setState({shouldFocus: false}); + }; + + onKeyboardDismiss = () => { + this.setState({shouldFocus: true}); + }; + render() { - const {keyboardHeight} = this.state; + const {keyboardHeight, shouldFocus} = this.state; const { renderContent, kbInputRef, @@ -196,10 +208,16 @@ class KeyboardAccessoryView extends Component { style={styles.trackingToolbarContainer} onLayout={this.onContainerComponentHeightChanged} > - + <>{renderContent?.()} void} = {}; + + private static addListener = (id: string, onDismiss?: () => void) => { + if (id && onDismiss && !KeyboardUtils.listeners[id]) { + KeyboardUtils.listeners[id] = onDismiss; + } + }; + + private static removeListener = (id: string) => { + if (id && KeyboardUtils.listeners[id]) { + delete KeyboardUtils.listeners[id]; + } + }; + /** * Used to dismiss (close) the keyboard. */ static dismiss = () => { Keyboard.dismiss(); TextInputKeyboardManager.dismissKeyboard(); + Object.keys(KeyboardUtils.listeners).forEach(key => { + KeyboardUtils.listeners[key](); + }); }; } -const useKeyboardHeight = () => { +interface KeyboardHeightProps { + id: string; + onDismiss: () => void; +} + +const useKeyboardHeight = ({id, onDismiss}: KeyboardHeightProps) => { const [isInitialized, setIsInitialized] = useState(false); const [keyboardHeight, setKeyboardHeight] = useState(DEFAULT_KEYBOARD_HEIGHT); const [isVisible, setIsVisible] = useState(false); @@ -37,9 +59,13 @@ const useKeyboardHeight = () => { useEffect(() => { const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', keyboardDidShow); const keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', keyboardDidHide); + // @ts-ignore + KeyboardUtils.addListener(id, onDismiss); return () => { keyboardDidShowListener.remove(); keyboardDidHideListener.remove(); + // @ts-ignore + KeyboardUtils.removeListener(id); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -48,12 +74,19 @@ const useKeyboardHeight = () => { }; export interface KeyboardHeightListenerProps { + id: string; + onDismiss: () => void; onKeyboardHeightChange?: (height: number) => void; onKeyboardVisibilityChange?: (isKeyboardVisible: boolean) => void; } -const KeyboardHeightListener = ({onKeyboardHeightChange, onKeyboardVisibilityChange}: KeyboardHeightListenerProps) => { - const {keyboardHeight, isKeyboardVisible} = useKeyboardHeight(); +const KeyboardHeightListener = ({ + id, + onDismiss, + onKeyboardHeightChange, + onKeyboardVisibilityChange +}: KeyboardHeightListenerProps) => { + const {keyboardHeight, isKeyboardVisible} = useKeyboardHeight({id, onDismiss}); useEffect(() => { onKeyboardHeightChange?.(keyboardHeight); From 6b4b1bf386672aca97d5ed76c7de2b38028b71d4 Mon Sep 17 00:00:00 2001 From: M-i-k-e-l Date: Thu, 8 May 2025 17:10:08 +0300 Subject: [PATCH 5/6] Remove unused code --- .../CustomKeyboardView/CustomKeyboardView.android.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx b/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx index 27d5cae780..b9c9288623 100644 --- a/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx +++ b/lib/components/Keyboard/KeyboardInput/CustomKeyboardView/CustomKeyboardView.android.tsx @@ -1,11 +1,8 @@ import React from 'react'; -import {Keyboard, requireNativeComponent, View} from 'react-native'; -import TextInputKeyboardManager from '../TextInputKeyboardManager/TextInputKeyboardManager.android'; +import {Keyboard, View} from 'react-native'; import KeyboardRegistry from '../KeyboardRegistry'; import CustomKeyboardViewBase, {CustomKeyboardViewBaseProps} from '../CustomKeyboardViewBase'; -const CustomKeyboardViewNativeAndroid = requireNativeComponent('CustomKeyboardViewNativeTemp'); - export default class CustomKeyboardView extends CustomKeyboardViewBase { static displayName = 'IGNORE'; @@ -15,7 +12,6 @@ export default class CustomKeyboardView extends CustomKeyboardViewBase Date: Thu, 8 May 2025 19:41:24 +0300 Subject: [PATCH 6/6] HighlighterViewManager - fix (use new API) --- .../HighlightOverlayViewScreen.js | 5 +- .../HighlighterViewManager.java | 54 +++++++++++-------- .../highlighterview/ReactHacks.java | 30 ----------- .../highlighterview/ReflectionUtils.java | 34 ------------ 4 files changed, 35 insertions(+), 88 deletions(-) delete mode 100644 lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReactHacks.java delete mode 100644 lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReflectionUtils.java diff --git a/demo/src/screens/nativeComponentScreens/HighlightOverlayViewScreen.js b/demo/src/screens/nativeComponentScreens/HighlightOverlayViewScreen.js index f31619f4cb..4722a2efd2 100644 --- a/demo/src/screens/nativeComponentScreens/HighlightOverlayViewScreen.js +++ b/demo/src/screens/nativeComponentScreens/HighlightOverlayViewScreen.js @@ -16,7 +16,10 @@ export default class HighlightOverlayViewScreen extends PureComponent { } componentDidMount() { - this.setState({showFTE: true}); + // setting timeout to allow Android's transition animation to complete + setTimeout(() => { + this.setState({showFTE: true}); + }, 1000); } onRefUpdated(ref) { diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/HighlighterViewManager.java b/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/HighlighterViewManager.java index 9694cc5cbb..b283d087a1 100644 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/HighlighterViewManager.java +++ b/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/HighlighterViewManager.java @@ -8,12 +8,15 @@ import android.view.View; import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.UIManager; import com.facebook.react.uimanager.IllegalViewOperationException; import com.facebook.react.uimanager.NativeViewHierarchyManager; import com.facebook.react.uimanager.SimpleViewManager; import com.facebook.react.uimanager.ThemedReactContext; +import com.facebook.react.uimanager.UIManagerHelper; import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.annotations.ReactProp; +import com.facebook.react.uimanager.common.UIManagerType; import javax.annotation.Nullable; @@ -75,33 +78,38 @@ public void setInnerPadding(HighlighterView view, @Nullable Integer innerPadding @ReactProp(name = "highlightViewTag") public void setHighlightViewTag(final HighlighterView view, Integer highlightViewTag) { - try { - NativeViewHierarchyManager nativeViewHierarchyManager = ReactHacks.getNativeViewHierarchyManager(context.getNativeModule(UIManagerModule.class)); - if (nativeViewHierarchyManager == null) { - return; - } - - final View resolvedView = nativeViewHierarchyManager.resolveView(highlightViewTag); - if (resolvedView != null) { - if (resolvedView.getWidth() == 0 || resolvedView.getHeight() == 0) { - resolvedView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { - @Override - public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { - float width = right - left; - float height = bottom - top; - if (width > 0 && height > 0) { - setViewBasedHighlightFrame(view, resolvedView); - resolvedView.removeOnLayoutChangeListener(this); - } + if (highlightViewTag != null) { + try { + UIManager uiManager = UIManagerHelper.getUIManagerForReactTag(context, highlightViewTag); + if (uiManager != null) { + final View resolvedView = uiManager.resolveView(highlightViewTag); + if (resolvedView != null) { + if (resolvedView.getWidth() == 0 || resolvedView.getHeight() == 0) { + resolvedView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { + @Override + public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { + float width = right - left; + float height = bottom - top; + if (width > 0 && height > 0) { + setViewBasedHighlightFrame(view, resolvedView); + resolvedView.removeOnLayoutChangeListener(this); + } + } + }); + } else { + setViewBasedHighlightFrame(view, resolvedView); } - }); + } else { + Log.e("HighlighterView", "was not able to resolve highlightViewTag: " + highlightViewTag.toString()); + } } else { - setViewBasedHighlightFrame(view, resolvedView); + Log.e("HighlighterView", "was not able to resolve get uiManager for highlightViewTag: " + highlightViewTag.toString()); } + } catch (IllegalViewOperationException e) { + Log.e("HighlighterView", "invalid highlightViewTag: " + highlightViewTag.toString() + " " + e.toString()); } - } - catch (IllegalViewOperationException e) { - Log.e("HighlighterView", "invalid highlightViewTag: " + highlightViewTag.toString() + " " + e.toString()); + } else { + Log.e("HighlighterView", "highlightViewTag is null"); } } diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReactHacks.java b/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReactHacks.java deleted file mode 100644 index 7f282933b0..0000000000 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReactHacks.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.wix.reactnativeuilib.highlighterview; - - -import androidx.annotation.Nullable; - -import com.facebook.react.uimanager.NativeViewHierarchyManager; -import com.facebook.react.uimanager.UIBlock; -import com.facebook.react.uimanager.UIManagerModule; -import com.facebook.react.uimanager.UIViewOperationQueue; - -/** - * ¯\_(ツ)_/¯ - */ -public class ReactHacks { - - /** - * {@link NativeViewHierarchyManager} is used to resolve a native view by RN tag ({@link NativeViewHierarchyManager#resolveView}). The only way of obtaining it is by - * posting {@link UIBlock} which can take a noticeable amount of time to execute. - */ - @Nullable - public static NativeViewHierarchyManager getNativeViewHierarchyManager(UIManagerModule uiManager) { - try { - UIViewOperationQueue mOperationsQueue = (UIViewOperationQueue) ReflectionUtils.getDeclaredField(uiManager.getUIImplementation(), "mOperationsQueue"); - return (NativeViewHierarchyManager) ReflectionUtils.getDeclaredField(mOperationsQueue, "mNativeViewHierarchyManager"); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } -} diff --git a/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReflectionUtils.java b/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReflectionUtils.java deleted file mode 100644 index c0fa8bb0b0..0000000000 --- a/lib/android/src/main/java/com/wix/reactnativeuilib/highlighterview/ReflectionUtils.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.wix.reactnativeuilib.highlighterview; - - -import androidx.annotation.Nullable; - -import java.lang.reflect.Field; - -class ReflectionUtils { - - @Nullable - static Object getDeclaredField(Object obj, String fieldName) { - try { - Field f = getField(obj.getClass(), fieldName); - if (f == null) { - return null; - } - f.setAccessible(true); - return f.get(obj); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - private static Field getField(Class clazz, String name) { - try { - return clazz.getDeclaredField(name); - } catch (NoSuchFieldException nsfe) { - return getField(clazz.getSuperclass(), name); - } catch (Exception e) { - return null; - } - } -}