From 26d600ad0a4415ba8d43d84f49026cd2730b023b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 16:52:35 +0200 Subject: [PATCH 01/86] feat(RN0.73): Update packages Gemfile, Podfile and package.json updates come from React Native Upgrade Helper. Package updated to support RN0.73 : - @react-native-community/datetimepicker - react-native-svg-transformer - react-native-flipper react-native-flipper could be updated more but it is not working anyway for the moment so I just updated it to make it compile. `react-native run-android --variant=devDebug` CLI command has been changed to `react-native run-android --mode=devDebug` --- Gemfile | 2 +- Gemfile.lock | 2 +- ios/Podfile | 7 - ios/Podfile.lock | 1275 ++++++++++++++++++++++++++++--------- package.json | 21 +- yarn.lock | 1592 +++++++++++++++++++++++++++------------------- 6 files changed, 1927 insertions(+), 972 deletions(-) diff --git a/Gemfile b/Gemfile index 4425c6b0d..46814835e 100644 --- a/Gemfile +++ b/Gemfile @@ -2,4 +2,4 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version ruby ">= 2.6.10" gem 'cocoapods', '~> 1.13' -gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' +gem 'activesupport', '>= 6.1.7.5', '< 7.1.0' diff --git a/Gemfile.lock b/Gemfile.lock index 49253b19e..11f3c7cde 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -89,7 +89,7 @@ PLATFORMS ruby DEPENDENCIES - activesupport (>= 6.1.7.3, < 7.1.0) + activesupport (>= 6.1.7.5, < 7.1.0) cocoapods (~> 1.13) RUBY VERSION diff --git a/ios/Podfile b/ios/Podfile index c7ab1c877..4de7794a0 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -38,14 +38,8 @@ setup_permissions([ target 'CozyReactNative' do config = use_native_modules! - # Flags change depending on the env values. - flags = get_default_flags() - use_react_native!( :path => config[:reactNativePath], - # Hermes is now enabled by default. Disable by setting this flag to false. - :hermes_enabled => flags[:hermes_enabled], - :fabric_enabled => flags[:fabric_enabled], # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and @@ -83,7 +77,6 @@ target 'CozyReactNative' do config[:reactNativePath], :mac_catalyst_enabled => false ) - __apply_Xcode_12_5_M1_post_install_workaround(installer) installer.pods_project.targets.each do |target| if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle" diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 210cccf67..0dc5df95d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,18 +1,18 @@ PODS: - - boost (1.76.0) + - boost (1.83.0) - CocoaAsyncSocket (7.6.5) - CocoaLumberjack (3.8.5): - CocoaLumberjack/Core (= 3.8.5) - CocoaLumberjack/Core (3.8.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.72.12) - - FBReactNativeSpec (0.72.12): - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.72.12) - - RCTTypeSafety (= 0.72.12) - - React-Core (= 0.72.12) - - React-jsi (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) + - FBLazyVector (0.73.10) + - FBReactNativeSpec (0.73.10): + - RCT-Folly (= 2022.05.16.00) + - RCTRequired (= 0.73.10) + - RCTTypeSafety (= 0.73.10) + - React-Core (= 0.73.10) + - React-jsi (= 0.73.10) + - ReactCommon/turbomodule/core (= 0.73.10) - Firebase/CoreOnly (8.15.0): - FirebaseCore (= 8.15.0) - Firebase/Messaging (8.15.0): @@ -41,7 +41,7 @@ PODS: - GoogleUtilities/Reachability (~> 7.7) - GoogleUtilities/UserDefaults (~> 7.7) - nanopb (~> 2.30908.0) - - Flipper (0.182.0): + - Flipper (0.201.0): - Flipper-Folly (~> 2.6) - Flipper-Boost-iOSX (1.76.0.1.11) - Flipper-DoubleConversion (3.2.0.1) @@ -55,48 +55,46 @@ PODS: - OpenSSL-Universal (= 1.1.1100) - Flipper-Glog (0.5.0.5) - Flipper-PeerTalk (0.0.4) - - FlipperKit (0.182.0): - - FlipperKit/Core (= 0.182.0) - - FlipperKit/Core (0.182.0): - - Flipper (~> 0.182.0) + - FlipperKit (0.201.0): + - FlipperKit/Core (= 0.201.0) + - FlipperKit/Core (0.201.0): + - Flipper (~> 0.201.0) - FlipperKit/CppBridge - FlipperKit/FBCxxFollyDynamicConvert - FlipperKit/FBDefines - FlipperKit/FKPortForwarding - SocketRocket (~> 0.6.0) - - FlipperKit/CppBridge (0.182.0): - - Flipper (~> 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (0.182.0): + - FlipperKit/CppBridge (0.201.0): + - Flipper (~> 0.201.0) + - FlipperKit/FBCxxFollyDynamicConvert (0.201.0): - Flipper-Folly (~> 2.6) - - FlipperKit/FBDefines (0.182.0) - - FlipperKit/FKPortForwarding (0.182.0): + - FlipperKit/FBDefines (0.201.0) + - FlipperKit/FKPortForwarding (0.201.0): - CocoaAsyncSocket (~> 7.6) - Flipper-PeerTalk (~> 0.0.4) - - FlipperKit/FlipperKitHighlightOverlay (0.182.0) - - FlipperKit/FlipperKitLayoutHelpers (0.182.0): + - FlipperKit/FlipperKitHighlightOverlay (0.201.0) + - FlipperKit/FlipperKitLayoutHelpers (0.201.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutTextSearchable - - FlipperKit/FlipperKitLayoutIOSDescriptors (0.182.0): + - FlipperKit/FlipperKitLayoutIOSDescriptors (0.201.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutHelpers - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutPlugin (0.182.0): + - FlipperKit/FlipperKitLayoutPlugin (0.201.0): - FlipperKit/Core - FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitLayoutHelpers - FlipperKit/FlipperKitLayoutIOSDescriptors - FlipperKit/FlipperKitLayoutTextSearchable - - YogaKit (~> 1.18) - - FlipperKit/FlipperKitLayoutTextSearchable (0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (0.182.0): + - FlipperKit/FlipperKitLayoutTextSearchable (0.201.0) + - FlipperKit/FlipperKitNetworkPlugin (0.201.0): - FlipperKit/Core - - FlipperKit/FlipperKitReactPlugin (0.182.0): + - FlipperKit/FlipperKitReactPlugin (0.201.0): - FlipperKit/Core - - FlipperKit/FlipperKitUserDefaultsPlugin (0.182.0): + - FlipperKit/FlipperKitUserDefaultsPlugin (0.201.0): - FlipperKit/Core - - FlipperKit/SKIOSNetworkPlugin (0.182.0): + - FlipperKit/SKIOSNetworkPlugin (0.201.0): - FlipperKit/Core - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) @@ -104,9 +102,9 @@ PODS: - GCDWebServer/Core (= 3.5.4) - GCDWebServer/Core (3.5.4) - glog (0.3.5) - - GoogleDataTransport (9.2.1): + - GoogleDataTransport (9.4.1): - GoogleUtilities/Environment (~> 7.7) - - nanopb (< 2.30910.0, >= 2.30908.0) + - nanopb (< 2.30911.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - GoogleMLKit/MLKitCore (2.6.0): - MLKitCommon (~> 5.0.0) @@ -125,29 +123,37 @@ PODS: - GoogleToolboxForMac/Defines (= 2.3.2) - "GoogleToolboxForMac/NSString+URLArguments (= 2.3.2)" - "GoogleToolboxForMac/NSString+URLArguments (2.3.2)" - - GoogleUtilities/AppDelegateSwizzler (7.11.0): + - GoogleUtilities/AppDelegateSwizzler (7.13.3): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.11.0): + - GoogleUtilities/Privacy + - GoogleUtilities/Environment (7.13.3): + - GoogleUtilities/Privacy - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.11.0): + - GoogleUtilities/Logger (7.13.3): - GoogleUtilities/Environment - - GoogleUtilities/Network (7.11.0): + - GoogleUtilities/Privacy + - GoogleUtilities/Network (7.13.3): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.11.0)" - - GoogleUtilities/Reachability (7.11.0): + - "GoogleUtilities/NSData+zlib (7.13.3)": + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (7.13.3) + - GoogleUtilities/Reachability (7.13.3): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.11.0): + - GoogleUtilities/Privacy + - GoogleUtilities/UserDefaults (7.13.3): - GoogleUtilities/Logger + - GoogleUtilities/Privacy - GoogleUtilitiesComponents (1.1.0): - GoogleUtilities/Logger - GTMSessionFetcher/Core (1.7.2) - - hermes-engine (0.72.12): - - hermes-engine/Pre-built (= 0.72.12) - - hermes-engine/Pre-built (0.72.12) + - hermes-engine (0.73.10): + - hermes-engine/Pre-built (= 0.73.10) + - hermes-engine/Pre-built (0.73.10) - libevent (2.1.12) - MLImage (1.0.0-beta2) - MLKitCommon (5.0.0): @@ -180,45 +186,50 @@ PODS: - nanopb/encode (2.30908.0) - NVHTarGzip (1.0.1) - OpenSSL-Universal (1.1.1100) - - PromisesObjC (2.1.1) - - Protobuf (3.24.3) - - RCT-Folly (2021.07.22.00): + - PromisesObjC (2.4.0) + - Protobuf (3.28.2) + - RCT-Folly (2022.05.16.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Default (= 2021.07.22.00) - - RCT-Folly/Default (2021.07.22.00): + - RCT-Folly/Default (= 2022.05.16.00) + - RCT-Folly/Default (2022.05.16.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - - RCT-Folly/Futures (2021.07.22.00): + - RCT-Folly/Fabric (2022.05.16.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - RCT-Folly/Futures (2022.05.16.00): - boost - DoubleConversion - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.72.12) - - RCTTypeSafety (0.72.12): - - FBLazyVector (= 0.72.12) - - RCTRequired (= 0.72.12) - - React-Core (= 0.72.12) - - React (0.72.12): - - React-Core (= 0.72.12) - - React-Core/DevSupport (= 0.72.12) - - React-Core/RCTWebSocket (= 0.72.12) - - React-RCTActionSheet (= 0.72.12) - - React-RCTAnimation (= 0.72.12) - - React-RCTBlob (= 0.72.12) - - React-RCTImage (= 0.72.12) - - React-RCTLinking (= 0.72.12) - - React-RCTNetwork (= 0.72.12) - - React-RCTSettings (= 0.72.12) - - React-RCTText (= 0.72.12) - - React-RCTVibration (= 0.72.12) - - React-callinvoker (0.72.12) - - React-Codegen (0.72.12): + - RCTRequired (0.73.10) + - RCTTypeSafety (0.73.10): + - FBLazyVector (= 0.73.10) + - RCTRequired (= 0.73.10) + - React-Core (= 0.73.10) + - React (0.73.10): + - React-Core (= 0.73.10) + - React-Core/DevSupport (= 0.73.10) + - React-Core/RCTWebSocket (= 0.73.10) + - React-RCTActionSheet (= 0.73.10) + - React-RCTAnimation (= 0.73.10) + - React-RCTBlob (= 0.73.10) + - React-RCTImage (= 0.73.10) + - React-RCTLinking (= 0.73.10) + - React-RCTNetwork (= 0.73.10) + - React-RCTSettings (= 0.73.10) + - React-RCTText (= 0.73.10) + - React-RCTVibration (= 0.73.10) + - React-callinvoker (0.73.10) + - React-Codegen (0.73.10): - DoubleConversion - FBReactNativeSpec - glog @@ -233,255 +244,821 @@ PODS: - React-rncore - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-Core (0.72.12): + - React-Core (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.12) + - RCT-Folly (= 2022.05.16.00) + - React-Core/Default (= 0.73.10) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/CoreModulesHeaders (0.72.12): + - React-Core/CoreModulesHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/Default (0.72.12): + - React-Core/Default (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/DevSupport (0.72.12): + - React-Core/DevSupport (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.12) - - React-Core/RCTWebSocket (= 0.72.12) + - RCT-Folly (= 2022.05.16.00) + - React-Core/Default (= 0.73.10) + - React-Core/RCTWebSocket (= 0.73.10) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - - React-jsinspector (= 0.72.12) + - React-jsinspector (= 0.73.10) - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTActionSheetHeaders (0.72.12): + - React-Core/RCTActionSheetHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTAnimationHeaders (0.72.12): + - React-Core/RCTAnimationHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTBlobHeaders (0.72.12): + - React-Core/RCTBlobHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTImageHeaders (0.72.12): + - React-Core/RCTImageHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTLinkingHeaders (0.72.12): + - React-Core/RCTLinkingHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTNetworkHeaders (0.72.12): + - React-Core/RCTNetworkHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTSettingsHeaders (0.72.12): + - React-Core/RCTSettingsHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTTextHeaders (0.72.12): + - React-Core/RCTTextHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTVibrationHeaders (0.72.12): + - React-Core/RCTVibrationHeaders (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core/Default - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-Core/RCTWebSocket (0.72.12): + - React-Core/RCTWebSocket (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.72.12) + - RCT-Folly (= 2022.05.16.00) + - React-Core/Default (= 0.73.10) - React-cxxreact - React-hermes - React-jsi - React-jsiexecutor - React-perflogger - - React-runtimeexecutor + - React-runtimescheduler - React-utils - SocketRocket (= 0.6.1) - Yoga - - React-CoreModules (0.72.12): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.12) - - React-Codegen (= 0.72.12) - - React-Core/CoreModulesHeaders (= 0.72.12) - - React-jsi (= 0.72.12) + - React-CoreModules (0.73.10): + - RCT-Folly (= 2022.05.16.00) + - RCTTypeSafety (= 0.73.10) + - React-Codegen + - React-Core/CoreModulesHeaders (= 0.73.10) + - React-jsi (= 0.73.10) + - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) + - React-RCTImage (= 0.73.10) + - ReactCommon - SocketRocket (= 0.6.1) - - React-cxxreact (0.72.12): - - boost (= 1.76.0) + - React-cxxreact (0.73.10): + - boost (= 1.83.0) + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly (= 2022.05.16.00) + - React-callinvoker (= 0.73.10) + - React-debug (= 0.73.10) + - React-jsi (= 0.73.10) + - React-jsinspector (= 0.73.10) + - React-logger (= 0.73.10) + - React-perflogger (= 0.73.10) + - React-runtimeexecutor (= 0.73.10) + - React-debug (0.73.10) + - React-Fabric (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/animations (= 0.73.10) + - React-Fabric/attributedstring (= 0.73.10) + - React-Fabric/componentregistry (= 0.73.10) + - React-Fabric/componentregistrynative (= 0.73.10) + - React-Fabric/components (= 0.73.10) + - React-Fabric/core (= 0.73.10) + - React-Fabric/imagemanager (= 0.73.10) + - React-Fabric/leakchecker (= 0.73.10) + - React-Fabric/mounting (= 0.73.10) + - React-Fabric/scheduler (= 0.73.10) + - React-Fabric/telemetry (= 0.73.10) + - React-Fabric/templateprocessor (= 0.73.10) + - React-Fabric/textlayoutmanager (= 0.73.10) + - React-Fabric/uimanager (= 0.73.10) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/animations (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/attributedstring (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistry (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/componentregistrynative (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/components/inputaccessory (= 0.73.10) + - React-Fabric/components/legacyviewmanagerinterop (= 0.73.10) + - React-Fabric/components/modal (= 0.73.10) + - React-Fabric/components/rncore (= 0.73.10) + - React-Fabric/components/root (= 0.73.10) + - React-Fabric/components/safeareaview (= 0.73.10) + - React-Fabric/components/scrollview (= 0.73.10) + - React-Fabric/components/text (= 0.73.10) + - React-Fabric/components/textinput (= 0.73.10) + - React-Fabric/components/unimplementedview (= 0.73.10) + - React-Fabric/components/view (= 0.73.10) + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/inputaccessory (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/legacyviewmanagerinterop (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/modal (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/rncore (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/root (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/safeareaview (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/scrollview (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/text (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/textinput (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/unimplementedview (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/components/view (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric/core (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/imagemanager (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/leakchecker (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/mounting (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/scheduler (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/telemetry (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/templateprocessor (0.73.10): - DoubleConversion + - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.12) - - React-debug (= 0.72.12) - - React-jsi (= 0.72.12) - - React-jsinspector (= 0.72.12) - - React-logger (= 0.72.12) - - React-perflogger (= 0.72.12) - - React-runtimeexecutor (= 0.72.12) - - React-debug (0.72.12) - - React-hermes (0.72.12): + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/textlayoutmanager (0.73.10): - DoubleConversion + - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.72.12) + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric/uimanager + - React-graphics - React-jsi - - React-jsiexecutor (= 0.72.12) - - React-jsinspector (= 0.72.12) - - React-perflogger (= 0.72.12) - - React-jsi (0.72.12): - - boost (= 1.76.0) + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-Fabric/uimanager (0.73.10): - DoubleConversion + - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.72.12): + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - React-FabricImage (0.73.10): - DoubleConversion + - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.72.12) - - React-jsi (= 0.72.12) - - React-perflogger (= 0.72.12) - - React-jsinspector (0.72.12) - - React-logger (0.72.12): + - RCT-Folly/Fabric (= 2022.05.16.00) + - RCTRequired (= 0.73.10) + - RCTTypeSafety (= 0.73.10) + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.73.10) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - Yoga + - React-graphics (0.73.10): - glog + - RCT-Folly/Fabric (= 2022.05.16.00) + - React-Core/Default (= 0.73.10) + - React-utils + - React-hermes (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly (= 2022.05.16.00) + - RCT-Folly/Futures (= 2022.05.16.00) + - React-cxxreact (= 0.73.10) + - React-jsi + - React-jsiexecutor (= 0.73.10) + - React-jsinspector (= 0.73.10) + - React-perflogger (= 0.73.10) + - React-ImageManager (0.73.10): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - React-jserrorhandler (0.73.10): + - RCT-Folly/Fabric (= 2022.05.16.00) + - React-debug + - React-jsi + - React-Mapbuffer + - React-jsi (0.73.10): + - boost (= 1.83.0) + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly (= 2022.05.16.00) + - React-jsiexecutor (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly (= 2022.05.16.00) + - React-cxxreact (= 0.73.10) + - React-jsi (= 0.73.10) + - React-perflogger (= 0.73.10) + - React-jsinspector (0.73.10) + - React-logger (0.73.10): + - glog + - React-Mapbuffer (0.73.10): + - glog + - React-debug - react-native-background-upload (6.6.0): - React - react-native-biometrics (3.0.1): @@ -500,7 +1077,7 @@ PODS: - React-Core - react-native-document-scanner-plugin (0.7.3): - React-Core - - react-native-flipper (0.146.1): + - react-native-flipper (0.163.0): - React-Core - react-native-gzip (2.0.0): - NVHTarGzip @@ -525,11 +1102,14 @@ PODS: - React-Core - ReactCommon/turbomodule/core - react-native-slider (4.4.4): - - RCT-Folly (= 2021.07.22.00) + - glog + - RCT-Folly (= 2022.05.16.00) - React-Core - react-native-webview (11.18.2): - React-Core - - React-NativeModulesApple (0.72.12): + - React-nativeconfig (0.73.10) + - React-NativeModulesApple (0.73.10): + - glog - hermes-engine - React-callinvoker - React-Core @@ -538,107 +1118,162 @@ PODS: - React-runtimeexecutor - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - React-perflogger (0.72.12) - - React-RCTActionSheet (0.72.12): - - React-Core/RCTActionSheetHeaders (= 0.72.12) - - React-RCTAnimation (0.72.12): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.12) - - React-Codegen (= 0.72.12) - - React-Core/RCTAnimationHeaders (= 0.72.12) - - React-jsi (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) - - React-RCTAppDelegate (0.72.12): + - React-perflogger (0.73.10) + - React-RCTActionSheet (0.73.10): + - React-Core/RCTActionSheetHeaders (= 0.73.10) + - React-RCTAnimation (0.73.10): + - RCT-Folly (= 2022.05.16.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTAnimationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTAppDelegate (0.73.10): - RCT-Folly - RCTRequired - RCTTypeSafety - React-Core - React-CoreModules - React-hermes + - React-nativeconfig - React-NativeModulesApple + - React-RCTFabric - React-RCTImage - React-RCTNetwork - React-runtimescheduler - - ReactCommon/turbomodule/core - - React-RCTBlob (0.72.12): + - ReactCommon + - React-RCTBlob (0.73.10): - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.12) - - React-Core/RCTBlobHeaders (= 0.72.12) - - React-Core/RCTWebSocket (= 0.72.12) - - React-jsi (= 0.72.12) - - React-RCTNetwork (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) - - React-RCTImage (0.72.12): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.12) - - React-Codegen (= 0.72.12) - - React-Core/RCTImageHeaders (= 0.72.12) - - React-jsi (= 0.72.12) - - React-RCTNetwork (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) - - React-RCTLinking (0.72.12): - - React-Codegen (= 0.72.12) - - React-Core/RCTLinkingHeaders (= 0.72.12) - - React-jsi (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) - - React-RCTNetwork (0.72.12): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.12) - - React-Codegen (= 0.72.12) - - React-Core/RCTNetworkHeaders (= 0.72.12) - - React-jsi (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) - - React-RCTSettings (0.72.12): - - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.72.12) - - React-Codegen (= 0.72.12) - - React-Core/RCTSettingsHeaders (= 0.72.12) - - React-jsi (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) - - React-RCTText (0.72.12): - - React-Core/RCTTextHeaders (= 0.72.12) - - React-RCTVibration (0.72.12): - - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.72.12) - - React-Core/RCTVibrationHeaders (= 0.72.12) - - React-jsi (= 0.72.12) - - ReactCommon/turbomodule/core (= 0.72.12) - - React-rncore (0.72.12) - - React-runtimeexecutor (0.72.12): - - React-jsi (= 0.72.12) - - React-runtimescheduler (0.72.12): + - RCT-Folly (= 2022.05.16.00) + - React-Codegen + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket + - React-jsi + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTFabric (0.73.10): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2022.05.16.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-graphics + - React-ImageManager + - React-jsi + - React-nativeconfig + - React-RCTImage + - React-RCTText + - React-rendererdebug + - React-runtimescheduler + - React-utils + - Yoga + - React-RCTImage (0.73.10): + - RCT-Folly (= 2022.05.16.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTNetwork + - ReactCommon + - React-RCTLinking (0.73.10): + - React-Codegen + - React-Core/RCTLinkingHeaders (= 0.73.10) + - React-jsi (= 0.73.10) + - React-NativeModulesApple + - ReactCommon + - ReactCommon/turbomodule/core (= 0.73.10) + - React-RCTNetwork (0.73.10): + - RCT-Folly (= 2022.05.16.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTNetworkHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTSettings (0.73.10): + - RCT-Folly (= 2022.05.16.00) + - RCTTypeSafety + - React-Codegen + - React-Core/RCTSettingsHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-RCTText (0.73.10): + - React-Core/RCTTextHeaders (= 0.73.10) + - Yoga + - React-RCTVibration (0.73.10): + - RCT-Folly (= 2022.05.16.00) + - React-Codegen + - React-Core/RCTVibrationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCommon + - React-rendererdebug (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) + - RCT-Folly (= 2022.05.16.00) + - React-debug + - React-rncore (0.73.10) + - React-runtimeexecutor (0.73.10): + - React-jsi (= 0.73.10) + - React-runtimescheduler (0.73.10): - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-callinvoker + - React-cxxreact - React-debug - React-jsi + - React-rendererdebug - React-runtimeexecutor - - React-utils (0.72.12): + - React-utils + - React-utils (0.73.10): - glog - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-debug - - ReactCommon/turbomodule/bridging (0.72.12): + - ReactCommon (0.73.10): + - React-logger (= 0.73.10) + - ReactCommon/turbomodule (= 0.73.10) + - ReactCommon/turbomodule (0.73.10): - DoubleConversion + - fmt (~> 6.2.1) + - glog + - hermes-engine + - RCT-Folly (= 2022.05.16.00) + - React-callinvoker (= 0.73.10) + - React-cxxreact (= 0.73.10) + - React-jsi (= 0.73.10) + - React-logger (= 0.73.10) + - React-perflogger (= 0.73.10) + - ReactCommon/turbomodule/bridging (= 0.73.10) + - ReactCommon/turbomodule/core (= 0.73.10) + - ReactCommon/turbomodule/bridging (0.73.10): + - DoubleConversion + - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.12) - - React-cxxreact (= 0.72.12) - - React-jsi (= 0.72.12) - - React-logger (= 0.72.12) - - React-perflogger (= 0.72.12) - - ReactCommon/turbomodule/core (0.72.12): + - RCT-Folly (= 2022.05.16.00) + - React-callinvoker (= 0.73.10) + - React-cxxreact (= 0.73.10) + - React-jsi (= 0.73.10) + - React-logger (= 0.73.10) + - React-perflogger (= 0.73.10) + - ReactCommon/turbomodule/core (0.73.10): - DoubleConversion + - fmt (~> 6.2.1) - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.72.12) - - React-cxxreact (= 0.72.12) - - React-jsi (= 0.72.12) - - React-logger (= 0.72.12) - - React-perflogger (= 0.72.12) + - RCT-Folly (= 2022.05.16.00) + - React-callinvoker (= 0.73.10) + - React-cxxreact (= 0.73.10) + - React-jsi (= 0.73.10) + - React-logger (= 0.73.10) + - React-perflogger (= 0.73.10) - RNBackgroundFetch (4.2.5): - React-Core - RNBackgroundGeolocation (4.16.4): @@ -650,7 +1285,7 @@ PODS: - React-Core - RNCClipboard (1.13.2): - React-Core - - RNDateTimePicker (7.6.2): + - RNDateTimePicker (8.2.0): - React-Core - RNDeviceInfo (10.3.0): - React-Core @@ -688,12 +1323,14 @@ PODS: - RNPermissions (3.9.3): - React-Core - RNScreens (3.32.0): - - RCT-Folly (= 2021.07.22.00) + - glog + - RCT-Folly (= 2022.05.16.00) - React-Core - React-RCTImage - RNSentry (5.33.1): + - glog - hermes-engine - - RCT-Folly (= 2021.07.22.00) + - RCT-Folly (= 2022.05.16.00) - React-Core - React-hermes - Sentry/HybridSDK (= 8.36.0) @@ -704,40 +1341,39 @@ PODS: - Sentry/HybridSDK (8.36.0) - SocketRocket (0.6.1) - Yoga (1.14.0) - - YogaKit (1.18.1): - - Yoga (~> 1.14) DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - Flipper (= 0.182.0) + - Flipper (= 0.201.0) - Flipper-Boost-iOSX (= 1.76.0.1.11) - Flipper-DoubleConversion (= 3.2.0.1) - Flipper-Fmt (= 7.1.7) - Flipper-Folly (= 2.6.10) - Flipper-Glog (= 0.5.0.5) - Flipper-PeerTalk (= 0.0.4) - - FlipperKit (= 0.182.0) - - FlipperKit/Core (= 0.182.0) - - FlipperKit/CppBridge (= 0.182.0) - - FlipperKit/FBCxxFollyDynamicConvert (= 0.182.0) - - FlipperKit/FBDefines (= 0.182.0) - - FlipperKit/FKPortForwarding (= 0.182.0) - - FlipperKit/FlipperKitHighlightOverlay (= 0.182.0) - - FlipperKit/FlipperKitLayoutPlugin (= 0.182.0) - - FlipperKit/FlipperKitLayoutTextSearchable (= 0.182.0) - - FlipperKit/FlipperKitNetworkPlugin (= 0.182.0) - - FlipperKit/FlipperKitReactPlugin (= 0.182.0) - - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.182.0) - - FlipperKit/SKIOSNetworkPlugin (= 0.182.0) + - FlipperKit (= 0.201.0) + - FlipperKit/Core (= 0.201.0) + - FlipperKit/CppBridge (= 0.201.0) + - FlipperKit/FBCxxFollyDynamicConvert (= 0.201.0) + - FlipperKit/FBDefines (= 0.201.0) + - FlipperKit/FKPortForwarding (= 0.201.0) + - FlipperKit/FlipperKitHighlightOverlay (= 0.201.0) + - FlipperKit/FlipperKitLayoutPlugin (= 0.201.0) + - FlipperKit/FlipperKitLayoutTextSearchable (= 0.201.0) + - FlipperKit/FlipperKitNetworkPlugin (= 0.201.0) + - FlipperKit/FlipperKitReactPlugin (= 0.201.0) + - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.201.0) + - FlipperKit/SKIOSNetworkPlugin (= 0.201.0) - GCDWebServer (~> 3.0) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - libevent (~> 2.1.12) - OpenSSL-Universal (= 1.1.1100) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) @@ -749,11 +1385,17 @@ DEPENDENCIES: - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricImage (from `../node_modules/react-native/ReactCommon`) + - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) + - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) + - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) + - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) - react-native-background-upload (from `../node_modules/react-native-background-upload`) - react-native-biometrics (from `../node_modules/react-native-biometrics`) - "react-native-blur (from `../node_modules/@react-native-community/blur`)" @@ -773,18 +1415,21 @@ DEPENDENCIES: - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - "react-native-slider (from `../node_modules/@react-native-community/slider`)" - react-native-webview (from `../node_modules/react-native-webview`) + - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) + - React-RCTFabric (from `../node_modules/react-native/React`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - React-rncore (from `../node_modules/react-native/ReactCommon`) - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) @@ -854,7 +1499,6 @@ SPEC REPOS: - Protobuf - Sentry - SocketRocket - - YogaKit EXTERNAL SOURCES: boost: @@ -869,6 +1513,7 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" + :tag: hermes-2024-04-29-RNv0.73.8-644c8be78af1eae7c138fa4093fb87f0f4f8db85 RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: @@ -889,16 +1534,28 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/cxxreact" React-debug: :path: "../node_modules/react-native/ReactCommon/react/debug" + React-Fabric: + :path: "../node_modules/react-native/ReactCommon" + React-FabricImage: + :path: "../node_modules/react-native/ReactCommon" + React-graphics: + :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" React-hermes: :path: "../node_modules/react-native/ReactCommon/hermes" + React-ImageManager: + :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" + React-jserrorhandler: + :path: "../node_modules/react-native/ReactCommon/jserrorhandler" React-jsi: :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: :path: "../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" + :path: "../node_modules/react-native/ReactCommon/jsinspector-modern" React-logger: :path: "../node_modules/react-native/ReactCommon/logger" + React-Mapbuffer: + :path: "../node_modules/react-native/ReactCommon" react-native-background-upload: :path: "../node_modules/react-native-background-upload" react-native-biometrics: @@ -937,6 +1594,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-community/slider" react-native-webview: :path: "../node_modules/react-native-webview" + React-nativeconfig: + :path: "../node_modules/react-native/ReactCommon" React-NativeModulesApple: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" React-perflogger: @@ -949,6 +1608,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" + React-RCTFabric: + :path: "../node_modules/react-native/React" React-RCTImage: :path: "../node_modules/react-native/Libraries/Image" React-RCTLinking: @@ -961,6 +1622,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Text" React-RCTVibration: :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererdebug: + :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-rncore: :path: "../node_modules/react-native/ReactCommon" React-runtimeexecutor: @@ -1023,35 +1686,35 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: 7dcd2de282d72e344012f7d6564d024930a6a440 + boost: d3f49c53809116a5d38da093a8aa78bf551aed09 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 CocoaLumberjack: 6a459bc897d6d80bd1b8c78482ec7ad05dffc3f0 DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 - FBLazyVector: a31ac2336aea59512b5b982f8e231f65d7d148e1 - FBReactNativeSpec: 0976da6bc1ebd3ea9b3a65d04be2c0117d304c4c + FBLazyVector: c039b29a5b130f817a6b07dd7bc33830a969ab27 + FBReactNativeSpec: 0368d296aba294bab9067f575175422a4754db27 Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1 FirebaseCoreDiagnostics: 92e07a649aeb66352b319d43bdd2ee3942af84cb FirebaseInstallations: 40bd9054049b2eae9a2c38ef1c3dd213df3605cd FirebaseMessaging: 5e5118a2383b3531e730d974680954c679ca0a13 - Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818 + Flipper: c7a0093234c4bdd456e363f2f19b2e4b27652d44 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3 Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 - FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6 + FlipperKit: 37525a5d056ef9b93d1578e04bc3ea1de940094f fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 - GoogleDataTransport: ea169759df570f4e37bdee1623ec32a7e64e67c4 + GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a GoogleMLKit: 755661c46990a85e42278015f26400286d98ad95 GoogleToolboxForMac: 8bef7c7c5cf7291c687cf5354f39f9db6399ad34 - GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f + GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15 GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe GTMSessionFetcher: 5595ec75acf5be50814f81e9189490412bad82ba - hermes-engine: e89344b9e9e54351c3c5cac075e0275148fb37ba + hermes-engine: 42a7a4cbe3e20050fb031f64aaaffbe0c0b4a38f libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 MLImage: a454f9f8ecfd537783a12f9488f5be1a68820829 MLKitCommon: 3bc17c6f7d25ce3660f030350b46ae7ec9ebca6e @@ -1061,23 +1724,29 @@ SPEC CHECKSUMS: nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 NVHTarGzip: 74cc227b902e5725900d37eb6d79b57e93005a73 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c - PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb - Protobuf: 970f7ee93a3a08e3cf64859b8efd95ee32b4f87f - RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 - RCTRequired: b6cea797b684c6d8d82ba0107cef58cbb679afdb - RCTTypeSafety: d2eb5e0e8af9181b24034f5171f9b659994b4678 - React: e5aafc4c18040e8fbe0870a1f6df890d35f5af1d - React-callinvoker: d345fd762faa4a3d371aedf40332abb09746ca03 - React-Codegen: 821ca0b8a9fb023eef3faab61afd2390658c8f1c - React-Core: 6e27275ea4a91992f488bcc9c8575ffb564b504b - React-CoreModules: 6cb0798606e69b33e8271a9da526e3d674bedb2c - React-cxxreact: 63436ba2c7811121ca978ce60d49aa8786322726 - React-debug: b29cfcf06c990f0ea4b3d6430996baa71dd676af - React-hermes: 077b82c248fe8e698820717a1d240c8502150c31 - React-jsi: 42edc74ef0479952c32c8659563ab9cd62353a75 - React-jsiexecutor: 95bdf0ab46024ca9849e08739b6abd8fe489cd33 - React-jsinspector: 8e291ed0ab371314de269001d6b9b25db6aabf42 - React-logger: d4010de0b0564e63637ad08373bc73b5d919974b + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + Protobuf: 28c89b24435762f60244e691544ed80f50d82701 + RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0 + RCTRequired: 3c70a68a1acbfe8dec71921ddaf955ddceb6a8bd + RCTTypeSafety: 6b502ff289b30da23609b707734e9c04089baa4f + React: 8191d2b9cc390ec0304b6d96c2f9bc58f4397a18 + React-callinvoker: 95b82d703fdac0037485ab4eaca47dafa4258ec6 + React-Codegen: b05c5b21f50f8b67cbae257253d78d2148794457 + React-Core: 6e339dc0fd4de5588c59543ecf8a3ed5b4e2f8b2 + React-CoreModules: 507eaf1e5b73008e31c4de9da54f217a31ff1c20 + React-cxxreact: 1ca0528a6725ded005ae4e5112b55c24649a852c + React-debug: 460fea66d43ad2c5ba39b6ab3886ec3cbe680ea3 + React-Fabric: 8cd4516a0be8a2b38d70f2e029173a35253e3cfa + React-FabricImage: cc9c4325fa40eba64b87b1a0670896e1faa5ac99 + React-graphics: 700ba8c0f89634a18025bd1524357230a1922323 + React-hermes: cd9f6f6827ee0970a871dd8e900f9b5053d9c531 + React-ImageManager: 49620e9ff67538597a08d0ac9b8fc4a66a47d8e6 + React-jserrorhandler: 42d672b71f6b9f0bbba6f7b284d5ed2c3ac335bb + React-jsi: fc680b7d89e7e96be5747684d2a1d25fa50d490c + React-jsiexecutor: 644b1742d3fe8e30a6afc8c0f441ee6813eb28a2 + React-jsinspector: 71e5fb28b810fa199987e600ec8a6e17abee373e + React-logger: 82babb1e3fad0e04750981f24e6c38f644a0bf7c + React-Mapbuffer: 758750eb32350b01dd9c350010aecc46842047bd react-native-background-upload: 7c608537f87106c93530a3a19a853afd55466823 react-native-biometrics: 352e5a794bfffc46a0c86725ea7dc62deb085bdc react-native-blur: cfdad7b3c01d725ab62a8a729f42ea463998afa2 @@ -1086,7 +1755,7 @@ SPEC CHECKSUMS: react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727 react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-document-scanner-plugin: df5b82df67ff612262c40c26ef2c8239c5af5c55 - react-native-flipper: 4bfe0a324e663f1ae2f76ad0da75673de6895efe + react-native-flipper: 2d552a8178d839ef378220101fb7f0cd5b2a8003 react-native-gzip: 5ffb84bf191c7cd135338eca748317bc466d41a1 react-native-idle-timer: f1920a59fe776340d004ff9de13c4a6eedcc8807 react-native-mlkit-ocr: 72cdbde86f8d29cba26cf9fa0a1865fe45c8f8d6 @@ -1095,31 +1764,34 @@ SPEC CHECKSUMS: react-native-receive-sharing-intent: 0c21b8e80f629a73341f2566ce9b99df8124bb10 react-native-restart: 7595693413fe3ca15893702f2c8306c62a708162 react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc - react-native-slider: 2a78c87e19a8b2b9837037fcb68dce4be73e335a + react-native-slider: 5dfc6d2e6ea2bb455c7ca325ce6c5c0eae5b2a4b react-native-webview: 8ec7ddf9eb4ddcd92b32cee7907efec19a9ec7cb - React-NativeModulesApple: 694679e4193a49c09f0a76ee27ec09b2c466d59c - React-perflogger: 63606aeab27683112e1bd4ef25bd099ec1cb03f8 - React-RCTActionSheet: 5b39fc2b479d47325e5ac95193c482044bfebbc6 - React-RCTAnimation: d684a1de0e20c53e31376738839d1cda56b60486 - React-RCTAppDelegate: 3099e9aebf2f821503e65432e09a9423a37d767a - React-RCTBlob: 0dcf271322ba0c0406fcd4a3f87cd7d951dfcc37 - React-RCTImage: b8bfa9ed1eecc7bb96d219f8a01f569d490f34fc - React-RCTLinking: 32c9b7af01937d911010d8ab1963147e31766190 - React-RCTNetwork: c58ad73a25aa6b35258b6c59c0a24018c329fe96 - React-RCTSettings: 87eb46d6ca902981f9356a6d4742f9a453aa8fae - React-RCTText: 1fc9f2052720a6587964721b9c4542c9a0e984c0 - React-RCTVibration: ff75e7530a22dc80a27fffdc07a2785d6bdf4f8e - React-rncore: 52247442683082756b2fb3de145fb8149f15d1f6 - React-runtimeexecutor: 1c5219c682091392970608972655001103c27d21 - React-runtimescheduler: 8aea338c561b2175f47018124c076d89d3808d30 - React-utils: 9a24cb88f950d1020ee55bddacbc8c16a611e2dc - ReactCommon: 76843a9bb140596351ac2786257ac9fe60cafabb + React-nativeconfig: a596be0c98c050b80bc7e262d46a53d4df4ff712 + React-NativeModulesApple: 4829cef81c8a322029300b6ff1c5f28768fca85b + React-perflogger: 27b852c78b7be9e0b326e3102c6551529f371f95 + React-RCTActionSheet: a9af61d47af3f2facfd7d8b6f913d60956779fc6 + React-RCTAnimation: ed02ba9e344aa38426660b73512988d86b31d398 + React-RCTAppDelegate: 0e85ca8ba0a451987b6627566490cdc82cdcff21 + React-RCTBlob: e766d412c0b500e87f368f3066701db6eae6a8e5 + React-RCTFabric: 26de835bb8ad95cb0153eee2efdcf147e8369b24 + React-RCTImage: 8721486d3e76e5fe8d15b5545a9a397174011297 + React-RCTLinking: 23e25137b35564a61ae30269b51b2eecc5e5aaa6 + React-RCTNetwork: f99ce4135920848ece60a9fbd3d3bd4cf1cb015a + React-RCTSettings: c6eb7710df4b5a3306872ab2c65fcdcae3428459 + React-RCTText: 3fc5f2629ba3732e2c92c4c2046be2171e8b14d3 + React-RCTVibration: 491df80515fa282bac06bb8652cbf73118b15d8e + React-rendererdebug: 6811c7970cd72f747833775b8de47c9d0d63df20 + React-rncore: 589b9a8a6cf7fe5a472bb54c73ba91c98d241b5d + React-runtimeexecutor: 493b548fb6f1aaf94ba57cc9208ad5b89046e2be + React-runtimescheduler: 639000d08f94ee18017fad4c691c572bb6dfbe50 + React-utils: c3a9bede4e9aa5c0a8184958cd4c09ff461fd60f + ReactCommon: 92194c3d756b82bff5b75450544b2863b4df0d5f RNBackgroundFetch: 2f800a04434620db15ede2e8f21886608a2d1743 RNBackgroundGeolocation: 7df16548756b443aac809663cba8a4e03f0b8732 RNBootSplash: 4844706cbb56a3270556c9b94e59dedadccd47e4 RNCAsyncStorage: 618d03a5f52fbccb3d7010076bc54712844c18ef RNCClipboard: 60fed4b71560d7bfe40e9d35dea9762b024da86d - RNDateTimePicker: fc2e4f2795877d45e84d85659bebe627eba5c931 + RNDateTimePicker: 40ffda97d071a98a10fdca4fa97e3977102ccd14 RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7 RNFBApp: e4439717c23252458da2b41b81b4b475c86f90c4 RNFBMessaging: 40dac204b4197a2661dec5be964780c6ec39bf65 @@ -1134,15 +1806,14 @@ SPEC CHECKSUMS: RNLocalize: d4b8af4e442d4bcca54e68fc687a2129b4d71a81 RNNotifee: f3c01b391dd8e98e67f539f9a35a9cbcd3bae744 RNPermissions: 83168e00be08bd043f51fb738256bf761f38952d - RNScreens: ad1c105ac9107cf1a613bf80889485458eb20bd7 - RNSentry: d059115a1ee0a77087030e141a1b0aa4983ef9bc + RNScreens: e842cdccb23c0a084bd6307f6fa83fd1c1738029 + RNSentry: 3fa4b9e7c16ac99ad269db964a3b2ca6bb0192ac RNShare: 859ff710211285676b0bcedd156c12437ea1d564 RNSVG: d00c8f91c3cbf6d476451313a18f04d220d4f396 Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - Yoga: 87e59f6d458e5061d2421086c5de994b3f7cd151 - YogaKit: f782866e155069a2cca2517aafea43200b01fd5a + Yoga: 66a97477b94264cc4e49990c8fe6b153260d871d -PODFILE CHECKSUM: abecf3caa9a2b8d077e1ea13b94ebe8e311fcf19 +PODFILE CHECKSUM: e53a16a804de17b86c29f5452d36e0ae6205ef23 COCOAPODS: 1.14.3 diff --git a/package.json b/package.json index bf952da2c..a0b57f29c 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.1.31", "private": true, "scripts": { - "android": "react-native run-android --variant=devDebug --main-activity=MainActivitybase", + "android": "react-native run-android --mode=devDebug --main-activity=MainActivitybase", "brand:configure:cozy": "yarn build:whitelabel && node ./white_label/dist/white_label/configure-brand.cmd.js configure cozy", "brand:configure:mabulle": "yarn build:whitelabel && node ./white_label/dist/white_label/configure-brand.cmd.js configure mabulle", "brand:check": "yarn build:whitelabel && node ./white_label/dist/white_label/configure-brand.cmd.js check", @@ -46,7 +46,8 @@ "@react-native-cookies/cookies": "^6.2.1", "@react-native-firebase/app": "^14.12.0", "@react-native-firebase/messaging": "^14.12.0", - "@react-native/metro-config": "^0.72.12", + "@react-native/babel-preset": "0.73.21", + "@react-native/metro-config": "^0.73.5", "@react-navigation/native": "^6.1.1", "@react-navigation/routers": "6.1.9", "@react-navigation/stack": "^6.3.10", @@ -76,7 +77,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-i18next": "14.0.0", - "react-native": "0.72.12", + "react-native": "0.73.10", "react-native-background-fetch": "^4.2.5", "react-native-background-geolocation": "^4.16.3", "react-native-background-upload": "^6.6.0", @@ -88,7 +89,7 @@ "react-native-document-scanner-plugin": "^0.7.3", "react-native-file-logger": "^0.4.1", "react-native-file-viewer": "^2.1.5", - "react-native-flipper": "^0.146.1", + "react-native-flipper": "^0.163.0", "react-native-fs": "^2.20.0", "react-native-gesture-handler": "1.10.3", "react-native-google-play-integrity": "github:cozy/react-native-google-play-integrity#1.0.1", @@ -129,7 +130,7 @@ "@babel/preset-react": "7.18.6", "@babel/preset-typescript": "7.18.6", "@babel/runtime": "^7.17.9", - "@react-native-community/datetimepicker": "7.6.2", + "@react-native-community/datetimepicker": "8.2.0", "@react-native-community/slider": "4.4.4", "@storybook/addon-actions": "^6.5.16", "@storybook/addon-controls": "^6.5.16", @@ -165,20 +166,22 @@ "file-loader": "6.2.0", "fs-extra": "^11.1.1", "jest": "29.7.0", - "metro-react-native-babel-preset": "^0.76.9", "nock": "13.2.9", "pod-install": "0.1.39", - "prettier": "2.8.4", + "prettier": "2.8.8", "react-app-rewired": "2.1.8", - "react-native-svg-transformer": "1.0.0", + "react-native-svg-transformer": "1.5.0", "react-test-renderer": "18.2.0", "ts-jest": "29.1.1", - "typescript": "4.9.5", + "typescript": "5.0.4", "url-loader": "4.1.1", "webpack": "5.76.0", "webpack-cli": "4.7.2", "webpack-dev-server": "3.11.2" }, + "engines": { + "node": ">=18" + }, "browserslist": { "production": [ ">0.2%", diff --git a/yarn.lock b/yarn.lock index cedaa8ef6..81778d815 100644 --- a/yarn.lock +++ b/yarn.lock @@ -54,6 +54,14 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" +"@babel/code-frame@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7" + integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== + dependencies: + "@babel/highlight" "^7.25.7" + picocolors "^1.0.0" + "@babel/compat-data@^7.12.1", "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": version "7.20.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" @@ -64,6 +72,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== +"@babel/compat-data@^7.25.7": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.8.tgz#0376e83df5ab0eb0da18885c0140041f0747a402" + integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA== + "@babel/core@7.12.3": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" @@ -107,7 +120,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.15.5", "@babel/core@^7.20.0", "@babel/core@^7.7.5", "@babel/core@^7.8.4": +"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.0", "@babel/core@^7.7.5", "@babel/core@^7.8.4": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.5.tgz#45e2114dc6cd4ab167f81daf7820e8fa1250d113" integrity sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ== @@ -170,6 +183,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.21.3": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.8.tgz#a57137d2a51bbcffcfaeba43cb4dd33ae3e0e1c6" + integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.7" + "@babel/helpers" "^7.25.7" + "@babel/parser" "^7.25.8" + "@babel/template" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.8" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/eslint-parser@7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" @@ -244,6 +278,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" + integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== + dependencies: + "@babel/types" "^7.25.7" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -258,6 +302,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-annotate-as-pure@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz#63f02dbfa1f7cb75a9bdb832f300582f30bb8972" + integrity sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA== + dependencies: + "@babel/types" "^7.25.7" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" @@ -306,6 +357,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4" + integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A== + dependencies: + "@babel/compat-data" "^7.25.7" + "@babel/helper-validator-option" "^7.25.7" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz#2a8792357008ae9ce8c0f2b78b9f646ac96b314b" @@ -336,6 +398,19 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz#5d65074c76cae75607421c00d6bd517fe1892d6b" + integrity sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.7" + "@babel/helper-member-expression-to-functions" "^7.25.7" + "@babel/helper-optimise-call-expression" "^7.25.7" + "@babel/helper-replace-supers" "^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" + "@babel/traverse" "^7.25.7" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" @@ -495,6 +570,14 @@ dependencies: "@babel/types" "^7.23.0" +"@babel/helper-member-expression-to-functions@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz#541a33b071f0355a63a0fa4bdf9ac360116b8574" + integrity sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" @@ -516,6 +599,14 @@ dependencies: "@babel/types" "^7.24.0" +"@babel/helper-module-imports@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472" + integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/helper-module-transforms@^7.12.1": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" @@ -569,6 +660,16 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/helper-module-transforms@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a" + integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ== + dependencies: + "@babel/helper-module-imports" "^7.25.7" + "@babel/helper-simple-access" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/helper-optimise-call-expression@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" @@ -590,6 +691,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-optimise-call-expression@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz#1de1b99688e987af723eed44fa7fc0ee7b97d77a" + integrity sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng== + dependencies: + "@babel/types" "^7.25.7" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" @@ -600,6 +708,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== +"@babel/helper-plugin-utils@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c" + integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== + "@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -658,6 +771,15 @@ "@babel/helper-member-expression-to-functions" "^7.23.0" "@babel/helper-optimise-call-expression" "^7.22.5" +"@babel/helper-replace-supers@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz#38cfda3b6e990879c71d08d0fef9236b62bd75f5" + integrity sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.7" + "@babel/helper-optimise-call-expression" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/helper-simple-access@^7.13.12", "@babel/helper-simple-access@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" @@ -679,6 +801,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-simple-access@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0" + integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers@^7.12.1": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" @@ -700,6 +830,14 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz#382831c91038b1a6d32643f5f49505b8442cb87c" + integrity sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA== + dependencies: + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/helper-split-export-declaration@^7.12.13", "@babel/helper-split-export-declaration@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" @@ -731,6 +869,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54" + integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== + "@babel/helper-validator-identifier@^7.14.0", "@babel/helper-validator-identifier@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" @@ -746,6 +889,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5" + integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== + "@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -756,6 +904,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-option@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729" + integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== + "@babel/helper-wrap-function@^7.18.9": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" @@ -820,6 +973,14 @@ "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" +"@babel/helpers@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2" + integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA== + dependencies: + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/highlight@^7.10.4": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" @@ -857,6 +1018,16 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/highlight@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5" + integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.7.0": version "7.14.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.4.tgz#a5c560d6db6cd8e6ed342368dea8039232cbab18" @@ -892,6 +1063,20 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563" integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== +"@babel/parser@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.7.tgz#99b927720f4ddbfeb8cd195a363ed4532f87c590" + integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw== + dependencies: + "@babel/types" "^7.25.7" + +"@babel/parser@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2" + integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ== + dependencies: + "@babel/types" "^7.25.8" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -950,7 +1135,7 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-class-properties@7.18.6", "@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@7.18.6", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -1067,7 +1252,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@7.20.7", "@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.20.0", "@babel/plugin-proposal-object-rest-spread@^7.20.2": +"@babel/plugin-proposal-object-rest-spread@7.20.7", "@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.20.0", "@babel/plugin-proposal-object-rest-spread@^7.20.2": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== @@ -1168,7 +1353,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -1224,7 +1409,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.16.7", "@babel/plugin-syntax-flow@^7.18.0": +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.16.7", "@babel/plugin-syntax-flow@^7.18.0": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== @@ -1273,13 +1458,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" @@ -1322,7 +1500,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -1444,7 +1622,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.18.6": +"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== @@ -1534,7 +1712,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.15" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.20.2": +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.20.2": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792" integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== @@ -1625,7 +1803,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-flow" "^7.12.1" -"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.16.7": +"@babel/plugin-transform-flow-strip-types@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== @@ -1641,7 +1819,7 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-flow" "^7.24.1" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.18.8": +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== @@ -1703,7 +1881,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.18.6": +"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== @@ -1853,7 +2031,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.23.3" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.18.6": +"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== @@ -1900,6 +2078,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz#c790a04f837b4bd61d6b0317b43aa11ff67dce80" + integrity sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-private-methods@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" @@ -1908,6 +2094,16 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.7.tgz#aff877efd05b57c4ad04611d8de97bf155a53369" + integrity sha512-LzA5ESzBy7tqj00Yjey9yWfs3FKy4EmJyKOSWld144OxkTji81WWnUT8nkLUn+imN/zHL8ZQlOu/MTUAhHaX3g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.7" + "@babel/helper-create-class-features-plugin" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-transform-private-property-in-object@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" @@ -1918,7 +2114,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.18.6": +"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== @@ -2122,7 +2318,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.18.9": +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== @@ -2655,6 +2851,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.25.0": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" + integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.0.0", "@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.14.5", "@babel/template@^7.18.10", "@babel/template@^7.3.3": version "7.18.10" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" @@ -2682,6 +2885,15 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" +"@babel/template@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769" + integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/types" "^7.25.7" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.7.0": version "7.14.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" @@ -2790,7 +3002,20 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": +"@babel/traverse@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8" + integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== + dependencies: + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/parser" "^7.25.7" + "@babel/template" "^7.25.7" + "@babel/types" "^7.25.7" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.14.0", "@babel/types@^7.14.2", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84" integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg== @@ -2808,6 +3033,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.21.3", "@babel/types@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1" + integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg== + dependencies: + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + to-fast-properties "^2.0.0" + "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602" @@ -2826,6 +3060,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.25.7": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.7.tgz#1b7725c1d3a59f328cb700ce704c46371e6eef9b" + integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ== + dependencies: + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -3075,6 +3318,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -3183,7 +3431,7 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^29.2.1": +"@jest/create-cache-key-function@^29.6.3": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== @@ -3456,17 +3704,6 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - "@jest/types@^29.4.3": version "29.4.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.3.tgz#9069145f4ef09adf10cec1b2901b2d390031431f" @@ -3968,115 +4205,102 @@ resolved "https://registry.yarnpkg.com/@react-native-community/blur/-/blur-4.3.2.tgz#185a2c7dd03ba168cc95069bc4742e9505fd6c6c" integrity sha512-0ID+pyZKdC4RdgC7HePxUQ6JmsbNrgz03u+6SgqYpmBoK/rE+7JffqIw7IEsfoKitLEcRNLGekIBsfwCqiEkew== -"@react-native-community/cli-clean@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.4.1.tgz#0155a02e4158c8a61ba3d7a2b08f3ebebed81906" - integrity sha512-cwUbY3c70oBGv3FvQJWe2Qkq6m1+/dcEBonMDTYyH6i+6OrkzI4RkIGpWmbG1IS5JfE9ISUZkNL3946sxyWNkw== +"@react-native-community/cli-clean@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.7.tgz#303ddf1c930918a8bdc4cc58fe0ac2dd05603cd5" + integrity sha512-BCYW77QqyxfhiMEBOoHyciJRNV6Rhz1RvclReIKnCA9wAwmoJBeu4Mu+AwiECA2bUITX16fvPt3NwDsSd1jwfQ== dependencies: - "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-tools" "12.3.7" chalk "^4.1.2" execa "^5.0.0" - prompts "^2.4.0" -"@react-native-community/cli-config@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.4.1.tgz#c27f91d2753f0f803cc79bbf299f19648a5d5627" - integrity sha512-sLdv1HFVqu5xNpeaR1+std0t7FFZaobpmpR0lFCOzKV7H/l611qS2Vo8zssmMK+oQbCs5JsX3SFPciODeIlaWA== +"@react-native-community/cli-config@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.7.tgz#feb8b93e8ccd6116ac1df0f1d8a0f06872388e51" + integrity sha512-IU2UhO9yj1rEBNhHWGzIXpPDzha4hizLP/PUOrhR4BUf6RVPUWEp+e1PXNGR0qjIf6esu7OC7t6mLOhH0NUJEw== dependencies: - "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-tools" "12.3.7" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" glob "^7.1.3" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.4.1.tgz#783cc276e1360baf8235dc8c6ebbbce0fe01d944" - integrity sha512-+pgIjGNW5TrJF37XG3djIOzP+WNoPp67to/ggDhrshuYgpymfb9XpDVsURJugy0Sy3RViqb83kQNK765QzTIvw== +"@react-native-community/cli-debugger-ui@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.7.tgz#522aa11c7b4ff4a2ec86492fabee0366d5428b4c" + integrity sha512-UHUFrRdcjWSCdWG9KIp2QjuRIahBQnb9epnQI7JCq6NFbFHYfEI4rI7msjMn+gG8/tSwKTV2PTPuPmZ5wWlE7Q== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.4.1.tgz#516ef5932de3e12989695e7cb7aba82b81e7b2de" - integrity sha512-O6oPiRsl8pdkcyNktpzvJAXUqdocoY4jh7Tt7wA69B1JKCJA7aPCecwJgpUZb63ZYoxOtRtYM3BYQKzRMLIuUw== +"@react-native-community/cli-doctor@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.7.tgz#31e4784182d6bbfe62f2e728dca87ee23efe0564" + integrity sha512-gCamZztRoAyhciuQPqdz4Xe4t3gOdNsaADNd+rva+Rx8W2PoPeNv60i7/et06wlsn6B6Sh0/hMiAftJbiHDFkg== dependencies: - "@react-native-community/cli-config" "11.4.1" - "@react-native-community/cli-platform-android" "11.4.1" - "@react-native-community/cli-platform-ios" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-config" "12.3.7" + "@react-native-community/cli-platform-android" "12.3.7" + "@react-native-community/cli-platform-ios" "12.3.7" + "@react-native-community/cli-tools" "12.3.7" chalk "^4.1.2" command-exists "^1.2.8" - envinfo "^7.7.2" + deepmerge "^4.3.0" + envinfo "^7.10.0" execa "^5.0.0" hermes-profile-transformer "^0.0.6" node-stream-zip "^1.9.1" ora "^5.4.1" - prompts "^2.4.0" semver "^7.5.2" strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.4.1.tgz#abf487ae8ab53c66f6f1178bcd37ecbbbac9fb5c" - integrity sha512-1VAjwcmv+i9BJTMMVn5Grw7AcgURhTyfHVghJ1YgBE2euEJxPuqPKSxP54wBOQKnWUwsuDQAtQf+jPJoCxJSSA== +"@react-native-community/cli-hermes@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.7.tgz#4a284e0091469f6cce8caad2fefcf6b45c0cf229" + integrity sha512-ezzeiSKjRXK2+i1AAe7NhhN9CEHrgtRmTn2MAdBpE++N8fH5EQZgxFcGgGdwGvns2fm9ivyyeVnI5eAYwvM+jg== dependencies: - "@react-native-community/cli-platform-android" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-platform-android" "12.3.7" + "@react-native-community/cli-tools" "12.3.7" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" -"@react-native-community/cli-platform-android@11.4.1", "@react-native-community/cli-platform-android@^11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.4.1.tgz#ec5fc97e87834f2e33cb0d34dcef6c17b20f60fc" - integrity sha512-VMmXWIzk0Dq5RAd+HIEa3Oe7xl2jso7+gOr6E2HALF4A3fCKUjKZQ6iK2t6AfnY04zftvaiKw6zUXtrfl52AVQ== +"@react-native-community/cli-platform-android@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.7.tgz#4826f5126f950e29d7ef1ac779c4eed56d251f98" + integrity sha512-mOltF3cpjNdJb3WSFwEHc1GH4ibCcnOvQ34OdWyblKy9ijuvG5SjNTlYR/UW/CURaDi3OUKAhxQMTY5d27bzGQ== dependencies: - "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-tools" "12.3.7" chalk "^4.1.2" execa "^5.0.0" + fast-xml-parser "^4.2.4" glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@11.4.1", "@react-native-community/cli-platform-ios@^11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.4.1.tgz#12d72741273b684734d5ed021415b7f543a6f009" - integrity sha512-RPhwn+q3IY9MpWc9w/Qmzv03mo8sXdah2eSZcECgweqD5SHWtOoRCUt11zM8jASpAQ8Tm5Je7YE9bHvdwGl4hA== +"@react-native-community/cli-platform-ios@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.7.tgz#ef90e5c4d9ff5f15071b18179b17cf16699a70e5" + integrity sha512-2WnVsMH4ORZIhBm/5nCms1NeeKG4KarNC7PMLmrXWXB/bibDcaNsjrJiqnmCUcpTEvTQTokRfoO7Aj6NM0Cqow== dependencies: - "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-tools" "12.3.7" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.0.12" glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.4.1.tgz#8d51c59a9a720f99150d4153e757d5d1d1dabd22" - integrity sha512-JxbIqknYcQ5Z4rWROtu5LNakLfMiKoWcMoPqIrBLrV5ILm1XUJj1/8fATCcotZqV3yzB3SCJ3RrhKx7dQ3YELw== - dependencies: - "@react-native-community/cli-server-api" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - execa "^5.0.0" - metro "^0.76.9" - metro-config "^0.76.9" - metro-core "^0.76.9" - metro-react-native-babel-transformer "^0.76.9" - metro-resolver "^0.76.9" - metro-runtime "^0.76.9" - readline "^1.3.0" +"@react-native-community/cli-plugin-metro@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.7.tgz#f9be724721a52d800a20f641a2241a7b4e6a9477" + integrity sha512-ahEw0Vfnv2Nv/jdZ2QDuGjQ9l2SczO4lXjb3ubu5vEYNLyTw3jYsLMK6iES7YQ/ApQmKdG476HU1O9uZdpaYPg== -"@react-native-community/cli-server-api@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.4.1.tgz#3dda094c4ab2369db34fe991c320e3cd78f097b3" - integrity sha512-isxXE8X5x+C4kN90yilD08jaLWD34hfqTfn/Xbl1u/igtdTsCaQGvWe9eaFamrpWFWTpVtj6k+vYfy8AtYSiKA== +"@react-native-community/cli-server-api@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.7.tgz#81e2a067c120391242740598010abb8d5d36a739" + integrity sha512-LYETs3CCjrLn1ZU0kYv44TywiIl5IPFHZGeXhAh2TtgOk4mo3kvXxECDil9CdO3bmDra6qyiG61KHvzr8IrHdg== dependencies: - "@react-native-community/cli-debugger-ui" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-debugger-ui" "12.3.7" + "@react-native-community/cli-tools" "12.3.7" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -4085,10 +4309,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.4.1.tgz#f6c69967e077b10cd8a884a83e53eb199dd9ee9f" - integrity sha512-GuQIuY/kCPfLeXB1aiPZ5HvF+e/wdO42AYuNEmT7FpH/0nAhdTxA9qjL8m3vatDD2/YK7WNOSVNsl2UBZuOISg== +"@react-native-community/cli-tools@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.7.tgz#65cf1c81d13662a1b0396c753e6ff916e3e92083" + integrity sha512-7NL/1/i+wzd4fBr/FSr3ypR05tiU/Kv9l/M1sL1c6jfcDtWXAL90R161gQkQFK7shIQ8Idp0dQX1rq49tSyfQw== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -4099,41 +4323,43 @@ ora "^5.4.1" semver "^7.5.2" shell-quote "^1.7.3" + sudo-prompt "^9.0.0" -"@react-native-community/cli-types@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.4.1.tgz#3842dc37ba3b09f929b485bcbd8218de19349ac2" - integrity sha512-B3q9A5BCneLDSoK/iSJ06MNyBn1qTxjdJeOgeS3MiCxgJpPcxyn/Yrc6+h0Cu9T9sgWj/dmectQPYWxtZeo5VA== +"@react-native-community/cli-types@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.7.tgz#6f55becdc41bb5ebf1a8f6fd27ad0d198831169d" + integrity sha512-NFtUMyIrNfi3A5C1cjVKDVvYHvvOF7MnOMwdD8jm2NQKewQJrehKBh1eMuykKdqhWyZmuemD4KKhL8f4FxgG0w== dependencies: joi "^17.2.1" -"@react-native-community/cli@^11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.4.1.tgz#9a6346486622860dad721da406df70e29a45491f" - integrity sha512-NdAageVMtNhtvRsrq4NgJf5Ey2nA1CqmLvn7PhSawg+aIzMKmZuzWxGVwr9CoPGyjvNiqJlCWrLGR7NzOyi/sA== - dependencies: - "@react-native-community/cli-clean" "11.4.1" - "@react-native-community/cli-config" "11.4.1" - "@react-native-community/cli-debugger-ui" "11.4.1" - "@react-native-community/cli-doctor" "11.4.1" - "@react-native-community/cli-hermes" "11.4.1" - "@react-native-community/cli-plugin-metro" "11.4.1" - "@react-native-community/cli-server-api" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" - "@react-native-community/cli-types" "11.4.1" +"@react-native-community/cli@12.3.7": + version "12.3.7" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.7.tgz#8f53ec9310367a0204d859005e9cd137f9888382" + integrity sha512-7+mOhk+3+X3BjSJZZvYrDJynA00gPYTlvT28ZjiLlbuVGfqfNiBKaxuF7rty+gjjpch4iKGvLhIhSN5cuOsdHQ== + dependencies: + "@react-native-community/cli-clean" "12.3.7" + "@react-native-community/cli-config" "12.3.7" + "@react-native-community/cli-debugger-ui" "12.3.7" + "@react-native-community/cli-doctor" "12.3.7" + "@react-native-community/cli-hermes" "12.3.7" + "@react-native-community/cli-plugin-metro" "12.3.7" + "@react-native-community/cli-server-api" "12.3.7" + "@react-native-community/cli-tools" "12.3.7" + "@react-native-community/cli-types" "12.3.7" chalk "^4.1.2" commander "^9.4.1" + deepmerge "^4.3.0" execa "^5.0.0" find-up "^4.1.0" fs-extra "^8.1.0" graceful-fs "^4.1.3" - prompts "^2.4.0" + prompts "^2.4.2" semver "^7.5.2" -"@react-native-community/datetimepicker@7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-7.6.2.tgz#9bba92dc8088b54331f89bbf89134836f0d4c067" - integrity sha512-ogZnvCmNG/lGHhEQypqz/mPymiIWD5jv6uKczg/l/aWgiKs1RDPQH1abh+R0I26aKoXmgamJJPuXKeC5eRWtZg== +"@react-native-community/datetimepicker@8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-8.2.0.tgz#f62ac4fc12bd527fbbe93934e6c1cfbb7ba570f3" + integrity sha512-qrUPhiBvKGuG9Y+vOqsc56RPFcHa1SU2qbAMT0hfGkoFIj3FodE0VuPVrEa8fgy7kcD5NQmkZIKgHOBLV0+hWg== dependencies: invariant "^2.2.4" @@ -4168,15 +4394,70 @@ resolved "https://registry.yarnpkg.com/@react-native-firebase/messaging/-/messaging-14.12.0.tgz#02cad59f2cf52b68d9cdeed3f1206fe6f84c068f" integrity sha512-4JF93pYLyFiLjwU2RYlHMKSjI7DKLuqQrqCnC3M2yhgTDeYaJsqnYnTSDMfmmh9vZHfHjTztc6E2scwr/Mw8tg== -"@react-native/assets-registry@^0.72.0": - version "0.72.0" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.72.0.tgz#c82a76a1d86ec0c3907be76f7faf97a32bbed05d" - integrity sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ== +"@react-native/assets-registry@0.73.1": + version "0.73.1" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.73.1.tgz#e2a6b73b16c183a270f338dc69c36039b3946e85" + integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== -"@react-native/codegen@^0.72.8": - version "0.72.8" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.72.8.tgz#0593f628e1310f430450a9479fbb4be35e7b63d6" - integrity sha512-jQCcBlXV7B7ap5VlHhwIPieYz89yiRgwd2FPUBu+unz+kcJ6pAiB2U8RdLDmyIs8fiWd+Vq1xxaWs4TR329/ng== +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz#8a2037d5585b41877611498ae66adbf1dddfec1b" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + +"@react-native/babel-preset@0.73.21": + version "0.73.21" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.21.tgz#174c16493fa4e311b2f5f0c58d4f3c6a5a68bbea" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.4" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.3.tgz#cc984a8b17334d986cc600254a0d4b7fa7d68a94" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== dependencies: "@babel/parser" "^7.20.0" flow-parser "^0.206.0" @@ -4186,40 +4467,89 @@ mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/gradle-plugin@^0.72.11": - version "0.72.11" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz#c063ef12778706611de7a1e42b74b14d9405fb9f" - integrity sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw== +"@react-native/community-cli-plugin@0.73.18": + version "0.73.18" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.18.tgz#ba2a0933fad574684534eea29f1c5d2cab494854" + integrity sha512-RN8piDh/eF+QT6YYmrj3Zd9uiaDsRY/kMT0FYR42j8/M/boE4hs4Xn0u91XzT8CAkU9q/ilyo3wJsXIJo2teww== + dependencies: + "@react-native-community/cli-server-api" "12.3.7" + "@react-native-community/cli-tools" "12.3.7" + "@react-native/dev-middleware" "0.73.8" + "@react-native/metro-babel-transformer" "0.73.15" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz#033757614d2ada994c68a1deae78c1dd2ad33c2b" + integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== + +"@react-native/dev-middleware@0.73.8": + version "0.73.8" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz#2e43722a00c7b8db753f747f40267cbad6caba4d" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.73.5": + version "0.73.5" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.73.5.tgz#900126b4e5737eaac22a0fddb2fc5b4cc20da41c" + integrity sha512-Orrn8J/kqzEuXudl96XcZk84ZcdIpn1ojjwGSuaSQSXNcCYbOXyt0RwtW5kjCqjgSzGnOMsJNZc5FDXHVq/WzA== + +"@react-native/js-polyfills@0.73.1": + version "0.73.1" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" + integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== -"@react-native/js-polyfills@^0.72.1": - version "0.72.1" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz#905343ef0c51256f128256330fccbdb35b922291" - integrity sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA== +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz#c516584dde62d65a46668074084359c03e6a50f1" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.73.21" + hermes-parser "0.15.0" + nullthrows "^1.1.1" -"@react-native/metro-config@^0.72.12": - version "0.72.12" - resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.72.12.tgz#f55a0a68100824ac57989ee9ae9518a69b0c43c5" - integrity sha512-6NC5nr70oV8gH5vTz0yVYig6TGn97NfE58DdYottuOGPEODZf9Jpb7gdLs6Rqj5ryFDsKVPU3NsFmXKBJwEgXQ== +"@react-native/metro-config@^0.73.5": + version "0.73.5" + resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.73.5.tgz#791242ca93057d7299ce18379ea11d3bdb368ea9" + integrity sha512-3bNWoHzOzP/+qoLJtRhOVXrnxKmSY3i4y5PXyMQlIvvOI/GQbXulPpEZxK/yUrf1MmeXHLLFufFbQWlfDEDoxA== dependencies: - "@react-native/js-polyfills" "^0.72.1" - metro-config "^0.76.9" - metro-react-native-babel-transformer "^0.76.9" - metro-runtime "^0.76.9" + "@react-native/js-polyfills" "0.73.1" + "@react-native/metro-babel-transformer" "0.73.15" + metro-config "^0.80.3" + metro-runtime "^0.80.3" "@react-native/normalize-color@^2.0.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== -"@react-native/normalize-colors@<0.73.0", "@react-native/normalize-colors@^0.72.0": - version "0.72.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz#14294b7ed3c1d92176d2a00df48456e8d7d62212" - integrity sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw== +"@react-native/normalize-colors@0.73.2", "@react-native/normalize-colors@^0.73.0": + version "0.73.2" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz#cc8e48fbae2bbfff53e12f209369e8d2e4cf34ec" + integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== -"@react-native/virtualized-lists@^0.72.8": - version "0.72.8" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz#a2c6a91ea0f1d40eb5a122fb063daedb92ed1dc3" - integrity sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw== +"@react-native/virtualized-lists@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz#640e594775806f63685435b5d9c3d05c378ccd8c" + integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" @@ -4998,85 +5328,99 @@ ejs "^2.6.1" magic-string "^0.25.0" +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== -"@svgr/babel-plugin-add-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" - integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== "@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== -"@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" - integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== "@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== -"@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" - integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== "@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" - integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== "@svgr/babel-plugin-svg-dynamic-title@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== -"@svgr/babel-plugin-svg-dynamic-title@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" - integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== "@svgr/babel-plugin-svg-em-dimensions@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== -"@svgr/babel-plugin-svg-em-dimensions@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" - integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== "@svgr/babel-plugin-transform-react-native-svg@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== -"@svgr/babel-plugin-transform-react-native-svg@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" - integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== "@svgr/babel-plugin-transform-svg-component@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== -"@svgr/babel-plugin-transform-svg-component@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz#7ba61d9fc1fb42b0ba1a04e4630019fa7e993c4f" - integrity sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg== +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" "@svgr/babel-preset@^5.5.0": version "5.5.0" @@ -5092,20 +5436,6 @@ "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" "@svgr/babel-plugin-transform-svg-component" "^5.5.0" -"@svgr/babel-preset@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.2.0.tgz#1d3ad8c7664253a4be8e4a0f0e6872f30d8af627" - integrity sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^6.0.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.0.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.0.0" - "@svgr/babel-plugin-svg-dynamic-title" "^6.0.0" - "@svgr/babel-plugin-svg-em-dimensions" "^6.0.0" - "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" - "@svgr/babel-plugin-transform-svg-component" "^6.2.0" - "@svgr/core@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" @@ -5115,14 +5445,24 @@ camelcase "^6.2.0" cosmiconfig "^7.0.0" -"@svgr/core@^6.1.2": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.2.1.tgz#195de807a9f27f9e0e0d678e01084b05c54fdf61" - integrity sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA== +"@svgr/core@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== dependencies: - "@svgr/plugin-jsx" "^6.2.1" + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" camelcase "^6.2.0" - cosmiconfig "^7.0.1" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" "@svgr/hast-util-to-babel-ast@^5.5.0": version "5.5.0" @@ -5131,14 +5471,6 @@ dependencies: "@babel/types" "^7.12.6" -"@svgr/hast-util-to-babel-ast@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz#ae065567b74cbe745afae617053adf9a764bea25" - integrity sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ== - dependencies: - "@babel/types" "^7.15.6" - entities "^3.0.1" - "@svgr/plugin-jsx@^5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" @@ -5149,15 +5481,15 @@ "@svgr/hast-util-to-babel-ast" "^5.5.0" svg-parser "^2.0.2" -"@svgr/plugin-jsx@^6.2.1": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz#5668f1d2aa18c2f1bb7a1fc9f682d3f9aed263bd" - integrity sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g== +"@svgr/plugin-jsx@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== dependencies: - "@babel/core" "^7.15.5" - "@svgr/babel-preset" "^6.2.0" - "@svgr/hast-util-to-babel-ast" "^6.2.1" - svg-parser "^2.0.2" + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" "@svgr/plugin-svgo@^5.5.0": version "5.5.0" @@ -5168,14 +5500,14 @@ deepmerge "^4.2.2" svgo "^1.2.2" -"@svgr/plugin-svgo@^6.1.2": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz#4cbe6a33ccccdcae4e3b63ded64cc1cbe1faf48c" - integrity sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q== +"@svgr/plugin-svgo@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.5.0" + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" "@svgr/webpack@5.5.0": version "5.5.0" @@ -5575,13 +5907,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^16.0.0": - version "16.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01" - integrity sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^17.0.8": version "17.0.14" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.14.tgz#0943473052c24bd8cf2d1de25f1a710259327237" @@ -6746,11 +7071,6 @@ async@^2.6.2: dependencies: lodash "^4.17.14" -async@^3.2.2: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -7039,11 +7359,6 @@ babel-plugin-syntax-object-rest-spread@^6.8.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= -babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: - version "7.0.0-beta.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" - integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== - babel-plugin-transform-flow-enums@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz#d1d0cc9bdc799c850ca110d0ddc9f21b9ec3ef25" @@ -7082,39 +7397,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-fbjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" - integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-member-expression-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-property-literals" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" - babel-preset-jest@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" @@ -7180,7 +7462,7 @@ base-64@^1.0.0: resolved "https://registry.yarnpkg.com/base-64/-/base-64-1.0.0.tgz#09d0f2084e32a3fd08c2475b973788eee6ae8f4a" integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== -base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: +base64-js@^1.0.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -7460,6 +7742,16 @@ browserslist@^4.21.9, browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.24.0: + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== + dependencies: + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -7674,6 +7966,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, can resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz" integrity sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A== +caniuse-lite@^1.0.30001663: + version "1.0.30001667" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949" + integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -7772,11 +8069,33 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.2.tgz#4e6404e32200095fdce7f6a1e1004f9bd36fa5da" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== +chromium-edge-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#0443083074715a13c669530b35df7bfea33b1509" + integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -8030,11 +8349,6 @@ commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== - common-tags@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -8261,16 +8575,15 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== +cosmiconfig@^8.1.3: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" path-type "^4.0.0" - yaml "^1.10.0" cozy-client@^48.5.0: version "48.5.0" @@ -8523,17 +8836,6 @@ css-select@^2.0.0, css-select@^2.0.2: domutils "^1.7.0" nth-check "^1.0.2" -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - css-select@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" @@ -8561,16 +8863,27 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + css-what@^3.2.1: version "3.4.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== -css-what@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" @@ -8669,13 +8982,20 @@ cssnano@^4.1.10: is-resolvable "^1.0.0" postcss "^7.0.0" -csso@^4.0.2, csso@^4.2.0: +csso@^4.0.2: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: css-tree "^1.1.2" +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -8818,7 +9138,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -deepmerge@^4.3.0: +deepmerge@^4.3.0, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -8926,12 +9246,12 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -deprecated-react-native-prop-types@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.2.3.tgz#0ef845c1a80ef1636bd09060e4cdf70f9727e5ad" - integrity sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g== +deprecated-react-native-prop-types@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz#02a12f090da7bd9e8c3ac53c31cf786a1315d302" + integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== dependencies: - "@react-native/normalize-colors" "<0.73.0" + "@react-native/normalize-colors" "^0.73.0" invariant "^2.2.4" prop-types "^15.8.1" @@ -9046,15 +9366,6 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - dom-serializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" @@ -9079,7 +9390,7 @@ domelementtype@1, domelementtype@^1.3.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.0.1: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== @@ -9103,13 +9414,6 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" - integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== - dependencies: - domelementtype "^2.2.0" - domhandler@^5.0.2, domhandler@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" @@ -9125,15 +9429,6 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.6.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" - integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" @@ -9213,6 +9508,11 @@ electron-to-chromium@^1.4.601: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.609.tgz#5790a70aaa96de232501b56e14b64d17aff93988" integrity sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw== +electron-to-chromium@^1.5.28: + version "1.5.35" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.35.tgz#1d38d386186c72b1fa6e74c3a7de5f888b503100" + integrity sha512-hOSRInrIDm0Brzp4IHW2F/VM+638qOL2CzE0DgpnGzKW27C95IqqeqgKz/hxHGnvPxvQGpHUGD5qRVC9EZY2+A== + elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -9307,17 +9607,17 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -entities@^4.2.0: +entities@^4.2.0, entities@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -envinfo@^7.7.2, envinfo@^7.7.3: +envinfo@^7.10.0: + version "7.14.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" + integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== + +envinfo@^7.7.3: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== @@ -9607,6 +9907,11 @@ escalade@^3.0.2, escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -10135,7 +10440,7 @@ execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^5.0.0: +execa@^5.0.0, execa@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -10196,6 +10501,11 @@ expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -10323,6 +10633,13 @@ fast-xml-parser@^4.0.12: dependencies: strnum "^1.0.5" +fast-xml-parser@^4.2.4: + version "4.5.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" + integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== + dependencies: + strnum "^1.0.5" + fastest-levenshtein@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" @@ -10538,10 +10855,10 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== -flow-enums-runtime@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz#95884bfcc82edaf27eef7e1dd09732331cfbafbc" - integrity sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ== +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz#5bb0cd1b0a3e471330f4d109039b7eba5cb3e787" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== flow-parser@0.*: version "0.168.0" @@ -11215,17 +11532,29 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hermes-estree@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.12.0.tgz#8a289f9aee854854422345e6995a48613bac2ca8" - integrity sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw== +hermes-estree@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.15.0.tgz#e32f6210ab18c7b705bdcb375f7700f2db15d6ba" + integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== -hermes-parser@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.12.0.tgz#114dc26697cfb41a6302c215b859b74224383773" - integrity sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw== +hermes-estree@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.23.1.tgz#d0bac369a030188120ee7024926aabe5a9f84fdb" + integrity sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg== + +hermes-parser@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.15.0.tgz#f611a297c2a2dbbfbce8af8543242254f604c382" + integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== + dependencies: + hermes-estree "0.15.0" + +hermes-parser@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.23.1.tgz#e5de648e664f3b3d84d01b48fc7ab164f4b68205" + integrity sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA== dependencies: - hermes-estree "0.12.0" + hermes-estree "0.23.1" hermes-profile-transformer@^0.0.6: version "0.0.6" @@ -11544,7 +11873,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -12549,7 +12878,7 @@ jest-environment-node@^26.6.2: jest-mock "^26.6.2" jest-util "^26.6.2" -jest-environment-node@^29.2.1, jest-environment-node@^29.7.0: +jest-environment-node@^29.6.3, jest-environment-node@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== @@ -12743,11 +13072,6 @@ jest-regex-util@^26.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-regex-util@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" @@ -12995,18 +13319,6 @@ jest-util@^26.6.0, jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" -jest-util@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^29.0.0: version "29.4.3" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.3.tgz#851a148e23fc2b633c55f6dad2e45d7f4579f496" @@ -13043,7 +13355,7 @@ jest-validate@^26.6.2: leven "^3.1.0" pretty-format "^26.6.2" -jest-validate@^29.2.1, jest-validate@^29.7.0: +jest-validate@^29.6.3, jest-validate@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== @@ -13121,16 +13433,7 @@ jest-worker@^27.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^27.2.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest-worker@^29.7.0: +jest-worker@^29.6.3, jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -13289,6 +13592,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -13487,6 +13795,14 @@ lie@3.1.1: dependencies: immediate "~3.0.5" +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz#aef90f9e97cd81db367c7634292ee22079280aaa" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -13758,6 +14074,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -13772,6 +14093,16 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + mdn-data@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" @@ -13844,62 +14175,67 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -metro-babel-transformer@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.9.tgz#659ba481d471b5f748c31a8f9397094b629f50ec" - integrity sha512-dAnAmBqRdTwTPVn4W4JrowPolxD1MDbuU97u3MqtWZgVRvDpmr+Cqnn5oSxLQk3Uc+Zy3wkqVrB/zXNRlLDSAQ== +metro-babel-transformer@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.80.12.tgz#ad02ade921dd4ced27b26b18ff31eb60608e3f56" + integrity sha512-YZziRs0MgA3pzCkkvOoQRXjIoVjvrpi/yRlJnObyIvMP6lFdtyG4nUGIwGY9VXnBvxmXD6mPY2e+NSw6JAyiRg== dependencies: "@babel/core" "^7.20.0" - hermes-parser "0.12.0" + flow-enums-runtime "^0.0.6" + hermes-parser "0.23.1" nullthrows "^1.1.1" -metro-cache-key@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.9.tgz#6f17f821d6f306fa9028b7e79445eb18387d03d9" - integrity sha512-ugJuYBLngHVh1t2Jj+uP9pSCQl7enzVXkuh6+N3l0FETfqjgOaSHlcnIhMPn6yueGsjmkiIfxQU4fyFVXRtSTw== +metro-cache-key@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.80.12.tgz#52f5de698b85866503ace45d0ad76f75aaec92a4" + integrity sha512-o4BspKnugg/pE45ei0LGHVuBJXwRgruW7oSFAeSZvBKA/sGr0UhOGY3uycOgWInnS3v5yTTfiBA9lHlNRhsvGA== + dependencies: + flow-enums-runtime "^0.0.6" -metro-cache@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.9.tgz#64326d7a8b470c3886a5e97d5e2a20acab20bc5f" - integrity sha512-W6QFEU5AJG1gH4Ltv8S2IvhmEhSDYnbPafyj5fGR3YLysdykj+olKv9B0V+YQXtcLGyY5CqpXLYUx595GdiKzA== +metro-cache@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.80.12.tgz#bd81af02c4f17b5aeab19bb030566b14147cee8b" + integrity sha512-p5kNHh2KJ0pbQI/H7ZBPCEwkyNcSz7OUkslzsiIWBMPQGFJ/xArMwkV7I+GJcWh+b4m6zbLxE5fk6fqbVK1xGA== dependencies: - metro-core "0.76.9" - rimraf "^3.0.2" + exponential-backoff "^3.1.1" + flow-enums-runtime "^0.0.6" + metro-core "0.80.12" -metro-config@0.76.9, metro-config@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.9.tgz#5e60aff9d8894c1ee6bbc5de23b7c8515a0b84a3" - integrity sha512-oYyJ16PY3rprsfoi80L+gDJhFJqsKI3Pob5LKQbJpvL+gGr8qfZe1eQzYp5Xxxk9DOHKBV1xD94NB8GdT/DA8Q== +metro-config@0.80.12, metro-config@^0.80.3: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.80.12.tgz#1543009f37f7ad26352ffc493fc6305d38bdf1c0" + integrity sha512-4rwOWwrhm62LjB12ytiuR5NgK1ZBNr24/He8mqCsC+HXZ+ATbrewLNztzbAZHtFsrxP4D4GLTGgh96pCpYLSAQ== dependencies: connect "^3.6.5" cosmiconfig "^5.0.5" - jest-validate "^29.2.1" - metro "0.76.9" - metro-cache "0.76.9" - metro-core "0.76.9" - metro-runtime "0.76.9" - -metro-core@0.76.9, metro-core@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.9.tgz#5f55f0fbde41d28957e4f3bb187d32251403f00e" - integrity sha512-DSeEr43Wrd5Q7ySfRzYzDwfV89g2OZTQDf1s3exOcLjE5fb7awoLOkA2h46ZzN8NcmbbM0cuJy6hOwF073/yRQ== - dependencies: + flow-enums-runtime "^0.0.6" + jest-validate "^29.6.3" + metro "0.80.12" + metro-cache "0.80.12" + metro-core "0.80.12" + metro-runtime "0.80.12" + +metro-core@0.80.12, metro-core@^0.80.3: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.80.12.tgz#5ae337923ab19ff524077efa1aeacdf4480cfa28" + integrity sha512-QqdJ/yAK+IpPs2HU/h5v2pKEdANBagSsc6DRSjnwSyJsCoHlmyJKCaCJ7KhWGx+N4OHxh37hoA8fc2CuZbx0Fw== + dependencies: + flow-enums-runtime "^0.0.6" lodash.throttle "^4.1.1" - metro-resolver "0.76.9" + metro-resolver "0.80.12" -metro-file-map@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.9.tgz#dd3d76ec23fc0ba8cb7b3a3b8075bb09e0b5d378" - integrity sha512-7vJd8kksMDTO/0fbf3081bTrlw8SLiploeDf+vkkf0OwlrtDUWPOikfebp+MpZB2S61kamKjCNRfRkgrbPfSwg== +metro-file-map@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.80.12.tgz#b03240166a68aa16c5a168c26e190d9da547eefb" + integrity sha512-sYdemWSlk66bWzW2wp79kcPMzwuG32x1ZF3otI0QZTmrnTaaTiGyhE66P1z6KR4n2Eu5QXiABa6EWbAQv0r8bw== dependencies: anymatch "^3.0.3" debug "^2.2.0" fb-watchman "^2.0.0" + flow-enums-runtime "^0.0.6" graceful-fs "^4.2.4" invariant "^2.2.4" - jest-regex-util "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.0" + jest-worker "^29.6.3" micromatch "^4.0.4" node-abort-controller "^3.1.1" nullthrows "^1.1.1" @@ -13907,160 +14243,92 @@ metro-file-map@0.76.9: optionalDependencies: fsevents "^2.3.2" -metro-inspector-proxy@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.9.tgz#0d333e64a7bc9d156d712265faa7b7ae88c775e8" - integrity sha512-idIiPkb8CYshc0WZmbzwmr4B1QwsQUbpDwBzHwxE1ni27FWKWhV9CD5p+qlXZHgfwJuMRfPN+tIaLSR8+vttYg== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - node-fetch "^2.2.0" - ws "^7.5.1" - yargs "^17.6.2" - -metro-minify-terser@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.9.tgz#3f6271da74dd57179852118443b62cc8dc578aab" - integrity sha512-ju2nUXTKvh96vHPoGZH/INhSvRRKM14CbGAJXQ98+g8K5z1v3luYJ/7+dFQB202eVzJdTB2QMtBjI1jUUpooCg== +metro-minify-terser@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.80.12.tgz#9951030e3bc52d7f3ac8664ce5862401c673e3c6" + integrity sha512-muWzUw3y5k+9083ZoX9VaJLWEV2Jcgi+Oan0Mmb/fBNMPqP9xVDuy4pOMn/HOiGndgfh/MK7s4bsjkyLJKMnXQ== dependencies: + flow-enums-runtime "^0.0.6" terser "^5.15.0" -metro-minify-uglify@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.9.tgz#e88c30c27911c053e1ee20e12077f0f4cbb154f8" - integrity sha512-MXRrM3lFo62FPISlPfTqC6n9HTEI3RJjDU5SvpE7sJFfJKLx02xXQEltsL/wzvEqK+DhRQ5DEYACTwf5W4Z3yA== - dependencies: - uglify-es "^3.1.9" - -metro-react-native-babel-preset@0.76.9, metro-react-native-babel-preset@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.9.tgz#15868142122af14313429d7572c15cf01c16f077" - integrity sha512-eCBtW/UkJPDr6HlMgFEGF+964DZsUEF9RGeJdZLKWE7d/0nY3ABZ9ZAGxzu9efQ35EWRox5bDMXUGaOwUe5ikQ== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.4.0" - -metro-react-native-babel-transformer@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.9.tgz#464aab85669ed39f7a59f1fd993a05de9543b09e" - integrity sha512-xXzHcfngSIkbQj+U7i/anFkNL0q2QVarYSzr34CFkzKLa79Rp16B8ki7z9eVVqo9W3B4TBcTXl3BipgRoOoZSQ== +metro-resolver@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.80.12.tgz#e3815914c21315b04db200032c3243a4cc22dfb6" + integrity sha512-PR24gYRZnYHM3xT9pg6BdbrGbM/Cu1TcyIFBVlAk7qDAuHkUNQ1nMzWumWs+kwSvtd9eZGzHoucGJpTUEeLZAw== dependencies: - "@babel/core" "^7.20.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.12.0" - metro-react-native-babel-preset "0.76.9" - nullthrows "^1.1.1" - -metro-resolver@0.76.9, metro-resolver@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.9.tgz#79c244784b16ca56076bc1fc816d2ba74860e882" - integrity sha512-s86ipNRas9vNR5lChzzSheF7HoaQEmzxBLzwFA6/2YcGmUCowcoyPAfs1yPh4cjMw9F1T4KlMLaiwniGE7HCyw== + flow-enums-runtime "^0.0.6" -metro-runtime@0.76.9, metro-runtime@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.9.tgz#f8ebe150f8896ce1aef5d7f3a52844f8b4f721fb" - integrity sha512-/5vezDpGUtA0Fv6cJg0+i6wB+QeBbvLeaw9cTSG7L76liP0b91f8vOcYzGaUbHI8pznJCCTerxRzpQ8e3/NcDw== +metro-runtime@0.80.12, metro-runtime@^0.80.3: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.80.12.tgz#a68af3a2a013f5372d3b8cee234fdd467455550b" + integrity sha512-LIx7+92p5rpI0i6iB4S4GBvvLxStNt6fF0oPMaUd1Weku7jZdfkCZzmrtDD9CSQ6EPb0T9NUZoyXIxlBa3wOCw== dependencies: - "@babel/runtime" "^7.0.0" - react-refresh "^0.4.0" + "@babel/runtime" "^7.25.0" + flow-enums-runtime "^0.0.6" -metro-source-map@0.76.9, metro-source-map@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.9.tgz#0f976ada836717f307427d3830aea52a2ca7ed5f" - integrity sha512-q5qsMlu8EFvsT46wUUh+ao+efDsicT30zmaPATNhq+PcTawDbDgnMuUD+FT0bvxxnisU2PWl91RdzKfNc2qPQA== +metro-source-map@0.80.12, metro-source-map@^0.80.3: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.80.12.tgz#36a2768c880f8c459d6d758e2d0975e36479f49c" + integrity sha512-o+AXmE7hpvM8r8MKsx7TI21/eerYYy2DCDkWfoBkv+jNkl61khvDHlQn0cXZa6lrcNZiZkl9oHSMcwLLIrFmpw== dependencies: "@babel/traverse" "^7.20.0" "@babel/types" "^7.20.0" + flow-enums-runtime "^0.0.6" invariant "^2.2.4" - metro-symbolicate "0.76.9" + metro-symbolicate "0.80.12" nullthrows "^1.1.1" - ob1 "0.76.9" + ob1 "0.80.12" source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.9.tgz#f1627ef6f73bb0c4d48c55684d3c87866a0b0920" - integrity sha512-Yyq6Ukj/IeWnGST09kRt0sBK8TwzGZWoU7YAcQlh14+AREH454Olx4wbFTpkkhUkV05CzNCvUuXQ0efFxhA1bw== +metro-symbolicate@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.80.12.tgz#3a6aa783c6e494e2879342d88d5379fab69d1ed2" + integrity sha512-/dIpNdHksXkGHZXARZpL7doUzHqSNxgQ8+kQGxwpJuHnDhGkENxB5PS2QBaTDdEcmyTMjS53CN1rl9n1gR6fmw== dependencies: + flow-enums-runtime "^0.0.6" invariant "^2.2.4" - metro-source-map "0.76.9" + metro-source-map "0.80.12" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.9.tgz#73e34f2014d3df3c336a882b13e541bceb826d37" - integrity sha512-YEQeNlOCt92I7S9A3xbrfaDfwfgcxz9PpD/1eeop3c4cO3z3Q3otYuxw0WJ/rUIW8pZfOm5XCehd+1NRbWlAaw== +metro-transform-plugins@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.80.12.tgz#4a3853630ad0f36cc2bffd53bae659ee171a389c" + integrity sha512-WQWp00AcZvXuQdbjQbx1LzFR31IInlkCDYJNRs6gtEtAyhwpMMlL2KcHmdY+wjDO9RPcliZ+Xl1riOuBecVlPA== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" "@babel/template" "^7.0.0" "@babel/traverse" "^7.20.0" + flow-enums-runtime "^0.0.6" nullthrows "^1.1.1" -metro-transform-worker@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.9.tgz#281fad223f0447e1ff9cc44d6f7e33dfab9ab120" - integrity sha512-F69A0q0qFdJmP2Clqr6TpTSn4WTV9p5A28h5t9o+mB22ryXBZfUQ6BFBBW/6Wp2k/UtPH+oOsBfV9guiqm3d2Q== +metro-transform-worker@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.80.12.tgz#80be8a185b7deb93402b682f58a1dd6724317ad1" + integrity sha512-KAPFN1y3eVqEbKLx1I8WOarHPqDMUa8WelWxaJCNKO/yHCP26zELeqTJvhsQup+8uwB6EYi/sp0b6TGoh6lOEA== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" "@babel/parser" "^7.20.0" "@babel/types" "^7.20.0" - babel-preset-fbjs "^3.4.0" - metro "0.76.9" - metro-babel-transformer "0.76.9" - metro-cache "0.76.9" - metro-cache-key "0.76.9" - metro-minify-terser "0.76.9" - metro-source-map "0.76.9" - metro-transform-plugins "0.76.9" + flow-enums-runtime "^0.0.6" + metro "0.80.12" + metro-babel-transformer "0.80.12" + metro-cache "0.80.12" + metro-cache-key "0.80.12" + metro-minify-terser "0.80.12" + metro-source-map "0.80.12" + metro-transform-plugins "0.80.12" nullthrows "^1.1.1" -metro@0.76.9, metro@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.9.tgz#605fddf1a54d27762ddba2f636420ae2408862df" - integrity sha512-gcjcfs0l5qIPg0lc5P7pj0x7vPJ97tan+OnEjiYLbKjR1D7Oa78CE93YUPyymUPH6q7VzlzMm1UjT35waEkZUw== +metro@0.80.12, metro@^0.80.3: + version "0.80.12" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.80.12.tgz#29a61fb83581a71e50c4d8d5d8458270edfe34cc" + integrity sha512-1UsH5FzJd9quUsD1qY+zUG4JY3jo3YEMxbMYH9jT6NK3j4iORhlwTK8fYTfAUBhDKjgLfKjAh7aoazNE23oIRA== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.20.0" @@ -14070,44 +14338,39 @@ metro@0.76.9, metro@^0.76.9: "@babel/traverse" "^7.20.0" "@babel/types" "^7.20.0" accepts "^1.3.7" - async "^3.2.2" chalk "^4.0.0" ci-info "^2.0.0" connect "^3.6.5" debug "^2.2.0" denodeify "^1.2.1" error-stack-parser "^2.0.6" + flow-enums-runtime "^0.0.6" graceful-fs "^4.2.4" - hermes-parser "0.12.0" + hermes-parser "0.23.1" image-size "^1.0.2" invariant "^2.2.4" - jest-worker "^27.2.0" + jest-worker "^29.6.3" jsc-safe-url "^0.2.2" lodash.throttle "^4.1.1" - metro-babel-transformer "0.76.9" - metro-cache "0.76.9" - metro-cache-key "0.76.9" - metro-config "0.76.9" - metro-core "0.76.9" - metro-file-map "0.76.9" - metro-inspector-proxy "0.76.9" - metro-minify-uglify "0.76.9" - metro-react-native-babel-preset "0.76.9" - metro-resolver "0.76.9" - metro-runtime "0.76.9" - metro-source-map "0.76.9" - metro-symbolicate "0.76.9" - metro-transform-plugins "0.76.9" - metro-transform-worker "0.76.9" + metro-babel-transformer "0.80.12" + metro-cache "0.80.12" + metro-cache-key "0.80.12" + metro-config "0.80.12" + metro-core "0.80.12" + metro-file-map "0.80.12" + metro-resolver "0.80.12" + metro-runtime "0.80.12" + metro-source-map "0.80.12" + metro-symbolicate "0.80.12" + metro-transform-plugins "0.80.12" + metro-transform-worker "0.80.12" mime-types "^2.1.27" - node-fetch "^2.2.0" nullthrows "^1.1.1" - rimraf "^3.0.2" serialize-error "^2.1.0" source-map "^0.5.6" strip-ansi "^6.0.0" throat "^5.0.0" - ws "^7.5.1" + ws "^7.5.10" yargs "^17.6.2" microee@0.0.6, microee@^0.0.6: @@ -14582,6 +14845,11 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + node-releases@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" @@ -14665,13 +14933,6 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -nth-check@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" - integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== - dependencies: - boolbase "^1.0.0" - nth-check@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -14694,10 +14955,12 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -ob1@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.9.tgz#a493e4b83a0fb39200de639804b5d06eed5599dc" - integrity sha512-g0I/OLnSxf6OrN3QjSew3bTDJCdbZoWxnh8adh1z36alwCuGF1dgDeRA25bTYSakrG5WULSaWJPOdgnf1O/oQw== +ob1@0.80.12: + version "0.80.12" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.80.12.tgz#0451944ba6e5be225cc9751d8cd0d7309d2d1537" + integrity sha512-VMArClVT6LkhUGpnuEoBuyjG9rzUyEzg4PDkav6wK1cLhOK02gPCYFxoiB4mqVnrMhDpIzJcrGNAMVi9P+hXrw== + dependencies: + flow-enums-runtime "^0.0.6" object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -14898,7 +15161,7 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@7.4.2, open@^7.0.2, open@^7.4.2: +open@7.4.2, open@^7.0.2, open@^7.0.3, open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== @@ -15307,6 +15570,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" @@ -16155,12 +16423,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.8.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" - integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== - -prettier@^2.4.1: +prettier@2.8.8, prettier@^2.4.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -16291,7 +16554,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prompts@^2.4.0: +prompts@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== @@ -16558,7 +16821,7 @@ react-dev-utils@^11.0.3: strip-ansi "6.0.0" text-table "0.2.0" -react-devtools-core@^4.27.2: +react-devtools-core@^4.27.7: version "4.28.5" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== @@ -16676,10 +16939,10 @@ react-native-file-viewer@^2.1.5: resolved "https://registry.yarnpkg.com/react-native-file-viewer/-/react-native-file-viewer-2.1.5.tgz#cd4544f573108e79002b5c7e1ebfce4371885250" integrity sha512-MGC6sx9jsqHdefhVQ6o0akdsPGpkXgiIbpygb2Sg4g4bh7v6K1cardLV1NwGB9A6u1yICOSDT/MOC//9Ez6EUg== -react-native-flipper@^0.146.1: - version "0.146.1" - resolved "https://registry.yarnpkg.com/react-native-flipper/-/react-native-flipper-0.146.1.tgz#b6bbb23edc347597788bdca4c89b58bad425e1a1" - integrity sha512-M3pjqDigOPRpPN9lkT3o0yKDViqciGe5aUjPrtuKdxmaCbH4ofpMEZGxrcKjnEwXJWKC24IDZKtz7WitaWgRig== +react-native-flipper@^0.163.0: + version "0.163.0" + resolved "https://registry.yarnpkg.com/react-native-flipper/-/react-native-flipper-0.163.0.tgz#3ede9fed252555d0ac3c6212e7ed6e5af3c85604" + integrity sha512-RG0yMlEMe/fYqaoUkhvW2HrqBuRYtq1K3me9y52RBFwPWooZTmUlWjIWGKT9VYVS9T2GGrUV9tpBA8pY9g7CSg== react-native-fs@^2.20.0: version "2.20.0" @@ -16805,13 +17068,14 @@ react-native-share@10.0.2: resolved "https://registry.yarnpkg.com/react-native-share/-/react-native-share-10.0.2.tgz#ba517d20a3bf20385eeeea32d9be9b41395f4dc7" integrity sha512-EZs4MtsyauAI1zP8xXT1hIFB/pXOZJNDCKcgCpEfTZFXgCUzz8MDVbI1ocP2hA59XHRSkqAQdbJ0BFTpjxOBlg== -react-native-svg-transformer@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/react-native-svg-transformer/-/react-native-svg-transformer-1.0.0.tgz#7a707e5e95d20321b5f3dcfd0c3c8762ebd0221b" - integrity sha512-ALHU5VvLLyKM/BvyEG7VYJmqglvaXtU7mGRCxrEwwpJO/GBf1ZMUzc4AeJAjSodj7yYtlDYRxNSt9ySWpaa6JQ== +react-native-svg-transformer@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/react-native-svg-transformer/-/react-native-svg-transformer-1.5.0.tgz#75ae4dbdc4b1a1508e75282d54d66900ee5fe3c2" + integrity sha512-RG5fSWJT7mjCQYocgYFUo1KYPLOoypPVG5LQab+pZZO7m4ciGaQIe0mhok3W4R5jLQsEXKo0u+aQGkZV/bZG7w== dependencies: - "@svgr/core" "^6.1.2" - "@svgr/plugin-svgo" "^6.1.2" + "@svgr/core" "^8.1.0" + "@svgr/plugin-jsx" "^8.1.0" + "@svgr/plugin-svgo" "^8.1.0" path-dirname "^1.0.2" react-native-svg@13.14.0: @@ -16846,45 +17110,46 @@ react-native-url-polyfill@^1.3.0: escape-string-regexp "2.0.0" invariant "2.2.4" -react-native@0.72.12: - version "0.72.12" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.12.tgz#480440d350530ac9485543f6eb058cd860fc1735" - integrity sha512-aQoibDdvylyPZ9qOqpLNpNPz6tU0rScc2yUgFj0VuhPEFB+gsqQW9CkZGSnhuYRkDF0cBqUEEcWiWbH3gR+Pog== - dependencies: - "@jest/create-cache-key-function" "^29.2.1" - "@react-native-community/cli" "^11.4.1" - "@react-native-community/cli-platform-android" "^11.4.1" - "@react-native-community/cli-platform-ios" "^11.4.1" - "@react-native/assets-registry" "^0.72.0" - "@react-native/codegen" "^0.72.8" - "@react-native/gradle-plugin" "^0.72.11" - "@react-native/js-polyfills" "^0.72.1" - "@react-native/normalize-colors" "^0.72.0" - "@react-native/virtualized-lists" "^0.72.8" +react-native@0.73.10: + version "0.73.10" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.10.tgz#d1768cd70de084c3eb9dd6a6452b75b41100738e" + integrity sha512-ucr9GO6iAUi3A1KZ7DjxLtS91QqTw2gJdKwvz5wNK4DCVF3neJyNUPs7fgpGngYtBsio4PaefVOXyrWAklTBXA== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.7" + "@react-native-community/cli-platform-android" "12.3.7" + "@react-native-community/cli-platform-ios" "12.3.7" + "@react-native/assets-registry" "0.73.1" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.18" + "@react-native/gradle-plugin" "0.73.5" + "@react-native/js-polyfills" "0.73.1" + "@react-native/normalize-colors" "0.73.2" + "@react-native/virtualized-lists" "0.73.4" abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" - base64-js "^1.1.2" - deprecated-react-native-prop-types "^4.2.3" + base64-js "^1.5.1" + chalk "^4.0.0" + deprecated-react-native-prop-types "^5.0.0" event-target-shim "^5.0.1" - flow-enums-runtime "^0.0.5" + flow-enums-runtime "^0.0.6" invariant "^2.2.4" - jest-environment-node "^29.2.1" + jest-environment-node "^29.6.3" jsc-android "^250231.0.0" memoize-one "^5.0.0" - metro-runtime "^0.76.9" - metro-source-map "^0.76.9" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" mkdirp "^0.5.1" nullthrows "^1.1.1" pretty-format "^26.5.2" promise "^8.3.0" - react-devtools-core "^4.27.2" - react-refresh "^0.4.0" + react-devtools-core "^4.27.7" + react-refresh "^0.14.0" react-shallow-renderer "^16.15.0" regenerator-runtime "^0.13.2" scheduler "0.24.0-canary-efb381bbf-20230505" stacktrace-parser "^0.1.10" - use-sync-external-store "^1.0.0" whatwg-fetch "^3.0.0" ws "^6.2.2" yargs "^17.6.2" @@ -16913,10 +17178,10 @@ react-redux@^8.0.5: react-is "^18.0.0" use-sync-external-store "^1.0.0" -react-refresh@^0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" - integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== +react-refresh@^0.14.0: + version "0.14.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== react-refresh@^0.8.3: version "0.8.3" @@ -18020,6 +18285,14 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -18088,6 +18361,11 @@ source-map-js@^0.6.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +source-map-js@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -18672,7 +18950,7 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svg-parser@^2.0.2: +svg-parser@^2.0.2, svg-parser@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== @@ -18696,18 +18974,18 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -svgo@^2.5.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== +svgo@^3.0.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" + integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" picocolors "^1.0.0" - stable "^0.1.8" symbol-tree@^3.2.4: version "3.2.4" @@ -18782,6 +19060,11 @@ temp-dir@^1.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + temp@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" @@ -19217,24 +19500,16 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@4.9.5: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== ua-parser-js@^0.7.18: version "0.7.28" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== -uglify-es@^3.1.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -19368,6 +19643,14 @@ update-browserslist-db@^1.0.9: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -20276,6 +20559,11 @@ ws@^7.5.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + xcode@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c" From d525f7b83197c90734fba813212fd312dcdb8593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 16:52:46 +0200 Subject: [PATCH 02/86] feat(RN0.73): Use new @react-native/babel-preset --- babel.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/babel.config.js b/babel.config.js index c9699505e..84c149369 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,5 +1,5 @@ module.exports = { - presets: ['module:metro-react-native-babel-preset'], + presets: ['module:@react-native/babel-preset'], plugins: [ 'optional-require', [ From 9ce5fcadefff7253fb37a1730e02758cce43905d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 16:53:50 +0200 Subject: [PATCH 03/86] feat(RN0.73): Update Android build files --- android/app/build.gradle | 4 ++-- android/app/src/debug/AndroidManifest.xml | 3 --- android/build.gradle | 8 +++++--- android/gradle/wrapper/gradle-wrapper.properties | 3 ++- android/gradlew | 14 +++++++++----- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 38644954e..e97d26c4d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,4 +1,5 @@ apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" apply plugin: 'com.google.gms.google-services' apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle" @@ -91,6 +92,7 @@ def jscFlavor = 'org.webkit:android-jsc:+' android { ndkVersion rootProject.ext.ndkVersion + buildToolsVersion rootProject.ext.buildToolsVersion compileSdkVersion rootProject.ext.compileSdkVersion namespace "io.cozy.flagship.mobile" @@ -147,8 +149,6 @@ dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { exclude group:'com.squareup.okhttp3', module:'okhttp' diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 14c3276c0..3dee6f57e 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -3,15 +3,12 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> - - - diff --git a/android/build.gradle b/android/build.gradle index 0d6f48085..5bf203cd9 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -10,9 +10,8 @@ buildscript { googlePlayServicesLocationVersion = "20.0.0" DocumentScanner_compileSdkVersion = 34 DocumentScanner_targetSdkVersion = 34 - kotlinVersion = '1.8.0' // react-native-receive-sharing-intent requires a global kotlin version else the build fails - // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. - ndkVersion = "23.1.7779620" + ndkVersion = "25.1.8937393" + kotlinVersion = "1.8.0" } repositories { google() @@ -21,10 +20,13 @@ buildscript { dependencies { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") classpath("com.google.gms:google-services:4.3.15") } } +apply plugin: "com.facebook.react.rootproject" + allprojects { repositories { maven { diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 6ec1567a0..d11cdd907 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew index 79a61d421..15f65bb20 100755 --- a/android/gradlew +++ b/android/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -197,6 +198,9 @@ if "$cygwin" || "$msys" ; then done fi +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in From d1bb4373757e9e5bc594816d906ba4d7c3b8ba73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 16:54:04 +0200 Subject: [PATCH 04/86] feat(RN0.73): Update iOS build files --- ios/CozyReactNative.xcodeproj/project.pbxproj | 14 +++++- ios/CozyReactNative/AppDelegate.m | 5 ++ ios/CozyReactNative/Info.plist | 10 +--- ios/CozyReactNative/PrivacyInfo.xcprivacy | 48 +++++++++++++++++++ 4 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 ios/CozyReactNative/PrivacyInfo.xcprivacy diff --git a/ios/CozyReactNative.xcodeproj/project.pbxproj b/ios/CozyReactNative.xcodeproj/project.pbxproj index 5d22d97a7..e6fc67fcd 100644 --- a/ios/CozyReactNative.xcodeproj/project.pbxproj +++ b/ios/CozyReactNative.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 162E2561D1F79143AC69FDE4 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 52EEB447A7E47913D3A59CC3 /* PrivacyInfo.xcprivacy */; }; 1787FB853A76872C4D38807A /* libPods-CozyReactNative-CozyReactNativeTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 79D616F87DFFDD069B1F634E /* libPods-CozyReactNative-CozyReactNativeTests.a */; }; 293A69ED340EB757BFB282D0 /* libPods-CozyReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CA875020D8BE788449DD47FC /* libPods-CozyReactNative.a */; }; 2C7AA45328157D2E0052F4D8 /* HttpServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C7AA45228157D2E0052F4D8 /* HttpServer.swift */; }; @@ -18,6 +19,7 @@ 573255ED23C142D79968C840 /* Lato-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FB7AC79E047043178F1289F7 /* Lato-Bold.ttf */; }; 643009FE24043073DD6A15DE /* libPods-CozyReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CA875020D8BE788449DD47FC /* libPods-CozyReactNative.a */; }; 6B8CB25C2807246700E1F390 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 6B8CB25B2807246700E1F390 /* assets */; }; + 7585C5DE689CEA1E2E42E533 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 3CE32CEBBEE23FC6729A5918 /* PrivacyInfo.xcprivacy */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; 94BEBCC36EFC4F1DDD8E6E50 /* libPods-CozyReactNative-CozyReactNativeDev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A6C35B4CE552A45F0087FDE /* libPods-CozyReactNative-CozyReactNativeDev.a */; }; 997B98B22769CFD100089037 /* BootSplash.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 997B98B12769CFD100089037 /* BootSplash.storyboard */; }; @@ -96,6 +98,8 @@ 2C7AA45128157D2D0052F4D8 /* CozyReactNative-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CozyReactNative-Bridging-Header.h"; sourceTree = ""; }; 2C7AA45228157D2E0052F4D8 /* HttpServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HttpServer.swift; sourceTree = ""; }; 2C7AA454281584D30052F4D8 /* HttpServer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HttpServer.m; sourceTree = ""; }; + 3CE32CEBBEE23FC6729A5918 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = CozyReactNative/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 52EEB447A7E47913D3A59CC3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = CozyReactNative/PrivacyInfo.xcprivacy; sourceTree = ""; }; 6B8CB25B2807246700E1F390 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = ""; }; 79997E63AEB566EB66642538 /* Pods-CozyReactNative-CozyReactNativeDev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CozyReactNative-CozyReactNativeDev.release.xcconfig"; path = "Target Support Files/Pods-CozyReactNative-CozyReactNativeDev/Pods-CozyReactNative-CozyReactNativeDev.release.xcconfig"; sourceTree = ""; }; 79D616F87DFFDD069B1F634E /* libPods-CozyReactNative-CozyReactNativeTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-CozyReactNative-CozyReactNativeTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -200,6 +204,7 @@ 13B07FB71A68108700A75B9A /* main.m */, 997B98B12769CFD100089037 /* BootSplash.storyboard */, E4F47BF62AAA0081008ACFC1 /* RNBackgroundFetch+AppDelegate.m */, + 3CE32CEBBEE23FC6729A5918 /* PrivacyInfo.xcprivacy */, ); name = CozyReactNative; sourceTree = ""; @@ -246,6 +251,7 @@ CDA0EE31E7D3E42F21731B64 /* Pods */, E53BDF67B72C4FB3901AA686 /* Resources */, E4924ABF29963CAD00F415CE /* CozyReactNativeDev-Info.plist */, + 52EEB447A7E47913D3A59CC3 /* PrivacyInfo.xcprivacy */, ); indentWidth = 2; sourceTree = ""; @@ -475,6 +481,7 @@ E4F8716229DDEC1E00C52A35 /* mespapiers@2x.png in Resources */, F3B83720E44641879E6927C6 /* Lato-Regular.ttf in Resources */, E4924AC32996438600F415CE /* GoogleService-Info.plist in Resources */, + 7585C5DE689CEA1E2E42E533 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -501,6 +508,7 @@ E4F8716329DDEC1E00C52A35 /* mespapiers@2x.png in Resources */, E4924AB629963CAD00F415CE /* Lato-Regular.ttf in Resources */, E4924AC12996437D00F415CE /* GoogleService-Info.plist in Resources */, + 162E2561D1F79143AC69FDE4 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -982,7 +990,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1044,6 +1052,7 @@ OTHER_LDFLAGS = "$(inherited)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + USE_HERMES = true; }; name = Debug; }; @@ -1052,7 +1061,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; @@ -1109,6 +1118,7 @@ OTHER_LDFLAGS = "$(inherited)"; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + USE_HERMES = true; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/ios/CozyReactNative/AppDelegate.m b/ios/CozyReactNative/AppDelegate.m index 55e439930..6c493b377 100644 --- a/ios/CozyReactNative/AppDelegate.m +++ b/ios/CozyReactNative/AppDelegate.m @@ -50,6 +50,11 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( } - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ + return [self getBundleURL]; +} + +- (NSURL *)getBundleURL { #if DEBUG return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; diff --git a/ios/CozyReactNative/Info.plist b/ios/CozyReactNative/Info.plist index 53ed892ae..6700f0cd7 100644 --- a/ios/CozyReactNative/Info.plist +++ b/ios/CozyReactNative/Info.plist @@ -105,15 +105,9 @@ NSAppTransportSecurity NSAllowsArbitraryLoads + + NSAllowsLocalNetworking - NSExceptionDomains - - localhost - - NSExceptionAllowsInsecureHTTPLoads - - - NSCameraUsageDescription Afin de prendre des photos pour Drive ou MesPapiers afin d'importer des documents diff --git a/ios/CozyReactNative/PrivacyInfo.xcprivacy b/ios/CozyReactNative/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..5429862fe --- /dev/null +++ b/ios/CozyReactNative/PrivacyInfo.xcprivacy @@ -0,0 +1,48 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + 0A2A.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + 1C8F.1 + C56D.1 + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + From ca7bd9a3ff2ab5163555b386d209b3fe1699016f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 16:54:25 +0200 Subject: [PATCH 05/86] feat(RN0.73): Update Flipper setup --- android/app/build.gradle | 8 +- .../cozyreactnative/ReactNativeFlipper.java | 75 ------- .../cozy/flagship/mobile/MainApplication.java | 1 + .../cozyreactnative/ReactNativeFlipper.java | 18 -- android/build.gradle | 4 + android/gradle.properties | 2 +- ios/Podfile.lock | 12 +- package.json | 4 +- patches/react-native-file-logger+0.4.1.patch | 185 ------------------ yarn.lock | 16 +- 10 files changed, 24 insertions(+), 301 deletions(-) delete mode 100644 android/app/src/debug/java/com/cozyreactnative/ReactNativeFlipper.java delete mode 100644 android/app/src/release/java/com/cozyreactnative/ReactNativeFlipper.java delete mode 100644 patches/react-native-file-logger+0.4.1.patch diff --git a/android/app/build.gradle b/android/app/build.gradle index e97d26c4d..b713a5146 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -148,13 +148,7 @@ android { dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") - debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { - exclude group:'com.squareup.okhttp3', module:'okhttp' - } - - debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") + implementation("com.facebook.react:flipper-integration") if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") diff --git a/android/app/src/debug/java/com/cozyreactnative/ReactNativeFlipper.java b/android/app/src/debug/java/com/cozyreactnative/ReactNativeFlipper.java deleted file mode 100644 index 26fcb6fe2..000000000 --- a/android/app/src/debug/java/com/cozyreactnative/ReactNativeFlipper.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - *

This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. - */ -package io.cozy.flagship.mobile; - -import android.content.Context; -import com.facebook.flipper.android.AndroidFlipperClient; -import com.facebook.flipper.android.utils.FlipperUtils; -import com.facebook.flipper.core.FlipperClient; -import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; -import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; -import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; -import com.facebook.flipper.plugins.inspector.DescriptorMapping; -import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; -import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; -import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; -import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; -import com.facebook.react.ReactInstanceEventListener; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.bridge.ReactContext; -import com.facebook.react.modules.network.NetworkingModule; -import okhttp3.OkHttpClient; - -/** - * Class responsible of loading Flipper inside your React Native application. This is the debug - * flavor of it. Here you can add your own plugins and customize the Flipper setup. - */ -public class ReactNativeFlipper { - public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { - if (FlipperUtils.shouldEnableFlipper(context)) { - final FlipperClient client = AndroidFlipperClient.getInstance(context); - - client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); - client.addPlugin(new DatabasesFlipperPlugin(context)); - client.addPlugin(new SharedPreferencesFlipperPlugin(context)); - client.addPlugin(CrashReporterPlugin.getInstance()); - - NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); - NetworkingModule.setCustomClientBuilder( - new NetworkingModule.CustomClientBuilder() { - @Override - public void apply(OkHttpClient.Builder builder) { - builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); - } - }); - client.addPlugin(networkFlipperPlugin); - client.start(); - - // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized - // Hence we run if after all native modules have been initialized - ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); - if (reactContext == null) { - reactInstanceManager.addReactInstanceEventListener( - new ReactInstanceEventListener() { - @Override - public void onReactContextInitialized(ReactContext reactContext) { - reactInstanceManager.removeReactInstanceEventListener(this); - reactContext.runOnNativeModulesQueueThread( - new Runnable() { - @Override - public void run() { - client.addPlugin(new FrescoFlipperPlugin()); - } - }); - } - }); - } else { - client.addPlugin(new FrescoFlipperPlugin()); - } - } - } -} diff --git a/android/app/src/main/java/io/cozy/flagship/mobile/MainApplication.java b/android/app/src/main/java/io/cozy/flagship/mobile/MainApplication.java index 2ed365e5d..321e66509 100644 --- a/android/app/src/main/java/io/cozy/flagship/mobile/MainApplication.java +++ b/android/app/src/main/java/io/cozy/flagship/mobile/MainApplication.java @@ -11,6 +11,7 @@ import com.facebook.react.ReactPackage; import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; import com.facebook.react.defaults.DefaultReactNativeHost; +import com.facebook.react.flipper.ReactNativeFlipper; import com.facebook.soloader.SoLoader; import java.util.List; import android.webkit.WebView; diff --git a/android/app/src/release/java/com/cozyreactnative/ReactNativeFlipper.java b/android/app/src/release/java/com/cozyreactnative/ReactNativeFlipper.java deleted file mode 100644 index a86343fab..000000000 --- a/android/app/src/release/java/com/cozyreactnative/ReactNativeFlipper.java +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - *

This source code is licensed under the MIT license found in the LICENSE file in the root - * directory of this source tree. - */ -package io.cozy.flagship.mobile; -import android.content.Context; -import com.facebook.react.ReactInstanceManager; -/** - * Class responsible of loading Flipper inside your React Native application. This is the release - * flavor of it so it's empty as we don't want to load Flipper. - */ -public class ReactNativeFlipper { - public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { - // Do nothing as we don't want to initialize Flipper on Release. - } -} diff --git a/android/build.gradle b/android/build.gradle index 5bf203cd9..bbddb793a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -12,6 +12,10 @@ buildscript { DocumentScanner_targetSdkVersion = 34 ndkVersion = "25.1.8937393" kotlinVersion = "1.8.0" + // To solve a conflict between flipper and react-native-background-geolocation + // https://github.com/transistorsoft/react-native-background-geolocation/issues/1983 + slf4jVersion = "2.0.7" + logbackVersion = "3.0.0" } repositories { google() diff --git a/android/gradle.properties b/android/gradle.properties index fa78b6a0c..53fecdcac 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -25,7 +25,7 @@ android.useAndroidX=true android.enableJetifier=true # Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.182.0 +FLIPPER_VERSION=0.269.0 # Helps against out of memory errors org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=4096m -XX:+HeapDumpOnOutOfMemoryError diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 0dc5df95d..6b2e2ed6a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1077,7 +1077,7 @@ PODS: - React-Core - react-native-document-scanner-plugin (0.7.3): - React-Core - - react-native-flipper (0.163.0): + - react-native-flipper (0.269.0): - React-Core - react-native-gzip (2.0.0): - NVHTarGzip @@ -1296,9 +1296,11 @@ PODS: - Firebase/Messaging (= 8.15.0) - React-Core - RNFBApp - - RNFileLogger (0.4.1): + - RNFileLogger (0.5.6): - CocoaLumberjack - - React + - glog + - RCT-Folly (= 2022.05.16.00) + - React-Core - RNFileViewer (2.1.5): - React-Core - RNFS (2.20.0): @@ -1755,7 +1757,7 @@ SPEC CHECKSUMS: react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727 react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-document-scanner-plugin: df5b82df67ff612262c40c26ef2c8239c5af5c55 - react-native-flipper: 2d552a8178d839ef378220101fb7f0cd5b2a8003 + react-native-flipper: 2a568e19c9d7051f01bf9725f886474fc818ba05 react-native-gzip: 5ffb84bf191c7cd135338eca748317bc466d41a1 react-native-idle-timer: f1920a59fe776340d004ff9de13c4a6eedcc8807 react-native-mlkit-ocr: 72cdbde86f8d29cba26cf9fa0a1865fe45c8f8d6 @@ -1795,7 +1797,7 @@ SPEC CHECKSUMS: RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7 RNFBApp: e4439717c23252458da2b41b81b4b475c86f90c4 RNFBMessaging: 40dac204b4197a2661dec5be964780c6ec39bf65 - RNFileLogger: 9eaf7a6ea709eaaffe646cc485b98ae1dbf1e9f0 + RNFileLogger: 2abb4af567fc2876a9b4b8b4959d0f3ad25abd29 RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592 RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211 diff --git a/package.json b/package.json index a0b57f29c..3e1180711 100644 --- a/package.json +++ b/package.json @@ -87,9 +87,9 @@ "react-native-config": "1.5.0", "react-native-device-info": "^10.3.0", "react-native-document-scanner-plugin": "^0.7.3", - "react-native-file-logger": "^0.4.1", + "react-native-file-logger": "^0.5.6", "react-native-file-viewer": "^2.1.5", - "react-native-flipper": "^0.163.0", + "react-native-flipper": "^0.269.0", "react-native-fs": "^2.20.0", "react-native-gesture-handler": "1.10.3", "react-native-google-play-integrity": "github:cozy/react-native-google-play-integrity#1.0.1", diff --git a/patches/react-native-file-logger+0.4.1.patch b/patches/react-native-file-logger+0.4.1.patch deleted file mode 100644 index 2867a03d5..000000000 --- a/patches/react-native-file-logger+0.4.1.patch +++ /dev/null @@ -1,185 +0,0 @@ -diff --git a/node_modules/react-native-file-logger/android/src/main/AndroidManifest.xml b/node_modules/react-native-file-logger/android/src/main/AndroidManifest.xml -index 7aaacbc..80b7c5b 100644 ---- a/node_modules/react-native-file-logger/android/src/main/AndroidManifest.xml -+++ b/node_modules/react-native-file-logger/android/src/main/AndroidManifest.xml -@@ -4,7 +4,7 @@ - - - rollingFileAppender = new RollingFileAppender<>(); - rollingFileAppender.setContext(loggerContext); -+ rollingFileAppender.setName(APPENDER_NAME); - rollingFileAppender.setFile(logsDirectory + "/" + logPrefix + "-latest.log"); - - if (dailyRolling) { -@@ -108,15 +111,24 @@ public class FileLoggerModule extends ReactContextBaseJavaModule { - rollingFileAppender.setEncoder(encoder); - rollingFileAppender.start(); - -- ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); -- root.setLevel(Level.DEBUG); -- root.detachAndStopAllAppenders(); -- root.addAppender(rollingFileAppender); -+ this.renewAppender(rollingFileAppender); - - configureOptions = options; - promise.resolve(null); - } - -+ private void renewAppender(Appender appender) { -+ ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); -+ root.setLevel(Level.DEBUG); -+ // Stopping the previous appender to release any resources it might be holding (file handles) and to ensure a clean shutdown. -+ Appender previousFileLoggerAppender = root.getAppender(APPENDER_NAME); -+ if (previousFileLoggerAppender != null) { -+ previousFileLoggerAppender.stop(); -+ root.detachAppender(APPENDER_NAME); -+ } -+ root.addAppender(appender); -+ } -+ - @ReactMethod - public void write(int level, String str) { - switch (level) { -@@ -188,7 +200,7 @@ public class FileLoggerModule extends ReactContextBaseJavaModule { - for (File file : getLogFiles()) { - Uri fileUri = FileProvider.getUriForFile( - reactContext, -- reactContext.getApplicationContext().getPackageName() + ".provider", -+ reactContext.getApplicationContext().getPackageName() + ".rnfilelogger.provider", - file); - uris.add(fileUri); - } -diff --git a/node_modules/react-native-file-logger/ios/FileLogger.m b/node_modules/react-native-file-logger/ios/FileLogger.m -index 7ee491d..329c09a 100644 ---- a/node_modules/react-native-file-logger/ios/FileLogger.m -+++ b/node_modules/react-native-file-logger/ios/FileLogger.m -@@ -4,6 +4,7 @@ - #import - #import - #import "FileLoggerFormatter.h" -+#import "RCTLog.h" - - enum LogLevel { - LOG_LEVEL_DEBUG, -@@ -19,6 +20,17 @@ @interface FileLogger () - @end - - @implementation FileLogger -+{ -+ NSMutableDictionary *_promisesList; -+} -+ -+- (instancetype)init -+{ -+ if ((self = [super init])) { -+ _promisesList = [[NSMutableDictionary alloc] init]; -+ } -+ return self; -+} - - RCT_EXPORT_MODULE() - -@@ -32,6 +44,10 @@ - (dispatch_queue_t)methodQueue { - NSNumber* maximumNumberOfFiles = options[@"maximumNumberOfFiles"]; - NSString* logsDirectory = options[@"logsDirectory"]; - -+ if (self.fileLogger) { -+ [DDLog removeLogger:self.fileLogger]; -+ } -+ - id fileManager = [[DDLogFileManagerDefault alloc] initWithLogsDirectory:logsDirectory]; - fileManager.maximumNumberOfLogFiles = [maximumNumberOfFiles unsignedIntegerValue]; - fileManager.logFilesDiskQuota = 0; -@@ -40,7 +56,7 @@ - (dispatch_queue_t)methodQueue { - fileLogger.logFormatter = [[FileLoggerFormatter alloc] init]; - fileLogger.rollingFrequency = [dailyRolling boolValue] ? 24 * 60 * 60 : 0; - fileLogger.maximumFileSize = [maximumFileSize unsignedIntegerValue]; -- [DDLog removeAllLoggers]; -+ - [DDLog addLogger:fileLogger]; - self.fileLogger = fileLogger; - -@@ -101,6 +117,8 @@ - (dispatch_queue_t)methodQueue { - [composeViewController setMessageBody:body isHTML:NO]; - } - -+ _promisesList[RCTKeyForInstance(composeViewController)] = @[resolve, reject]; -+ - NSArray* logFiles = self.fileLogger.logFileManager.sortedLogFilePaths; - for (NSString* logFile in logFiles) { - NSData* data = [NSData dataWithContentsOfFile:logFile]; -@@ -112,13 +130,44 @@ - (dispatch_queue_t)methodQueue { - presentingViewController = presentingViewController.presentedViewController; - } - [presentingViewController presentViewController:composeViewController animated:YES completion:nil]; -- -- resolve(nil); - } - - - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { -+ NSString *key = RCTKeyForInstance(controller); -+ -+ NSMutableArray *promise = _promisesList[key]; -+ if (promise) { -+ RCTPromiseResolveBlock resolve = promise[0]; -+ RCTPromiseRejectBlock reject = promise[1]; -+ switch (result) { -+ case MFMailComposeResultSent: -+ resolve(@"sent"); -+ break; -+ case MFMailComposeResultSaved: -+ resolve(@"saved"); -+ break; -+ case MFMailComposeResultCancelled: -+ resolve(@"cancelled"); -+ break; -+ case MFMailComposeResultFailed: -+ reject(@"failed", error.localizedDescription, nil); -+ break; -+ default: -+ reject(@"error", @"Unknown error", nil); -+ break; -+ } -+ [_promisesList removeObjectForKey:key]; -+ } else { -+ RCTLogWarn(@"No promise registered for mail: %@", controller.title); -+ } -+ - [controller dismissViewControllerAnimated:YES completion:nil]; - } - -+static NSString *RCTKeyForInstance(id instance) -+{ -+ return [NSString stringWithFormat:@"%p", instance]; -+} -+ - @end - diff --git a/yarn.lock b/yarn.lock index 81778d815..b6dcbe10a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16929,20 +16929,20 @@ react-native-document-scanner-plugin@^0.7.3: resolved "https://registry.yarnpkg.com/react-native-document-scanner-plugin/-/react-native-document-scanner-plugin-0.7.3.tgz#a0212e687681e3b1ed9b4aebcb1e7fc20d52ab50" integrity sha512-cddhp1rDK3nwCyi3qhbDsuWzC2svBgoGhHNQRgxJvrgfM4uoQKAGSU3XYY3VXjAZCzlqVZz9PYziYDD6fdEIcw== -react-native-file-logger@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/react-native-file-logger/-/react-native-file-logger-0.4.1.tgz#6d4cdfd333489a32b20242f898cff0b196444707" - integrity sha512-UpdMtpQvSgOB4ohid2QxwWFkI92gqKEl2woFbcPEWRbmfrwpTZuNPzNEooMTjmIhFBQPfaOcymCL9gK1naE01g== +react-native-file-logger@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/react-native-file-logger/-/react-native-file-logger-0.5.6.tgz#b6439717a943b4677b99a6c43ffba43991ea08e9" + integrity sha512-npp0IB94QDhy6JjsA9jipuNmbHwcFGGSf8xPXquVbU7z2zM9GQk/JTtXm4IVidQxbDiy0Mzk48eUGkxhry0Ofg== react-native-file-viewer@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/react-native-file-viewer/-/react-native-file-viewer-2.1.5.tgz#cd4544f573108e79002b5c7e1ebfce4371885250" integrity sha512-MGC6sx9jsqHdefhVQ6o0akdsPGpkXgiIbpygb2Sg4g4bh7v6K1cardLV1NwGB9A6u1yICOSDT/MOC//9Ez6EUg== -react-native-flipper@^0.163.0: - version "0.163.0" - resolved "https://registry.yarnpkg.com/react-native-flipper/-/react-native-flipper-0.163.0.tgz#3ede9fed252555d0ac3c6212e7ed6e5af3c85604" - integrity sha512-RG0yMlEMe/fYqaoUkhvW2HrqBuRYtq1K3me9y52RBFwPWooZTmUlWjIWGKT9VYVS9T2GGrUV9tpBA8pY9g7CSg== +react-native-flipper@^0.269.0: + version "0.269.0" + resolved "https://registry.yarnpkg.com/react-native-flipper/-/react-native-flipper-0.269.0.tgz#d0fdd2117d978ea6130019e8a35ee424d51bcc21" + integrity sha512-pg/dCCaYWWZVTv4AV//LoLGBYUq3zdmFaNcF7XqGEVXtwgL1nnBvzeOgLLH+BHoaUpQfzzidPVV7cKbRYEv8ag== react-native-fs@^2.20.0: version "2.20.0" From 3eff0bd3182cab350ca12d88647db6103cb1679b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 17:00:47 +0200 Subject: [PATCH 06/86] feat(RN0.73): Upgrade CI to node 20 --- .github/workflows/build-android-dev.yml | 11 ++--------- .github/workflows/build-android-prod.yml | 11 ++--------- .github/workflows/build-ios-dev.yml | 3 +-- .github/workflows/build-ios-prod.yml | 4 ++-- .github/workflows/quality_checks.yml | 2 +- 5 files changed, 8 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build-android-dev.yml b/.github/workflows/build-android-dev.yml index 1e1de7af1..52af3277d 100644 --- a/.github/workflows/build-android-dev.yml +++ b/.github/workflows/build-android-dev.yml @@ -33,20 +33,13 @@ jobs: - name: Set NodeJS version uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - name: Set up our JDK environment uses: actions/setup-java@v3 with: distribution: 'adopt-hotspot' - java-version: '11' - - - name: Fixing Android Build Tool Issue - run: | - cd $ANDROID_HOME/build-tools/33.0.0 - mv d8 dx - cd lib - mv d8.jar dx.jar + java-version: '17' - name: Get yarn cache directory path id: yarn-cache-dir-path diff --git a/.github/workflows/build-android-prod.yml b/.github/workflows/build-android-prod.yml index 10b9ccc16..5d27c5423 100644 --- a/.github/workflows/build-android-prod.yml +++ b/.github/workflows/build-android-prod.yml @@ -22,7 +22,7 @@ jobs: - name: Set NodeJS version uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - name: Check out Git repository uses: actions/checkout@v3 @@ -31,14 +31,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'adopt-hotspot' - java-version: '11' - - - name: Fixing Android Build Tool Issue - run: | - cd $ANDROID_HOME/build-tools/33.0.0 - mv d8 dx - cd lib - mv d8.jar dx.jar + java-version: '17' - name: Get yarn cache directory path id: yarn-cache-dir-path diff --git a/.github/workflows/build-ios-dev.yml b/.github/workflows/build-ios-dev.yml index 050b51e52..c052b67b5 100644 --- a/.github/workflows/build-ios-dev.yml +++ b/.github/workflows/build-ios-dev.yml @@ -31,7 +31,7 @@ jobs: - name: Set NodeJS version uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - name: Setup Ruby (bundle) uses: ruby/setup-ruby@v1 @@ -107,4 +107,3 @@ jobs: with: name: XCode Build Logs path: '/Users/runner/Library/Logs/gym/CozyReactNative-CozyReactNative.log' - \ No newline at end of file diff --git a/.github/workflows/build-ios-prod.yml b/.github/workflows/build-ios-prod.yml index f04b15dc6..905dcfc8f 100644 --- a/.github/workflows/build-ios-prod.yml +++ b/.github/workflows/build-ios-prod.yml @@ -24,14 +24,14 @@ jobs: - name: Select Xcode 15.3 run: sudo xcode-select -s /Applications/Xcode_15.3.app/Contents/Developer - + - name: Check out Git repository uses: actions/checkout@v3 - name: Set NodeJS version uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - name: Setup Ruby (bundle) uses: ruby/setup-ruby@v1 diff --git a/.github/workflows/quality_checks.yml b/.github/workflows/quality_checks.yml index b65c7c300..e4c67dbf2 100644 --- a/.github/workflows/quality_checks.yml +++ b/.github/workflows/quality_checks.yml @@ -20,7 +20,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v3 with: - node-version: '16.x' + node-version: 20 cache: 'yarn' - name: Install dependencies From 0e5aca25ad76aab1f42be63eb64b571a53bbcc81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 17:42:07 +0200 Subject: [PATCH 07/86] refactor(RN0.73): Remove style props not understood by RN --- src/screens/cozy-app/CozyAppScreen.styles.ts | 4 +--- src/ui/Button/styles.ts | 2 -- src/ui/CozyDialogs/styles.ts | 3 --- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/screens/cozy-app/CozyAppScreen.styles.ts b/src/screens/cozy-app/CozyAppScreen.styles.ts index 089b0b57d..d512eb722 100644 --- a/src/screens/cozy-app/CozyAppScreen.styles.ts +++ b/src/screens/cozy-app/CozyAppScreen.styles.ts @@ -25,9 +25,7 @@ export const styles = StyleSheet.create({ width: '100%', height: '100%', zIndex: 1, // Will show up above CozyWebView, - borderRadius: 8, - boxShadow: - '0px 0px 0px 0.5px rgba(29, 33, 42, 0.12), 0px 2px 4px rgba(29, 33, 42, 0.0793047), 0px 4px 16px rgba(29, 33, 42, 0.06)' + borderRadius: 8 }, mainView: { flex: 1, // Allows full height for loading animation diff --git a/src/ui/Button/styles.ts b/src/ui/Button/styles.ts index 5430cb4a6..31baac03a 100644 --- a/src/ui/Button/styles.ts +++ b/src/ui/Button/styles.ts @@ -27,12 +27,10 @@ export const styles = (colors: CozyThemeColors): ButtonStyles => borderWidth: 1 }, disabled_primary: { - boxShadow: 'none', color: colors.actionColorDisabled, backgroundColor: colors.actionColorDisabledBackground }, disabled_secondary: { - boxShadow: 'none', color: colors.actionColorDisabled, backgroundColor: 'transparent' } diff --git a/src/ui/CozyDialogs/styles.ts b/src/ui/CozyDialogs/styles.ts index a0c294477..e21c88251 100644 --- a/src/ui/CozyDialogs/styles.ts +++ b/src/ui/CozyDialogs/styles.ts @@ -20,9 +20,6 @@ export const styles = StyleSheet.create({ alignSelf: 'center', backgroundColor: colors.paperBackgroundColor, borderRadius: 8, - boxShadow: - '0px 0px 0px 0.5px rgba(29, 33, 42, 0.12), 0px 8px 12px -5px rgba(29, 33, 42, 0.18), 0px 9px 36px 5px rgba(29, 33, 42, 0.17)', - justifyself: 'center', width: '100%' }, dialogContainer: { From 105b6980a97ec9a4fceba7ecca0a2caf388d73ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 10 Oct 2024 17:42:31 +0200 Subject: [PATCH 08/86] docs(RN0.73): Update types after RN update --- src/app/view/IAP/IapProgress.tsx | 1 + src/ui/Tooltip/styles.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/app/view/IAP/IapProgress.tsx b/src/app/view/IAP/IapProgress.tsx index f66a1e5ca..a898ebfb5 100644 --- a/src/app/view/IAP/IapProgress.tsx +++ b/src/app/view/IAP/IapProgress.tsx @@ -81,6 +81,7 @@ const styles = StyleSheet.create({ spinner: { width: 70, height: 70, + // @ts-expect-error We use svg under the hood that understand this fill option fill: colors.paperBackgroundColor } }) diff --git a/src/ui/Tooltip/styles.ts b/src/ui/Tooltip/styles.ts index 90d4ae44f..abaf7aced 100644 --- a/src/ui/Tooltip/styles.ts +++ b/src/ui/Tooltip/styles.ts @@ -21,6 +21,7 @@ export const styles = StyleSheet.create({ marginRight: 8, width: 16, height: 16, + // @ts-expect-error We use svg under the hood that understand this fill option fill: palette.Primary.ContrastText }, text: { From 7d0085244d0d149e6e498d6f3237c4f6a27c0f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20Poizat?= Date: Thu, 17 Oct 2024 18:37:06 +0200 Subject: [PATCH 09/86] feat: Update ShareViewController to support iOS 18 Not linked to RN0.73 but to iOS 18. Solution inspired from https://github.com/ajith-ab/react-native-receive-sharing-intent/issues/185#issuecomment-2407291651 --- ios/CozyShare/ShareViewController.swift | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/ios/CozyShare/ShareViewController.swift b/ios/CozyShare/ShareViewController.swift index 8fda796a9..34230c2b8 100644 --- a/ios/CozyShare/ShareViewController.swift +++ b/ios/CozyShare/ShareViewController.swift @@ -4,6 +4,7 @@ import Social import MobileCoreServices import Photos +@available(iOSApplicationExtension, unavailable) class ShareViewController: UIViewController { let hostAppBundleIdentifier = "io.cozy.flagship.mobile" let shareProtocol = "cozyShare" @@ -188,19 +189,19 @@ class ShareViewController: UIViewController { extensionContext!.completeRequest(returningItems: [], completionHandler: nil) } - private func redirectToHostApp(type: RedirectType) { - let url = URL(string: "\(shareProtocol)://dataUrl=\(sharedKey)#\(type)") - var responder = self as UIResponder? - let selectorOpenURL = sel_registerName("openURL:") + // Changed from package readme because https://github.com/ajith-ab/react-native-receive-sharing-intent/issues/185#issuecomment-2407291651 + private func redirectToHostApp(type: RedirectType) { + guard let url = URL(string: "\(shareProtocol)://dataUrl=\(sharedKey)#\(type)") else { + dismissWithError() + return //be safe + } - while (responder != nil) { - if (responder?.responds(to: selectorOpenURL))! { - let _ = responder?.perform(selectorOpenURL, with: url) - } - responder = responder!.next - } - extensionContext!.completeRequest(returningItems: [], completionHandler: nil) - } + UIApplication.shared.open(url, options: [:], completionHandler: completeRequest) + } + + func completeRequest(success: Bool) { + extensionContext!.completeRequest(returningItems: [], completionHandler: nil) + } enum RedirectType { case media From 7a41c31de9cbde88e59f09ff0ecd125953d160ea Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Mon, 18 Nov 2024 10:50:29 +0100 Subject: [PATCH 10/86] fix: Disable Flipper in iOS release builds This is needed to fix `ld: symbol(s) not found for architecture arm64` error on iOS CI This happens because Flipper is not meant to be built in release mode and because ReactNative removed direct support for Flipper since latest versions --- .github/workflows/build-ios-dev.yml | 2 +- .github/workflows/build-ios-prod.yml | 2 +- react-native.config.js | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-ios-dev.yml b/.github/workflows/build-ios-dev.yml index c052b67b5..97a76ff4d 100644 --- a/.github/workflows/build-ios-dev.yml +++ b/.github/workflows/build-ios-dev.yml @@ -74,7 +74,7 @@ jobs: run: yarn brand:configure:${{ inputs.brand }} --force - name: Install Pods - run: cd ios && pod install --repo-update && cd .. + run: cd ios && NO_FLIPPER=1 pod install --repo-update && cd .. - name: Build IOS App id: ios_build diff --git a/.github/workflows/build-ios-prod.yml b/.github/workflows/build-ios-prod.yml index 905dcfc8f..78021db83 100644 --- a/.github/workflows/build-ios-prod.yml +++ b/.github/workflows/build-ios-prod.yml @@ -74,7 +74,7 @@ jobs: run: yarn brand:configure:${{ inputs.brand }} --force - name: Install Pods - run: cd ios && pod install --repo-update && cd .. + run: cd ios && NO_FLIPPER=1 pod install --repo-update && cd .. - name: Build IOS App id: ios_build diff --git a/react-native.config.js b/react-native.config.js index 47063ec86..855d75e24 100644 --- a/react-native.config.js +++ b/react-native.config.js @@ -3,5 +3,10 @@ module.exports = { ios: {}, android: {} }, - assets: ['./assets/fonts/'] + assets: ['./assets/fonts/'], + dependencies: { + ...(process.env.NO_FLIPPER + ? { 'react-native-flipper': { platforms: { ios: null } } } + : {}) + } } From bb733931abb0a6400a42469b50fb47d69e8ba671 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Wed, 22 May 2024 10:48:38 +0200 Subject: [PATCH 11/86] feat: Add react-native modules for PouchDB `react-native-quick-sqlite` is enforced to version `8.0.6` in order to be compatible with RN0.72 Related article: https://dev.to/craftzdog/a-performant-way-to-use-pouchdb7-on-react-native-in-2022-24ej --- README.md | 1 + __tests__/jest.config.js | 2 +- __tests__/jestSetupFile.js | 2 + android/build.gradle | 2 + babel.config.js | 1 + ios/Podfile.lock | 22 + package.json | 11 + yarn.lock | 820 +++++++++++++++++++++++++++++++++++-- 8 files changed, 832 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index f9aebd055..678d973e2 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ This notably includes the possiblity to run client-side konnectors, to get your - [iOS only] Install XCode - [Android only] Install Android Studio (or Android SDK) - [Android only] Java 11 +- [Android only] Install NDK (21.4.7075529) and CMake (3.10.2) from Android Studio's SDK Manager - [Android only] Copy the Android's `debug.keystore` from Cozy's password-store into `android/app/debug.keystore` - Run `pass show app-amirale/Certificates/debug.keystore > android/app/debug.keystore` - If you don't have access to Cozy's password-store, just generate a new `debug.keystore` file diff --git a/__tests__/jest.config.js b/__tests__/jest.config.js index 0d6117ffd..f94580a2e 100644 --- a/__tests__/jest.config.js +++ b/__tests__/jest.config.js @@ -13,7 +13,7 @@ const config = { '/__tests__/transformer/imageTransformer.js' }, transformIgnorePatterns: [ - 'node_modules/(?!((jest-)?react-native(-.*)?|@react-native(-community)?|p-timeout?|p-wait-for?|@notifee?)|@fengweichong/react-native-gzip?/)' + 'node_modules/(?!((jest-)?react-native(-.*)?|@react-native(-community)?|p-timeout?|p-wait-for?|@notifee?)|@fengweichong/react-native-gzip|@craftzdog/*?/)' ], rootDir: '../' } diff --git a/__tests__/jestSetupFile.js b/__tests__/jestSetupFile.js index d6bd11cdb..a546def4a 100644 --- a/__tests__/jestSetupFile.js +++ b/__tests__/jestSetupFile.js @@ -127,3 +127,5 @@ jest.mock('../src/core/tools/env', () => ({ devlog: jest.fn(), shouldDisableAutolock: jest.fn().mockReturnValue(false) })) + +jest.mock('react-native-quick-websql', () => ({})) diff --git a/android/build.gradle b/android/build.gradle index bbddb793a..deed068e6 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -10,6 +10,8 @@ buildscript { googlePlayServicesLocationVersion = "20.0.0" DocumentScanner_compileSdkVersion = 34 DocumentScanner_targetSdkVersion = 34 + QuickBase64_compileSdkVersion = 34 + QuickBase64_targetSdkVersion = 34 ndkVersion = "25.1.8937393" kotlinVersion = "1.8.0" // To solve a conflict between flipper and react-native-background-geolocation diff --git a/babel.config.js b/babel.config.js index 84c149369..66301c1ae 100644 --- a/babel.config.js +++ b/babel.config.js @@ -8,6 +8,7 @@ module.exports = { root: ['./'], alias: { '^/(.+)': './src/\\1', + 'pouchdb-collate': '@craftzdog/pouchdb-collate-react-native', '@cozy/minilog': 'cozy-minilog' }, extensions: [ diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 6b2e2ed6a..074c8d3ee 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1079,6 +1079,8 @@ PODS: - React-Core - react-native-flipper (0.269.0): - React-Core + - react-native-get-random-values (1.11.0): + - React-Core - react-native-gzip (2.0.0): - NVHTarGzip - React @@ -1091,6 +1093,14 @@ PODS: - React-Core - react-native-print (0.11.0): - React-Core + - react-native-quick-base64 (2.1.2): + - glog + - RCT-Folly (= 2022.05.16.00) + - React-Core + - react-native-quick-sqlite (8.0.6): + - React + - React-callinvoker + - React-Core - react-native-receive-sharing-intent (2.2.1): - React-Core - react-native-restart (0.0.27): @@ -1407,11 +1417,14 @@ DEPENDENCIES: - "react-native-cookies (from `../node_modules/@react-native-cookies/cookies`)" - react-native-document-scanner-plugin (from `../node_modules/react-native-document-scanner-plugin`) - react-native-flipper (from `../node_modules/react-native-flipper`) + - react-native-get-random-values (from `../node_modules/react-native-get-random-values`) - "react-native-gzip (from `../node_modules/@fengweichong/react-native-gzip`)" - react-native-idle-timer (from `../node_modules/react-native-idle-timer`) - react-native-mlkit-ocr (from `../node_modules/react-native-mlkit-ocr`) - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-print (from `../node_modules/react-native-print`) + - react-native-quick-base64 (from `../node_modules/react-native-quick-base64`) + - react-native-quick-sqlite (from `../node_modules/react-native-quick-sqlite`) - "react-native-receive-sharing-intent (from `../node_modules/@mythologi/react-native-receive-sharing-intent`)" - react-native-restart (from `../node_modules/react-native-restart`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) @@ -1576,6 +1589,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-document-scanner-plugin" react-native-flipper: :path: "../node_modules/react-native-flipper" + react-native-get-random-values: + :path: "../node_modules/react-native-get-random-values" react-native-gzip: :path: "../node_modules/@fengweichong/react-native-gzip" react-native-idle-timer: @@ -1586,6 +1601,10 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-community/netinfo" react-native-print: :path: "../node_modules/react-native-print" + react-native-quick-base64: + :path: "../node_modules/react-native-quick-base64" + react-native-quick-sqlite: + :path: "../node_modules/react-native-quick-sqlite" react-native-receive-sharing-intent: :path: "../node_modules/@mythologi/react-native-receive-sharing-intent" react-native-restart: @@ -1758,11 +1777,14 @@ SPEC CHECKSUMS: react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-document-scanner-plugin: df5b82df67ff612262c40c26ef2c8239c5af5c55 react-native-flipper: 2a568e19c9d7051f01bf9725f886474fc818ba05 + react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06 react-native-gzip: 5ffb84bf191c7cd135338eca748317bc466d41a1 react-native-idle-timer: f1920a59fe776340d004ff9de13c4a6eedcc8807 react-native-mlkit-ocr: 72cdbde86f8d29cba26cf9fa0a1865fe45c8f8d6 react-native-netinfo: 48c5f79a84fbc3ba1d28a8b0d04adeda72885fa8 react-native-print: f704aef52d931bfce6d1d84351dbb5232d7ecb89 + react-native-quick-base64: e1ea036b3dec44c6da2439bd62881a09de614b23 + react-native-quick-sqlite: e0e23b749382a85e4b57146f753de737a6c3a9e1 react-native-receive-sharing-intent: 0c21b8e80f629a73341f2566ce9b99df8124bb10 react-native-restart: 7595693413fe3ca15893702f2c8306c62a708162 react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc diff --git a/package.json b/package.json index 3e1180711..cd6adc753 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "storybook:update": "sb-rn-get-stories" }, "dependencies": { + "@craftzdog/pouchdb-collate-react-native": "^7.3.0", "@fengweichong/react-native-gzip": "github:cozy/react-native-gzip#1.1.0", "@mythologi/react-native-receive-sharing-intent": "2.2.1", "@notifee/react-native": "^7.8.0", @@ -63,6 +64,7 @@ "cozy-logger": "^1.10.0", "cozy-minilog": "3.3.1", "date-fns": "2.29.3", + "events": "^3.3.0", "html-entities": "^2.3.3", "i18next": "23.7.16", "i18next-intervalplural-postprocessor": "3.0.0", @@ -74,6 +76,11 @@ "patch-package": "^8.0.0", "post-me": "^0.4.5", "postinstall-postinstall": "^2.1.0", + "pouchdb-adapter-http": "^8.0.1", + "pouchdb-adapter-react-native-sqlite": "^3.0.1", + "pouchdb-core": "^8.0.1", + "pouchdb-mapreduce": "^8.0.1", + "pouchdb-replication": "^8.0.1", "react": "18.2.0", "react-dom": "18.2.0", "react-i18next": "14.0.0", @@ -92,6 +99,7 @@ "react-native-flipper": "^0.269.0", "react-native-fs": "^2.20.0", "react-native-gesture-handler": "1.10.3", + "react-native-get-random-values": "^1.11.0", "react-native-google-play-integrity": "github:cozy/react-native-google-play-integrity#1.0.1", "react-native-iap": "^12.11.0", "react-native-idle-timer": "^2.2.1", @@ -105,6 +113,9 @@ "react-native-permissions": "^3.9.3", "react-native-play-install-referrer": "^1.1.8", "react-native-print": "0.11.0", + "react-native-quick-base64": "2.1.2", + "react-native-quick-sqlite": "8.0.6", + "react-native-quick-websql": "^0.3.0", "react-native-restart": "^0.0.27", "react-native-safe-area-context": "^4.5.0", "react-native-screens": "3.32.0", diff --git a/yarn.lock b/yarn.lock index b6dcbe10a..5d7feefce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3089,6 +3089,24 @@ dependencies: microee "0.0.6" +"@craftzdog/pouchdb-adapter-websql-core@^7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@craftzdog/pouchdb-adapter-websql-core/-/pouchdb-adapter-websql-core-7.2.3.tgz#01ebaaf71dd7b844c66c58ae8cc460ec3aeb8009" + integrity sha512-bXt9rOwMgUEyQhcr8KWDAhOA1J7XfI//mrlEg0O3KQo81Ck5i6oxWU+BYpw9wC2pnKmhboRkIwFAz9QQbHefrg== + dependencies: + pouchdb-adapter-utils "^7.2.2" + pouchdb-binary-utils "^7.2.2" + pouchdb-collections "^7.2.2" + pouchdb-errors "^7.2.2" + pouchdb-json "^7.2.2" + pouchdb-merge "^7.2.2" + pouchdb-utils "^7.2.2" + +"@craftzdog/pouchdb-collate-react-native@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@craftzdog/pouchdb-collate-react-native/-/pouchdb-collate-react-native-7.3.0.tgz#4bc25c8d11f1f270f5c7de4a1a4c4819b04e4147" + integrity sha512-ZC1fBSt7lBy8A3bGLsZVuDf/f3NWTOj+x0ygYUMWPCZPtzKfbRWdirv/pPKKxsO09Aw2EGuo94v51UOAIQkpRQ== + "@csstools/convert-colors@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" @@ -3255,6 +3273,11 @@ version "2.0.0" resolved "https://codeload.github.com/cozy/react-native-gzip/tar.gz/41178cf223fe3c866dfa6ede78a881461de066fd" +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -4163,6 +4186,14 @@ resolved "https://registry.yarnpkg.com/@notifee/react-native/-/react-native-7.8.0.tgz#2990883753990f3585aa0cb5becc5cbdbcd87a43" integrity sha512-sx8h62U4FrR4pqlbN1rkgPsdamDt9Tad0zgfO6VtP6rNJq/78k8nxUnh0xIX3WPDcCV8KAzdYCE7+UNvhF1CpQ== +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + "@npmcli/move-file@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" @@ -6486,7 +6517,12 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -abort-controller@^3.0.0: +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abort-controller@3.0.0, abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== @@ -6562,13 +6598,20 @@ adjust-sourcemap-loader@3.0.0: loader-utils "^2.0.0" regex-parser "^2.2.11" -agent-base@6: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agentkeepalive@^4.1.3: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -6769,6 +6812,14 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -6781,6 +6832,11 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +argsarray@0.0.1, argsarray@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" + integrity sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg== + aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -7522,7 +7578,7 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@^4.1.0: +bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -7776,6 +7832,11 @@ buffer-equal@0.0.1: resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA== +buffer-from@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -7877,6 +7938,30 @@ cacache@^15.0.5: tar "^6.0.2" unique-filename "^1.1.1" +cacache@^15.2.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -8190,6 +8275,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone-buffer@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== + clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" @@ -8281,7 +8371,7 @@ color-string@^1.9.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2: +color-support@^1.1.2, color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -9062,7 +9152,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -9096,6 +9186,13 @@ decode-uri-component@^0.2.2: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -9123,6 +9220,11 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -9268,6 +9370,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-libc@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -9566,7 +9673,14 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +encoding@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -9612,6 +9726,11 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + envinfo@^7.10.0: version "7.14.0" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" @@ -9622,6 +9741,11 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -10387,7 +10511,7 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0: +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -10478,6 +10602,11 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + expect@^26.6.0, expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" @@ -10578,6 +10707,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +fast-base64-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" + integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -10684,6 +10818,13 @@ fbjs@^3.0.0: setimmediate "^1.0.5" ua-parser-js "^0.7.18" +fetch-cookie@0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz#e046d2abadd0ded5804ce7e2cae06d4331c15407" + integrity sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA== + dependencies: + tough-cookie "^2.3.3 || ^3.0.1 || ^4.0.0" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -10973,6 +11114,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -11124,6 +11270,20 @@ gauge@^3.0.0: strip-ansi "^6.0.1" wide-align "^1.1.2" +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -11217,6 +11377,11 @@ gifwrap@^0.9.2: image-q "^4.0.0" omggif "^1.0.10" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -11381,6 +11546,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== +graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" @@ -11683,6 +11853,11 @@ htmlparser2@^3.10.1: inherits "^2.0.1" readable-stream "^3.1.1" +http-cache-semantics@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -11776,6 +11951,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + i18next-intervalplural-postprocessor@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/i18next-intervalplural-postprocessor/-/i18next-intervalplural-postprocessor-3.0.0.tgz#35580abdaff5e838c44c22740a7178063b7bdd0b" @@ -11795,6 +11977,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^4.0.0, icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -11843,6 +12032,11 @@ image-size@^1.0.2: dependencies: queue "6.0.2" +immediate@3.3.0, immediate@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" @@ -11947,7 +12141,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: +ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -12000,6 +12194,14 @@ invariant@2.2.4, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -12288,6 +12490,11 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" @@ -13519,6 +13726,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsc-android@^250231.0.0: version "250231.0.0" resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250231.0.0.tgz#91720f8df382a108872fa4b3f558f33ba5e95262" @@ -14043,6 +14255,28 @@ make-error@1.x: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" + integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.2.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.2" + promise-retry "^2.0.1" + socks-proxy-agent "^6.0.0" + ssri "^8.0.0" + makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -14455,6 +14689,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -14513,7 +14752,7 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minimist@^1.2.6: +minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -14525,6 +14764,17 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" +minipass-fetch@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -14532,13 +14782,20 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-pipeline@^1.2.2: +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + minipass@^3.0.0, minipass@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" @@ -14546,14 +14803,19 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minipass@^3.3.5: +minipass@^3.1.0, minipass@^3.1.3, minipass@^3.3.5: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" -minizlib@^2.1.1: +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -14593,6 +14855,11 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -14632,7 +14899,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -14677,6 +14944,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + native-url@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" @@ -14699,6 +14971,11 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -14737,11 +15014,23 @@ nock@13.2.9: lodash "^4.17.21" propagate "^2.0.0" +node-abi@^3.3.0: + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== + dependencies: + semver "^7.3.5" + node-abort-controller@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-dir@^0.1.17: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" @@ -14754,6 +15043,13 @@ node-fetch@2.6.1, node-fetch@^2.2.0, node-fetch@^2.6.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-fetch@2.6.7, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^2.6.1: version "2.6.9" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" @@ -14761,18 +15057,27 @@ node-fetch@^2.6.1: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-gyp@8.x: + version "8.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" + integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^9.1.0" + nopt "^5.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -14860,6 +15165,18 @@ node-stream-zip@^1.9.1: resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.13.4.tgz#baafc329ffb9e27de84b6882d74e9f2cbe77e2a5" integrity sha512-M2nPvnSWFFH+fgLIRZDqmhshmuzXcr+ce9BsHQX/30pXR+cEz/USMYmx9ZAFYy837W2QoDoNzhFtbZhfzaMk9A== +noop-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/noop-fn/-/noop-fn-1.0.0.tgz#5f33d47f13d2150df93e0cb036699e982f78ffbf" + integrity sha512-pQ8vODlgXt2e7A3mIbFDlizkr46r75V+BJxVAyat8Jl7YmI513gG5cfyRL0FedKraoZ+VAouI1h4/IWpus5pcQ== + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -14926,6 +15243,16 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -16401,6 +16728,251 @@ postinstall-postinstall@^2.1.0: resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== +pouchdb-abstract-mapreduce@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-8.0.1.tgz#f45aa1424fdd272a76ceb5722a53b38c10a0ca81" + integrity sha512-BxJRHdfiC8gID8h4DPS0Xy6wsa2VBHRHMv9hsm0BhGTWTqS4k8ivItVSeU2dMoXiTBYp+7SerYmovUQNGSX1GA== + dependencies: + pouchdb-binary-utils "8.0.1" + pouchdb-collate "8.0.1" + pouchdb-collections "8.0.1" + pouchdb-errors "8.0.1" + pouchdb-fetch "8.0.1" + pouchdb-mapreduce-utils "8.0.1" + pouchdb-md5 "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-adapter-http@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-http/-/pouchdb-adapter-http-8.0.1.tgz#d44b8e2299602fcfb1bf456eae43256b39b35316" + integrity sha512-krs5T8QVsswIyDRQHZCBBMF0l7HKQkxZwEigUTVvhq6kuHuqUheLGv18sPiVvmXlpdZwRl/d1432MkG72ywqIw== + dependencies: + pouchdb-binary-utils "8.0.1" + pouchdb-errors "8.0.1" + pouchdb-fetch "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-adapter-react-native-sqlite@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-react-native-sqlite/-/pouchdb-adapter-react-native-sqlite-3.0.1.tgz#f20e8e23389ecc57607668104aca018b2d9b7c05" + integrity sha512-oODToI/j0Q/C3VbJMR/sStdjrXwcANFzpwaWdMWrQK95V0NrbtTHlOKycHW+6or1asu2giSjwbvJYMpL/nmi3g== + dependencies: + "@craftzdog/pouchdb-adapter-websql-core" "^7.2.3" + +pouchdb-adapter-utils@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.3.1.tgz#7237cb597f8d337057df15d4859bfe3c881d8832" + integrity sha512-uKLG6dClwTs/sLIJ4WkLAi9wlnDBpOnfyhpeAgOjlOGN/XLz5nKHrA4UJRnURDyc+uv79S9r/Unc4hVpmbSPUw== + dependencies: + pouchdb-binary-utils "7.3.1" + pouchdb-collections "7.3.1" + pouchdb-errors "7.3.1" + pouchdb-md5 "7.3.1" + pouchdb-merge "7.3.1" + pouchdb-utils "7.3.1" + +pouchdb-binary-utils@7.3.1, pouchdb-binary-utils@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.1.tgz#eea22d9a5f880fcd95062476f4f5484cdf61496f" + integrity sha512-crZJNfAEOnUoRk977Qtmk4cxEv6sNKllQ6vDDKgQrQLFjMUXma35EHzNyIJr1s76J77Q4sqKQAmxz9Y40yHGtw== + dependencies: + buffer-from "1.1.2" + +pouchdb-binary-utils@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-8.0.1.tgz#aa77248b9c0ad2a68f75f8f7cf2b594fe3dbd559" + integrity sha512-WsuR/S0aoUlcA0Alt99czkXsfuXWcrYXAcvGiTW02zawVXOafCnb/qHjA09TUaV0oy5HeHmYaNnDckoOUqspeA== + dependencies: + buffer-from "1.1.2" + +pouchdb-changes-filter@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-changes-filter/-/pouchdb-changes-filter-8.0.1.tgz#691b71b209dda12e950672ce44de2680606a98e4" + integrity sha512-UKgH6YRA9PnvIGHb0FuDEEqeTewgHugbbBt5vpVo0QmbWKxNiau/JiTC9mY5Hj9l7ghaIUpO0TFG95a6RXWsQA== + dependencies: + pouchdb-errors "8.0.1" + pouchdb-selector-core "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-checkpointer@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-checkpointer/-/pouchdb-checkpointer-8.0.1.tgz#beb4f922b8dbd59f851fe95c7fe540d69f870bf8" + integrity sha512-zWIFEpQqY/7Fx75VkWtxbMYlL5gzPN9SUYqFCCUPPIThEM3evREI/4u4V0ayNkd9Ma3OGyItsj0D1ibBghWenA== + dependencies: + pouchdb-collate "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-collate@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-8.0.1.tgz#14b6ad9330d2831fd8ef135de680060366502a1b" + integrity sha512-DTuNz1UJjBTGZMUlWS1klSE1rPsmHy8IIDie3MFH1ZTz/C+SwGgGwkiAyUDv/n00D18EMLgXq5mu+r7L6K1BwQ== + +pouchdb-collections@7.3.1, pouchdb-collections@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.3.1.tgz#4f1819cf4dd6936a422c29f7fa26a9b5dca428f5" + integrity sha512-yUyDqR+OJmtwgExOSJegpBJXDLAEC84TWnbAYycyh+DZoA51Yw0+XVQF5Vh8Ii90/Ut2xo88fmrmp0t6kqom8w== + +pouchdb-collections@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-8.0.1.tgz#d6a31ab3a917fa5da49d46a804c04761a0e19655" + integrity sha512-TlkQ2GGHJApJgL0b7bJMQcwX6eMfVenLeoK9mqHfC2fJssui+HWJJ5LYKHOWan11SeB90BQVFbO6rHN6CJQeDg== + +pouchdb-core@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-core/-/pouchdb-core-8.0.1.tgz#3066f4f24dd90e669da0ea3f67205cbc1e3bfa71" + integrity sha512-Qkcmh3eoMHiKUma5Y/rH0Z7kjxXrr6p54j/WOH+TZ/RlJAchmdVY1TRfqay5CoK+8Ka0m8eibP+wD1DKZKJbDg== + dependencies: + pouchdb-changes-filter "8.0.1" + pouchdb-collections "8.0.1" + pouchdb-errors "8.0.1" + pouchdb-fetch "8.0.1" + pouchdb-merge "8.0.1" + pouchdb-utils "8.0.1" + uuid "8.3.2" + +pouchdb-errors@7.3.1, pouchdb-errors@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.3.1.tgz#78be36721e2edc446fac158a236a9218c7bcdb14" + integrity sha512-Zktz4gnXEUcZcty8FmyvtYUYsHskoST05m6H5/E2gg/0mCfEXq/XeyyLkZHaZmqD0ZPS9yNmASB1VaFWEKEaDw== + dependencies: + inherits "2.0.4" + +pouchdb-errors@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-8.0.1.tgz#d57afd57e07490d8d0b4ef19c10bfc85dbf27ae5" + integrity sha512-H+ZsQxcG/JV3Tn29gnM6c9+lRPCN91ZYOkoIICsLjVRYgOTzN1AvNUD/G5JCB+81aI/u3fxZec0LEaZh6g6NHA== + +pouchdb-fetch@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-8.0.1.tgz#30a27a45eb24c20f346a04d906ba82bca5a3a525" + integrity sha512-Px5HLT8MxqTujc8bpPRKoouznDTJa9XBGqCbhl95q6rhjWRfwZEvXjV92z0B5BALAM6D6avMyG0DjuNfUWnMuA== + dependencies: + abort-controller "3.0.0" + fetch-cookie "0.11.0" + node-fetch "2.6.7" + +pouchdb-generate-replication-id@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-generate-replication-id/-/pouchdb-generate-replication-id-8.0.1.tgz#2c473bdb7f5e5bc08337b3042841f186bf3d0b2b" + integrity sha512-MxctzPSF9c3w0tPUPCR4Ihs3+N4751kFidgFnYVLRLZbWy3BNuY8GXjXQojLke7d2lMqQyuu4kKyCdOZ/kT8gQ== + dependencies: + pouchdb-collate "8.0.1" + pouchdb-md5 "8.0.1" + +pouchdb-json@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-json/-/pouchdb-json-7.3.1.tgz#a80a3060aa2914959e4dca7a4e2022ab20c7119a" + integrity sha512-AyOKsmc85/GtHjMZyEacqzja8qLVfycS1hh1oskR+Bm5PIITX52Fb8zyi0hEetV6VC0yuGbn0RqiLjJxQePeqQ== + dependencies: + vuvuzela "1.0.3" + +pouchdb-mapreduce-utils@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-8.0.1.tgz#a8acb1542aaf63a007b60f7a281dbbb94b49fcab" + integrity sha512-asZcFLy1DA3oe5CeXIRCpfVrBHaHRvSb3Tc/LPD1dZDDtpEkeCuXGtJm+praN0jl41jTBEm0uMdD/YI0J5ZFXw== + dependencies: + pouchdb-collections "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-mapreduce@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-mapreduce/-/pouchdb-mapreduce-8.0.1.tgz#f796d7436228572f94179d43ae75a19b5bf89f7a" + integrity sha512-cS36ANhxD8J8cWhqV9OYE5HFU0+jIli2Ow+FV6xKAcFnSogcLPAawGJMsg0mCyhaBqlCNOp1eMWMWz8jk/TStg== + dependencies: + pouchdb-abstract-mapreduce "8.0.1" + pouchdb-mapreduce-utils "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-md5@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.3.1.tgz#70fae44f9d27eb4c6a8e7106156b4593d31c1762" + integrity sha512-aDV8ui/mprnL3xmt0gT/81DFtTtJiKyn+OxIAbwKPMfz/rDFdPYvF0BmDC9QxMMzGfkV+JJUjU6at0PPs2mRLg== + dependencies: + pouchdb-binary-utils "7.3.1" + spark-md5 "3.0.2" + +pouchdb-md5@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-8.0.1.tgz#5a3df4939102423727e0594c2a9bb91b82a444ed" + integrity sha512-shVcs/K/iilrcAhDEERpLIrGm/cnDVsXiocOzs7kycJEuBqYnLD9nj58VwWDcum26wfa8T9cznvEGE1jlYVNPQ== + dependencies: + pouchdb-binary-utils "8.0.1" + spark-md5 "3.0.2" + +pouchdb-merge@7.3.1, pouchdb-merge@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-7.3.1.tgz#97aae682d7d8499b62b6ce234dcb9527c7bf6f02" + integrity sha512-FeK3r35mKimokf2PQ2tUI523QWyZ4lYZ0Yd75FfSch/SPY6wIokz5XBZZ6PHdu5aOJsEKzoLUxr8CpSg9DhcAw== + +pouchdb-merge@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-8.0.1.tgz#7f948298274908546d89050c26ec52ac2f3cd252" + integrity sha512-79dw6+K7js2+/kt9u4hKOkGCnz+ov0+yft2k21n6M+ylFEQyMKuWHEZRoFWr72o1vxwjhIXhUM1PB2PIdxIh0Q== + dependencies: + pouchdb-utils "8.0.1" + +pouchdb-replication@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-replication/-/pouchdb-replication-8.0.1.tgz#31593356ce95564cc340f3e35ac3b02bdf2769d2" + integrity sha512-BIWhJsw2si3+HX3U5ElHJ6mv/cp5mA3pHynJYhufmbUe2vdLf4cpc7G5FG/ElMFEs0aoweGXPhFTqfqjykSZQA== + dependencies: + pouchdb-checkpointer "8.0.1" + pouchdb-errors "8.0.1" + pouchdb-generate-replication-id "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-selector-core@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-8.0.1.tgz#d52119b79bd34b69c27f4596dbb9e16373bbd92e" + integrity sha512-dHWsnR+mLGyfVld1vSHJI1xKTwS1xk1G2dggjfXfUrLehI+wysjTUOwiSNytyPzG6DpT+o86wyUpwzPwsDCLBw== + dependencies: + pouchdb-collate "8.0.1" + pouchdb-utils "8.0.1" + +pouchdb-utils@7.3.1, pouchdb-utils@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.3.1.tgz#d25f0a034427f388ba5ae37d9ae3fbed210e8720" + integrity sha512-R3hHBo1zTdTu/NFs3iqkcaQAPwhIH0gMIdfVKd5lbDYlmP26rCG5pdS+v7NuoSSFLJ4xxnaGV+Gjf4duYsJ8wQ== + dependencies: + argsarray "0.0.1" + clone-buffer "1.0.0" + immediate "3.3.0" + inherits "2.0.4" + pouchdb-collections "7.3.1" + pouchdb-errors "7.3.1" + pouchdb-md5 "7.3.1" + uuid "8.3.2" + +pouchdb-utils@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-8.0.1.tgz#3fb0c9fe00f52e4d8404278a609f277c1c155b70" + integrity sha512-pWgxdk9EHVWJmjQoEvTe+ZlPXyjcuQ/vgLITN+RjGwcYhoQYUE1M0PksQd2dUP3V8lGS4+wrg9lEM/qSJPYcpw== + dependencies: + clone-buffer "1.0.0" + immediate "3.3.0" + pouchdb-collections "8.0.1" + pouchdb-errors "8.0.1" + pouchdb-md5 "8.0.1" + uuid "8.3.2" + +prebuild-install@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" + integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== + dependencies: + detect-libc "^2.0.0" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^3.3.0" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^4.0.0" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -16494,6 +17066,14 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + promise.allsettled@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.7.tgz#b9dd51e9cffe496243f5271515652c468865f2d8" @@ -16772,6 +17352,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-app-polyfill@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" @@ -16963,6 +17553,13 @@ react-native-gesture-handler@1.10.3: invariant "^2.2.4" prop-types "^15.7.2" +react-native-get-random-values@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.11.0.tgz#1ca70d1271f4b08af92958803b89dccbda78728d" + integrity sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ== + dependencies: + fast-base64-decode "^1.0.0" + "react-native-google-play-integrity@github:cozy/react-native-google-play-integrity#1.0.1": version "1.0.1" resolved "https://codeload.github.com/cozy/react-native-google-play-integrity/tar.gz/ad182ed9e5c83a38e7cd5ee55f1fc06b5ca93e11" @@ -17045,6 +17642,25 @@ react-native-print@0.11.0: resolved "https://registry.yarnpkg.com/react-native-print/-/react-native-print-0.11.0.tgz#3dc69fb05552f0c5da5be0dd345a93e1604621d1" integrity sha512-hFDzb9dVJVT8c3VHNNWgkPfLF3Jfyw0WVJ3o7wUmSMmi5hJx6b++veNJ3J95d3lW3Y0sZUpGbn9+yzXrLANnJQ== +react-native-quick-base64@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/react-native-quick-base64/-/react-native-quick-base64-2.1.2.tgz#062b09b165c1530095fe99b94544c948318dbe99" + integrity sha512-xghaXpWdB0ji8OwYyo0fWezRroNxiNFCNFpGUIyE7+qc4gA/IGWnysIG5L0MbdoORv8FkTKUvfd6yCUN5R2VFA== + dependencies: + base64-js "^1.5.1" + +react-native-quick-sqlite@8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/react-native-quick-sqlite/-/react-native-quick-sqlite-8.0.6.tgz#ac1b662efe5641bc51eb7a8ee8ffac8af29532c4" + integrity sha512-XtwXnfZ1a6zRzAHoWFyVJsP3p8etx3/xww1oFKGdiOSj054PdYIeup9A53rtQ6ENyg+aqSKOgmxoN/PetulGOQ== + +react-native-quick-websql@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/react-native-quick-websql/-/react-native-quick-websql-0.3.0.tgz#acb53da8263b36fc5644e5faa06e2e069233a104" + integrity sha512-ysP+9HzEfiq0ex9plgmKddLz42RGPCiGsTNqnah3K8FCyKzYWRyVd8SboIdOiSFpB3vulwc/qMOBLVdmgjsaIw== + dependencies: + websql "^2.0.3" + react-native-restart@^0.0.27: version "0.0.27" resolved "https://registry.yarnpkg.com/react-native-restart/-/react-native-restart-0.0.27.tgz#43aa8210312c9dfa5ec7bd4b2f35238ad7972b19" @@ -17876,7 +18492,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -18236,6 +18852,20 @@ signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-plist@^1.1.0: version "1.3.1" resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017" @@ -18285,6 +18915,11 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snake-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" @@ -18344,6 +18979,23 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" +socks-proxy-agent@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -18426,6 +19078,11 @@ sourcemap-codec@^1.4.4: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +spark-md5@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc" + integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -18487,11 +19144,28 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sqlite3@^5.0.2: + version "5.1.7" + resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.7.tgz#59ca1053c1ab38647396586edad019b1551041b7" + integrity sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog== + dependencies: + bindings "^1.5.0" + node-addon-api "^7.0.0" + prebuild-install "^7.1.1" + tar "^6.1.11" + optionalDependencies: + node-gyp "8.x" + ssri@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" @@ -18499,7 +19173,7 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^8.0.1: +ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== @@ -18866,6 +19540,11 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + strnum@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" @@ -19029,6 +19708,27 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^6.0.2: version "6.1.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" @@ -19041,6 +19741,18 @@ tar@^6.0.2: mkdirp "^1.0.3" yallist "^4.0.0" +tar@^6.1.11, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + telejson@^6.0.8: version "6.0.8" resolved "https://registry.yarnpkg.com/telejson/-/telejson-6.0.8.tgz#1c432db7e7a9212c1fbd941c3e5174ec385148f7" @@ -19208,6 +19920,11 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-queue@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046" + integrity sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A== + tinycolor2@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" @@ -19285,6 +20002,16 @@ token-types@^4.1.1: "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" +"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0": + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -19382,6 +20109,13 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -19599,6 +20333,11 @@ universalify@^0.1.0, universalify@^0.1.2: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -19680,6 +20419,14 @@ url-parse@^1.4.3, url-parse@^1.5.1: querystringify "^2.1.1" requires-port "^1.0.0" +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url-search-params-polyfill@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/url-search-params-polyfill/-/url-search-params-polyfill-8.1.1.tgz#9e69e4dba300a71ae7ad3cead62c7717fd99329f" @@ -19783,6 +20530,11 @@ uuid-browser@^3.1.0: resolved "https://registry.yarnpkg.com/uuid-browser/-/uuid-browser-3.1.0.tgz#0f05a40aef74f9e5951e20efbf44b11871e56410" integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== +uuid@8.3.2, uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -19793,11 +20545,6 @@ uuid@^7.0.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -19854,6 +20601,11 @@ void-elements@3.1.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== +vuvuzela@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" + integrity sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -20198,6 +20950,18 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +websql@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/websql/-/websql-2.0.3.tgz#5a747dc01fd1bc27633f64a2971d410500f70568" + integrity sha512-bSYpuhQ4ODKrWLb6S+9BG2T4AMqHLjCQA9r8UWCapPvTZYXoembz0O14Ga4EAfJuO1wkmFcJjgU/6tzvPfGbmA== + dependencies: + argsarray "^0.0.1" + immediate "^3.2.2" + noop-fn "^1.0.0" + tiny-queue "^0.2.1" + optionalDependencies: + sqlite3 "^5.0.2" + whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -20294,7 +21058,7 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.2: +wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== From 9209d05b44bc8d2ee5032eccccb9761b63888068 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Tue, 28 May 2024 20:16:14 +0200 Subject: [PATCH 12/86] feat: Configure PouchDB to run on the project Related article: https://dev.to/craftzdog/a-performant-way-to-use-pouchdb7-on-react-native-in-2022-24ej --- __tests__/jestSetupFile.js | 1 + src/index.js | 2 ++ src/pouchdb/pouchdb.js | 16 ++++++++++++++++ src/pouchdb/shim.js | 6 ++++++ 4 files changed, 25 insertions(+) create mode 100644 src/pouchdb/pouchdb.js create mode 100644 src/pouchdb/shim.js diff --git a/__tests__/jestSetupFile.js b/__tests__/jestSetupFile.js index a546def4a..1b7f0e0e9 100644 --- a/__tests__/jestSetupFile.js +++ b/__tests__/jestSetupFile.js @@ -128,4 +128,5 @@ jest.mock('../src/core/tools/env', () => ({ shouldDisableAutolock: jest.fn().mockReturnValue(false) })) +jest.mock('../src/pouchdb/pouchdb', () => ({})) jest.mock('react-native-quick-websql', () => ({})) diff --git a/src/index.js b/src/index.js index bdea29771..93ea42c09 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,5 @@ +import '/pouchdb/shim' + import { AppRegistry } from 'react-native' import App from './App' diff --git a/src/pouchdb/pouchdb.js b/src/pouchdb/pouchdb.js new file mode 100644 index 000000000..c7ae74dae --- /dev/null +++ b/src/pouchdb/pouchdb.js @@ -0,0 +1,16 @@ +// eslint-disable-next-line import/order +import 'react-native-get-random-values' + +import HttpPouch from 'pouchdb-adapter-http' +import SQLiteAdapterFactory from 'pouchdb-adapter-react-native-sqlite' +import PouchDB from 'pouchdb-core' +import mapreduce from 'pouchdb-mapreduce' +import replication from 'pouchdb-replication' +import WebSQLite from 'react-native-quick-websql' + +const SQLiteAdapter = SQLiteAdapterFactory(WebSQLite) + +export default PouchDB.plugin(HttpPouch) + .plugin(replication) + .plugin(mapreduce) + .plugin(SQLiteAdapter) diff --git a/src/pouchdb/shim.js b/src/pouchdb/shim.js new file mode 100644 index 000000000..bbd24a463 --- /dev/null +++ b/src/pouchdb/shim.js @@ -0,0 +1,6 @@ +import { shim } from 'react-native-quick-base64' + +shim() + +// Avoid using node dependent modules +process.browser = true From c2387d4d5707ee68ea228d0f2750bafdce65b47c Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Tue, 28 May 2024 20:19:52 +0200 Subject: [PATCH 13/86] feat: Add cozy-pouch-link module --- __tests__/jestSetupFile.js | 10 ++++ package.json | 3 +- yarn.lock | 98 ++++++++++++++++++++++++++++++++++---- 3 files changed, 101 insertions(+), 10 deletions(-) diff --git a/__tests__/jestSetupFile.js b/__tests__/jestSetupFile.js index 1b7f0e0e9..026e3a601 100644 --- a/__tests__/jestSetupFile.js +++ b/__tests__/jestSetupFile.js @@ -130,3 +130,13 @@ jest.mock('../src/core/tools/env', () => ({ jest.mock('../src/pouchdb/pouchdb', () => ({})) jest.mock('react-native-quick-websql', () => ({})) + +class mockPouchLink { + constructor() {} +} + +jest.mock('cozy-pouch-link', () => { + return jest.fn().mockImplementation(() => { + return new mockPouchLink() + }) +}) diff --git a/package.json b/package.json index cd6adc753..262058377 100644 --- a/package.json +++ b/package.json @@ -56,13 +56,14 @@ "@sentry/integrations": "7.114.0", "@sentry/react-native": "5.33.1", "base-64": "^1.0.0", - "cozy-client": "^48.5.0", + "cozy-client": "^49.0.0", "cozy-clisk": "^0.38.1", "cozy-device-helper": "^2.7.0", "cozy-flags": "^3.2.0", "cozy-intent": "^2.22.0", "cozy-logger": "^1.10.0", "cozy-minilog": "3.3.1", + "cozy-pouch-link": "^49.0.0", "date-fns": "2.29.3", "events": "^3.3.0", "html-entities": "^2.3.3", diff --git a/yarn.lock b/yarn.lock index 5d7feefce..a115d3b56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8675,16 +8675,16 @@ cosmiconfig@^8.1.3: parse-json "^5.2.0" path-type "^4.0.0" -cozy-client@^48.5.0: - version "48.5.0" - resolved "https://registry.yarnpkg.com/cozy-client/-/cozy-client-48.5.0.tgz#c030ac3578466550cb30b545818aac9d5331eaa8" - integrity sha512-Bt+VH6mvif3qqOhAm5i9Ua7a5c7x6FSeLSWzrHm0fp8ALCsHw3LpKHVa+qGQNSNrkwG5ctBHO5wSR6ShmSxbZA== +cozy-client@^49.0.0: + version "49.0.0" + resolved "https://registry.yarnpkg.com/cozy-client/-/cozy-client-49.0.0.tgz#c38f3bdefd58cbf827a368fe126cc9e27deb996d" + integrity sha512-AY22bxwQV+46+4rSVc+zYci8pPHspolBJ1IcqvxJ+DknZrehJ5AKJ55F9DzN3aPXVNCQzmw+wpNFgVP4gShFAw== dependencies: "@cozy/minilog" "1.0.0" "@types/jest" "^26.0.20" "@types/lodash" "^4.14.170" btoa "^1.2.1" - cozy-stack-client "^48.5.0" + cozy-stack-client "^49.0.0" date-fns "2.29.3" json-stable-stringify "^1.0.1" lodash "^4.17.13" @@ -8751,10 +8751,19 @@ cozy-minilog@3.3.1, cozy-minilog@^3.3.1: dependencies: microee "0.0.6" -cozy-stack-client@^48.5.0: - version "48.5.0" - resolved "https://registry.yarnpkg.com/cozy-stack-client/-/cozy-stack-client-48.5.0.tgz#017f4c1ebcf7fdf9261aaa40ce4ea263421806d1" - integrity sha512-McwK/thwpbQTH2R+fOZzwVLnaScFzo0E91fbIcZOkFXRT6VM8WaUdQDeowlOaaw+w9R8167h0qwri+yeFbT/Ew== +cozy-pouch-link@^49.0.0: + version "49.0.0" + resolved "https://registry.yarnpkg.com/cozy-pouch-link/-/cozy-pouch-link-49.0.0.tgz#05644fbf7bbb7bf1af0869bca2b959e0ef2bd284" + integrity sha512-objXCSNvyGGNhzqb4PXwKNSqv54+E6p1eNhkEBlzrO6miXAeIYX5T0db3OQUuhiQdB69aYiExAVj5sCfUst3kw== + dependencies: + cozy-client "^49.0.0" + pouchdb-browser "^7.2.2" + pouchdb-find "^7.2.2" + +cozy-stack-client@^49.0.0: + version "49.0.0" + resolved "https://registry.yarnpkg.com/cozy-stack-client/-/cozy-stack-client-49.0.0.tgz#1bda328d0d62b00bb8895be5b991d59ad6b41cfc" + integrity sha512-mlh/hR9KsIve+et17P6WXlO33FjXftzXK8ovWAKr8zk+5FcD/wy/yxV/9Mr3Q+SSabdUbFbBIqu8kZncafUzdg== dependencies: detect-node "^2.0.4" mime "^2.4.0" @@ -16728,6 +16737,20 @@ postinstall-postinstall@^2.1.0: resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== +pouchdb-abstract-mapreduce@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.1.tgz#96ff4a0f41cbe273f3f52fde003b719005a2093c" + integrity sha512-0zKXVFBvrfc1KnN0ggrB762JDmZnUpePHywo9Bq3Jy+L1FnoG7fXM5luFfvv5/T0gEw+ZTIwoocZECMnESBI9w== + dependencies: + pouchdb-binary-utils "7.3.1" + pouchdb-collate "7.3.1" + pouchdb-collections "7.3.1" + pouchdb-errors "7.3.1" + pouchdb-fetch "7.3.1" + pouchdb-mapreduce-utils "7.3.1" + pouchdb-md5 "7.3.1" + pouchdb-utils "7.3.1" + pouchdb-abstract-mapreduce@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-8.0.1.tgz#f45aa1424fdd272a76ceb5722a53b38c10a0ca81" @@ -16785,6 +16808,18 @@ pouchdb-binary-utils@8.0.1: dependencies: buffer-from "1.1.2" +pouchdb-browser@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-browser/-/pouchdb-browser-7.3.1.tgz#6b2f9f35f42d2c83fc205de5e0403c0aae7046aa" + integrity sha512-qZ8awkXl/woBHvEVqNHjDtwPDA7A9v4ItHtX1y1eVpKel4mlYqnIJ8K6pRcFUZmVaHinJW8K3uS32eHC1q0yOA== + dependencies: + argsarray "0.0.1" + immediate "3.3.0" + inherits "2.0.4" + spark-md5 "3.0.2" + uuid "8.3.2" + vuvuzela "1.0.3" + pouchdb-changes-filter@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/pouchdb-changes-filter/-/pouchdb-changes-filter-8.0.1.tgz#691b71b209dda12e950672ce44de2680606a98e4" @@ -16802,6 +16837,11 @@ pouchdb-checkpointer@8.0.1: pouchdb-collate "8.0.1" pouchdb-utils "8.0.1" +pouchdb-collate@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-7.3.1.tgz#19d7b87dd173d1c765da8cc9987c5aa9eb24f11f" + integrity sha512-o4gyGqDMLMSNzf6EDTr3eHaH/JRMoqRhdc+eV+oA8u00nTBtr9wD+jypVe2LbgKLJ4NWqx2qVkXiTiQdUFtsLQ== + pouchdb-collate@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-8.0.1.tgz#14b6ad9330d2831fd8ef135de680060366502a1b" @@ -16842,6 +16882,15 @@ pouchdb-errors@8.0.1: resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-8.0.1.tgz#d57afd57e07490d8d0b4ef19c10bfc85dbf27ae5" integrity sha512-H+ZsQxcG/JV3Tn29gnM6c9+lRPCN91ZYOkoIICsLjVRYgOTzN1AvNUD/G5JCB+81aI/u3fxZec0LEaZh6g6NHA== +pouchdb-fetch@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-7.3.1.tgz#d54b1807be0f0a5d4b6d06e416c7d54952bbc348" + integrity sha512-205xAtvdHRPQ4fp1h9+RmT9oQabo9gafuPmWsS9aEl3ER54WbY8Vaj1JHZGbU4KtMTYvW7H5088zLS7Nrusuag== + dependencies: + abort-controller "3.0.0" + fetch-cookie "0.11.0" + node-fetch "2.6.7" + pouchdb-fetch@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-8.0.1.tgz#30a27a45eb24c20f346a04d906ba82bca5a3a525" @@ -16851,6 +16900,19 @@ pouchdb-fetch@8.0.1: fetch-cookie "0.11.0" node-fetch "2.6.7" +pouchdb-find@^7.2.2: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-7.3.1.tgz#07a633d5ee2bd731dae9f991281cd25212088d29" + integrity sha512-AeqUfAVY1c7IFaY36BRT0vIz9r4VTKq/YOWTmiqndOZUQ/pDGxyO2fNFal6NN3PyYww0JijlD377cPvhnrhJVA== + dependencies: + pouchdb-abstract-mapreduce "7.3.1" + pouchdb-collate "7.3.1" + pouchdb-errors "7.3.1" + pouchdb-fetch "7.3.1" + pouchdb-md5 "7.3.1" + pouchdb-selector-core "7.3.1" + pouchdb-utils "7.3.1" + pouchdb-generate-replication-id@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/pouchdb-generate-replication-id/-/pouchdb-generate-replication-id-8.0.1.tgz#2c473bdb7f5e5bc08337b3042841f186bf3d0b2b" @@ -16866,6 +16928,16 @@ pouchdb-json@^7.2.2: dependencies: vuvuzela "1.0.3" +pouchdb-mapreduce-utils@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.1.tgz#f0ac2c8400fbedb705e9226082453ac7d3f2a066" + integrity sha512-oUMcq82+4pTGQ6dtrhgORHOVHZSr6w/5tFIUGlv7RABIDvJarL4snMawADjlpiEwPdiQ/ESG8Fqt8cxqvqsIgg== + dependencies: + argsarray "0.0.1" + inherits "2.0.4" + pouchdb-collections "7.3.1" + pouchdb-utils "7.3.1" + pouchdb-mapreduce-utils@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-8.0.1.tgz#a8acb1542aaf63a007b60f7a281dbbb94b49fcab" @@ -16921,6 +16993,14 @@ pouchdb-replication@^8.0.1: pouchdb-generate-replication-id "8.0.1" pouchdb-utils "8.0.1" +pouchdb-selector-core@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-7.3.1.tgz#08245662de3d61f16ab8dae2b56ef622935b3fb3" + integrity sha512-HBX+nNGXcaL9z0uNpwSMRq2GNZd3EZXW+fe9rJHS0hvJohjZL7aRJLoaXfEdHPRTNW+CpjM3Rny60eGekQdI/w== + dependencies: + pouchdb-collate "7.3.1" + pouchdb-utils "7.3.1" + pouchdb-selector-core@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-8.0.1.tgz#d52119b79bd34b69c27f4596dbb9e16373bbd92e" From 4e067f310ad60fb802d0a082b94b9fccab66ea9e Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Fri, 31 May 2024 16:44:49 +0200 Subject: [PATCH 14/86] feat: Configure CozyClient to use CozyPouchLink We want the Flagship app to work when offline To make this possible we configure cozy-client with CozyPouchLink which role will be to synchronize necessary doctypes into a local PouchDB and serve them from it instead of from the cozy-stack when the device is offline For now the list of synchronized doctypes is hardcoded but in the future we expect to implement a dynamic list based on cozy-apps' manifests Related PR: cozy/cozy-client#1507 --- src/libs/client.js | 5 ++- src/libs/client.spec.js | 3 +- src/libs/clientHelpers/createClient.ts | 6 +++- src/pouchdb/getLinks.ts | 39 +++++++++++++++++++++ src/pouchdb/platformReactNative.appState.ts | 34 ++++++++++++++++++ src/pouchdb/platformReactNative.events.ts | 28 +++++++++++++++ src/pouchdb/platformReactNative.isOnline.ts | 5 +++ src/pouchdb/platformReactNative.netInfo.ts | 24 +++++++++++++ src/pouchdb/platformReactNative.storage.ts | 14 ++++++++ src/pouchdb/platformReactNative.ts | 12 +++++++ 10 files changed, 167 insertions(+), 3 deletions(-) create mode 100644 src/pouchdb/getLinks.ts create mode 100644 src/pouchdb/platformReactNative.appState.ts create mode 100644 src/pouchdb/platformReactNative.events.ts create mode 100644 src/pouchdb/platformReactNative.isOnline.ts create mode 100644 src/pouchdb/platformReactNative.netInfo.ts create mode 100644 src/pouchdb/platformReactNative.storage.ts create mode 100644 src/pouchdb/platformReactNative.ts diff --git a/src/libs/client.js b/src/libs/client.js index 49206c162..f304bba49 100644 --- a/src/libs/client.js +++ b/src/libs/client.js @@ -30,6 +30,7 @@ export { } from '/libs/clientHelpers/initClient' export { call2FAInitClient } from '/libs/clientHelpers/twoFactorAuthentication' import { CozyPersistedStorageKeys, getData } from '/libs/localStore/storage' +import { getLinks } from '/pouchdb/getLinks' const log = Minilog('LoginScreen') @@ -44,6 +45,7 @@ export const getClient = async () => { return false } const { uri, oauthOptions, token } = oauthData + const links = getLinks() const client = new CozyClient({ uri, oauth: { token }, @@ -51,7 +53,8 @@ export const getClient = async () => { appMetadata: { slug: 'flagship', version: packageJSON.version - } + }, + links }) listenTokenRefresh(client) client.getStackClient().setOAuthOptions(oauthOptions) diff --git a/src/libs/client.spec.js b/src/libs/client.spec.js index 9de17df7a..6de3a03f8 100644 --- a/src/libs/client.spec.js +++ b/src/libs/client.spec.js @@ -62,7 +62,8 @@ describe('client', () => { appMetadata: { slug: 'flagship', version: packageJSON.version - } + }, + links: expect.anything() }) }) diff --git a/src/libs/clientHelpers/createClient.ts b/src/libs/clientHelpers/createClient.ts index 0a3a30bb6..8e16bc5bd 100644 --- a/src/libs/clientHelpers/createClient.ts +++ b/src/libs/clientHelpers/createClient.ts @@ -13,6 +13,7 @@ import googleServicesJson from '/../android/app/src/prod/google-services.json' import packageJSON from '../../../package.json' import { startListening } from '/app/domain/authentication/services/AuthService' +import { getLinks } from '/pouchdb/getLinks' /** * Create a CozyClient for the given Cozy instance and register it @@ -21,6 +22,8 @@ import { startListening } from '/app/domain/authentication/services/AuthService' * @returns {CozyClient} - The created and registered CozyClient */ export const createClient = async (instance: string): Promise => { + const links = getLinks() + const options = { scope: ['*'], oauth: { @@ -37,7 +40,8 @@ export const createClient = async (instance: string): Promise => { appMetadata: { slug: 'flagship', version: packageJSON.version - } + }, + links } const client = new CozyClient(options) diff --git a/src/pouchdb/getLinks.ts b/src/pouchdb/getLinks.ts new file mode 100644 index 000000000..5d3a91190 --- /dev/null +++ b/src/pouchdb/getLinks.ts @@ -0,0 +1,39 @@ +import { platformReactNative } from '/pouchdb/platformReactNative' + +import { default as PouchLink } from 'cozy-pouch-link' + +export const offlineDoctypes = [ + // cozy-home + 'io.cozy.accounts', + 'io.cozy.apps', + 'io.cozy.contacts', + 'io.cozy.files', + 'io.cozy.files.shortcuts', + 'io.cozy.home.settings', + 'io.cozy.jobs', + 'io.cozy.konnectors', + 'io.cozy.settings', + 'io.cozy.apps.suggestions', + 'io.cozy.triggers', + 'io.cozy.apps_registry', + + // mespapiers + 'io.cozy.bills', + 'io.cozy.sharings', + 'io.cozy.mespapiers.settings', + 'io.cozy.permissions' +] + +export const getLinks = () => { + const pouchLinkOptions = { + doctypes: offlineDoctypes, + initialSync: true, + platform: platformReactNative + } + + const pouchLink = new PouchLink({ + ...pouchLinkOptions + }) + + return [pouchLink] +} diff --git a/src/pouchdb/platformReactNative.appState.ts b/src/pouchdb/platformReactNative.appState.ts new file mode 100644 index 000000000..41d93b11c --- /dev/null +++ b/src/pouchdb/platformReactNative.appState.ts @@ -0,0 +1,34 @@ +import EventEmitter from 'events' + +import { AppState, AppStateStatus, NativeEventSubscription } from 'react-native' + +import Minilog from 'cozy-minilog' + +const log = Minilog('🛋️ PlatormReactNative.appState') + +let appState = AppState.currentState +let appStateHandler: NativeEventSubscription | undefined = undefined + +export const listenAppState = (eventEmitter: EventEmitter): void => { + appStateHandler = AppState.addEventListener('change', nextAppState => { + log.debug('🛋️ AppState event', nextAppState) + if (isGoingToSleep(nextAppState)) { + eventEmitter.emit('resume') + } + if (isGoingToWakeUp(nextAppState)) { + eventEmitter.emit('pause') + } + + appState = nextAppState + }) +} + +export const stopListeningAppState = (): void => { + appStateHandler?.remove() +} + +const isGoingToSleep = (nextAppState: AppStateStatus): boolean => + Boolean(appState.match(/active/) && nextAppState === 'background') + +const isGoingToWakeUp = (nextAppState: AppStateStatus): boolean => + Boolean(appState.match(/background/) && nextAppState === 'active') diff --git a/src/pouchdb/platformReactNative.events.ts b/src/pouchdb/platformReactNative.events.ts new file mode 100644 index 000000000..8382f7853 --- /dev/null +++ b/src/pouchdb/platformReactNative.events.ts @@ -0,0 +1,28 @@ +import { EventEmitter } from 'events' + +import { listenAppState } from '/pouchdb/platformReactNative.appState' +import { listenNetInfo } from '/pouchdb/platformReactNative.netInfo' + +export const pouchDbEmitter = new EventEmitter() + +const listenPouchEvents = (): void => { + listenAppState(pouchDbEmitter) + listenNetInfo(pouchDbEmitter) +} + +listenPouchEvents() + +export const events = { + addEventListener: ( + eventName: string, + handler: (...args: unknown[]) => void + ): void => { + pouchDbEmitter.addListener(eventName, handler) + }, + removeEventListener: ( + eventName: string, + handler: (...args: unknown[]) => void + ): void => { + pouchDbEmitter.removeListener(eventName, handler) + } +} diff --git a/src/pouchdb/platformReactNative.isOnline.ts b/src/pouchdb/platformReactNative.isOnline.ts new file mode 100644 index 000000000..8081dad3c --- /dev/null +++ b/src/pouchdb/platformReactNative.isOnline.ts @@ -0,0 +1,5 @@ +import { NetService } from '/libs/services/NetService' + +export const isOnline = async (): Promise => { + return (await NetService.isConnected()) ?? true +} diff --git a/src/pouchdb/platformReactNative.netInfo.ts b/src/pouchdb/platformReactNative.netInfo.ts new file mode 100644 index 000000000..2d52a3b8a --- /dev/null +++ b/src/pouchdb/platformReactNative.netInfo.ts @@ -0,0 +1,24 @@ +import EventEmitter from 'events' + +import NetInfo, { NetInfoSubscription } from '@react-native-community/netinfo' + +import Minilog from 'cozy-minilog' + +const log = Minilog('🛋️ PlatormReactNative.netInfo') + +let netInfoHandler: NetInfoSubscription | undefined = undefined + +export const listenNetInfo = (eventEmitter: EventEmitter): void => { + netInfoHandler = NetInfo.addEventListener(state => { + log.debug('🛋️ NetInfo event', state.isConnected) + if (state.isConnected) { + eventEmitter.emit('online') + } else { + eventEmitter.emit('offline') + } + }) +} + +export const stopListeningNetInfo = (): void => { + netInfoHandler?.() +} diff --git a/src/pouchdb/platformReactNative.storage.ts b/src/pouchdb/platformReactNative.storage.ts new file mode 100644 index 000000000..f294bc4ca --- /dev/null +++ b/src/pouchdb/platformReactNative.storage.ts @@ -0,0 +1,14 @@ +import AsyncStorage from '@react-native-async-storage/async-storage' + +export const storage = { + getItem: async (key: string): Promise => { + return AsyncStorage.getItem(key) + }, + setItem: async (key: string, value: string | undefined): Promise => { + if (value === undefined) return + return AsyncStorage.setItem(key, value) + }, + removeItem: async (key: string): Promise => { + return AsyncStorage.removeItem(key) + } +} diff --git a/src/pouchdb/platformReactNative.ts b/src/pouchdb/platformReactNative.ts new file mode 100644 index 000000000..9241e70d8 --- /dev/null +++ b/src/pouchdb/platformReactNative.ts @@ -0,0 +1,12 @@ +import { events } from '/pouchdb/platformReactNative.events' +import { isOnline } from '/pouchdb/platformReactNative.isOnline' +import { storage } from '/pouchdb/platformReactNative.storage' +import PouchDB from '/pouchdb/pouchdb' + +export const platformReactNative = { + storage, + events, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + pouchAdapter: PouchDB, + isOnline +} From 26e731d64b3c2ed1503a36fc953bb44272aeefb4 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Fri, 31 May 2024 16:44:40 +0200 Subject: [PATCH 15/86] feat: Configure CozyClient to also use StackLink (when online) In previous commit we configured cozy-client to use CozyPouchLink for its queries This commit also adds StackLink as the first Link so by default it will do its queries through the remote cozy-stack CozyClient has been modified to handle offline mode and redirect to the next link when it is detected Related PR: cozy/cozy-client#1507 --- src/pouchdb/getLinks.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pouchdb/getLinks.ts b/src/pouchdb/getLinks.ts index 5d3a91190..ac6e565f9 100644 --- a/src/pouchdb/getLinks.ts +++ b/src/pouchdb/getLinks.ts @@ -1,5 +1,6 @@ import { platformReactNative } from '/pouchdb/platformReactNative' +import { CozyLink, StackLink } from 'cozy-client' import { default as PouchLink } from 'cozy-pouch-link' export const offlineDoctypes = [ @@ -24,16 +25,20 @@ export const offlineDoctypes = [ 'io.cozy.permissions' ] -export const getLinks = () => { +export const getLinks = (): CozyLink[] => { const pouchLinkOptions = { doctypes: offlineDoctypes, initialSync: true, platform: platformReactNative } + const stackLink = new StackLink({ + platform: platformReactNative + }) + const pouchLink = new PouchLink({ ...pouchLinkOptions }) - return [pouchLink] + return [stackLink, pouchLink] } From 27436dcac4882afc57df5793d990a19ed10d4e5b Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Fri, 31 May 2024 16:44:24 +0200 Subject: [PATCH 16/86] feat: Add PouchDBFind plugin to the PouchDB configuration This plugin is required by cozy-client to process `find` queries Related PR: cozy/cozy-client#1507 --- src/pouchdb/pouchdb.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pouchdb/pouchdb.js b/src/pouchdb/pouchdb.js index c7ae74dae..c14b272e2 100644 --- a/src/pouchdb/pouchdb.js +++ b/src/pouchdb/pouchdb.js @@ -4,6 +4,7 @@ import 'react-native-get-random-values' import HttpPouch from 'pouchdb-adapter-http' import SQLiteAdapterFactory from 'pouchdb-adapter-react-native-sqlite' import PouchDB from 'pouchdb-core' +import PouchDBFind from 'pouchdb-find' import mapreduce from 'pouchdb-mapreduce' import replication from 'pouchdb-replication' import WebSQLite from 'react-native-quick-websql' @@ -11,6 +12,7 @@ import WebSQLite from 'react-native-quick-websql' const SQLiteAdapter = SQLiteAdapterFactory(WebSQLite) export default PouchDB.plugin(HttpPouch) + .plugin(PouchDBFind) .plugin(replication) .plugin(mapreduce) .plugin(SQLiteAdapter) From b3984d93f7fb1df7cbd401a04338854dcf55589f Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Thu, 11 Jul 2024 18:23:34 +0200 Subject: [PATCH 17/86] feat: Add clientCachedStorage to handle CozyClient's requests cache PouchDB can handle only `client.query()` requests For all other requests, like `client.fetchJSON()` we want to be able to store the request result in the device's AsyncStorage so we can re-use this result when the device is offline Data is stored using the client's url and the request content as key (it can be a string or a full request object) --- src/libs/intents/localMethods.ts | 2 + .../localStore/clientCachedStorage.spec.ts | 202 ++++++++++++++++++ src/libs/localStore/clientCachedStorage.ts | 95 ++++++++ 3 files changed, 299 insertions(+) create mode 100644 src/libs/localStore/clientCachedStorage.spec.ts create mode 100644 src/libs/localStore/clientCachedStorage.ts diff --git a/src/libs/intents/localMethods.ts b/src/libs/intents/localMethods.ts index 48df7e8e5..362d1366b 100644 --- a/src/libs/intents/localMethods.ts +++ b/src/libs/intents/localMethods.ts @@ -22,6 +22,7 @@ import { setHomeThemeIntent } from '/libs/intents/setHomeThemeIntent' import strings from '/constants/strings.json' import { EnvService } from '/core/tools/env' import { clearCookies } from '/libs/httpserver/httpCookieManager' +import { clearClientCachedData } from '/libs/localStore/clientCachedStorage' import { clearCozyData } from '/libs/localStore/storage' import { getSharedMemoryIntent, @@ -72,6 +73,7 @@ export const asyncLogout = async (client?: CozyClient): Promise => { } await sendKonnectorsLogs(client) + await clearClientCachedData(client) await client.logout() await stopTrackingAndClearData() await deleteKeychain() diff --git a/src/libs/localStore/clientCachedStorage.spec.ts b/src/libs/localStore/clientCachedStorage.spec.ts new file mode 100644 index 000000000..ab82d502e --- /dev/null +++ b/src/libs/localStore/clientCachedStorage.spec.ts @@ -0,0 +1,202 @@ +import AsyncStorage from '@react-native-async-storage/async-storage' + +import CozyClient from 'cozy-client' + +import { + clearClientCachedData, + getClientCachedData, + storeClientCachedData +} from '/libs/localStore/clientCachedStorage' +import { AppData } from '/libs/httpserver/models' +import { + clearAllData, + CozyPersistedStorageKeys, + storeData +} from '/libs/localStore/storage' + +const { getAllKeys } = AsyncStorage + +describe('clientCachedStorage', () => { + beforeEach(async () => { + await clearAllData() + }) + + describe('key tests', () => { + it('should use raw request for key when string', async () => { + const request = 'SomeRequestName' + + await storeClientCachedData(aliceClient, request, getFakeAppData()) + const keys = await getAllKeys() + + expect(keys).toStrictEqual([ + '@ccCache_alice.mycozy.cloud_SomeRequestName' + ]) + }) + + it('should convert request to base64 for key when request CozyClientRequest object', async () => { + const request = { + method: 'GET', + path: '/some/path', + body: {}, + options: {} + } + + await storeClientCachedData(aliceClient, request, getFakeAppData()) + const keys = await getAllKeys() + + expect(keys).toStrictEqual([ + '@ccCache_alice.mycozy.cloud_eyJtZXRob2QiOiJHRVQiLCJwYXRoIjoiL3NvbWUvcGF0aCIsImJvZHkiOnt9LCJvcHRpb25zIjp7fX0=' + ]) + }) + }) + + describe('isolation tests', () => { + it('should store as alice and retrieve as alice', async () => { + const request = 'SomeRequestName' + + await storeClientCachedData(aliceClient, request, getFakeAppData()) + const result = await getClientCachedData(aliceClient, request) + expect(result).toStrictEqual(getFakeAppData()) + }) + + it('should store as alice and not retrieve as alice with port', async () => { + const request = 'SomeRequestName' + await storeClientCachedData(aliceClient, request, getFakeAppData()) + const result = await getClientCachedData(aliceClientWithPort, request) + expect(result).toStrictEqual(null) + }) + + it('should store as alice and bob and retrieve as alice and bob', async () => { + const aliceRequest = 'SomeRequestName' + const bobRequest = 'SomeRequestName' + await storeClientCachedData( + aliceClient, + aliceRequest, + getFakeAppData('TestAlice') + ) + await storeClientCachedData( + bobClient, + bobRequest, + getFakeAppData('TestBob') + ) + const aliceResult = await getClientCachedData(aliceClient, aliceRequest) + const bobResult = await getClientCachedData(bobClient, bobRequest) + expect(aliceResult).toStrictEqual(getFakeAppData('TestAlice')) + expect(bobResult).toStrictEqual(getFakeAppData('TestBob')) + }) + + it('should store as alice and not retrieve as bob', async () => { + const request = 'SomeRequestName' + await storeClientCachedData( + aliceClient, + request, + getFakeAppData('TestAlice') + ) + const result = await getClientCachedData(bobClient, request) + expect(result).toStrictEqual(null) + }) + }) + + describe('clearClientCachedData', () => { + it('should clear only data relative to clientCachedStorage', async () => { + await storeData( + // @ts-expect-error Type validation is handled on clientCachedStorage + '@ccCache_alice.mycozy.cloud_SomeRequestName', + 'SomeValue' + ) + await storeData( + // @ts-expect-error Type validation is handled on clientCachedStorage + '@ccCache_alice.mycozy.cloud_eyJtZXRob2QiOiJHRVQiLCJwYXRoIjoiL3NvbWUvcGF0aCIsImJvZHkiOnt9LCJvcHRpb25zIjp7fX0=', + 'SomeValue' + ) + await storeData(CozyPersistedStorageKeys.Activities, 'SomeValue') + await storeData(CozyPersistedStorageKeys.AutoLockEnabled, 'SomeValue') + + const keys = await getAllKeys() + expect(keys).toStrictEqual([ + '@ccCache_alice.mycozy.cloud_SomeRequestName', + '@ccCache_alice.mycozy.cloud_eyJtZXRob2QiOiJHRVQiLCJwYXRoIjoiL3NvbWUvcGF0aCIsImJvZHkiOnt9LCJvcHRpb25zIjp7fX0=', + CozyPersistedStorageKeys.Activities, + CozyPersistedStorageKeys.AutoLockEnabled + ]) + + await clearClientCachedData(aliceClient) + + const keys2 = await getAllKeys() + expect(keys2).toStrictEqual([ + CozyPersistedStorageKeys.Activities, + CozyPersistedStorageKeys.AutoLockEnabled + ]) + }) + + it('should clear only data relative to current client', async () => { + await storeData( + // @ts-expect-error Type validation is handled on clientCachedStorage + '@ccCache_alice.mycozy.cloud_SomeRequestName', + 'SomeValue' + ) + await storeData( + // @ts-expect-error Type validation is handled on clientCachedStorage + '@ccCache_alice.mycozy.cloud_eyJtZXRob2QiOiJHRVQiLCJwYXRoIjoiL3NvbWUvcGF0aCIsImJvZHkiOnt9LCJvcHRpb25zIjp7fX0=', + 'SomeValue' + ) + await storeData( + // @ts-expect-error Type validation is handled on clientCachedStorage + '@ccCache_bob.mycozy.cloud_SomeRequestName', + 'SomeValue' + ) + + const keys = await getAllKeys() + expect(keys).toStrictEqual([ + '@ccCache_alice.mycozy.cloud_SomeRequestName', + '@ccCache_alice.mycozy.cloud_eyJtZXRob2QiOiJHRVQiLCJwYXRoIjoiL3NvbWUvcGF0aCIsImJvZHkiOnt9LCJvcHRpb25zIjp7fX0=', + '@ccCache_bob.mycozy.cloud_SomeRequestName' + ]) + + await clearClientCachedData(aliceClient) + + const keys2 = await getAllKeys() + expect(keys2).toStrictEqual(['@ccCache_bob.mycozy.cloud_SomeRequestName']) + }) + }) +}) + +const aliceClient = { + getStackClient: () => ({ uri: 'https://alice.mycozy.cloud' }) +} as CozyClient + +const aliceClientWithPort = { + getStackClient: () => ({ uri: 'https://alice.mycozy.cloud:8080' }) +} as CozyClient + +const bobClient = { + getStackClient: () => ({ uri: 'https://bob.mycozy.cloud' }) +} as CozyClient + +const getFakeAppData = (id = 'SomeId'): AppData => ({ + attributes: { + AppEditor: 'SomeAppEditor', + AppName: 'SomeAppName', + AppNamePrefix: 'SomeAppNamePrefix', + AppSlug: 'SomeAppSlug', + Capabilities: 'SomeCapabilities', + Cookie: 'SomeCookie', + CozyBar: 'SomeCozyBar', + CozyClientJS: 'SomeCozyClientJS', + CozyFonts: 'SomeCozyFonts', + DefaultWallpaper: 'SomeDefaultWallpaper', + Domain: 'SomeDomain', + Favicon: 'SomeFavicon', + Flags: 'SomeFlags', + IconPath: 'SomeIconPath', + Locale: 'SomeLocale', + SubDomain: 'SomeSubDomain', + ThemeCSS: 'SomeThemeCSS', + Token: 'SomeToken', + Tracking: 'SomeTracking' + }, + id: id, + links: { self: 'SomeSelf' }, + meta: {}, + type: 'SomeType' +}) diff --git a/src/libs/localStore/clientCachedStorage.ts b/src/libs/localStore/clientCachedStorage.ts new file mode 100644 index 000000000..15dec9ab5 --- /dev/null +++ b/src/libs/localStore/clientCachedStorage.ts @@ -0,0 +1,95 @@ +import AsyncStorage from '@react-native-async-storage/async-storage' + +import CozyClient from 'cozy-client' +import Minilog from 'cozy-minilog' + +import { normalizeFqdn } from '/libs/functions/stringHelpers' +import { AppData } from '/libs/httpserver/models' +import { getData, storeData } from '/libs/localStore/storage' + +const log = Minilog('clientCachedStorage.ts') + +const clientCachePrefix = '@ccCache_' + +type CozyClientCacheKey = `@ccCache_${string}` + +type CacheableObject = AppData + +interface CozyClientRequest { + method: unknown + path: unknown + body: unknown + options: unknown +} + +const { getAllKeys, removeItem } = AsyncStorage + +export const storeClientCachedData = async ( + client: CozyClient | null, + request: string | CozyClientRequest, + result: CacheableObject +): Promise => { + if (!client) return + + const key = formatKey(client, request) + + // @ts-expect-error Keys and values are already checked here as an CozyClientCacheKey + await storeData(key, result) +} + +export const getClientCachedData = async ( + client: CozyClient | null, + request: string | CozyClientRequest +): Promise => { + if (!client) return null + + const key = formatKey(client, request) + + // @ts-expect-error Keys and values are already checked here as an CozyClientCacheKey + const result = await getData(key) + + return result +} + +export const clearClientCachedData = async ( + client: CozyClient | null +): Promise => { + try { + if (!client) return + + const normalizedFqdn = getNormalizedFqdn(client) + const keys = await getAllKeys() + + const clientCacheKeys = keys.filter(k => + k.startsWith(`${clientCachePrefix}${normalizedFqdn}`) + ) + + for (const key of clientCacheKeys) { + await removeItem(key) + } + } catch (error) { + log.error(`Failed to clear ClientCache data from persistent storage`, error) + } +} + +const formatKey = ( + client: CozyClient, + request: string | CozyClientRequest +): CozyClientCacheKey => { + const normalizedFqdn = getNormalizedFqdn(client) + + const key = + typeof request === 'string' ? request : btoa(JSON.stringify(request)) + + return `${clientCachePrefix}${normalizedFqdn}_${key}` +} + +const getNormalizedFqdn = (client: CozyClient): string => { + const rootURL = client.getStackClient().uri + + const { host: fqdn } = new URL(rootURL) + + const normalizedFqdn = normalizeFqdn(fqdn) + + return normalizedFqdn +} From 435799c153e04ca3ba1d3d8221e3d16bf5290321 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Thu, 11 Jul 2024 18:29:11 +0200 Subject: [PATCH 18/86] feat: Cache `/apps/:slug/open` request for offline support `/apps/:slug/open` request is based on `client.fetchJSON()` and is on the critical execution path for the application to boot So we want to use the new caching mechanism from previous commit in order to retrieve this request's cached result if the application is booted while the device is offline --- src/libs/client.js | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/libs/client.js b/src/libs/client.js index f304bba49..a5612c9c8 100644 --- a/src/libs/client.js +++ b/src/libs/client.js @@ -29,6 +29,10 @@ export { callOnboardingInitClient } from '/libs/clientHelpers/initClient' export { call2FAInitClient } from '/libs/clientHelpers/twoFactorAuthentication' +import { + getClientCachedData, + storeClientCachedData +} from '/libs/localStore/clientCachedStorage' import { CozyPersistedStorageKeys, getData } from '/libs/localStore/storage' import { getLinks } from '/pouchdb/getLinks' @@ -110,6 +114,7 @@ export const fetchPublicData = async client => { */ export const fetchCozyDataForSlug = async (slug, client, cookie) => { + const cacheKey = `CozyData_${slug}` const stackClient = client.getStackClient() const options = cookie @@ -123,14 +128,28 @@ export const fetchCozyDataForSlug = async (slug, client, cookie) => { } : undefined - const result = await stackClient.fetchJSON( - 'GET', - `/apps/${slug}/open`, - undefined, - options - ) + try { + const result = await stackClient.fetchJSON( + 'GET', + `/apps/${slug}/open`, + undefined, + options + ) + + storeClientCachedData(client, cacheKey, result) - return result + return result + } catch (err) { + if (err.message === 'Network request failed') { + const cachedResult = await getClientCachedData(client, cacheKey) + + if (cachedResult) { + return cachedResult + } + } + + throw err + } } /** From 43df99eef141f8c1237cc5500ebe7f1eef94b9cb Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Tue, 24 Sep 2024 12:52:48 +0200 Subject: [PATCH 19/86] feat: Upgrade cozy-intent to `2.23.0` `cozy-intent` has been upgraded to `2.23.0` to retrieve new interfaces for FlagshipLink and files downloading Related PR: cozy/cozy-libs#2562 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 262058377..4a8ea65a9 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "cozy-clisk": "^0.38.1", "cozy-device-helper": "^2.7.0", "cozy-flags": "^3.2.0", - "cozy-intent": "^2.22.0", + "cozy-intent": "^2.23.0", "cozy-logger": "^1.10.0", "cozy-minilog": "3.3.1", "cozy-pouch-link": "^49.0.0", diff --git a/yarn.lock b/yarn.lock index a115d3b56..29a8be8af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8728,10 +8728,10 @@ cozy-flags@^3.2.0: dependencies: microee "^0.0.6" -cozy-intent@^2.22.0: - version "2.22.0" - resolved "https://registry.yarnpkg.com/cozy-intent/-/cozy-intent-2.22.0.tgz#a4333463ca934d2a5cfe34a23b0d6f0e50d27934" - integrity sha512-aCIlwLuia5llX36eubgbkah3vR3709V7VFDWl2hndvdmyjZBHh1siJUlJxpA5nYayqJkLy7aC4bdfGpTetgoCQ== +cozy-intent@^2.23.0: + version "2.23.0" + resolved "https://registry.yarnpkg.com/cozy-intent/-/cozy-intent-2.23.0.tgz#b6f3a407413df05c108e848b9dcb074b8780824b" + integrity sha512-DFn0ny4B4HpOE+3PYuZTTa074gRnFHqID+XaJ3gY2OrPL2xUQKEZmmFLp2bPVWThi5FvgvsU3EQeWPHZNQPbaQ== dependencies: cozy-minilog "^3.3.1" post-me "0.4.5" From 2b421fa361a591892c968fae045285c54e7fdc2f Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Tue, 30 Jul 2024 19:14:51 +0200 Subject: [PATCH 20/86] feat: Implement FlagshipLinkRequest interface through localMethods In previous commits we configured the application's cozy-client to use CozyPouchLink This link is configured for all react-native side queries, but not for cozy-app queries as they are served inside of WebViews and use a different cozy-client instance We want cozy-apps to benefits from the CozyPouchLink by redirecting their queries to the react-native side using the new FlagshipLink interface With this interface, all cozy-apps queries can be redirected to the react-native side using cozy-intent/post-me In order to intercept them, then we should declare `FlagshipLinkRequest()` method `localMethods` Related PR: cozy/cozy-client#1505 --- src/@types/cozy-client.d.ts | 12 +++++++++++- src/libs/intents/flagshipLink.ts | 33 ++++++++++++++++++++++++++++++++ src/libs/intents/localMethods.ts | 5 ++++- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/libs/intents/flagshipLink.ts diff --git a/src/@types/cozy-client.d.ts b/src/@types/cozy-client.d.ts index 481e60b27..323ff019c 100644 --- a/src/@types/cozy-client.d.ts +++ b/src/@types/cozy-client.d.ts @@ -1,7 +1,13 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import 'cozy-client' -import { FileDocument, CozyClientDocument } from 'cozy-client/types/types' +import { QueryDefinition } from 'cozy-client' +import { + FileDocument, + CozyClientDocument, + QueryOptions, + QueryResult +} from 'cozy-client/types/types' declare module 'cozy-client' { interface ClientOptions { @@ -171,6 +177,10 @@ declare module 'cozy-client' { on: (event: string, callback: () => void) => void removeListener: (event: string, callback: () => void) => void logout: () => Promise + query: ( + queryDefinition: QueryDefinition, + options?: QueryOptions + ) => Promise } export const createMockClient = (options?: ClientOptions): CozyClient => diff --git a/src/libs/intents/flagshipLink.ts b/src/libs/intents/flagshipLink.ts new file mode 100644 index 000000000..1248cd2a3 --- /dev/null +++ b/src/libs/intents/flagshipLink.ts @@ -0,0 +1,33 @@ +import CozyClient, { QueryDefinition } from 'cozy-client' +import type { QueryResult } from 'cozy-client/types/types' +import Minilog from 'cozy-minilog' + +import { getErrorMessage } from '/libs/functions/getErrorMessage' + +const log = Minilog('⛳🔗 flagshipLink') + +export const flagshipLinkRequest = async ( + operation: QueryDefinition, + client: CozyClient | undefined +): Promise => { + try { + if (!client) { + throw new Error( + 'FlagshipLinkRequest should not be called with undefined client' + ) + } + + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const result = await client.query(operation) + + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + return result + } catch (error) { + const errorMessage = getErrorMessage(error) + log.error( + `Something when wrong while processing FlagshipLinkRequest: ${errorMessage}`, + operation + ) + throw error + } +} diff --git a/src/libs/intents/localMethods.ts b/src/libs/intents/localMethods.ts index 362d1366b..0c68a441b 100644 --- a/src/libs/intents/localMethods.ts +++ b/src/libs/intents/localMethods.ts @@ -1,7 +1,7 @@ import { Linking } from 'react-native' import { getDeviceName } from 'react-native-device-info' -import CozyClient from 'cozy-client' +import CozyClient, { QueryDefinition } from 'cozy-client' import { FlagshipUI, NativeMethodsRegisterWithOptions, @@ -36,6 +36,7 @@ import { openApp } from '/libs/functions/openApp' import { routes } from '/constants/routes' import { sendKonnectorsLogs } from '/libs/konnectors/sendKonnectorsLogs' import { setDefaultRedirection } from '/libs/defaultRedirection/defaultRedirection' +import { flagshipLinkRequest } from '/libs/intents/flagshipLink' import { setFlagshipUI } from '/libs/intents/setFlagshipUI' import { showInAppBrowser, closeInAppBrowser } from '/libs/intents/InAppBrowser' import { isBiometryDenied } from '/app/domain/authentication/services/BiometryService' @@ -398,6 +399,8 @@ export const localMethods = ( _options: PostMeMessageOptions, colorScheme: string | undefined ) => Promise.resolve(setColorScheme(colorScheme)), + flagshipLinkRequest: (_options, operation) => + flagshipLinkRequest(operation as QueryDefinition, client), ...mergedMethods } } From dc753f91b18f15fd16b74398c37696f9166b0188 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Thu, 11 Jul 2024 18:50:31 +0200 Subject: [PATCH 21/86] feat: Enable CacheMode for CozyProxyWebView on android when offline When a cozy-app's WebView is served offline, then the cozy-app bundle is served from local folder using the CozyProxyWebview, and since previous commits, the cozy-client's queries are served through `FlagshipLink` With those mechanisms, nearly all data are available offline except two things: - cozy-stack static assets (i.e. some css files, avatar, partners logos etc) - `fetchJSON()` requests This commit tries to handle the static assets part Those assets are often served with HTTP cache activated, and so the WebView should be able to load them correctly when the device is offline. However on Android, the WebView's cache seems not to persist after the application is closed Activating the `cacheMode=LOAD_CACHE_ELSE_NETWORK` seems to fix this behavior. But it prioritizes too much the cache over fresh data, so we want to activate it only when strictly necessary, which is when the application is offline This also allows to load partners logos that are not cached by the cozy-stack (as of today). But we expect to modify the cozy-stack to enable cache on them --- .../webviews/CozyProxyWebView.functions.js | 4 ++- src/components/webviews/CozyProxyWebView.js | 3 ++ .../webviews/CozyProxyWebView.spec.js | 5 +++- src/libs/client.js | 19 +++++++++++-- src/libs/httpserver/httpServerProvider.tsx | 28 +++++++++++++++---- src/libs/httpserver/indexDataFetcher.spec.ts | 21 ++++++++++++-- src/libs/httpserver/indexDataFetcher.ts | 4 ++- 7 files changed, 71 insertions(+), 13 deletions(-) diff --git a/src/components/webviews/CozyProxyWebView.functions.js b/src/components/webviews/CozyProxyWebView.functions.js index eb6f6c84f..adece7ad4 100644 --- a/src/components/webviews/CozyProxyWebView.functions.js +++ b/src/components/webviews/CozyProxyWebView.functions.js @@ -31,7 +31,8 @@ export const initHtmlContent = async ({ return } - const htmlContent = await httpServerContext.getIndexHtmlForSlug(slug, client) + const { html: htmlContent, source: htmlSource } = + await httpServerContext.getIndexHtmlForSlug(slug, client) if ( !cookieAlreadyExists && @@ -47,6 +48,7 @@ export const initHtmlContent = async ({ setHtmlContentCreationDate(Date.now()) dispatch(oldState => ({ ...oldState, + activateCache: htmlSource === 'cache' && Platform.OS === 'android', html: htmlContent, nativeConfig: nativeConfigActual, source: sourceActual diff --git a/src/components/webviews/CozyProxyWebView.js b/src/components/webviews/CozyProxyWebView.js index 10cb03c42..93b977c86 100644 --- a/src/components/webviews/CozyProxyWebView.js +++ b/src/components/webviews/CozyProxyWebView.js @@ -124,6 +124,9 @@ export const CozyProxyWebView = ({ dispatch(oldState => ({ ...oldState, isLoading: false })) onLoad?.(syntheticEvent) }} + cacheMode={ + state.activateCache ? 'LOAD_CACHE_ELSE_NETWORK' : 'LOAD_DEFAULT' + } {...props} /> ) : null} diff --git a/src/components/webviews/CozyProxyWebView.spec.js b/src/components/webviews/CozyProxyWebView.spec.js index 9a4808230..c2fdea139 100644 --- a/src/components/webviews/CozyProxyWebView.spec.js +++ b/src/components/webviews/CozyProxyWebView.spec.js @@ -24,7 +24,10 @@ describe('CozyWebview', () => { describe('OAuth Client Limit', () => { const httpServerContext = { - getIndexHtmlForSlug: jest.fn() + getIndexHtmlForSlug: jest.fn().mockResolvedValue({ + source: 'stack', + html: 'SOME_HTML' + }) } const href = 'https://claude-home.mycozy.cloud' const client = {} diff --git a/src/libs/client.js b/src/libs/client.js index a5612c9c8..d0efd3c35 100644 --- a/src/libs/client.js +++ b/src/libs/client.js @@ -103,6 +103,13 @@ export const fetchPublicData = async client => { } } +/** + * @template T + * @typedef {object} CozyDataStackOrCache + * @property {'stack'|'cache'} source - Source of the retrieved data + * @property {T} data - The appliation data + */ + /** * Fetches the data that is used to display a cozy application. * @@ -110,7 +117,7 @@ export const fetchPublicData = async client => { * @param {string} slug - The application slug * @param {object} client - A CozyClient instance * @param {object} [cookie] - An object containing a name and value property - * @returns {Promise} - The application data + * @returns {Promise>} - The application data */ export const fetchCozyDataForSlug = async (slug, client, cookie) => { @@ -138,13 +145,19 @@ export const fetchCozyDataForSlug = async (slug, client, cookie) => { storeClientCachedData(client, cacheKey, result) - return result + return { + source: 'stack', + data: result.data + } } catch (err) { if (err.message === 'Network request failed') { const cachedResult = await getClientCachedData(client, cacheKey) if (cachedResult) { - return cachedResult + return { + source: 'cache', + data: cachedResult.data + } } } diff --git a/src/libs/httpserver/httpServerProvider.tsx b/src/libs/httpserver/httpServerProvider.tsx index 3cf204e17..ac72d316a 100644 --- a/src/libs/httpserver/httpServerProvider.tsx +++ b/src/libs/httpserver/httpServerProvider.tsx @@ -35,6 +35,11 @@ const DEFAULT_PORT = Config.HTTP_SERVER_DEFAULT_PORT ? Number(Config.HTTP_SERVER_DEFAULT_PORT) : 5759 +interface IndexHtmlForSlug { + source: 'stack' | 'cache' + html: string +} + interface HttpServerState { server: HttpServer | undefined securityKey: string @@ -43,7 +48,7 @@ interface HttpServerState { getIndexHtmlForSlug: ( slug: string, client: CozyClient - ) => Promise + ) => Promise } interface SecurityKeyResult { @@ -118,7 +123,7 @@ export const HttpServerProvider = ( const getIndexHtmlForSlug = async ( slug: string, client: CozyClient - ): Promise => { + ): Promise => { try { if (!serverInstance) { throw new Error('ServerInstance is null, should not happen') @@ -128,7 +133,10 @@ export const HttpServerProvider = ( const { host: fqdn } = new URL(rootURL) - const { cookie, templateValues } = await fetchAppDataForSlug(slug, client) + const { cookie, source, templateValues } = await fetchAppDataForSlug( + slug, + client + ) await setCookie(cookie, client) const rawHtml = await getIndexForFqdnAndSlug(fqdn, slug) @@ -146,20 +154,30 @@ export const HttpServerProvider = ( indexData: templateValues }) if (slug === 'home') { - return flow( + const html = flow( addColorSchemeMetaIfNecessary, addBarStyles, addBodyClasses, addMetaAttributes )(computedHtml) + + return { + source, + html + } } else { // We do not need the bar styles for other app. We only need it for // the Home application since this is the only "immersive app" - return flow( + const html = flow( addColorSchemeMetaIfNecessary, addBodyClasses, addMetaAttributes )(computedHtml) + + return { + source, + html + } } } catch (err) { const errorMessage = getErrorMessage(err) diff --git a/src/libs/httpserver/indexDataFetcher.spec.ts b/src/libs/httpserver/indexDataFetcher.spec.ts index 138642aef..9e9737b72 100644 --- a/src/libs/httpserver/indexDataFetcher.spec.ts +++ b/src/libs/httpserver/indexDataFetcher.spec.ts @@ -12,7 +12,7 @@ jest.mock('@react-native-cookies/cookies', () => ({ })) const mockedFetchCozyDataForSlug = fetchCozyDataForSlug as jest.MockedFunction< - typeof fetchCozyDataForSlug + typeof fetchCozyDataForSlug > describe('indexDataFetcher', () => { @@ -37,7 +37,23 @@ describe('indexDataFetcher', () => { }) }) -const mockStackResult = { +interface StackResultData { + type: string + id: string + attributes: Record + meta: unknown + links: { + self: string + } +} + +interface StackResult { + source: 'stack' + data: StackResultData +} + +const mockStackResult: StackResult = { + source: 'stack', data: { type: 'io.cozy.apps.open', id: 'home', @@ -72,6 +88,7 @@ const mockStackResult = { const expectedResult = { cookie: 'SOME_COOKIE', + source: 'stack', templateValues: { AppEditor: 'Cozy', AppName: 'Home', diff --git a/src/libs/httpserver/indexDataFetcher.ts b/src/libs/httpserver/indexDataFetcher.ts index 25161ca0c..b42f037b4 100644 --- a/src/libs/httpserver/indexDataFetcher.ts +++ b/src/libs/httpserver/indexDataFetcher.ts @@ -11,6 +11,7 @@ export type TemplateValues = Omit & { } interface FetchAppDataForSlugResult { + source: 'stack' | 'cache' cookie: AppAttributes['Cookie'] templateValues: TemplateValues } @@ -23,7 +24,7 @@ export const fetchAppDataForSlug = async ( ): Promise => { try { const storedCookie = await getCookie(client) - const cozyDataResult = await fetchCozyDataForSlug<{ data: AppData }>( + const cozyDataResult = await fetchCozyDataForSlug( slug, client, storedCookie @@ -57,6 +58,7 @@ export const fetchAppDataForSlug = async ( return { cookie, + source: cozyDataResult.source, templateValues: { ...cozyDataAttributes, // The following attributes have to be sanitized to avoid semantic quotes. From 4d7c460e611568df89d3cf6f0a73f84c08e9bfa9 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Tue, 30 Jul 2024 19:19:22 +0200 Subject: [PATCH 22/86] feat: Ignore queries warmup on PouchLink With previous changes, we now expect the CozyPouchLink to be the last link of the chain, so forwarding the query would result to an exception thrown This mean we cannot forward the query when warmup queries are not finished yet So we want to allow CozyPouchLink to ignore the verification step and process the query independently of the warmup queries status To allow this we introduce the `ignoreWarmup` parameter. When set to `true` the CozyPouchLink will process the query even if warmup is not finished yet Related PR: cozy/cozy-client#1506 --- src/pouchdb/getLinks.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pouchdb/getLinks.ts b/src/pouchdb/getLinks.ts index ac6e565f9..5ad1d6abe 100644 --- a/src/pouchdb/getLinks.ts +++ b/src/pouchdb/getLinks.ts @@ -29,7 +29,8 @@ export const getLinks = (): CozyLink[] => { const pouchLinkOptions = { doctypes: offlineDoctypes, initialSync: true, - platform: platformReactNative + platform: platformReactNative, + ignoreWarmup: true } const stackLink = new StackLink({ From 16782589b5f4e8e93ed1e7e6a5756fd2a0e69513 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Fri, 26 Jul 2024 17:34:58 +0200 Subject: [PATCH 23/86] feat: Declare schemas into cozy-client instance Some cozy-apps declare a data `schema` into cozy-client instance This schema is then used for processing queries As we now process cozy-app queries on the react-native side through FlagshipLinkRequest, we want to declared this schema in the Flagship app's cozy-client For now we only need to implement the one from cozy-home The ideal implementation would be to extract it from the cozy-app's bundle, but we did not implement anything to support this (we should first investigate how to do this). So for now it is hardcoded --- src/components/webviews/CozyWebview.spec.js | 1 + src/libs/client.js | 4 +- src/libs/client.spec.js | 3 +- src/libs/clientHelpers/createClient.ts | 4 +- src/pouchdb/schema.js | 56 ++++++++++++++++++++ src/screens/konnectors/LauncherView.spec.jsx | 1 + 6 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/pouchdb/schema.js diff --git a/src/components/webviews/CozyWebview.spec.js b/src/components/webviews/CozyWebview.spec.js index fa1b6e786..8efaf03b1 100644 --- a/src/components/webviews/CozyWebview.spec.js +++ b/src/components/webviews/CozyWebview.spec.js @@ -63,6 +63,7 @@ jest.mock('cozy-intent', () => ({ })) jest.mock('cozy-client', () => ({ + ...jest.requireActual('cozy-client'), useClient: jest.fn().mockReturnValue({}), useInstanceInfo: jest.fn().mockReturnValue({}) })) diff --git a/src/libs/client.js b/src/libs/client.js index d0efd3c35..76a32e393 100644 --- a/src/libs/client.js +++ b/src/libs/client.js @@ -35,6 +35,7 @@ import { } from '/libs/localStore/clientCachedStorage' import { CozyPersistedStorageKeys, getData } from '/libs/localStore/storage' import { getLinks } from '/pouchdb/getLinks' +import schema from '/pouchdb/schema' const log = Minilog('LoginScreen') @@ -58,7 +59,8 @@ export const getClient = async () => { slug: 'flagship', version: packageJSON.version }, - links + links, + schema }) listenTokenRefresh(client) client.getStackClient().setOAuthOptions(oauthOptions) diff --git a/src/libs/client.spec.js b/src/libs/client.spec.js index 6de3a03f8..0dc42695b 100644 --- a/src/libs/client.spec.js +++ b/src/libs/client.spec.js @@ -63,7 +63,8 @@ describe('client', () => { slug: 'flagship', version: packageJSON.version }, - links: expect.anything() + links: expect.anything(), + schema: expect.anything() }) }) diff --git a/src/libs/clientHelpers/createClient.ts b/src/libs/clientHelpers/createClient.ts index 8e16bc5bd..e53bdb70b 100644 --- a/src/libs/clientHelpers/createClient.ts +++ b/src/libs/clientHelpers/createClient.ts @@ -14,6 +14,7 @@ import packageJSON from '../../../package.json' import { startListening } from '/app/domain/authentication/services/AuthService' import { getLinks } from '/pouchdb/getLinks' +import schema from '/pouchdb/schema' /** * Create a CozyClient for the given Cozy instance and register it @@ -41,7 +42,8 @@ export const createClient = async (instance: string): Promise => { slug: 'flagship', version: packageJSON.version }, - links + links, + schema } const client = new CozyClient(options) diff --git a/src/pouchdb/schema.js b/src/pouchdb/schema.js new file mode 100644 index 000000000..b382eb36e --- /dev/null +++ b/src/pouchdb/schema.js @@ -0,0 +1,56 @@ +import { QueryDefinition, HasMany } from 'cozy-client' + +const CONTACTS_DOCTYPE = 'io.cozy.contacts' +const FILES_DOCTYPE = 'io.cozy.files' +const BILLS_DOCTYPE = 'io.cozy.bills' + +class HasManyBills extends HasMany { + get data() { + const refs = this.target.relationships.referenced_by.data + return refs + ? refs + .map(ref => { + if (ref.type === BILLS_DOCTYPE) { + return this.get(ref.type, ref.id) + } + }) + .filter(Boolean) + : [] + } + + static query(doc, client, assoc) { + if ( + !doc.relationships || + !doc.relationships.referenced_by || + !doc.relationships.referenced_by.data + ) { + return null + } + + const included = doc.relationships.referenced_by.data + const ids = included + .filter(inc => inc.type === assoc.doctype) + .map(inc => inc.id) + + return new QueryDefinition({ doctype: assoc.doctype, ids }) + } +} + +// the documents schema, necessary for CozyClient +export default { + contacts: { + doctype: CONTACTS_DOCTYPE, + attributes: {}, + relationships: {} + }, + files: { + doctype: FILES_DOCTYPE, + attributes: {}, + relationships: { + bills: { + type: HasManyBills, + doctype: BILLS_DOCTYPE + } + } + } +} diff --git a/src/screens/konnectors/LauncherView.spec.jsx b/src/screens/konnectors/LauncherView.spec.jsx index b1631ffa2..959a4d9be 100644 --- a/src/screens/konnectors/LauncherView.spec.jsx +++ b/src/screens/konnectors/LauncherView.spec.jsx @@ -10,6 +10,7 @@ jest.mock('@fengweichong/react-native-gzip', () => { }) jest.mock('cozy-client', () => ({ + ...jest.requireActual('cozy-client'), withClient: jest.fn().mockReturnValue({}) })) From 21ad73773b6eb3b7ac5930ec5b76917f0fd7b963 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Fri, 26 Jul 2024 17:37:59 +0200 Subject: [PATCH 24/86] feat: Add react-native-mail plugin --- __tests__/jestSetupFile.js | 8 ++++++++ ios/Podfile.lock | 12 ++++++++++++ package.json | 2 ++ yarn.lock | 27 ++++++++++++++++++++++++++- 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/__tests__/jestSetupFile.js b/__tests__/jestSetupFile.js index 026e3a601..d405b1a72 100644 --- a/__tests__/jestSetupFile.js +++ b/__tests__/jestSetupFile.js @@ -140,3 +140,11 @@ jest.mock('cozy-pouch-link', () => { return new mockPouchLink() }) }) + +jest.mock('react-native-mail', () => ({ + mail: jest.fn() +})) + +jest.mock('rn-fetch-blob', () => ({ + mail: jest.fn() +})) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 074c8d3ee..0e7bf7dc8 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1086,6 +1086,8 @@ PODS: - React - react-native-idle-timer (2.2.1): - React-Core + - react-native-mail (6.1.1): + - React-Core - react-native-mlkit-ocr (0.3.0): - GoogleMLKit/TextRecognition (= 2.6.0) - React @@ -1284,6 +1286,8 @@ PODS: - React-jsi (= 0.73.10) - React-logger (= 0.73.10) - React-perflogger (= 0.73.10) + - rn-fetch-blob (0.12.0): + - React-Core - RNBackgroundFetch (4.2.5): - React-Core - RNBackgroundGeolocation (4.16.4): @@ -1420,6 +1424,7 @@ DEPENDENCIES: - react-native-get-random-values (from `../node_modules/react-native-get-random-values`) - "react-native-gzip (from `../node_modules/@fengweichong/react-native-gzip`)" - react-native-idle-timer (from `../node_modules/react-native-idle-timer`) + - react-native-mail (from `../node_modules/react-native-mail`) - react-native-mlkit-ocr (from `../node_modules/react-native-mlkit-ocr`) - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-print (from `../node_modules/react-native-print`) @@ -1450,6 +1455,7 @@ DEPENDENCIES: - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - rn-fetch-blob (from `../node_modules/rn-fetch-blob`) - RNBackgroundFetch (from `../node_modules/react-native-background-fetch`) - RNBackgroundGeolocation (from `../node_modules/react-native-background-geolocation`) - RNBootSplash (from `../node_modules/react-native-bootsplash`) @@ -1595,6 +1601,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@fengweichong/react-native-gzip" react-native-idle-timer: :path: "../node_modules/react-native-idle-timer" + react-native-mail: + :path: "../node_modules/react-native-mail" react-native-mlkit-ocr: :path: "../node_modules/react-native-mlkit-ocr" react-native-netinfo: @@ -1655,6 +1663,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/utils" ReactCommon: :path: "../node_modules/react-native/ReactCommon" + rn-fetch-blob: + :path: "../node_modules/rn-fetch-blob" RNBackgroundFetch: :path: "../node_modules/react-native-background-fetch" RNBackgroundGeolocation: @@ -1780,6 +1790,7 @@ SPEC CHECKSUMS: react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06 react-native-gzip: 5ffb84bf191c7cd135338eca748317bc466d41a1 react-native-idle-timer: f1920a59fe776340d004ff9de13c4a6eedcc8807 + react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a react-native-mlkit-ocr: 72cdbde86f8d29cba26cf9fa0a1865fe45c8f8d6 react-native-netinfo: 48c5f79a84fbc3ba1d28a8b0d04adeda72885fa8 react-native-print: f704aef52d931bfce6d1d84351dbb5232d7ecb89 @@ -1810,6 +1821,7 @@ SPEC CHECKSUMS: React-runtimescheduler: 639000d08f94ee18017fad4c691c572bb6dfbe50 React-utils: c3a9bede4e9aa5c0a8184958cd4c09ff461fd60f ReactCommon: 92194c3d756b82bff5b75450544b2863b4df0d5f + rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba RNBackgroundFetch: 2f800a04434620db15ede2e8f21886608a2d1743 RNBackgroundGeolocation: 7df16548756b443aac809663cba8a4e03f0b8732 RNBootSplash: 4844706cbb56a3270556c9b94e59dedadccd47e4 diff --git a/package.json b/package.json index 4a8ea65a9..f12959545 100644 --- a/package.json +++ b/package.json @@ -109,6 +109,7 @@ "react-native-ios11-devicecheck": "https://github.com/cozy/react-native-devicecheck#app-attest-v0.1", "react-native-keychain": "^8.0.0", "react-native-localize": "2.2.6", + "react-native-mail": "^6.1.1", "react-native-mask-input": "1.2.1", "react-native-mlkit-ocr": "^0.3.0", "react-native-permissions": "^3.9.3", @@ -129,6 +130,7 @@ "react-scripts": "4.0.3", "redux-logger": "3.0.6", "redux-persist": "^6.0.0", + "rn-fetch-blob": "^0.12.0", "rn-flipper-async-storage-advanced": "^1.0.4", "semver": "^7.3.2" }, diff --git a/yarn.lock b/yarn.lock index 29a8be8af..05b68f452 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7508,7 +7508,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-64@^0.1.0: +base-64@0.1.0, base-64@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs= @@ -11418,6 +11418,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + integrity sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -17683,6 +17695,11 @@ react-native-localize@2.2.6: resolved "https://registry.yarnpkg.com/react-native-localize/-/react-native-localize-2.2.6.tgz#484f8c700bc629f230066e819265f80f6dd3ef58" integrity sha512-EZETlC1ZlW/4g6xfsNCwAkAw5BDL2A6zk/08JjFR/GRGxYuKRD7iP1hHn1+h6DEu+xROjPpoNeXfMER2vkTVIQ== +react-native-mail@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/react-native-mail/-/react-native-mail-6.1.1.tgz#f1b1f8034c84d2510a93e4a2a795f0db5a13595e" + integrity sha512-pTs180wwyh7hN/iyTC9SfOX579U4YhDlHOLxi47IGvhPJENqO/QFdBq+wWKxyhNqdQuVSy+LoeIxLreWnIeYmg== + react-native-mask-input@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/react-native-mask-input/-/react-native-mask-input-1.2.1.tgz#2f01683844ded3693d0d845bd1beeb2b8367f2e2" @@ -18477,6 +18494,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rn-fetch-blob@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/rn-fetch-blob/-/rn-fetch-blob-0.12.0.tgz#ec610d2f9b3f1065556b58ab9c106eeb256f3cba" + integrity sha512-+QnR7AsJ14zqpVVUbzbtAjq0iI8c9tCg49tIoKO2ezjzRunN7YL6zFSFSWZm6d+mE/l9r+OeDM3jmb2tBb2WbA== + dependencies: + base-64 "0.1.0" + glob "7.0.6" + rn-flipper-async-storage-advanced@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/rn-flipper-async-storage-advanced/-/rn-flipper-async-storage-advanced-1.0.4.tgz#ca3d0c315a75f379fef3771cc6ee3bef2d774265" From 2bd4f08ce8cd4b4cd951540719ddfa9dbb882dc6 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Fri, 26 Jul 2024 18:35:44 +0200 Subject: [PATCH 25/86] feat: Allow to send Pouch databases through email for debug purpose By adding offline support through PouchDB, we expect database related bugs to happens in the future In order to ease debugging them, we want to allow exploring the local PouchDB files The easier way is to add the ability to extract them from the device and send them through email to cozy's support team --- src/hooks/useAppBootstrap.js | 5 + src/hooks/useAppBootstrap.spec.js | 1 + src/pouchdb/deeplinkHandler.ts | 23 +++++ src/pouchdb/sendDbByEmail.ts | 146 ++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 src/pouchdb/deeplinkHandler.ts create mode 100644 src/pouchdb/sendDbByEmail.ts diff --git a/src/hooks/useAppBootstrap.js b/src/hooks/useAppBootstrap.js index c00d813a9..f2921b993 100644 --- a/src/hooks/useAppBootstrap.js +++ b/src/hooks/useAppBootstrap.js @@ -5,6 +5,7 @@ import { useEffect, useState } from 'react' import { deconstructCozyWebLinkWithSlug } from 'cozy-client' import { handleLogsDeepLink } from '/app/domain/logger/deeplinkHandler' +import { handleDbDeepLink } from '/pouchdb/deeplinkHandler' import { SentryCustomTags, setSentryTag } from '/libs/monitoring/Sentry' import { manageIconCache } from '/libs/functions/iconTable' import { getDefaultIconParams } from '/libs/functions/openApp' @@ -160,6 +161,10 @@ export const useAppBootstrap = client => { return } + if (handleDbDeepLink(url, client)) { + return + } + if (!client) { const action = parseOnboardLink(url) diff --git a/src/hooks/useAppBootstrap.spec.js b/src/hooks/useAppBootstrap.spec.js index 799fd4c5f..64935073d 100644 --- a/src/hooks/useAppBootstrap.spec.js +++ b/src/hooks/useAppBootstrap.spec.js @@ -50,6 +50,7 @@ jest.mock('/libs/RootNavigation', () => ({ jest.mock('./useSplashScreen', () => ({ useSplashScreen: () => ({ hideSplashScreen: mockHideSplashScreen }) })) +jest.mock('/app/theme/SplashScreenService', () => ({})) jest.mock('/libs/functions/openApp', () => ({ getDefaultIconParams: jest.fn().mockReturnValue({}) diff --git a/src/pouchdb/deeplinkHandler.ts b/src/pouchdb/deeplinkHandler.ts new file mode 100644 index 000000000..0867436a6 --- /dev/null +++ b/src/pouchdb/deeplinkHandler.ts @@ -0,0 +1,23 @@ +import CozyClient from 'cozy-client' + +import strings from '/constants/strings.json' +import { sendDbByEmail } from '/pouchdb/sendDbByEmail' + +export const handleDbDeepLink = (url: string, client?: CozyClient): boolean => { + if (isSendDbDeepLink(url)) { + void sendDbByEmail(client) + + return true + } + + return false +} + +const isSendDbDeepLink = (url: string): boolean => { + const deepLinks = [ + `${strings.COZY_SCHEME}senddb`, + `${strings.UNIVERSAL_LINK_BASE}/senddb` + ] + + return deepLinks.includes(url.toLowerCase()) +} diff --git a/src/pouchdb/sendDbByEmail.ts b/src/pouchdb/sendDbByEmail.ts new file mode 100644 index 000000000..e13ad654a --- /dev/null +++ b/src/pouchdb/sendDbByEmail.ts @@ -0,0 +1,146 @@ +import { Alert, PermissionsAndroid, Platform } from 'react-native' +import Mailer from 'react-native-mail' +import RNFS from 'react-native-fs' +import RNFetchBlob from 'rn-fetch-blob' +import DeviceInfo from 'react-native-device-info' + +import type CozyClient from 'cozy-client' +import Minilog from 'cozy-minilog' + +import { fetchSupportMail } from '/app/domain/logger/supportEmail' +import { + hideSplashScreen, + showSplashScreen, + splashScreens +} from '/app/theme/SplashScreenService' +import { getInstanceAndFqdnFromClient } from '/libs/client' +import { getErrorMessage } from '/libs/functions/getErrorMessage' + +const log = Minilog('🗒️ DB Mailer') + +export const sendDbByEmail = async (client?: CozyClient): Promise => { + log.info('Send DB by email') + + if (!client) { + log.info('SendDbByEmail called with no client, return') + return + } + + try { + const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE + await PermissionsAndroid.request(permission) + + const supportEmail = await fetchSupportMail(client) + + const { fqdn } = getInstanceAndFqdnFromClient(client) + + const instance = client.getStackClient().uri ?? 'not logged app' + + const subject = `DB files for ${instance}` + + const files = await RNFS.readDir(RNFS.DocumentDirectoryPath) + + const dbFiles = files.filter(f => f.name.startsWith(`${fqdn}_`)) + + const externalFiles = [] + for (const dbFile of dbFiles) { + const dirs = RNFetchBlob.fs.dirs + + const internalPath = dbFile.path + + if (Platform.OS === 'android') { + const date = Number(new Date()) + const externalPath = `${dirs.DCIMDir}/DbFile_${dbFile.name}${date}.sqlite` + + await RNFS.copyFile(internalPath, externalPath) + + externalFiles.push({ + path: externalPath + }) + } else { + externalFiles.push({ + path: dbFile.path, + type: 'pdf' // there is no compatible MIME type, so we use PDF one as replacement, this should change nothing expect the email aspect + }) + } + } + + await showSplashScreen(splashScreens.SEND_LOG_EMAIL) + log.info('Start email intent', externalFiles) + await sendMailPromise(subject, supportEmail, externalFiles).catch( + (errorData: sendMailError) => { + const { error, event } = errorData + Alert.alert( + error, + event, + [ + { + text: 'Ok', + onPress: (): void => log.debug('OK: Email Error Response') + }, + { + text: 'Cancel', + onPress: (): void => log.debug('CANCEL: Email Error Response') + } + ], + { cancelable: true } + ) + } + ) + log.info('Did finish email intent') + await hideSplashScreen(splashScreens.SEND_LOG_EMAIL) + } catch (error) { + const errorMessage = getErrorMessage(error) + log.error('Error while trying to send DB email', errorMessage) + } +} + +const sendMailPromise = ( + subject: string, + email: string, + attachments: Attachment[] +): Promise => { + return new Promise((resolve, reject) => { + Mailer.mail( + { + subject: subject, + recipients: [email], + body: buildMessageBody(), + isHTML: true, + attachments: attachments + }, + (error, event) => { + if (error) { + reject({ error, event }) + } else { + resolve() + } + } + ) + }) +} + +const buildMessageBody = (): string => { + const appVersion = DeviceInfo.getVersion() + const appBuild = DeviceInfo.getBuildNumber() + const bundle = DeviceInfo.getBundleId() + const deviceBrand = DeviceInfo.getBrand() + const deviceModel = DeviceInfo.getModel() + const os = DeviceInfo.getSystemName() + const version = DeviceInfo.getSystemVersion() + + const appInfo = `App info: ${appVersion} (${appBuild})` + const bundleInfo = `App bundle: ${bundle}` + const deviceInfo = `Device info: ${deviceBrand} ${deviceModel} ${os} ${version}` + + return `${appInfo}\n${bundleInfo}\n${deviceInfo}` +} + +interface sendMailError { + error: string + event?: string +} + +interface Attachment { + path: string +} From 00145a4cfa3c9fb75bcb18c1c1470e636ea071f0 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Tue, 30 Jul 2024 20:35:01 +0200 Subject: [PATCH 26/86] feat: Declare offline support in cozy-apps injected metadata --- src/components/webviews/jsInteractions/jsCozyInjection.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/webviews/jsInteractions/jsCozyInjection.ts b/src/components/webviews/jsInteractions/jsCozyInjection.ts index 6c1374da6..400a5ea9d 100644 --- a/src/components/webviews/jsInteractions/jsCozyInjection.ts +++ b/src/components/webviews/jsInteractions/jsCozyInjection.ts @@ -17,6 +17,7 @@ const makeMetadata = (routeName?: string): string => { return JSON.stringify({ immersive: routeName ? immersiveRoutes.includes(routeName) : false, navbarHeight, + offline_available: true, platform: Platform, routeName, statusBarHeight, From 7394c95ef1208753f4dd0ac762e1a2d2840377f0 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Fri, 13 Sep 2024 17:03:18 +0200 Subject: [PATCH 27/86] feat: Prevent local PouchDB modification to be replicated to remote DB For now we don't want to replicate local changes into remote PouchDB as we first want to ensure everything works as expected locally before activating two-way replication in the future --- src/pouchdb/getLinks.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pouchdb/getLinks.ts b/src/pouchdb/getLinks.ts index 5ad1d6abe..b4ffe5781 100644 --- a/src/pouchdb/getLinks.ts +++ b/src/pouchdb/getLinks.ts @@ -30,7 +30,17 @@ export const getLinks = (): CozyLink[] => { doctypes: offlineDoctypes, initialSync: true, platform: platformReactNative, - ignoreWarmup: true + ignoreWarmup: true, + doctypesReplicationOptions: Object.fromEntries( + offlineDoctypes.map(doctype => { + return [ + doctype, + { + strategy: 'fromRemote' + } + ] + }) + ) } const stackLink = new StackLink({ From e92554d5329b43a528738bd98230a2c1615bea7f Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Thu, 8 Aug 2024 15:13:08 +0200 Subject: [PATCH 28/86] feat: Add `downloadFile` in localMethods and handle offline files When the application is offline, we want the user to be able to access their files that are accessible offline To make this possible, we want the Flagship app to provide a new `downloadFileAndPreview()` interface that can be called from cozy-apps Internally this method should allow to download and preview files, but also to store them in the device's storage in order to make them accessible later even when the app is offline This method will be called from cozy-client through `file` model For now we make files accessible only if they have already downloaded once In the following commit we will make important files accessible in a proactive way --- src/@types/cozy-client.d.ts | 1 + .../services/BiometryService.spec.ts | 4 + .../services/LockScreenService.spec.ts | 4 + .../domain/io.cozy.files/offlineFiles.spec.ts | 246 ++++++++++++++++++ src/app/domain/io.cozy.files/offlineFiles.ts | 115 ++++++++ .../offlineFilesConfiguration.ts | 55 ++++ src/app/domain/io.cozy.files/remoteFiles.ts | 31 +++ .../settings/services/SettingsService.spec.ts | 3 + src/app/view/Secure/PinPrompt.spec.tsx | 3 + src/hooks/useGlobalAppState.spec.ts | 4 + src/libs/intents/localMethods.spec.ts | 3 + src/libs/intents/localMethods.ts | 4 + src/libs/localStore/storage.ts | 5 +- 13 files changed, 477 insertions(+), 1 deletion(-) create mode 100644 src/app/domain/io.cozy.files/offlineFiles.spec.ts create mode 100644 src/app/domain/io.cozy.files/offlineFiles.ts create mode 100644 src/app/domain/io.cozy.files/offlineFilesConfiguration.ts create mode 100644 src/app/domain/io.cozy.files/remoteFiles.ts diff --git a/src/@types/cozy-client.d.ts b/src/@types/cozy-client.d.ts index 323ff019c..90c4de695 100644 --- a/src/@types/cozy-client.d.ts +++ b/src/@types/cozy-client.d.ts @@ -111,6 +111,7 @@ declare module 'cozy-client' { export interface FileCollectionGetResult { data: { _id: string + _rev: string name: string path: string metadata?: { diff --git a/src/app/domain/authentication/services/BiometryService.spec.ts b/src/app/domain/authentication/services/BiometryService.spec.ts index 3a75df0e7..fe3033404 100644 --- a/src/app/domain/authentication/services/BiometryService.spec.ts +++ b/src/app/domain/authentication/services/BiometryService.spec.ts @@ -28,6 +28,10 @@ jest.mock('react-native-keychain') jest.mock('@react-native-cookies/cookies', () => ({})) +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn() +})) + it('should not throw with a null hasBiometry', async () => { const result = await makeFlagshipMetadataInjection() expect(result).toStrictEqual( diff --git a/src/app/domain/authorization/services/LockScreenService.spec.ts b/src/app/domain/authorization/services/LockScreenService.spec.ts index 3dff83eaa..fedeb5e33 100644 --- a/src/app/domain/authorization/services/LockScreenService.spec.ts +++ b/src/app/domain/authorization/services/LockScreenService.spec.ts @@ -40,6 +40,10 @@ jest.mock('cozy-client', () => ({ })) })) +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn() +})) + describe('validatePassword', () => { // Mocks and common setup let client: CozyClient diff --git a/src/app/domain/io.cozy.files/offlineFiles.spec.ts b/src/app/domain/io.cozy.files/offlineFiles.spec.ts new file mode 100644 index 000000000..5c6e750e1 --- /dev/null +++ b/src/app/domain/io.cozy.files/offlineFiles.spec.ts @@ -0,0 +1,246 @@ +import RNFS from 'react-native-fs' + +import CozyClient, { createMockClient } from 'cozy-client' +import { FileDocument } from 'cozy-client/types/types' + +import { + downloadFile, + getFilesFolder +} from '/app/domain/io.cozy.files/offlineFiles' +import { + addOfflineFileToConfiguration, + getOfflineFileFromConfiguration, + OfflineFile +} from '/app/domain/io.cozy.files/offlineFilesConfiguration' +import { + getDownloadUrlById, + getFileById +} from '/app/domain/io.cozy.files/remoteFiles' + +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn() +})) +jest.mock('/app/domain/io.cozy.files/offlineFilesConfiguration', () => ({ + addOfflineFileToConfiguration: jest.fn(), + getOfflineFileFromConfiguration: jest.fn() +})) +jest.mock('/app/domain/io.cozy.files/remoteFiles', () => ({ + getFileById: jest.fn(), + getDownloadUrlById: jest.fn() +})) + +jest.mock('react-native-fs', () => { + return { + DocumentDirectoryPath: '/mockedDocumentDirectoryPath', + downloadFile: jest.fn().mockImplementation(() => ({ + promise: Promise.resolve({ + jobId: 1, + statusCode: 200, + bytesWritten: 100, + path: () => 'mocked-file-path' + }) + })), + mkdir: jest.fn(), + unlink: jest.fn() + } +}) + +const mockGetOfflineFileFromConfiguration = + getOfflineFileFromConfiguration as jest.MockedFunction< + typeof getOfflineFileFromConfiguration + > +const mockGetFileById = getFileById as jest.MockedFunction +const mockGetDownloadUrlById = getDownloadUrlById as jest.MockedFunction< + typeof getDownloadUrlById +> + +describe('offlineFiles', () => { + let mockClient: jest.Mocked + + beforeEach(() => { + const options = { + clientOptions: { + uri: 'http://claude.mycozy.cloud' + } + } as object + mockClient = createMockClient( + options + ) as Partial as jest.Mocked + }) + + afterEach(() => { + jest.clearAllMocks() + }) + + describe('getFilesFolder', () => { + it('should return File path relative to instance url', () => { + const result = getFilesFolder(mockClient) + + expect(result).toBe( + '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files' + ) + }) + }) + + describe('downloadFile', () => { + it('should download file if not existing', async () => { + mockRemoteFile({ + _id: 'SOME_FILE_ID', + _rev: 'SOME_REV', + name: 'SOME_FILE_NAME' + }) + mockDownloadUrl('SOME_FILE_DOWNLOAD_URL') + mockFileFromConfiguration(undefined) + const file = { + _id: 'SOME_FILE_ID', + name: 'SOME_FILE_NAME' + } as unknown as FileDocument + const result = await downloadFile(file, mockClient) + + expect(RNFS.downloadFile).toHaveBeenCalledWith({ + fromUrl: 'SOME_FILE_DOWNLOAD_URL', + toFile: + '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_FILE_NAME', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + begin: expect.anything(), + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + progress: expect.anything(), + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + progressInterval: expect.anything() + }) + expect(result).toBe( + '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_FILE_NAME' + ) + expect(addOfflineFileToConfiguration).toHaveBeenCalledWith({ + id: 'SOME_FILE_ID', + path: '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_FILE_NAME', + rev: 'SOME_REV' + }) + }) + + it('should not download file if existing', async () => { + mockRemoteFile({ + _id: 'SOME_FILE_ID', + _rev: 'SOME_REV', + name: 'SOME_FILE_NAME' + }) + mockFileFromConfiguration({ + id: 'SOME_FILE_ID', + rev: 'SOME_REV', + path: 'SOME_EXISTING_PATH_FROM_CACHE', + lastOpened: new Date() + }) + const file = { + _id: 'SOME_FILE_ID', + name: 'SOME_FILE_NAME' + } as unknown as FileDocument + const result = await downloadFile(file, mockClient) + + expect(RNFS.downloadFile).not.toHaveBeenCalled() + expect(result).toBe('SOME_EXISTING_PATH_FROM_CACHE') + expect(addOfflineFileToConfiguration).not.toHaveBeenCalled() + }) + + it('should download file if existing but with different rev', async () => { + mockRemoteFile({ + _id: 'SOME_FILE_ID', + _rev: 'SOME_NEW_REV', + name: 'SOME_FILE_NAME' + }) + mockDownloadUrl('SOME_NEW_FILE_DOWNLOAD_URL') + mockFileFromConfiguration({ + id: 'SOME_FILE_ID', + rev: 'SOME_REV', + path: 'SOME_EXISTING_PATH_FROM_CACHE', + lastOpened: new Date() + }) + const file = { + _id: 'SOME_FILE_ID', + name: 'SOME_FILE_NAME' + } as unknown as FileDocument + const result = await downloadFile(file, mockClient) + + expect(RNFS.downloadFile).toHaveBeenCalledWith({ + fromUrl: 'SOME_NEW_FILE_DOWNLOAD_URL', + toFile: + '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_FILE_NAME', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + begin: expect.anything(), + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + progress: expect.anything(), + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + progressInterval: expect.anything() + }) + expect(result).toBe( + '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_FILE_NAME' + ) + expect(addOfflineFileToConfiguration).toHaveBeenCalledWith({ + id: 'SOME_FILE_ID', + path: '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_FILE_NAME', + rev: 'SOME_NEW_REV' + }) + }) + + it('should use new file name new rev with different name', async () => { + mockRemoteFile({ + _id: 'SOME_FILE_ID', + _rev: 'SOME_NEW_REV', + name: 'SOME_NEW_FILE_NAME' + }) + mockDownloadUrl('SOME_NEW_FILE_DOWNLOAD_URL') + mockFileFromConfiguration({ + id: 'SOME_FILE_ID', + rev: 'SOME_REV', + path: 'SOME_EXISTING_PATH_FROM_CACHE', + lastOpened: new Date() + }) + const file = { + _id: 'SOME_FILE_ID', + name: 'SOME_FILE_NAME' + } as unknown as FileDocument + const result = await downloadFile(file, mockClient) + + expect(RNFS.downloadFile).toHaveBeenCalledWith({ + fromUrl: 'SOME_NEW_FILE_DOWNLOAD_URL', + toFile: + '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_NEW_FILE_NAME', + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + begin: expect.anything(), + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + progress: expect.anything(), + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + progressInterval: expect.anything() + }) + expect(RNFS.unlink).toHaveBeenCalledWith('SOME_EXISTING_PATH_FROM_CACHE') + expect(result).toBe( + '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_NEW_FILE_NAME' + ) + expect(addOfflineFileToConfiguration).toHaveBeenCalledWith({ + id: 'SOME_FILE_ID', + path: '/mockedDocumentDirectoryPath/claude.mycozy.cloud/Files/SOME_NEW_FILE_NAME', + rev: 'SOME_NEW_REV' + }) + }) + }) +}) + +const mockFileFromConfiguration = (file: OfflineFile | undefined): void => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + mockGetOfflineFileFromConfiguration.mockResolvedValue(file) +} + +const mockRemoteFile = (file: RemoteFile): void => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + mockGetFileById.mockResolvedValue(file as unknown as FileDocument) +} + +const mockDownloadUrl = (url: string): void => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + mockGetDownloadUrlById.mockResolvedValue(url) +} + +interface RemoteFile { + _id: string + _rev: string + name: string +} diff --git a/src/app/domain/io.cozy.files/offlineFiles.ts b/src/app/domain/io.cozy.files/offlineFiles.ts new file mode 100644 index 000000000..66afe5a22 --- /dev/null +++ b/src/app/domain/io.cozy.files/offlineFiles.ts @@ -0,0 +1,115 @@ +import FileViewer from 'react-native-file-viewer' +import RNFS from 'react-native-fs' + +import CozyClient from 'cozy-client' +import type { FileDocument } from 'cozy-client/types/types' +import Minilog from 'cozy-minilog' + +import { + addOfflineFileToConfiguration, + getOfflineFileFromConfiguration +} from '/app/domain/io.cozy.files/offlineFilesConfiguration' +import { + getDownloadUrlById, + getFileById +} from '/app/domain/io.cozy.files/remoteFiles' +import { getInstanceAndFqdnFromClient } from '/libs/client' +import { normalizeFqdn } from '/libs/functions/stringHelpers' + +const log = Minilog('📁 Offline Files') + +export const getFilesFolder = (client: CozyClient): string => { + const { fqdn } = getInstanceAndFqdnFromClient(client) + + const normalizedFqdn = normalizeFqdn(fqdn) + + const destinationPath = `${RNFS.DocumentDirectoryPath}/${normalizedFqdn}/Files` + + return destinationPath +} + +const ensureFilesFolder = async (client: CozyClient): Promise => { + await RNFS.mkdir(getFilesFolder(client)) +} + +export const downloadFile = async ( + file: FileDocument, + client: CozyClient, + setDownloadProgress?: (progress: number) => void +): Promise => { + try { + log.debug('Download file', file._id) + + await ensureFilesFolder(client) + + const filesFolder = getFilesFolder(client) + + const existingFile = await getOfflineFileFromConfiguration(file._id) + + const remoteFile = await getFileById(client, file._id) + + if (existingFile && existingFile.rev === remoteFile._rev) { + log.debug(`File ${file._id} already exist, returning existing one`) + return existingFile.path + } + + const filename = remoteFile.name + + const downloadURL = await getDownloadUrlById(client, file._id, filename) + + const destinationPath = `${filesFolder}/${filename}` + + const result = await RNFS.downloadFile({ + fromUrl: downloadURL, + toFile: `${filesFolder}/${filename}`, + begin: () => undefined, + progress: res => { + const progressPercent = res.bytesWritten / res.contentLength + setDownloadProgress?.(progressPercent) + }, + progressInterval: 100 + }).promise + + log.debug(`Donload result is ${JSON.stringify(result)}`) + + const { statusCode } = result + + if (statusCode < 200 || statusCode >= 300) { + throw new Error(`Status code: ${statusCode}`) + } + + setDownloadProgress?.(0) + + await addOfflineFileToConfiguration({ + id: file._id, + rev: remoteFile._rev, + path: destinationPath + }) + + // If the file's new Rev has a new name, we should delete old file version as file path also changed + if (existingFile && existingFile.path !== destinationPath) { + await RNFS.unlink(existingFile.path) + } + + return destinationPath + // return destinationPath + } catch (error) { + log.error('Something went wrong while downloading file', error) + throw error + } +} + +export const downloadFileAndPreview = async ( + file: FileDocument, + client: CozyClient | undefined +): Promise => { + if (!client) { + throw new Error('You must be logged in to use backup feature') + } + + const filePath = await downloadFile(file, client) + + await FileViewer.open(filePath) + + return null +} diff --git a/src/app/domain/io.cozy.files/offlineFilesConfiguration.ts b/src/app/domain/io.cozy.files/offlineFilesConfiguration.ts new file mode 100644 index 000000000..07e094c0b --- /dev/null +++ b/src/app/domain/io.cozy.files/offlineFilesConfiguration.ts @@ -0,0 +1,55 @@ +import { CozyPersistedStorageKeys, getData, storeData } from '/libs/localStore' + +export interface OfflineFile { + id: string + rev: string + path: string +} + +export type OfflineFilesConfiguration = Map +export type SerializedOfflineFilesConfiguration = [string, OfflineFile][] + +export const getOfflineFilesConfiguration = + async (): Promise => { + const filesArray = await getData( + CozyPersistedStorageKeys.OfflineFiles + ) + + const files = new Map(filesArray) + + return files + } + +export const addOfflineFileToConfiguration = async (file: OfflineFile) => { + const files = await getOfflineFilesConfiguration() + + files.set(file.id, file) + + const filesArray = Array.from(files.entries()) + + return storeData(CozyPersistedStorageKeys.OfflineFiles, filesArray) +} + +export const removeOfflineFileFromConfiguration = async ( + fileId: string +): Promise => { + const files = await getOfflineFilesConfiguration() + + files.delete(fileId) + + const filesArray = Array.from(files.entries()) + + return storeData(CozyPersistedStorageKeys.OfflineFiles, filesArray) +} + +export const getOfflineFileFromConfiguration = async ( + fileId: string +): Promise => { + const files = await getOfflineFilesConfiguration() + + if (files.has(fileId)) { + return files.get(fileId) + } + + return undefined +} diff --git a/src/app/domain/io.cozy.files/remoteFiles.ts b/src/app/domain/io.cozy.files/remoteFiles.ts new file mode 100644 index 000000000..3f03700c0 --- /dev/null +++ b/src/app/domain/io.cozy.files/remoteFiles.ts @@ -0,0 +1,31 @@ +import CozyClient, { FileCollectionGetResult, Q } from 'cozy-client' +import { FileDocument } from 'cozy-client/types/types' + +export const DOCTYPE_FILES = 'io.cozy.files' + +export const getFileById = async ( + client: CozyClient, + id: string +): Promise => { + const query = Q(DOCTYPE_FILES).getById(id) + const { data } = (await client.query(query)) as FileCollectionGetResult + + return data as unknown as FileDocument +} + +export const getDownloadUrlById = async ( + client: CozyClient, + id: string, + filename: string +): Promise => { + const fileCollection = client.collection( + DOCTYPE_FILES + ) as unknown as FileCollection + const downloadURL = await fileCollection.getDownloadLinkById(id, filename) + + return downloadURL +} + +interface FileCollection { + getDownloadLinkById: (id: string, filename: string) => Promise +} diff --git a/src/app/domain/settings/services/SettingsService.spec.ts b/src/app/domain/settings/services/SettingsService.spec.ts index c21d8fb2e..1aaad4619 100644 --- a/src/app/domain/settings/services/SettingsService.spec.ts +++ b/src/app/domain/settings/services/SettingsService.spec.ts @@ -9,6 +9,9 @@ import { ensureAutoLockIsEnabled } from '/app/domain/settings/services/SettingsS jest.mock('@react-native-cookies/cookies', () => ({ clearAll: jest.fn() })) +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn() +})) describe('ensureAutoLockIsEnabled', () => { beforeEach(async () => await clearCozyData()) diff --git a/src/app/view/Secure/PinPrompt.spec.tsx b/src/app/view/Secure/PinPrompt.spec.tsx index 1ad5ab771..322de14c6 100644 --- a/src/app/view/Secure/PinPrompt.spec.tsx +++ b/src/app/view/Secure/PinPrompt.spec.tsx @@ -22,6 +22,9 @@ jest.mock('/app/view/Lock/useLockScreenWrapper', () => ({ hideSecurityScreen: jest.fn(), showSecurityScreen: jest.fn() })) +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn() +})) // This is our main test suite for the PinPrompt component describe('PinPrompt', () => { diff --git a/src/hooks/useGlobalAppState.spec.ts b/src/hooks/useGlobalAppState.spec.ts index e02d69144..e7f20269c 100644 --- a/src/hooks/useGlobalAppState.spec.ts +++ b/src/hooks/useGlobalAppState.spec.ts @@ -2,6 +2,10 @@ import { Platform } from 'react-native' import { _shouldLockApp } from '/app/domain/authorization/services/SecurityService' +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn() +})) + afterAll(jest.resetModules) it('should always lock the application on iOS devices when running through the autolock check, ignoring timer', () => { diff --git a/src/libs/intents/localMethods.spec.ts b/src/libs/intents/localMethods.spec.ts index f4b6d73d2..b0912d820 100644 --- a/src/libs/intents/localMethods.spec.ts +++ b/src/libs/intents/localMethods.spec.ts @@ -17,6 +17,9 @@ jest.mock('../RootNavigation') jest.mock('@react-native-cookies/cookies', () => ({ clearAll: jest.fn() })) +jest.mock('react-native-file-viewer', () => ({ + open: jest.fn() +})) describe('asyncLogout', () => { const client = { diff --git a/src/libs/intents/localMethods.ts b/src/libs/intents/localMethods.ts index 0c68a441b..9fe369690 100644 --- a/src/libs/intents/localMethods.ts +++ b/src/libs/intents/localMethods.ts @@ -2,6 +2,7 @@ import { Linking } from 'react-native' import { getDeviceName } from 'react-native-device-info' import CozyClient, { QueryDefinition } from 'cozy-client' +import type { FileDocument } from 'cozy-client/types/types' import { FlagshipUI, NativeMethodsRegisterWithOptions, @@ -60,6 +61,7 @@ import { sendGeolocationTrackingLogs, forceUploadGeolocationTrackingData } from '/app/domain/geolocation/services/tracking' +import { downloadFileAndPreview } from '/app/domain/io.cozy.files/offlineFiles' import { checkPermissions, requestPermissions @@ -401,6 +403,8 @@ export const localMethods = ( ) => Promise.resolve(setColorScheme(colorScheme)), flagshipLinkRequest: (_options, operation) => flagshipLinkRequest(operation as QueryDefinition, client), + downloadFile: (_options, file) => + downloadFileAndPreview(file as FileDocument, client), ...mergedMethods } } diff --git a/src/libs/localStore/storage.ts b/src/libs/localStore/storage.ts index d3e8dd9d4..930d5eb8b 100644 --- a/src/libs/localStore/storage.ts +++ b/src/libs/localStore/storage.ts @@ -4,6 +4,7 @@ import { BiometryType } from 'react-native-biometrics' import { logger } from '/libs/functions/logger' import type { FirstTimeserie } from '/app/domain/geolocation/helpers/quota' +import { SerializedOfflineFilesConfiguration } from '/app/domain/io.cozy.files/offlineFilesConfiguration' import type { OnboardingPartner } from '/screens/welcome/install-referrer/onboardingPartner' import { OauthData } from '/libs/clientHelpers/persistClient' @@ -36,7 +37,8 @@ export enum CozyPersistedStorageKeys { ServiceWebhookURL = 'CozyGPSMemory.ServiceWebhookURL', Oauth = '@cozy_AmiralAppOAuthConfig', Cookie = '@cozy_AmiralAppCookieConfig', - SessionCreated = '@cozy_AmiralAppSessionCreated' + SessionCreated = '@cozy_AmiralAppSessionCreated', + OfflineFiles = '@cozy_AmiralAppOfflineFiles' } /* @@ -62,6 +64,7 @@ export interface StorageItems { cookie: Cookies clouderyEnv: string logsEnabled: number + offlineFiles: SerializedOfflineFilesConfiguration } export const storeData = async ( From 12c1cf4678d6d579f2b8c383e2fc88666f9fa27a Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Thu, 8 Aug 2024 15:23:04 +0200 Subject: [PATCH 29/86] feat: Make import files automatically available offline We want the user's important files to always be accessible offline To make this possible, we want the app to download them in background on startup We consider important files as files from `mespapiers` with specific qualification labels like passport, identification papers, vehicle registration, etc. --- src/App.js | 8 ++++ .../domain/io.cozy.files/importantFiles.ts | 44 +++++++++++++++++++ src/app/domain/io.cozy.files/remoteFiles.ts | 37 ++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 src/app/domain/io.cozy.files/importantFiles.ts diff --git a/src/App.js b/src/App.js index beb1f458b..f942a9413 100644 --- a/src/App.js +++ b/src/App.js @@ -59,6 +59,7 @@ import { LauncherContextProvider } from '/screens/home/hooks/useLauncherContext' import LauncherView from '/screens/konnectors/LauncherView' +import { makeImportantFilesAvailableOfflineInBackground } from '/app/domain/io.cozy.files/importantFiles' import { useShareFiles } from '/app/domain/osReceive/services/shareFilesService' import { ClouderyOffer } from '/app/view/IAP/ClouderyOffer' import { useDimensions } from '/libs/dimensions' @@ -112,6 +113,13 @@ const App = ({ setClient }) => { setLauncherContext } = useLauncherContext() + useEffect(() => { + if (!client) { + return + } + makeImportantFilesAvailableOfflineInBackground(client) + }, [client]) + if (isLoading) { return null } diff --git a/src/app/domain/io.cozy.files/importantFiles.ts b/src/app/domain/io.cozy.files/importantFiles.ts new file mode 100644 index 000000000..50742295f --- /dev/null +++ b/src/app/domain/io.cozy.files/importantFiles.ts @@ -0,0 +1,44 @@ +import CozyClient from 'cozy-client' +import Minilog from 'cozy-minilog' + +import { downloadFile } from '/app/domain/io.cozy.files/offlineFiles' +import { + getOfflineFilesConfiguration, + removeOfflineFileFromConfiguration +} from '/app/domain/io.cozy.files/offlineFilesConfiguration' +import { getImportantFiles } from '/app/domain/io.cozy.files/remoteFiles' +import { getErrorMessage } from '/libs/functions/getErrorMessage' + +const log = Minilog('📁 Offline Files') + +const IMPORTANT_FILES_DOWNLOAD_DELAY_IN_MS = 100 + +export const makeImportantFilesAvailableOfflineInBackground = ( + client: CozyClient +): Promise => { + return new Promise(resolve => { + setTimeout(() => { + makeImportantFilesAvailableOffline(client) + .then(resolve) + .catch(error => { + const errorMessage = getErrorMessage(error) + log.error( + `Something went wrong while making important files available offline: ${errorMessage}`, + resolve() + ) + }) + }, IMPORTANT_FILES_DOWNLOAD_DELAY_IN_MS) + }) +} + +const makeImportantFilesAvailableOffline = async ( + client: CozyClient +): Promise => { + log.debug('Start downloading important files for offline support') + const importantFiles = await getImportantFiles(client) + + for (const importantFile of importantFiles) { + log.debug(`Start downloading file ${importantFile._id}`) + await downloadFile(importantFile, client) + } +} diff --git a/src/app/domain/io.cozy.files/remoteFiles.ts b/src/app/domain/io.cozy.files/remoteFiles.ts index 3f03700c0..ab325cc4c 100644 --- a/src/app/domain/io.cozy.files/remoteFiles.ts +++ b/src/app/domain/io.cozy.files/remoteFiles.ts @@ -3,6 +3,18 @@ import { FileDocument } from 'cozy-client/types/types' export const DOCTYPE_FILES = 'io.cozy.files' +const IMPORTANT_PAPERS = [ + 'bank_details', + 'driver_license', + 'identity_photo', + 'national_health_insurance_card', + 'national_id_card', + 'passport', + 'residence_permit', + 'resume', + 'vehicle_registration' +] + export const getFileById = async ( client: CozyClient, id: string @@ -26,6 +38,31 @@ export const getDownloadUrlById = async ( return downloadURL } +export const getImportantFiles = async ( + client: CozyClient +): Promise => { + const query = Q(DOCTYPE_FILES) + .where({ + created_at: { + $gt: null + }, + 'metadata.qualification.label': { + $in: IMPORTANT_PAPERS + } + }) + .partialIndex({ + type: 'file', + trashed: false, + 'cozyMetadata.createdByApp': { $exists: true } + }) + .indexFields(['created_at', 'metadata.qualification.label']) + .sortBy([{ created_at: 'desc' }]) + + const { data } = (await client.query(query)) as FileCollectionGetResult + + return data as unknown as FileDocument[] +} + interface FileCollection { getDownloadLinkById: (id: string, filename: string) => Promise } From c8913a56c7133a5f197a49cc7550e10bf798c212 Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Thu, 8 Aug 2024 15:25:51 +0200 Subject: [PATCH 30/86] feat: Clean non-important offline files when too old As we store offline accessible files in the device's storage, we want to prevent them to fill the entire device's storage We chose to keep only files that were accessed in the previous month. All other files would be deleted Important files are never deleted as long as they exist on the Cozy instance --- .../domain/io.cozy.files/importantFiles.ts | 44 +++++++++++++++++++ .../domain/io.cozy.files/offlineFiles.spec.ts | 27 +++++++++++- src/app/domain/io.cozy.files/offlineFiles.ts | 4 +- .../offlineFilesConfiguration.ts | 26 +++++++++-- 4 files changed, 95 insertions(+), 6 deletions(-) diff --git a/src/app/domain/io.cozy.files/importantFiles.ts b/src/app/domain/io.cozy.files/importantFiles.ts index 50742295f..3a1d0d0f1 100644 --- a/src/app/domain/io.cozy.files/importantFiles.ts +++ b/src/app/domain/io.cozy.files/importantFiles.ts @@ -1,4 +1,8 @@ +import { differenceInMonths } from 'date-fns' +import RNFS from 'react-native-fs' + import CozyClient from 'cozy-client' +import type { FileDocument } from 'cozy-client/types/types' import Minilog from 'cozy-minilog' import { downloadFile } from '/app/domain/io.cozy.files/offlineFiles' @@ -12,6 +16,7 @@ import { getErrorMessage } from '/libs/functions/getErrorMessage' const log = Minilog('📁 Offline Files') const IMPORTANT_FILES_DOWNLOAD_DELAY_IN_MS = 100 +const NB_OF_MONTH_BEFORE_EXPIRATION = 1 export const makeImportantFilesAvailableOfflineInBackground = ( client: CozyClient @@ -37,8 +42,47 @@ const makeImportantFilesAvailableOffline = async ( log.debug('Start downloading important files for offline support') const importantFiles = await getImportantFiles(client) + await cleanOldNonImportantFiles(importantFiles) + for (const importantFile of importantFiles) { log.debug(`Start downloading file ${importantFile._id}`) await downloadFile(importantFile, client) } } + +const cleanOldNonImportantFiles = async ( + importantFiles: FileDocument[] +): Promise => { + try { + const offlineFiles = await getOfflineFilesConfiguration() + const offlineFilesMap = Array.from(offlineFiles) + + const importantFilesIds = importantFiles.map(file => file._id) + + const now = new Date() + + for (const [, offlineFile] of offlineFilesMap) { + const lastOpened = offlineFile.lastOpened + if ( + !importantFilesIds.includes(offlineFile.id) && + (differenceInMonths(lastOpened, now) > NB_OF_MONTH_BEFORE_EXPIRATION || + !lastOpened) + ) { + log.debug( + `Remove old unimportant file ${ + offlineFile.id + } (last opened on ${lastOpened.toString()})` + ) + if (await RNFS.exists(offlineFile.path)) { + await RNFS.unlink(offlineFile.path) + } + await removeOfflineFileFromConfiguration(offlineFile.id) + } + } + } catch (error) { + const errorMessage = getErrorMessage(error) + log.error( + `Something went wrong while cleaning non-important files: ${errorMessage}` + ) + } +} diff --git a/src/app/domain/io.cozy.files/offlineFiles.spec.ts b/src/app/domain/io.cozy.files/offlineFiles.spec.ts index 5c6e750e1..69863ad01 100644 --- a/src/app/domain/io.cozy.files/offlineFiles.spec.ts +++ b/src/app/domain/io.cozy.files/offlineFiles.spec.ts @@ -10,7 +10,8 @@ import { import { addOfflineFileToConfiguration, getOfflineFileFromConfiguration, - OfflineFile + OfflineFile, + updateLastOpened } from '/app/domain/io.cozy.files/offlineFilesConfiguration' import { getDownloadUrlById, @@ -22,7 +23,8 @@ jest.mock('react-native-file-viewer', () => ({ })) jest.mock('/app/domain/io.cozy.files/offlineFilesConfiguration', () => ({ addOfflineFileToConfiguration: jest.fn(), - getOfflineFileFromConfiguration: jest.fn() + getOfflineFileFromConfiguration: jest.fn(), + updateLastOpened: jest.fn() })) jest.mock('/app/domain/io.cozy.files/remoteFiles', () => ({ getFileById: jest.fn(), @@ -141,6 +143,27 @@ describe('offlineFiles', () => { expect(addOfflineFileToConfiguration).not.toHaveBeenCalled() }) + it('should update lastOpened attribute if file exists', async () => { + mockRemoteFile({ + _id: 'SOME_FILE_ID', + _rev: 'SOME_REV', + name: 'SOME_FILE_NAME' + }) + mockFileFromConfiguration({ + id: 'SOME_FILE_ID', + rev: 'SOME_REV', + path: 'SOME_EXISTING_PATH_FROM_CACHE', + lastOpened: new Date() + }) + const file = { + _id: 'SOME_FILE_ID', + name: 'SOME_FILE_NAME' + } as unknown as FileDocument + await downloadFile(file, mockClient) + + expect(updateLastOpened).toHaveBeenCalledWith('SOME_FILE_ID') + }) + it('should download file if existing but with different rev', async () => { mockRemoteFile({ _id: 'SOME_FILE_ID', diff --git a/src/app/domain/io.cozy.files/offlineFiles.ts b/src/app/domain/io.cozy.files/offlineFiles.ts index 66afe5a22..2c33ae58b 100644 --- a/src/app/domain/io.cozy.files/offlineFiles.ts +++ b/src/app/domain/io.cozy.files/offlineFiles.ts @@ -7,7 +7,8 @@ import Minilog from 'cozy-minilog' import { addOfflineFileToConfiguration, - getOfflineFileFromConfiguration + getOfflineFileFromConfiguration, + updateLastOpened } from '/app/domain/io.cozy.files/offlineFilesConfiguration' import { getDownloadUrlById, @@ -50,6 +51,7 @@ export const downloadFile = async ( if (existingFile && existingFile.rev === remoteFile._rev) { log.debug(`File ${file._id} already exist, returning existing one`) + await updateLastOpened(file._id) return existingFile.path } diff --git a/src/app/domain/io.cozy.files/offlineFilesConfiguration.ts b/src/app/domain/io.cozy.files/offlineFilesConfiguration.ts index 07e094c0b..f6ba26bb5 100644 --- a/src/app/domain/io.cozy.files/offlineFilesConfiguration.ts +++ b/src/app/domain/io.cozy.files/offlineFilesConfiguration.ts @@ -4,6 +4,7 @@ export interface OfflineFile { id: string rev: string path: string + lastOpened: Date } export type OfflineFilesConfiguration = Map @@ -20,11 +21,16 @@ export const getOfflineFilesConfiguration = return files } -export const addOfflineFileToConfiguration = async (file: OfflineFile) => { +export const addOfflineFileToConfiguration = async ( + file: Omit +): Promise => { const files = await getOfflineFilesConfiguration() - files.set(file.id, file) - + files.set(file.id, { + ...file, + lastOpened: new Date() + }) + const filesArray = Array.from(files.entries()) return storeData(CozyPersistedStorageKeys.OfflineFiles, filesArray) @@ -53,3 +59,17 @@ export const getOfflineFileFromConfiguration = async ( return undefined } + +export const updateLastOpened = async (fileId: string): Promise => { + const file = await getOfflineFileFromConfiguration(fileId) + + if (!file) { + throw new Error( + `Cannot update 'lastOpened' attribute for not existing file ${fileId}` + ) + } + + file.lastOpened = new Date() + + await addOfflineFileToConfiguration(file) +} From 32bacfd86e43866d31237355a81c9225d99ef72c Mon Sep 17 00:00:00 2001 From: Ldoppea Date: Thu, 22 Aug 2024 16:13:29 +0200 Subject: [PATCH 31/86] feat: Use NetStatusBoundary only when logged out `NetStatusBoundary` is used to display an `offline` error screen when the app is offline Now that we implemented offline mode, we now want to disable the `NetStatusBoundary` for cozy-apps as they should now be accessible when offline `NetStatusBoundary` is kept only on onboarding screens --- src/App.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/App.js b/src/App.js index f942a9413..72f302fc9 100644 --- a/src/App.js +++ b/src/App.js @@ -225,7 +225,13 @@ const WrappedApp = () => { [client] ) - if (client === null) return