From e2d59ee1fa2286442c68cdc210379c67f86da72e Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Tue, 27 Dec 2022 19:37:15 +0000 Subject: [PATCH] Mobile: Upgrade to react-native 0.68.5 --- packages/app-mobile/.gitignore | 3 +- packages/app-mobile/android/app/build.gradle | 115 +- .../android/app/src/debug/AndroidManifest.xml | 2 +- .../net/cozic/joplin/ReactNativeFlipper.java | 5 +- .../android/app/src/main/AndroidManifest.xml | 6 +- .../java/net/cozic/joplin/MainActivity.java | 23 + .../net/cozic/joplin/MainApplication.java | 14 +- .../MainApplicationReactNativeHost.java | 116 ++ .../components/MainComponentsRegistry.java | 36 + ...ApplicationTurboModuleManagerDelegate.java | 48 + .../android/app/src/main/jni/Android.mk | 49 + .../jni/MainApplicationModuleProvider.cpp | 24 + .../main/jni/MainApplicationModuleProvider.h | 16 + ...nApplicationTurboModuleManagerDelegate.cpp | 45 + ...ainApplicationTurboModuleManagerDelegate.h | 38 + .../src/main/jni/MainComponentsRegistry.cpp | 61 + .../app/src/main/jni/MainComponentsRegistry.h | 32 + .../android/app/src/main/jni/OnLoad.cpp | 11 + packages/app-mobile/android/build.gradle | 20 +- packages/app-mobile/android/gradle.properties | 18 +- .../android/gradle/wrapper/gradle-wrapper.jar | Bin 58695 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 2 +- packages/app-mobile/android/gradlew | 271 ++-- packages/app-mobile/android/settings.gradle | 5 + .../ios/Joplin.xcodeproj/project.pbxproj | 8 +- packages/app-mobile/ios/Joplin/AppDelegate.m | 115 -- packages/app-mobile/ios/Joplin/AppDelegate.mm | 156 +++ packages/app-mobile/ios/Joplin/main.m | 3 +- packages/app-mobile/ios/Podfile | 9 +- packages/app-mobile/ios/Podfile.lock | 431 +++--- packages/app-mobile/package.json | 4 +- yarn.lock | 1175 ++++++++++++++++- 32 files changed, 2326 insertions(+), 535 deletions(-) create mode 100644 packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/MainApplicationReactNativeHost.java create mode 100644 packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/components/MainComponentsRegistry.java create mode 100644 packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java create mode 100644 packages/app-mobile/android/app/src/main/jni/Android.mk create mode 100644 packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp create mode 100644 packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.h create mode 100644 packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp create mode 100644 packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h create mode 100644 packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.cpp create mode 100644 packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.h create mode 100644 packages/app-mobile/android/app/src/main/jni/OnLoad.cpp delete mode 100644 packages/app-mobile/ios/Joplin/AppDelegate.m create mode 100644 packages/app-mobile/ios/Joplin/AppDelegate.mm diff --git a/packages/app-mobile/.gitignore b/packages/app-mobile/.gitignore index 5761a9c9ca..4482323fa8 100644 --- a/packages/app-mobile/.gitignore +++ b/packages/app-mobile/.gitignore @@ -56,8 +56,9 @@ buck-out/ # Bundle artifact *.jsbundle -# CocoaPods +# Ruby / CocoaPods /ios/Pods/ +/vendor/bundle/ # Custom lib/csstojs/ diff --git a/packages/app-mobile/android/app/build.gradle b/packages/app-mobile/android/app/build.gradle index 85185e2452..87e9a2910d 100644 --- a/packages/app-mobile/android/app/build.gradle +++ b/packages/app-mobile/android/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: "com.android.application" import com.android.build.OutputFile +import org.apache.tools.ant.taskdefs.condition.Os /** * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets @@ -124,9 +125,12 @@ def jscFlavor = 'org.webkit:android-jsc-intl:+' def enableHermes = project.ext.react.get("enableHermes", false); /** - * Architectures to build native code for in debug. + * Architectures to build native code for. */ -def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures") +def reactNativeArchitectures() { + def value = project.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] +} android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -148,22 +152,95 @@ android { targetSdkVersion rootProject.ext.targetSdkVersion versionCode 2097676 versionName "2.10.0" - ndk { - abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" - } + // ndk { + // abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + // } // https://github.com/react-native-community/react-native-camera/issues/2138 missingDimensionStrategy 'react-native-camera', 'general' // Needed to fix: The number of method references in a .dex file cannot exceed 64K multiDexEnabled true + + buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() + + if (isNewArchitectureEnabled()) { + // We configure the NDK build only if you decide to opt-in for the New Architecture. + externalNativeBuild { + ndkBuild { + arguments "APP_PLATFORM=android-21", + "APP_STL=c++_shared", + "NDK_TOOLCHAIN_VERSION=clang", + "GENERATED_SRC_DIR=$buildDir/generated/source", + "PROJECT_BUILD_DIR=$buildDir", + "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", + "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build" + cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1" + cppFlags "-std=c++17" + // Make sure this target name is the same you specify inside the + // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable. + targets "joplin_appmodules" + // Fix for windows limit on number of character in file paths and in command lines + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + arguments "NDK_APP_SHORT_COMMANDS=true" + } + } + } + if (!enableSeparateBuildPerCPUArchitecture) { + ndk { + abiFilters (*reactNativeArchitectures()) + } + } + } } + + if (isNewArchitectureEnabled()) { + // We configure the NDK build only if you decide to opt-in for the New Architecture. + externalNativeBuild { + ndkBuild { + path "$projectDir/src/main/jni/Android.mk" + } + } + def reactAndroidProjectDir = project(':ReactAndroid').projectDir + def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { + dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") + from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") + into("$buildDir/react-ndk/exported") + } + def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { + dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") + from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") + into("$buildDir/react-ndk/exported") + } + afterEvaluate { + // If you wish to add a custom TurboModule or component locally, + // you should uncomment this line. + // preBuild.dependsOn("generateCodegenArtifactsFromSchema") + preDebugBuild.dependsOn(packageReactNdkDebugLibs) + preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) + // Due to a bug inside AGP, we have to explicitly set a dependency + // between configureNdkBuild* tasks and the preBuild tasks. + // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 + configureNdkBuildRelease.dependsOn(preReleaseBuild) + configureNdkBuildDebug.dependsOn(preDebugBuild) + reactNativeArchitectures().each { architecture -> + tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure { + dependsOn("preDebugBuild") + } + tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure { + dependsOn("preReleaseBuild") + } + } + } + } + splits { abi { reset() enable enableSeparateBuildPerCPUArchitecture universalApk false // If true, also generate a universal APK - include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + // include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + include (*reactNativeArchitectures()) } } signingConfigs { @@ -185,11 +262,6 @@ android { buildTypes { debug { signingConfig signingConfigs.debug - if (nativeArchitectures) { - ndk { - abiFilters nativeArchitectures.split(',') - } - } } release { // Caution! In production, you need to generate your own keystore file. @@ -235,6 +307,7 @@ dependencies { } implementation fileTree(dir: "libs", include: ["*.jar"]) + //noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:+" // From node_modules @@ -265,6 +338,18 @@ dependencies { implementation 'com.android.support:multidex:2.0.1' } +if (isNewArchitectureEnabled()) { + // If new architecture is enabled, we let you build RN from source + // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. + // This will be applied to all the imported transtitive dependency. + configurations.all { + resolutionStrategy.dependencySubstitution { + substitute(module("com.facebook.react:react-native")) + .using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source") + } + } +} + // Run this once to be able to run the application with BUCK // puts all compile dependencies into folder libs for BUCK to use task copyDownloadableDepsToLibs(type: Copy) { @@ -274,3 +359,11 @@ task copyDownloadableDepsToLibs(type: Copy) { apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) apply from: "../../node_modules/react-native-vector-icons/fonts.gradle" + +def isNewArchitectureEnabled() { + // To opt-in for the New Architecture, you can either: + // - Set `newArchEnabled` to true inside the `gradle.properties` file + // - Invoke gradle with `-newArchEnabled=true` + // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` + return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" +} diff --git a/packages/app-mobile/android/app/src/debug/AndroidManifest.xml b/packages/app-mobile/android/app/src/debug/AndroidManifest.xml index b2f3ad9fce..4b185bc159 100644 --- a/packages/app-mobile/android/app/src/debug/AndroidManifest.xml +++ b/packages/app-mobile/android/app/src/debug/AndroidManifest.xml @@ -8,6 +8,6 @@ android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning"> - + diff --git a/packages/app-mobile/android/app/src/debug/java/net/cozic/joplin/ReactNativeFlipper.java b/packages/app-mobile/android/app/src/debug/java/net/cozic/joplin/ReactNativeFlipper.java index ce742a4e94..02546faa08 100644 --- a/packages/app-mobile/android/app/src/debug/java/net/cozic/joplin/ReactNativeFlipper.java +++ b/packages/app-mobile/android/app/src/debug/java/net/cozic/joplin/ReactNativeFlipper.java @@ -1,5 +1,5 @@ /** - * Copyright (c) Facebook, Inc. and its affiliates. + * 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. @@ -19,6 +19,7 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; import com.facebook.flipper.plugins.react.ReactFlipperPlugin; 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; @@ -51,7 +52,7 @@ public class ReactNativeFlipper { ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); if (reactContext == null) { reactInstanceManager.addReactInstanceEventListener( - new ReactInstanceManager.ReactInstanceEventListener() { + new ReactInstanceEventListener() { @Override public void onReactContextInitialized(ReactContext reactContext) { reactInstanceManager.removeReactInstanceEventListener(this); diff --git a/packages/app-mobile/android/app/src/main/AndroidManifest.xml b/packages/app-mobile/android/app/src/main/AndroidManifest.xml index 40ef921646..c590d1a7b4 100644 --- a/packages/app-mobile/android/app/src/main/AndroidManifest.xml +++ b/packages/app-mobile/android/app/src/main/AndroidManifest.xml @@ -70,7 +70,8 @@ android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" - android:windowSoftInputMode="adjustResize"> + android:windowSoftInputMode="adjustResize" + android:exported="true"> @@ -85,7 +86,8 @@ android:label="@string/app_name" android:excludeFromRecents="true" android:launchMode="singleTask" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme" + android:exported="true"> diff --git a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.java b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.java index 6b2b80b5cc..67d53c054a 100644 --- a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.java +++ b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainActivity.java @@ -1,6 +1,8 @@ package net.cozic.joplin; import com.facebook.react.ReactActivity; +import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.ReactRootView; public class MainActivity extends ReactActivity { @@ -12,4 +14,25 @@ public class MainActivity extends ReactActivity { protected String getMainComponentName() { return "Joplin"; } + + /** + * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and + * you can specify the rendered you wish to use (Fabric or the older renderer). + */ + @Override + protected ReactActivityDelegate createReactActivityDelegate() { + return new MainActivityDelegate(this, getMainComponentName()); + } + public static class MainActivityDelegate extends ReactActivityDelegate { + public MainActivityDelegate(ReactActivity activity, String mainComponentName) { + super(activity, mainComponentName); + } + @Override + protected ReactRootView createRootView() { + ReactRootView reactRootView = new ReactRootView(getContext()); + // If you opted-in for the New Architecture, we enable the Fabric Renderer. + reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); + return reactRootView; + } + } } diff --git a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainApplication.java b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainApplication.java index 3ebccf791e..e5740b5868 100644 --- a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainApplication.java +++ b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/MainApplication.java @@ -12,7 +12,9 @@ import com.facebook.react.ReactApplication; import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; +import com.facebook.react.config.ReactFeatureFlags; import com.facebook.soloader.SoLoader; +import net.cozic.joplin.newarchitecture.MainApplicationReactNativeHost; import net.cozic.joplin.share.SharePackage; import net.cozic.joplin.ssl.SslPackage; @@ -55,15 +57,25 @@ public class MainApplication extends Application implements ReactApplication { } }; + private final ReactNativeHost mNewArchitectureNativeHost = + new MainApplicationReactNativeHost(this); + @Override public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + return mNewArchitectureNativeHost; + } else { + return mReactNativeHost; + } } @Override public void onCreate() { super.onCreate(); + // If you opted-in for the New Architecture, we enable the TurboModule system + ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + // To try to fix the error "Row too big to fit into CursorWindow" // https://github.com/andpor/react-native-sqlite-storage/issues/364#issuecomment-526423153 // https://github.com/laurent22/joplin/issues/1767#issuecomment-515617991 diff --git a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/MainApplicationReactNativeHost.java b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/MainApplicationReactNativeHost.java new file mode 100644 index 0000000000..f7953ef866 --- /dev/null +++ b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/MainApplicationReactNativeHost.java @@ -0,0 +1,116 @@ +package net.cozic.joplin.newarchitecture; + +import android.app.Application; +import androidx.annotation.NonNull; +import com.facebook.react.PackageList; +import com.facebook.react.ReactInstanceManager; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.ReactPackageTurboModuleManagerDelegate; +import com.facebook.react.bridge.JSIModulePackage; +import com.facebook.react.bridge.JSIModuleProvider; +import com.facebook.react.bridge.JSIModuleSpec; +import com.facebook.react.bridge.JSIModuleType; +import com.facebook.react.bridge.JavaScriptContextHolder; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.UIManager; +import com.facebook.react.fabric.ComponentFactory; +import com.facebook.react.fabric.CoreComponentsRegistry; +import com.facebook.react.fabric.EmptyReactNativeConfig; +import com.facebook.react.fabric.FabricJSIModuleProvider; +import com.facebook.react.uimanager.ViewManagerRegistry; +import net.cozic.joplin.BuildConfig; +import net.cozic.joplin.newarchitecture.components.MainComponentsRegistry; +import net.cozic.joplin.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; +import java.util.ArrayList; +import java.util.List; + +/** + * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both + * TurboModule delegates and the Fabric Renderer. + * + *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the + * `newArchEnabled` property). Is ignored otherwise. + */ +public class MainApplicationReactNativeHost extends ReactNativeHost { + public MainApplicationReactNativeHost(Application application) { + super(application); + } + + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + List packages = new PackageList(this).getPackages(); + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(new MyReactNativePackage()); + // TurboModules must also be loaded here providing a valid TurboReactPackage implementation: + // packages.add(new TurboReactPackage() { ... }); + // If you have custom Fabric Components, their ViewManagers should also be loaded here + // inside a ReactPackage. + return packages; + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + + @NonNull + @Override + protected ReactPackageTurboModuleManagerDelegate.Builder + getReactPackageTurboModuleManagerDelegateBuilder() { + // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary + // for the new architecture and to use TurboModules correctly. + return new MainApplicationTurboModuleManagerDelegate.Builder(); + } + + @Override + protected JSIModulePackage getJSIModulePackage() { + return new JSIModulePackage() { + @Override + public List getJSIModules( + final ReactApplicationContext reactApplicationContext, + final JavaScriptContextHolder jsContext) { + final List specs = new ArrayList<>(); + + // Here we provide a new JSIModuleSpec that will be responsible of providing the + // custom Fabric Components. + specs.add( + new JSIModuleSpec() { + @Override + public JSIModuleType getJSIModuleType() { + return JSIModuleType.UIManager; + } + + @Override + public JSIModuleProvider getJSIModuleProvider() { + final ComponentFactory componentFactory = new ComponentFactory(); + CoreComponentsRegistry.register(componentFactory); + + // Here we register a Components Registry. + // The one that is generated with the template contains no components + // and just provides you the one from React Native core. + MainComponentsRegistry.register(componentFactory); + + final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); + + ViewManagerRegistry viewManagerRegistry = + new ViewManagerRegistry( + reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); + + return new FabricJSIModuleProvider( + reactApplicationContext, + componentFactory, + new EmptyReactNativeConfig(), + viewManagerRegistry); + } + }); + return specs; + } + }; + } +} \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/components/MainComponentsRegistry.java b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/components/MainComponentsRegistry.java new file mode 100644 index 0000000000..9eef078a5b --- /dev/null +++ b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/components/MainComponentsRegistry.java @@ -0,0 +1,36 @@ +package net.cozic.joplin.newarchitecture.components; + +import com.facebook.jni.HybridData; +import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.react.fabric.ComponentFactory; +import com.facebook.soloader.SoLoader; + +/** + * Class responsible to load the custom Fabric Components. This class has native methods and needs a + * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ + * folder for you). + * + *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the + * `newArchEnabled` property). Is ignored otherwise. + */ +@DoNotStrip +public class MainComponentsRegistry { + static { + SoLoader.loadLibrary("fabricjni"); + } + + @DoNotStrip private final HybridData mHybridData; + + @DoNotStrip + private native HybridData initHybrid(ComponentFactory componentFactory); + + @DoNotStrip + private MainComponentsRegistry(ComponentFactory componentFactory) { + mHybridData = initHybrid(componentFactory); + } + + @DoNotStrip + public static MainComponentsRegistry register(ComponentFactory componentFactory) { + return new MainComponentsRegistry(componentFactory); + } +} \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java new file mode 100644 index 0000000000..c9deb63769 --- /dev/null +++ b/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java @@ -0,0 +1,48 @@ +package net.cozic.joplin.newarchitecture.modules; + +import com.facebook.jni.HybridData; +import com.facebook.react.ReactPackage; +import com.facebook.react.ReactPackageTurboModuleManagerDelegate; +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.soloader.SoLoader; +import java.util.List; + +/** + * Class responsible to load the TurboModules. This class has native methods and needs a + * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ + * folder for you). + * + *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the + * `newArchEnabled` property). Is ignored otherwise. + */ +public class MainApplicationTurboModuleManagerDelegate + extends ReactPackageTurboModuleManagerDelegate { + + private static volatile boolean sIsSoLibraryLoaded; + + protected MainApplicationTurboModuleManagerDelegate( + ReactApplicationContext reactApplicationContext, List packages) { + super(reactApplicationContext, packages); + } + + protected native HybridData initHybrid(); + + native boolean canCreateTurboModule(String moduleName); + + public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { + protected MainApplicationTurboModuleManagerDelegate build( + ReactApplicationContext context, List packages) { + return new MainApplicationTurboModuleManagerDelegate(context, packages); + } + } + + @Override + protected synchronized void maybeLoadOtherSoLibraries() { + if (!sIsSoLibraryLoaded) { + // If you change the name of your application .so file in the Android.mk file, + // make sure you update the name here as well. + SoLoader.loadLibrary("joplin_appmodules"); + sIsSoLibraryLoaded = true; + } + } +} \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/Android.mk b/packages/app-mobile/android/app/src/main/jni/Android.mk new file mode 100644 index 0000000000..38d9ad09cb --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/Android.mk @@ -0,0 +1,49 @@ +THIS_DIR := $(call my-dir) + +include $(REACT_ANDROID_DIR)/Android-prebuilt.mk + +# If you wish to add a custom TurboModule or Fabric component in your app you +# will have to include the following autogenerated makefile. +# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk +include $(CLEAR_VARS) + +LOCAL_PATH := $(THIS_DIR) + +# You can customize the name of your application .so file here. +LOCAL_MODULE := joplin_appmodules + +LOCAL_C_INCLUDES := $(LOCAL_PATH) +LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) + +# If you wish to add a custom TurboModule or Fabric component in your app you +# will have to uncomment those lines to include the generated source +# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni) +# +# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni +# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp) +# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni + +# Here you should add any native library you wish to depend on. +LOCAL_SHARED_LIBRARIES := \ + libfabricjni \ + libfbjni \ + libfolly_futures \ + libfolly_json \ + libglog \ + libjsi \ + libreact_codegen_rncore \ + libreact_debug \ + libreact_nativemodule_core \ + libreact_render_componentregistry \ + libreact_render_core \ + libreact_render_debug \ + libreact_render_graphics \ + librrc_view \ + libruntimeexecutor \ + libturbomodulejsijni \ + libyoga + +LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall + +include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp new file mode 100644 index 0000000000..39de093d11 --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp @@ -0,0 +1,24 @@ +#include "MainApplicationModuleProvider.h" + +#include + +namespace facebook { +namespace react { + +std::shared_ptr MainApplicationModuleProvider( + const std::string moduleName, + const JavaTurboModule::InitParams ¶ms) { + // Here you can provide your own module provider for TurboModules coming from + // either your application or from external libraries. The approach to follow + // is similar to the following (for a library called `samplelibrary`: + // + // auto module = samplelibrary_ModuleProvider(moduleName, params); + // if (module != nullptr) { + // return module; + // } + // return rncore_ModuleProvider(moduleName, params); + return rncore_ModuleProvider(moduleName, params); +} + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.h b/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.h new file mode 100644 index 0000000000..2f2fb24a3a --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.h @@ -0,0 +1,16 @@ +#pragma once + +#include +#include + +#include + +namespace facebook { +namespace react { + +std::shared_ptr MainApplicationModuleProvider( + const std::string moduleName, + const JavaTurboModule::InitParams ¶ms); + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp new file mode 100644 index 0000000000..f2e4714dc9 --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp @@ -0,0 +1,45 @@ +#include "MainApplicationTurboModuleManagerDelegate.h" +#include "MainApplicationModuleProvider.h" + +namespace facebook { +namespace react { + +jni::local_ref +MainApplicationTurboModuleManagerDelegate::initHybrid( + jni::alias_ref) { + return makeCxxInstance(); +} + +void MainApplicationTurboModuleManagerDelegate::registerNatives() { + registerHybrid({ + makeNativeMethod( + "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), + makeNativeMethod( + "canCreateTurboModule", + MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), + }); +} + +std::shared_ptr +MainApplicationTurboModuleManagerDelegate::getTurboModule( + const std::string name, + const std::shared_ptr jsInvoker) { + // Not implemented yet: provide pure-C++ NativeModules here. + return nullptr; +} + +std::shared_ptr +MainApplicationTurboModuleManagerDelegate::getTurboModule( + const std::string name, + const JavaTurboModule::InitParams ¶ms) { + return MainApplicationModuleProvider(name, params); +} + +bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( + std::string name) { + return getTurboModule(name, nullptr) != nullptr || + getTurboModule(name, {.moduleName = name}) != nullptr; +} + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h new file mode 100644 index 0000000000..ad69a57ca5 --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h @@ -0,0 +1,38 @@ +#include +#include + +#include +#include + +namespace facebook { +namespace react { + +class MainApplicationTurboModuleManagerDelegate + : public jni::HybridClass< + MainApplicationTurboModuleManagerDelegate, + TurboModuleManagerDelegate> { + public: + // Adapt it to the package you used for your Java class. + static constexpr auto kJavaDescriptor = + "Lnet/cozic/joplin/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; + + static jni::local_ref initHybrid(jni::alias_ref); + + static void registerNatives(); + + std::shared_ptr getTurboModule( + const std::string name, + const std::shared_ptr jsInvoker) override; + std::shared_ptr getTurboModule( + const std::string name, + const JavaTurboModule::InitParams ¶ms) override; + + /** + * Test-only method. Allows user to verify whether a TurboModule can be + * created by instances of this class. + */ + bool canCreateTurboModule(std::string name); +}; + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.cpp b/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.cpp new file mode 100644 index 0000000000..c5188f4dc7 --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.cpp @@ -0,0 +1,61 @@ +#include "MainComponentsRegistry.h" + +#include +#include +#include +#include + +namespace facebook { +namespace react { + +MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} + +std::shared_ptr +MainComponentsRegistry::sharedProviderRegistry() { + auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); + + // Custom Fabric Components go here. You can register custom + // components coming from your App or from 3rd party libraries here. + // + // providerRegistry->add(concreteComponentDescriptorProvider< + // AocViewerComponentDescriptor>()); + return providerRegistry; +} + +jni::local_ref +MainComponentsRegistry::initHybrid( + jni::alias_ref, + ComponentFactory *delegate) { + auto instance = makeCxxInstance(delegate); + + auto buildRegistryFunction = + [](EventDispatcher::Weak const &eventDispatcher, + ContextContainer::Shared const &contextContainer) + -> ComponentDescriptorRegistry::Shared { + auto registry = MainComponentsRegistry::sharedProviderRegistry() + ->createComponentDescriptorRegistry( + {eventDispatcher, contextContainer}); + + auto mutableRegistry = + std::const_pointer_cast(registry); + + mutableRegistry->setFallbackComponentDescriptor( + std::make_shared( + ComponentDescriptorParameters{ + eventDispatcher, contextContainer, nullptr})); + + return registry; + }; + + delegate->buildRegistryFunction = buildRegistryFunction; + return instance; +} + +void MainComponentsRegistry::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), + }); +} + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.h b/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.h new file mode 100644 index 0000000000..1f734ab19d --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include +#include + +namespace facebook { +namespace react { + +class MainComponentsRegistry + : public facebook::jni::HybridClass { + public: + // Adapt it to the package you used for your Java class. + constexpr static auto kJavaDescriptor = + "Lnet/cozic/joplin/newarchitecture/components/MainComponentsRegistry;"; + + static void registerNatives(); + + MainComponentsRegistry(ComponentFactory *delegate); + + private: + static std::shared_ptr + sharedProviderRegistry(); + + static jni::local_ref initHybrid( + jni::alias_ref, + ComponentFactory *delegate); +}; + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/packages/app-mobile/android/app/src/main/jni/OnLoad.cpp b/packages/app-mobile/android/app/src/main/jni/OnLoad.cpp new file mode 100644 index 0000000000..ae1ef007d1 --- /dev/null +++ b/packages/app-mobile/android/app/src/main/jni/OnLoad.cpp @@ -0,0 +1,11 @@ +#include +#include "MainApplicationTurboModuleManagerDelegate.h" +#include "MainComponentsRegistry.h" + +JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { + return facebook::jni::initialize(vm, [] { + facebook::react::MainApplicationTurboModuleManagerDelegate:: + registerNatives(); + facebook::react::MainComponentsRegistry::registerNatives(); + }); +} \ No newline at end of file diff --git a/packages/app-mobile/android/build.gradle b/packages/app-mobile/android/build.gradle index 3be1031fb2..93b6402012 100644 --- a/packages/app-mobile/android/build.gradle +++ b/packages/app-mobile/android/build.gradle @@ -2,18 +2,28 @@ buildscript { ext { - buildToolsVersion = "30.0.2" + buildToolsVersion = "31.0.0" minSdkVersion = 21 - compileSdkVersion = 30 - targetSdkVersion = 30 - ndkVersion = "21.4.7075529" + + compileSdkVersion = 31 + targetSdkVersion = 31 + + if (System.properties['os.arch'] == "aarch64") { + // For M1 Users we need to use the NDK 24 which added support for aarch64 + ndkVersion = "24.0.8215888" + } else { + // Otherwise we default to the side-by-side NDK version from AGP. + ndkVersion = "21.4.7075529" + } } repositories { google() mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:4.2.2") + classpath("com.android.tools.build:gradle:7.0.4") + classpath("com.facebook.react:react-native-gradle-plugin") + classpath("de.undercouch:gradle-download-task:4.1.2") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/packages/app-mobile/android/gradle.properties b/packages/app-mobile/android/gradle.properties index 58c6087752..9fcd3e11f2 100644 --- a/packages/app-mobile/android/gradle.properties +++ b/packages/app-mobile/android/gradle.properties @@ -9,9 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -# DDefault value: -Xmx1024m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit @@ -26,7 +25,18 @@ android.useAndroidX=true android.enableJetifier=true # Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.99.0 +FLIPPER_VERSION=0.125.0 + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=false # To fix this error: # diff --git a/packages/app-mobile/android/gradle/wrapper/gradle-wrapper.jar b/packages/app-mobile/android/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch delta 18411 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 Hzh{2~$&vlj delta 17345 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 QW2~J&pQ{+#&jH5%0<2&hD*ylh diff --git a/packages/app-mobile/android/gradle/wrapper/gradle-wrapper.properties b/packages/app-mobile/android/gradle/wrapper/gradle-wrapper.properties index a0f7639f7d..669386b870 100644 --- a/packages/app-mobile/android/gradle/wrapper/gradle-wrapper.properties +++ b/packages/app-mobile/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/packages/app-mobile/android/gradlew b/packages/app-mobile/android/gradlew index 2fe81a7d95..a58591e97b 100755 --- a/packages/app-mobile/android/gradlew +++ b/packages/app-mobile/android/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,78 +17,113 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # 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"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + 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. Please set the JAVA_HOME variable in your environment to match the @@ -105,79 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) -exec "$JAVACMD" "$@" + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# 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 +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" \ No newline at end of file diff --git a/packages/app-mobile/android/settings.gradle b/packages/app-mobile/android/settings.gradle index 64679a745e..060030b35b 100644 --- a/packages/app-mobile/android/settings.gradle +++ b/packages/app-mobile/android/settings.gradle @@ -1,3 +1,8 @@ rootProject.name = 'Joplin' apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' +includeBuild('../node_modules/react-native-gradle-plugin') +if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { + include(":ReactAndroid") + project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid') +} diff --git a/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj b/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj index 985f81aecf..d86e1fcaa3 100644 --- a/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj +++ b/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj @@ -7,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 46E31F54C547C341F605BB66 /* libPods-Joplin.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A5E1CD825FABD6C4E704EA54 /* libPods-Joplin.a */; }; @@ -51,7 +51,7 @@ 09056573D4C040FBD5FEB93A /* Pods-Joplin-JoplinTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Joplin-JoplinTests.debug.xcconfig"; path = "Target Support Files/Pods-Joplin-JoplinTests/Pods-Joplin-JoplinTests.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* Joplin.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Joplin.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Joplin/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Joplin/AppDelegate.m; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.mm; path = Joplin/AppDelegate.mm; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Joplin/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Joplin/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Joplin/main.m; sourceTree = ""; }; @@ -125,7 +125,7 @@ AE7945E6259C9AEE00051BE2 /* Joplin.entitlements */, 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, - 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 13B07FB51A68108700A75B9A /* Images.xcassets */, 13B07FB61A68108700A75B9A /* Info.plist */, 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, @@ -449,7 +449,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 4D122473270878D700DE23E8 /* wtf.swift in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, ); diff --git a/packages/app-mobile/ios/Joplin/AppDelegate.m b/packages/app-mobile/ios/Joplin/AppDelegate.m deleted file mode 100644 index cda0d25af3..0000000000 --- a/packages/app-mobile/ios/Joplin/AppDelegate.m +++ /dev/null @@ -1,115 +0,0 @@ -#import "AppDelegate.h" - -#import -#import -#import -#import -#import -#import -#import "RNQuickActionManager.h" - -// #ifdef FB_SONARKIT_ENABLED -// #import -// #import -// #import -// #import -// #import -// #import - -// static void InitializeFlipper(UIApplication *application) { -// FlipperClient *client = [FlipperClient sharedClient]; -// SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults]; -// [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]]; -// [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]]; -// [client addPlugin:[FlipperKitReactPlugin new]]; -// [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]]; -// [client start]; -// } -// #endif - -@implementation AppDelegate - -// =================================================== -// BEGIN react-native-quick-actions -// =================================================== -- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL succeeded)) completionHandler { - [RNQuickActionManager onQuickActionPress:shortcutItem completionHandler:completionHandler]; -} -// =================================================== -// END react-native-quick-actions -// =================================================== - - - - -// =================================================== -// BEGIN react-native-push-notification-ios -// =================================================== - -// IOS 10+ Required for localNotification event -- (void)userNotificationCenter:(UNUserNotificationCenter *)center -didReceiveNotificationResponse:(UNNotificationResponse *)response - withCompletionHandler:(void (^)(void))completionHandler -{ - [RNCPushNotificationIOS didReceiveNotificationResponse:response]; - completionHandler(); -} -// IOS 4-10 Required for the localNotification event. -- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification -{ - [RNCPushNotificationIOS didReceiveLocalNotification:notification]; -} - -// =================================================== -// END react-native-push-notification-ios -// =================================================== - - - - - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ -// #ifdef FB_SONARKIT_ENABLED -// InitializeFlipper(application); -// #endif - - RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; - RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge - moduleName:@"Joplin" - initialProperties:nil]; - - if (@available(iOS 13.0, *)) { - rootView.backgroundColor = [UIColor systemBackgroundColor]; - } else { - rootView.backgroundColor = [UIColor whiteColor]; - } - - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [UIViewController new]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - - // BEGIN react-native-push-notification-ios - UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; - center.delegate = self; - // END react-native-push-notification-ios - - return YES; -} - -- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge -{ -#if DEBUG - return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; -#else - return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; -#endif -} - -- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { - return [RCTLinkingManager application:app openURL:url options:options]; -} - -@end diff --git a/packages/app-mobile/ios/Joplin/AppDelegate.mm b/packages/app-mobile/ios/Joplin/AppDelegate.mm new file mode 100644 index 0000000000..22cf146beb --- /dev/null +++ b/packages/app-mobile/ios/Joplin/AppDelegate.mm @@ -0,0 +1,156 @@ +#import "AppDelegate.h" + +#import +#import +#import + +#import + +#import +#import "RNQuickActionManager.h" + +#if RCT_NEW_ARCH_ENABLED +#import +#import +#import +#import +#import +#import + +#import + +@interface AppDelegate () { + RCTTurboModuleManager *_turboModuleManager; + RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; + std::shared_ptr _reactNativeConfig; + facebook::react::ContextContainer::Shared _contextContainer; +} +@end +#endif + +@implementation AppDelegate + +// =================================================== +// BEGIN react-native-quick-actions +// =================================================== +- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL succeeded)) completionHandler { + [RNQuickActionManager onQuickActionPress:shortcutItem completionHandler:completionHandler]; +} +// =================================================== +// END react-native-quick-actions +// =================================================== + + + + +// =================================================== +// BEGIN react-native-push-notification-ios +// =================================================== + +// IOS 10+ Required for localNotification event +- (void)userNotificationCenter:(UNUserNotificationCenter *)center +didReceiveNotificationResponse:(UNNotificationResponse *)response + withCompletionHandler:(void (^)(void))completionHandler +{ + [RNCPushNotificationIOS didReceiveNotificationResponse:response]; + completionHandler(); +} +// IOS 4-10 Required for the localNotification event. +- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification +{ + [RNCPushNotificationIOS didReceiveLocalNotification:notification]; +} + +// =================================================== +// END react-native-push-notification-ios +// =================================================== + + + + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + RCTAppSetupPrepareApp(application); + + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; + +#if RCT_NEW_ARCH_ENABLED + _contextContainer = std::make_shared(); + _reactNativeConfig = std::make_shared(); + _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); + _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; + bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; +#endif + + UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Joplin", nil); + + if (@available(iOS 13.0, *)) { + rootView.backgroundColor = [UIColor systemBackgroundColor]; + } else { + rootView.backgroundColor = [UIColor whiteColor]; + } + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + + // BEGIN react-native-push-notification-ios + UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; + center.delegate = self; + // END react-native-push-notification-ios + + return YES; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +#if RCT_NEW_ARCH_ENABLED + +#pragma mark - RCTCxxBridgeDelegate + +- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge +{ + _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge + delegate:self + jsInvoker:bridge.jsCallInvoker]; + return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); +} + +#pragma mark RCTTurboModuleManagerDelegate + +- (Class)getModuleClassFromName:(const char *)name +{ + return RCTCoreModulesClassProvider(name); +} + +- (std::shared_ptr)getTurboModule:(const std::string &)name + jsInvoker:(std::shared_ptr)jsInvoker +{ + return nullptr; +} + +- (std::shared_ptr)getTurboModule:(const std::string &)name + initParams: + (const facebook::react::ObjCTurboModule::InitParams &)params +{ + return nullptr; +} + +- (id)getModuleInstanceFromClass:(Class)moduleClass +{ + return RCTAppSetupDefaultModuleFromClass(moduleClass); +} + +#endif + +@end \ No newline at end of file diff --git a/packages/app-mobile/ios/Joplin/main.m b/packages/app-mobile/ios/Joplin/main.m index b1df44b953..d645c7246c 100644 --- a/packages/app-mobile/ios/Joplin/main.m +++ b/packages/app-mobile/ios/Joplin/main.m @@ -2,7 +2,8 @@ #import "AppDelegate.h" -int main(int argc, char * argv[]) { +int main(int argc, char *argv[]) +{ @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } diff --git a/packages/app-mobile/ios/Podfile b/packages/app-mobile/ios/Podfile index d225d4c471..b1f212b0c1 100644 --- a/packages/app-mobile/ios/Podfile +++ b/packages/app-mobile/ios/Podfile @@ -10,14 +10,21 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ # 2021-12-17: Changed back to 11.0 because after the fix it works with at least # 12.x, and probably 11.0 too, which is the version supported by React Native. platform :ios, '11.0' +install! 'cocoapods', :deterministic_uuids => false target 'Joplin' do config = use_native_modules! + # Flags change depending on the env values. + flags = get_default_flags() + use_react_native!( :path => config[:reactNativePath], # to enable hermes on iOS, change `false` to `true` and then install pods - :hermes_enabled => false + :hermes_enabled => flags[:hermes_enabled], + :fabric_enabled => flags[:fabric_enabled], + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." ) pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons' diff --git a/packages/app-mobile/ios/Podfile.lock b/packages/app-mobile/ios/Podfile.lock index 613c67904b..5798d48e15 100644 --- a/packages/app-mobile/ios/Podfile.lock +++ b/packages/app-mobile/ios/Podfile.lock @@ -1,14 +1,14 @@ PODS: - boost (1.76.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.67.5) - - FBReactNativeSpec (0.67.5): + - FBLazyVector (0.68.5) + - FBReactNativeSpec (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.67.5) - - RCTTypeSafety (= 0.67.5) - - React-Core (= 0.67.5) - - React-jsi (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) + - RCTRequired (= 0.68.5) + - RCTTypeSafety (= 0.68.5) + - React-Core (= 0.68.5) + - React-jsi (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) - fmt (6.2.1) - glog (0.3.5) - JoplinCommonShareExtension (1.0.0) @@ -26,192 +26,201 @@ PODS: - DoubleConversion - fmt (~> 6.2.1) - glog - - RCTRequired (0.67.5) - - RCTTypeSafety (0.67.5): - - FBLazyVector (= 0.67.5) + - RCTRequired (0.68.5) + - RCTTypeSafety (0.68.5): + - FBLazyVector (= 0.68.5) - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.67.5) - - React-Core (= 0.67.5) - - React (0.67.5): - - React-Core (= 0.67.5) - - React-Core/DevSupport (= 0.67.5) - - React-Core/RCTWebSocket (= 0.67.5) - - React-RCTActionSheet (= 0.67.5) - - React-RCTAnimation (= 0.67.5) - - React-RCTBlob (= 0.67.5) - - React-RCTImage (= 0.67.5) - - React-RCTLinking (= 0.67.5) - - React-RCTNetwork (= 0.67.5) - - React-RCTSettings (= 0.67.5) - - React-RCTText (= 0.67.5) - - React-RCTVibration (= 0.67.5) - - React-callinvoker (0.67.5) - - React-Core (0.67.5): + - RCTRequired (= 0.68.5) + - React-Core (= 0.68.5) + - React (0.68.5): + - React-Core (= 0.68.5) + - React-Core/DevSupport (= 0.68.5) + - React-Core/RCTWebSocket (= 0.68.5) + - React-RCTActionSheet (= 0.68.5) + - React-RCTAnimation (= 0.68.5) + - React-RCTBlob (= 0.68.5) + - React-RCTImage (= 0.68.5) + - React-RCTLinking (= 0.68.5) + - React-RCTNetwork (= 0.68.5) + - React-RCTSettings (= 0.68.5) + - React-RCTText (= 0.68.5) + - React-RCTVibration (= 0.68.5) + - React-callinvoker (0.68.5) + - React-Codegen (0.68.5): + - FBReactNativeSpec (= 0.68.5) + - RCT-Folly (= 2021.06.28.00-v2) + - RCTRequired (= 0.68.5) + - RCTTypeSafety (= 0.68.5) + - React-Core (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-Core (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.67.5) - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-Core/Default (= 0.68.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/CoreModulesHeaders (0.67.5): + - React-Core/CoreModulesHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/Default (0.67.5): + - React-Core/Default (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/DevSupport (0.67.5): + - React-Core/DevSupport (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.67.5) - - React-Core/RCTWebSocket (= 0.67.5) - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-jsinspector (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-Core/Default (= 0.68.5) + - React-Core/RCTWebSocket (= 0.68.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-jsinspector (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTActionSheetHeaders (0.67.5): + - React-Core/RCTActionSheetHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTAnimationHeaders (0.67.5): + - React-Core/RCTAnimationHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTBlobHeaders (0.67.5): + - React-Core/RCTBlobHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTImageHeaders (0.67.5): + - React-Core/RCTImageHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTLinkingHeaders (0.67.5): + - React-Core/RCTLinkingHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTNetworkHeaders (0.67.5): + - React-Core/RCTNetworkHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTSettingsHeaders (0.67.5): + - React-Core/RCTSettingsHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTTextHeaders (0.67.5): + - React-Core/RCTTextHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTVibrationHeaders (0.67.5): + - React-Core/RCTVibrationHeaders (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-Core/RCTWebSocket (0.67.5): + - React-Core/RCTWebSocket (0.68.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.67.5) - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsiexecutor (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-Core/Default (= 0.68.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsiexecutor (= 0.68.5) + - React-perflogger (= 0.68.5) - Yoga - - React-CoreModules (0.67.5): - - FBReactNativeSpec (= 0.67.5) + - React-CoreModules (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.5) - - React-Core/CoreModulesHeaders (= 0.67.5) - - React-jsi (= 0.67.5) - - React-RCTImage (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-cxxreact (0.67.5): + - RCTTypeSafety (= 0.68.5) + - React-Codegen (= 0.68.5) + - React-Core/CoreModulesHeaders (= 0.68.5) + - React-jsi (= 0.68.5) + - React-RCTImage (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-cxxreact (0.68.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.67.5) - - React-jsi (= 0.67.5) - - React-jsinspector (= 0.67.5) - - React-logger (= 0.67.5) - - React-perflogger (= 0.67.5) - - React-runtimeexecutor (= 0.67.5) - - React-jsi (0.67.5): + - React-callinvoker (= 0.68.5) + - React-jsi (= 0.68.5) + - React-jsinspector (= 0.68.5) + - React-logger (= 0.68.5) + - React-perflogger (= 0.68.5) + - React-runtimeexecutor (= 0.68.5) + - React-jsi (0.68.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-jsi/Default (= 0.67.5) - - React-jsi/Default (0.67.5): + - React-jsi/Default (= 0.68.5) + - React-jsi/Default (0.68.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-jsiexecutor (0.67.5): + - React-jsiexecutor (0.68.5): - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-perflogger (= 0.67.5) - - React-jsinspector (0.67.5) - - React-logger (0.67.5): + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-perflogger (= 0.68.5) + - React-jsinspector (0.68.5) + - React-logger (0.68.5): - glog - react-native-alarm-notification (1.0.6): - React @@ -245,71 +254,71 @@ PODS: - React-Core - react-native-webview (11.26.0): - React-Core - - React-perflogger (0.67.5) - - React-RCTActionSheet (0.67.5): - - React-Core/RCTActionSheetHeaders (= 0.67.5) - - React-RCTAnimation (0.67.5): - - FBReactNativeSpec (= 0.67.5) + - React-perflogger (0.68.5) + - React-RCTActionSheet (0.68.5): + - React-Core/RCTActionSheetHeaders (= 0.68.5) + - React-RCTAnimation (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.5) - - React-Core/RCTAnimationHeaders (= 0.67.5) - - React-jsi (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-RCTBlob (0.67.5): - - FBReactNativeSpec (= 0.67.5) + - RCTTypeSafety (= 0.68.5) + - React-Codegen (= 0.68.5) + - React-Core/RCTAnimationHeaders (= 0.68.5) + - React-jsi (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-RCTBlob (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/RCTBlobHeaders (= 0.67.5) - - React-Core/RCTWebSocket (= 0.67.5) - - React-jsi (= 0.67.5) - - React-RCTNetwork (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-RCTImage (0.67.5): - - FBReactNativeSpec (= 0.67.5) + - React-Codegen (= 0.68.5) + - React-Core/RCTBlobHeaders (= 0.68.5) + - React-Core/RCTWebSocket (= 0.68.5) + - React-jsi (= 0.68.5) + - React-RCTNetwork (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-RCTImage (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.5) - - React-Core/RCTImageHeaders (= 0.67.5) - - React-jsi (= 0.67.5) - - React-RCTNetwork (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-RCTLinking (0.67.5): - - FBReactNativeSpec (= 0.67.5) - - React-Core/RCTLinkingHeaders (= 0.67.5) - - React-jsi (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-RCTNetwork (0.67.5): - - FBReactNativeSpec (= 0.67.5) + - RCTTypeSafety (= 0.68.5) + - React-Codegen (= 0.68.5) + - React-Core/RCTImageHeaders (= 0.68.5) + - React-jsi (= 0.68.5) + - React-RCTNetwork (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-RCTLinking (0.68.5): + - React-Codegen (= 0.68.5) + - React-Core/RCTLinkingHeaders (= 0.68.5) + - React-jsi (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-RCTNetwork (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.5) - - React-Core/RCTNetworkHeaders (= 0.67.5) - - React-jsi (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-RCTSettings (0.67.5): - - FBReactNativeSpec (= 0.67.5) + - RCTTypeSafety (= 0.68.5) + - React-Codegen (= 0.68.5) + - React-Core/RCTNetworkHeaders (= 0.68.5) + - React-jsi (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-RCTSettings (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.5) - - React-Core/RCTSettingsHeaders (= 0.67.5) - - React-jsi (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-RCTText (0.67.5): - - React-Core/RCTTextHeaders (= 0.67.5) - - React-RCTVibration (0.67.5): - - FBReactNativeSpec (= 0.67.5) + - RCTTypeSafety (= 0.68.5) + - React-Codegen (= 0.68.5) + - React-Core/RCTSettingsHeaders (= 0.68.5) + - React-jsi (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-RCTText (0.68.5): + - React-Core/RCTTextHeaders (= 0.68.5) + - React-RCTVibration (0.68.5): - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/RCTVibrationHeaders (= 0.67.5) - - React-jsi (= 0.67.5) - - ReactCommon/turbomodule/core (= 0.67.5) - - React-runtimeexecutor (0.67.5): - - React-jsi (= 0.67.5) - - ReactCommon/turbomodule/core (0.67.5): + - React-Codegen (= 0.68.5) + - React-Core/RCTVibrationHeaders (= 0.68.5) + - React-jsi (= 0.68.5) + - ReactCommon/turbomodule/core (= 0.68.5) + - React-runtimeexecutor (0.68.5): + - React-jsi (= 0.68.5) + - ReactCommon/turbomodule/core (0.68.5): - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.67.5) - - React-Core (= 0.67.5) - - React-cxxreact (= 0.67.5) - - React-jsi (= 0.67.5) - - React-logger (= 0.67.5) - - React-perflogger (= 0.67.5) + - React-callinvoker (= 0.68.5) + - React-Core (= 0.68.5) + - React-cxxreact (= 0.68.5) + - React-jsi (= 0.68.5) + - React-logger (= 0.68.5) + - React-perflogger (= 0.68.5) - rn-fetch-blob (0.12.0): - React-Core - RNCClipboard (1.5.1): @@ -345,6 +354,7 @@ DEPENDENCIES: - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - React-Core/DevSupport (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) @@ -420,6 +430,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" + React-Codegen: + :path: build/generated/ios React-Core: :path: "../node_modules/react-native/" React-CoreModules: @@ -510,24 +522,25 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: boost: a7c83b31436843459a1961bfd74b96033dc77234 DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 - FBLazyVector: d2db9d00883282819d03bbd401b2ad4360d47580 - FBReactNativeSpec: 94da4d84ba3b1acf459103320882daa481a2b62d + FBLazyVector: 2b47ff52037bd9ae07cc9b051c9975797814b736 + FBReactNativeSpec: 0e0d384ef17a33b385f13f0c7f97702c7cd17858 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 - glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85 + glog: 476ee3e89abb49e07f822b48323c51c57124b572 JoplinCommonShareExtension: a8b60b02704d85a7305627912c0240e94af78db7 JoplinRNShareExtension: 485f3e6dad83b7b77f1572eabc249f869ee55c02 - RCT-Folly: 803a9cfd78114b2ec0f140cfa6fa2a6bafb2d685 - RCTRequired: 412e994c1e570cf35378a32c18fd46e50634938b - RCTTypeSafety: ef27340c728e6d673af345ed69e479a010c8a2d8 - React: 36b9f5116572e5b80f01e562bb1f1451e8848e47 - React-callinvoker: 91e62870884d3db3a0db33bbb1ba4e53fa5210ca - React-Core: 765ccc3861be1b93c7d5ca37f6b06e2efd6e7999 - React-CoreModules: da2ddff50a92576b6d58fbfc80a62ba3f81d8a4e - React-cxxreact: b54cffd4feb550c3213cd38db4a2a4bdd896f715 - React-jsi: 103674913e4159a07df20ef214c6b563e90e7b2e - React-jsiexecutor: e9895ccae253323ca70f693945fecbba091f0abd - React-jsinspector: ec4fe4f65ccf9d67c8429dda955d3412db8a25ef - React-logger: 85f4ef06b9723714b2dfa5b0e5502b673b271b58 + RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8 + RCTRequired: 0f06b6068f530932d10e1a01a5352fad4eaacb74 + RCTTypeSafety: b0ee81f10ef1b7d977605a2b266823dabd565e65 + React: 3becd12bd51ea8a43bdde7e09d0f40fba7820e03 + React-callinvoker: 11abfff50e6bf7a55b3a90b4dc2187f71f224593 + React-Codegen: f8946ce0768fb8e92e092e30944489c4b2955b2d + React-Core: 203cdb6ee2657b198d97d41031c249161060e6ca + React-CoreModules: 6eb0c06a4a223fde2cb6a8d0f44f58b67e808942 + React-cxxreact: afb0c6c07d19adbd850747fedeac20c6832d40b9 + React-jsi: 14d37a6db2af2c1a49f6f5c2e4ee667c364ae45c + React-jsiexecutor: 45c0496ca8cef6b02d9fa0274c25cf458fe91a56 + React-jsinspector: eb202e43b3879aba9a14f3f65788aec85d4e1ea9 + React-logger: 98f663b292a60967ebbc6d803ae96c1381183b6d react-native-alarm-notification: 88c751922c791cc628bd7efb09bff18c8f178a5d react-native-camera: 3eae183c1d111103963f3dd913b65d01aef8110f react-native-document-picker: 958e2bc82e128be69055be261aeac8d872c8d34c @@ -541,18 +554,18 @@ SPEC CHECKSUMS: react-native-sqlite-storage: f6d515e1c446d1e6d026aa5352908a25d4de3261 react-native-version-info: a106f23009ac0db4ee00de39574eb546682579b9 react-native-webview: 994b9f8fbb504d6314dc40d83f94f27c6831b3bf - React-perflogger: d32ee13196f4ae2e4098fb7f8e7ed4f864c6fb0f - React-RCTActionSheet: 81779c09e34a6a3d6b15783407ba9016a774f535 - React-RCTAnimation: b778eaaa42a884abcc5719035a7a0b2f54672658 - React-RCTBlob: 8edfc04c117decb0e7d4e6ab32bec91707e63ecb - React-RCTImage: 2022097f1291bfebd0003e477318c72b07853578 - React-RCTLinking: bd8d889c65695181342541ce4420e9419845084c - React-RCTNetwork: eae64b805d967bf3ece2cec3ad09218eeb32cb74 - React-RCTSettings: 0645af8aec5f40726e98d434a07ff58e75a81aa9 - React-RCTText: e55de507cda263ff58404c3e7d75bf76c2b80813 - React-RCTVibration: c3b8a3245267a3849b0c7cb91a37606bf5f3aa65 - React-runtimeexecutor: 434efc9e5b6d0f14f49867f130b39376c971c1aa - ReactCommon: a30c2448e5a88bae6fcb0e3da124c14ae493dac1 + React-perflogger: 0458a87ea9a7342079e7a31b0d32b3734fb8415f + React-RCTActionSheet: 22538001ea2926dea001111dd2846c13a0730bc9 + React-RCTAnimation: 732ce66878d4aa151d56a0d142b1105aa12fd313 + React-RCTBlob: 9cb9e3e9a41d27be34aaf89b0e0f52c7ca415d57 + React-RCTImage: 6bd16627eb9c4bb79903c4cdec7c551266ee1a5b + React-RCTLinking: e9edfc8919c8fa9a3f3c7b34362811f58a2ebba4 + React-RCTNetwork: 880eccd21bbe2660a0b63da5ccba75c46eceeaa6 + React-RCTSettings: 8c85d8188c97d6c6bd470af6631a6c4555b79bb3 + React-RCTText: bbd275ee287730c5acbab1aadc0db39c25c5c64e + React-RCTVibration: 9819a3bf6230e4b2a99877c21268b0b2416157a1 + React-runtimeexecutor: b1f1995089b90696dbc2a7ffe0059a80db5c8eb1 + ReactCommon: 149e2c0acab9bac61378da0db5b2880a1b5ff59b rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 RNCPushNotificationIOS: 87b8d16d3ede4532745e05b03c42cff33a36cc45 @@ -563,8 +576,8 @@ SPEC CHECKSUMS: RNSecureRandom: 07efbdf2cd99efe13497433668e54acd7df49fef RNShare: d93e00e906e6174657f6370b480437e4702bc86e RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8 - Yoga: 099a946cbf84c9b32ffdc4278d72db26710ecf92 + Yoga: c4d61225a466f250c35c1ee78d2d0b3d41fe661c -PODFILE CHECKSUM: 3503e0565874e79261edc56dcddb35b3a49a2984 +PODFILE CHECKSUM: 53dddf84c9a411ea75fb783cdc7cf103c4b0e7d8 COCOAPODS: 1.11.3 diff --git a/packages/app-mobile/package.json b/packages/app-mobile/package.json index 4df65c7f29..7c65e6c524 100644 --- a/packages/app-mobile/package.json +++ b/packages/app-mobile/package.json @@ -38,7 +38,7 @@ "prop-types": "15.8.1", "punycode": "2.1.1", "react": "18.2.0", - "react-native": "0.67.5", + "react-native": "0.68.5", "react-native-action-button": "2.8.5", "react-native-camera": "4.2.1", "react-native-dialogbox": "0.6.10", @@ -100,7 +100,7 @@ "jest-environment-jsdom": "29.3.1", "jetifier": "2.0.0", "jsdom": "20.0.0", - "metro-react-native-babel-preset": "0.66.2", + "metro-react-native-babel-preset": "0.67.0", "nodemon": "2.0.20", "ts-jest": "29.0.3", "ts-loader": "9.4.2", diff --git a/yarn.lock b/yarn.lock index eddfd00614..c01b290711 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1290,6 +1290,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.20.5": + version: 7.20.10 + resolution: "@babel/compat-data@npm:7.20.10" + checksum: 6ed6c1bb6fc03c225d63b8611788cd976107d1692402b560ebffbf1fa53e63705f8625bb12e12d17ce7f7af34e61e1ca96c77858aac6f57010045271466200c0 + languageName: node + linkType: hard + "@babel/core@npm:7.16.0, @babel/core@npm:^7.1.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.14.0": version: 7.16.0 resolution: "@babel/core@npm:7.16.0" @@ -1336,6 +1343,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.13.16": + version: 7.20.7 + resolution: "@babel/core@npm:7.20.7" + dependencies: + "@ampproject/remapping": ^2.1.0 + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.20.7 + "@babel/helper-compilation-targets": ^7.20.7 + "@babel/helper-module-transforms": ^7.20.7 + "@babel/helpers": ^7.20.7 + "@babel/parser": ^7.20.7 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.20.7 + "@babel/types": ^7.20.7 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.1 + semver: ^6.3.0 + checksum: f2714f15db24425145ca70b838adcd945aba7d1358ca2513615db6c3bdaebe5f8e4162c4c6c30f8dcab42bf634b0055d150414c0ecf52a3341bb5da3dde2d987 + languageName: node + linkType: hard + "@babel/core@npm:^7.5.5, @babel/core@npm:^7.7.5": version: 7.20.2 resolution: "@babel/core@npm:7.20.2" @@ -1403,6 +1433,17 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/generator@npm:7.20.7" + dependencies: + "@babel/types": ^7.20.7 + "@jridgewell/gen-mapping": ^0.3.2 + jsesc: ^2.5.1 + checksum: 84b6983ffdb50c80c1c2e3f3c32617a7133d8effd1065f3e0f9bba188a7d54ab42a4dd5e42b61b843c65f9dd1aa870036ff0f848ebd42707aaa8a2b6d31d04f5 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.16.0": version: 7.16.0 resolution: "@babel/helper-annotate-as-pure@npm:7.16.0" @@ -1473,6 +1514,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helper-compilation-targets@npm:7.20.7" + dependencies: + "@babel/compat-data": ^7.20.5 + "@babel/helper-validator-option": ^7.18.6 + browserslist: ^4.21.3 + lru-cache: ^5.1.1 + semver: ^6.3.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 8c32c873ba86e2e1805b30e0807abd07188acbe00ebb97576f0b09061cc65007f1312b589eccb4349c5a8c7f8bb9f2ab199d41da7030bf103d9f347dcd3a3cf4 + languageName: node + linkType: hard + "@babel/helper-create-class-features-plugin@npm:^7.16.0": version: 7.16.0 resolution: "@babel/helper-create-class-features-plugin@npm:7.16.0" @@ -1489,6 +1545,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helper-create-class-features-plugin@npm:7.20.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.19.0 + "@babel/helper-member-expression-to-functions": ^7.20.7 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/helper-replace-supers": ^7.20.7 + "@babel/helper-split-export-declaration": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: fdbbfb532fc800a30b7c9d56203b80824f67dbc1acf1a2f52429e6e1ad0a3cd086c5c53031d78e8e23a5201018ecb23dc2d8cc955b2bd72c5338654d5679f847 + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.16.0": version: 7.19.0 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.19.0" @@ -1609,6 +1682,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.20.7" + dependencies: + "@babel/types": ^7.20.7 + checksum: cec17aab7e964830b0146e575bd141127032319f26ed864a65b35abd75ad618d264d3e11449b9b4e29cfd95bb1a7e774afddd4884fdcc29c36ac9cbd2b66359f + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.16.0": version: 7.16.0 resolution: "@babel/helper-module-imports@npm:7.16.0" @@ -1659,6 +1741,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.20.7": + version: 7.20.11 + resolution: "@babel/helper-module-transforms@npm:7.20.11" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-module-imports": ^7.18.6 + "@babel/helper-simple-access": ^7.20.2 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/helper-validator-identifier": ^7.19.1 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.20.10 + "@babel/types": ^7.20.7 + checksum: 29319ebafa693d48756c6ba0d871677bb0037e0da084fbe221a17c38d57093fc8aa38543c07d76e788266a937976e37ab4901971ca7f237c5ab45f524b9ecca0 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.20.2": version: 7.20.2 resolution: "@babel/helper-module-transforms@npm:7.20.2" @@ -1684,6 +1782,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" + dependencies: + "@babel/types": ^7.18.6 + checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.14.5 resolution: "@babel/helper-plugin-utils@npm:7.14.5" @@ -1728,6 +1835,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helper-replace-supers@npm:7.20.7" + dependencies: + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-member-expression-to-functions": ^7.20.7 + "@babel/helper-optimise-call-expression": ^7.18.6 + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.16.0": version: 7.16.0 resolution: "@babel/helper-simple-access@npm:7.16.0" @@ -1764,6 +1885,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" + dependencies: + "@babel/types": ^7.20.0 + checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd + languageName: node + linkType: hard + "@babel/helper-split-export-declaration@npm:^7.16.0": version: 7.16.0 resolution: "@babel/helper-split-export-declaration@npm:7.16.0" @@ -1869,6 +1999,17 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/helpers@npm:7.20.7" + dependencies: + "@babel/template": ^7.20.7 + "@babel/traverse": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: 3fb10df3510ba7116a180d5fd983d0f558f7a65c3d599385dba991bff66b74174c88881bc12c2b3cf7284294fcac5b301ded49a8b0098bdf2ef61d0cad8010db + languageName: node + linkType: hard + "@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.16.0": version: 7.16.0 resolution: "@babel/highlight@npm:7.16.0" @@ -1900,6 +2041,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.13.16, @babel/parser@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/parser@npm:7.20.7" + bin: + parser: ./bin/babel-parser.js + checksum: 25b5266e3bd4be837092685f6b7ef886f1308ff72659a24342eb646ae5014f61ed1771ce8fc20636c890fcae19304fc72c069564ca6075207b7fbf3f75367275 + languageName: node + linkType: hard + "@babel/parser@npm:^7.18.10, @babel/parser@npm:^7.20.1, @babel/parser@npm:^7.20.2": version: 7.20.3 resolution: "@babel/parser@npm:7.20.3" @@ -1930,6 +2080,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-class-properties@npm:^7.13.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 + languageName: node + linkType: hard + "@babel/plugin-proposal-export-default-from@npm:^7.0.0": version: 7.16.0 resolution: "@babel/plugin-proposal-export-default-from@npm:7.16.0" @@ -1954,6 +2116,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": + version: 7.18.6 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d + languageName: node + linkType: hard + "@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": version: 7.16.0 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.16.0" @@ -2009,6 +2183,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": + version: 7.20.7 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.20.7" + dependencies: + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 274b8932335bd064ca24cf1a4da2b2c20c92726d4bfa8b0cb5023857479b8481feef33505c16650c7b9239334e5c6959babc924816324c4cf223dd91c7ca79bc + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -2075,6 +2262,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-flow@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-flow@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 + languageName: node + linkType: hard + "@babel/plugin-syntax-import-meta@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" @@ -2207,6 +2405,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.20.0": + version: 7.20.0 + resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" + dependencies: + "@babel/helper-plugin-utils": ^7.19.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 6189c0b5c32ba3c9a80a42338bd50719d783b20ef29b853d4f03929e971913d3cefd80184e924ae98ad6db09080be8fe6f1ffde9a6db8972523234f0274d36f7 + languageName: node + linkType: hard + "@babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.18.6 resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" @@ -2338,6 +2547,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-flow-strip-types@npm:^7.18.6": + version: 7.19.0 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.19.0" + dependencies: + "@babel/helper-plugin-utils": ^7.19.0 + "@babel/plugin-syntax-flow": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c35339bf80c2a2b9abb9e2ce0382e1d9cc3ef7db2af127f4ec3d184bad2aec3269f3fcac5fdcd565439732803acad72eb9e7d5a18e439221526fdc041c9e8e1e + languageName: node + linkType: hard + "@babel/plugin-transform-for-of@npm:^7.0.0": version: 7.16.0 resolution: "@babel/plugin-transform-for-of@npm:7.16.0" @@ -2397,6 +2618,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.13.8": + version: 7.20.11 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.20.11" + dependencies: + "@babel/helper-module-transforms": ^7.20.11 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/helper-simple-access": ^7.20.2 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ddd0623e2ad4b5c0faaa0ae30d3407a3fa484d911c968ed33cfb1b339ac3691321c959db60b66dc136dbd67770fff586f7e48a7ce0d7d357f92d6ef6fb7ed1a7 + languageName: node + linkType: hard + "@babel/plugin-transform-object-assign@npm:^7.0.0": version: 7.16.0 resolution: "@babel/plugin-transform-object-assign@npm:7.16.0" @@ -2601,6 +2835,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.18.6": + version: 7.20.7 + resolution: "@babel/plugin-transform-typescript@npm:7.20.7" + dependencies: + "@babel/helper-create-class-features-plugin": ^7.20.7 + "@babel/helper-plugin-utils": ^7.20.2 + "@babel/plugin-syntax-typescript": ^7.20.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: ca569a1b8001e7e8971874656091789c6b3209f155c91c56bce82b545e43d09d156b4fcf2f0dfcdf7911a2c546c7090c2aff167a5692443f6f0382b358c233e0 + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-regex@npm:^7.0.0": version: 7.16.0 resolution: "@babel/plugin-transform-unicode-regex@npm:7.16.0" @@ -2626,6 +2873,19 @@ __metadata: languageName: node linkType: hard +"@babel/preset-flow@npm:^7.13.13": + version: 7.18.6 + resolution: "@babel/preset-flow@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-validator-option": ^7.18.6 + "@babel/plugin-transform-flow-strip-types": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 9100d4eab3402e6601e361a5b235e46d90cfd389c12db19e2a071e1082ca2a00c04bd47eb185ce68d8979e7c8f3e548cd5d61b86dcd701135468fb929c3aecb6 + languageName: node + linkType: hard + "@babel/preset-typescript@npm:^7.1.0": version: 7.16.0 resolution: "@babel/preset-typescript@npm:7.16.0" @@ -2639,6 +2899,19 @@ __metadata: languageName: node linkType: hard +"@babel/preset-typescript@npm:^7.13.0": + version: 7.18.6 + resolution: "@babel/preset-typescript@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-validator-option": ^7.18.6 + "@babel/plugin-transform-typescript": ^7.18.6 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7fe0da5103eb72d3cf39cf3e138a794c8cdd19c0b38e3e101507eef519c46a87a0d6d0e8bc9e28a13ea2364001ebe7430b9d75758aab4c3c3a8db9a487b9dc7c + languageName: node + linkType: hard + "@babel/register@npm:^7.0.0": version: 7.16.0 resolution: "@babel/register@npm:7.16.0" @@ -2654,6 +2927,21 @@ __metadata: languageName: node linkType: hard +"@babel/register@npm:^7.13.16": + version: 7.18.9 + resolution: "@babel/register@npm:7.18.9" + dependencies: + clone-deep: ^4.0.1 + find-cache-dir: ^2.0.0 + make-dir: ^2.1.0 + pirates: ^4.0.5 + source-map-support: ^0.5.16 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4aeaff97e061a397f632659082ba86c539ef8194697b236d991c10d1c2ea8f73213d3b5b3b2c24625951a1ef726b7a7d2e70f70ffcb37f79ef0c1a745eebef21 + languageName: node + linkType: hard + "@babel/runtime@npm:7.16.3, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": version: 7.16.3 resolution: "@babel/runtime@npm:7.16.3" @@ -2714,6 +3002,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/template@npm:7.20.7" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e + languageName: node + linkType: hard + "@babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.0, @babel/traverse@npm:^7.16.3, @babel/traverse@npm:^7.4.5": version: 7.16.3 resolution: "@babel/traverse@npm:7.16.3" @@ -2767,6 +3066,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.7": + version: 7.20.10 + resolution: "@babel/traverse@npm:7.20.10" + dependencies: + "@babel/code-frame": ^7.18.6 + "@babel/generator": ^7.20.7 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.19.0 + "@babel/helper-hoist-variables": ^7.18.6 + "@babel/helper-split-export-declaration": ^7.18.6 + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: 8e36dfc76b8f7aafa01b98130c0257e3148eb7132e4b599be565bddae5faec7e20a0f92786a829a8d962a0bf5652fe0019cadd85716d70d140785dec640ff6f7 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": version: 7.16.0 resolution: "@babel/types@npm:7.16.0" @@ -2808,6 +3125,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.20.7": + version: 7.20.7 + resolution: "@babel/types@npm:7.20.7" + dependencies: + "@babel/helper-string-parser": ^7.19.4 + "@babel/helper-validator-identifier": ^7.19.1 + to-fast-properties: ^2.0.0 + checksum: b39af241f0b72bba67fd6d0d23914f6faec8c0eba8015c181cbd5ea92e59fc91a52a1ab490d3520c7dbd19ddb9ebb76c476308f6388764f16d8201e37fae6811 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -4189,6 +4517,19 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^27.5.1": + version: 27.5.1 + resolution: "@jest/types@npm:27.5.1" + 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 + checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 + languageName: node + linkType: hard + "@jest/types@npm:^29.3.1": version: 29.3.1 resolution: "@jest/types@npm:29.3.1" @@ -4357,12 +4698,12 @@ __metadata: jsc-android: 241213.1.0 jsdom: 20.0.0 md5: 2.3.0 - metro-react-native-babel-preset: 0.66.2 + metro-react-native-babel-preset: 0.67.0 nodemon: 2.0.20 prop-types: 15.8.1 punycode: 2.1.1 react: 18.2.0 - react-native: 0.67.5 + react-native: 0.68.5 react-native-action-button: 2.8.5 react-native-camera: 4.2.1 react-native-dialogbox: 0.6.10 @@ -6150,6 +6491,15 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-debugger-ui@npm:^7.0.3": + version: 7.0.3 + resolution: "@react-native-community/cli-debugger-ui@npm:7.0.3" + dependencies: + serve-static: ^1.13.1 + checksum: ea90b321a375185f2f7d52e9ff5c13d943c193aa0301c7893f70132dbda4099e64b99adb61687ae6b9b78403e290ce2b8d40690daceb96300535b072dab67170 + languageName: node + linkType: hard + "@react-native-community/cli-hermes@npm:^6.2.0": version: 6.2.0 resolution: "@react-native-community/cli-hermes@npm:6.2.0" @@ -6163,6 +6513,19 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-hermes@npm:^6.3.1": + version: 6.3.1 + resolution: "@react-native-community/cli-hermes@npm:6.3.1" + dependencies: + "@react-native-community/cli-platform-android": ^6.3.1 + "@react-native-community/cli-tools": ^6.2.1 + chalk: ^4.1.2 + hermes-profile-transformer: ^0.0.6 + ip: ^1.1.5 + checksum: 7e82764c8531de228882e912158f26c9b3a426c36f2c1751f58ac68763689b8b733c43b745814c1b72cc1100de2d5bbc764ed105e7d846104d3d69427aa75a60 + languageName: node + linkType: hard + "@react-native-community/cli-platform-android@npm:^6.0.0, @react-native-community/cli-platform-android@npm:^6.2.0": version: 6.2.0 resolution: "@react-native-community/cli-platform-android@npm:6.2.0" @@ -6181,6 +6544,42 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-android@npm:^6.3.1": + version: 6.3.1 + resolution: "@react-native-community/cli-platform-android@npm:6.3.1" + dependencies: + "@react-native-community/cli-tools": ^6.2.1 + chalk: ^4.1.2 + execa: ^1.0.0 + fs-extra: ^8.1.0 + glob: ^7.1.3 + jetifier: ^1.6.2 + lodash: ^4.17.15 + logkitty: ^0.7.1 + slash: ^3.0.0 + xmldoc: ^1.1.2 + checksum: cb4d649213c277c792cfff338d9530f622a5445de576402684dd322ac71b6cc8dfcf699179d8dee9fb89c76b18997740eac41cac7e7ff2c6032cc97afd405e0e + languageName: node + linkType: hard + +"@react-native-community/cli-platform-android@npm:^7.0.1": + version: 7.0.1 + resolution: "@react-native-community/cli-platform-android@npm:7.0.1" + dependencies: + "@react-native-community/cli-tools": ^7.0.1 + chalk: ^4.1.2 + execa: ^1.0.0 + fs-extra: ^8.1.0 + glob: ^7.1.3 + jetifier: ^1.6.2 + lodash: ^4.17.15 + logkitty: ^0.7.1 + slash: ^3.0.0 + xmldoc: ^1.1.2 + checksum: 35f741153cffc202058b6f9ba3d1d012bccc4268ab62853b455da11090fe21cd8fd90a85d4b09cc04ffc3ee97d9af70b34ced26a4003e6a18f7814566107b0d4 + languageName: node + linkType: hard + "@react-native-community/cli-platform-ios@npm:^6.0.0": version: 6.2.0 resolution: "@react-native-community/cli-platform-ios@npm:6.2.0" @@ -6197,6 +6596,23 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-platform-ios@npm:^7.0.1": + version: 7.0.1 + resolution: "@react-native-community/cli-platform-ios@npm:7.0.1" + dependencies: + "@react-native-community/cli-tools": ^7.0.1 + chalk: ^4.1.2 + execa: ^1.0.0 + glob: ^7.1.3 + js-yaml: ^3.13.1 + lodash: ^4.17.15 + ora: ^5.4.1 + plist: ^3.0.2 + xcode: ^3.0.0 + checksum: 4b9e06cbf4232cac27a2018dce73996f9e715d4b0495c7c3cc1d9dff96ce6e7e936ea1a09fa8b32c86ed443875f226d93aeae7c68f320c8dde7813e7c28ceda3 + languageName: node + linkType: hard + "@react-native-community/cli-plugin-metro@npm:^6.2.0": version: 6.2.0 resolution: "@react-native-community/cli-plugin-metro@npm:6.2.0" @@ -6215,6 +6631,24 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-plugin-metro@npm:^7.0.4": + version: 7.0.4 + resolution: "@react-native-community/cli-plugin-metro@npm:7.0.4" + dependencies: + "@react-native-community/cli-server-api": ^7.0.4 + "@react-native-community/cli-tools": ^6.2.1 + chalk: ^4.1.2 + metro: ^0.67.0 + metro-config: ^0.67.0 + metro-core: ^0.67.0 + metro-react-native-babel-transformer: ^0.67.0 + metro-resolver: ^0.67.0 + metro-runtime: ^0.67.0 + readline: ^1.3.0 + checksum: adb47af0132360c611c364fc3cbabc4cc5f84e9bb2fe2285dbf2648ca8e9022ad7f19ab5424c396ee34734b275765d30931346c1b7b656ace4beab0724f3b332 + languageName: node + linkType: hard + "@react-native-community/cli-server-api@npm:^6.2.0": version: 6.2.0 resolution: "@react-native-community/cli-server-api@npm:6.2.0" @@ -6232,6 +6666,23 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-server-api@npm:^7.0.4": + version: 7.0.4 + resolution: "@react-native-community/cli-server-api@npm:7.0.4" + dependencies: + "@react-native-community/cli-debugger-ui": ^7.0.3 + "@react-native-community/cli-tools": ^6.2.1 + compression: ^1.7.1 + connect: ^3.6.5 + errorhandler: ^1.5.0 + nocache: ^2.1.0 + pretty-format: ^26.6.2 + serve-static: ^1.13.1 + ws: ^7.5.1 + checksum: b6f0a43062c2ed5989f6e439fecf1d7f48275fe0f2b13dcbc720518053d52e2e62e90f50c48a4f0387be1388da02e0a25eed69ecf0ca88ea1e7285d7b538a100 + languageName: node + linkType: hard + "@react-native-community/cli-tools@npm:^6.2.0": version: 6.2.0 resolution: "@react-native-community/cli-tools@npm:6.2.0" @@ -6248,6 +6699,39 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli-tools@npm:^6.2.1": + version: 6.2.1 + resolution: "@react-native-community/cli-tools@npm:6.2.1" + dependencies: + appdirsjs: ^1.2.4 + chalk: ^4.1.2 + lodash: ^4.17.15 + mime: ^2.4.1 + node-fetch: ^2.6.0 + open: ^6.2.0 + semver: ^6.3.0 + shell-quote: ^1.7.3 + checksum: dcc5084c0c021cbec98099c97bdbdaedcd46d51fbd271a369a80c76754fa068dd90b4c5f4a61a9c1a852bce715bea5c4e0f30f2d6da958c7204c2fa14d0f99a8 + languageName: node + linkType: hard + +"@react-native-community/cli-tools@npm:^7.0.1": + version: 7.0.1 + resolution: "@react-native-community/cli-tools@npm:7.0.1" + dependencies: + appdirsjs: ^1.2.4 + chalk: ^4.1.2 + lodash: ^4.17.15 + mime: ^2.4.1 + node-fetch: ^2.6.0 + open: ^6.2.0 + ora: ^5.4.1 + semver: ^6.3.0 + shell-quote: ^1.7.3 + checksum: 11b40438499b3926b55f897f8f276be7092caccbd87b3bd8fd53513190f1743d8bb30673bfb8a6a3a0d2a57837c972b45a4847dae5a5bed3fd18d029bdbe190e + languageName: node + linkType: hard + "@react-native-community/cli-types@npm:^6.0.0": version: 6.0.0 resolution: "@react-native-community/cli-types@npm:6.0.0" @@ -6300,6 +6784,49 @@ __metadata: languageName: node linkType: hard +"@react-native-community/cli@npm:^7.0.3": + version: 7.0.4 + resolution: "@react-native-community/cli@npm:7.0.4" + dependencies: + "@react-native-community/cli-debugger-ui": ^7.0.3 + "@react-native-community/cli-hermes": ^6.3.1 + "@react-native-community/cli-plugin-metro": ^7.0.4 + "@react-native-community/cli-server-api": ^7.0.4 + "@react-native-community/cli-tools": ^6.2.1 + "@react-native-community/cli-types": ^6.0.0 + appdirsjs: ^1.2.4 + chalk: ^4.1.2 + command-exists: ^1.2.8 + commander: ^2.19.0 + cosmiconfig: ^5.1.0 + deepmerge: ^3.2.0 + envinfo: ^7.7.2 + execa: ^1.0.0 + find-up: ^4.1.0 + fs-extra: ^8.1.0 + glob: ^7.1.3 + graceful-fs: ^4.1.3 + joi: ^17.2.1 + leven: ^3.1.0 + lodash: ^4.17.15 + minimist: ^1.2.0 + node-stream-zip: ^1.9.1 + ora: ^3.4.0 + pretty-format: ^26.6.2 + prompts: ^2.4.0 + semver: ^6.3.0 + serve-static: ^1.13.1 + strip-ansi: ^5.2.0 + sudo-prompt: ^9.0.0 + wcwidth: ^1.0.1 + peerDependencies: + react-native: "*" + bin: + react-native: build/bin.js + checksum: 67b545932b593e007bda9bc934eea6288f3fe76c62e22d909748353b967a1aeb0033b32526d18c95abc10622b572c32925c5b0faf53b0b7a8b3681ac77c0ca6f + languageName: node + linkType: hard + "@react-native-community/clipboard@npm:1.5.1": version: 1.5.1 resolution: "@react-native-community/clipboard@npm:1.5.1" @@ -6364,6 +6891,13 @@ __metadata: languageName: node linkType: hard +"@react-native/normalize-color@npm:*": + version: 2.1.0 + resolution: "@react-native/normalize-color@npm:2.1.0" + checksum: 8ccbd40b3c7629f1dc97b3e9aadd95fd3507fcf2e37535a6299a70436ab891c34cbdc4240b07380553d6e85dd909e23d5773b5be1da2906b026312e0b0768838 + languageName: node + linkType: hard + "@react-native/normalize-color@npm:1.0.0": version: 1.0.0 resolution: "@react-native/normalize-color@npm:1.0.0" @@ -9862,6 +10396,15 @@ __metadata: languageName: node linkType: hard +"bplist-creator@npm:0.1.1": + version: 0.1.1 + resolution: "bplist-creator@npm:0.1.1" + dependencies: + stream-buffers: 2.2.x + checksum: b0d40d1d1623f1afdbb575cfc8075d742d2c4f0eb458574be809e3857752d1042a39553b3943d2d7f505dde92bcd43e1d7bdac61c9cd44475d696deb79f897ce + languageName: node + linkType: hard + "bplist-parser@npm:0.3.0": version: 0.3.0 resolution: "bplist-parser@npm:0.3.0" @@ -9871,6 +10414,15 @@ __metadata: languageName: node linkType: hard +"bplist-parser@npm:0.3.2": + version: 0.3.2 + resolution: "bplist-parser@npm:0.3.2" + dependencies: + big-integer: 1.6.x + checksum: fad0f6eb155a9b636b4096a1725ce972a0386490d7d38df7be11a3a5645372446b7c44aacbc6626d24d2c17d8b837765361520ebf2960aeffcaf56765811620e + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -13574,6 +14126,17 @@ __metadata: languageName: node linkType: hard +"deprecated-react-native-prop-types@npm:^2.3.0": + version: 2.3.0 + resolution: "deprecated-react-native-prop-types@npm:2.3.0" + dependencies: + "@react-native/normalize-color": "*" + invariant: "*" + prop-types: "*" + checksum: d14f4be1dfe780a7fa9197a31b4a9a2b409c8cf1bf677713fd92d06733dee1043578662d1a8858541cf06164ae91d295db6e595f29bf13e808d9fb37bc58c90b + languageName: node + linkType: hard + "deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": version: 2.3.1 resolution: "deprecation@npm:2.3.1" @@ -17654,6 +18217,13 @@ __metadata: languageName: node linkType: hard +"hermes-engine@npm:~0.11.0": + version: 0.11.0 + resolution: "hermes-engine@npm:0.11.0" + checksum: 34dcd016b373337306be0e5b15923fc2756b17253264443a1a07a14d3326d00eb433af13c08ae11f3a2ddcbcc44ae9a9ac9b071ce72efdd056745327dc3201d7 + languageName: node + linkType: hard + "hermes-engine@npm:~0.9.0": version: 0.9.0 resolution: "hermes-engine@npm:0.9.0" @@ -17661,6 +18231,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.5.0": + version: 0.5.0 + resolution: "hermes-estree@npm:0.5.0" + checksum: 16741229afcda60637b7672ccaf978784147eb21ff55e14418763dff7947717e9a0e962a121a55963aa78ae772cdfd0539b56317c4c63913c7701141335bf0de + languageName: node + linkType: hard + "hermes-parser@npm:0.4.7": version: 0.4.7 resolution: "hermes-parser@npm:0.4.7" @@ -17668,6 +18245,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.5.0": + version: 0.5.0 + resolution: "hermes-parser@npm:0.5.0" + dependencies: + hermes-estree: 0.5.0 + checksum: ef3c9aee01162fe1958e084540aa663bd9001acb6aa5d1c724bb8d7aa947dcc2961e0d572adda60895ebfe59f2caef102925f201445698e196c5626fb21e2ba6 + languageName: node + linkType: hard + "hermes-profile-transformer@npm:^0.0.6": version: 0.0.6 resolution: "hermes-profile-transformer@npm:0.0.6" @@ -18599,7 +19185,7 @@ __metadata: languageName: node linkType: hard -"invariant@npm:2.2.4, invariant@npm:^2.2.2, invariant@npm:^2.2.4": +"invariant@npm:*, invariant@npm:2.2.4, invariant@npm:^2.2.2, invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" dependencies: @@ -19857,6 +20443,30 @@ __metadata: languageName: node linkType: hard +"jest-haste-map@npm:^27.3.1": + version: 27.5.1 + resolution: "jest-haste-map@npm:27.5.1" + dependencies: + "@jest/types": ^27.5.1 + "@types/graceful-fs": ^4.1.2 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.9 + jest-regex-util: ^27.5.1 + jest-serializer: ^27.5.1 + jest-util: ^27.5.1 + jest-worker: ^27.5.1 + micromatch: ^4.0.4 + walker: ^1.0.7 + dependenciesMeta: + fsevents: + optional: true + checksum: e092a1412829a9254b4725531ee72926de530f77fda7b0d9ea18008fb7623c16f72e772d8e93be71cac9e591b2c6843a669610887dd2c89bd9eb528856e3ab47 + languageName: node + linkType: hard + "jest-haste-map@npm:^29.3.1": version: 29.3.1 resolution: "jest-haste-map@npm:29.3.1" @@ -19949,6 +20559,13 @@ __metadata: languageName: node linkType: hard +"jest-regex-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-regex-util@npm:27.5.1" + checksum: d45ca7a9543616a34f7f3079337439cf07566e677a096472baa2810e274b9808b76767c97b0a4029b8a5b82b9d256dee28ef9ad4138b2b9e5933f6fac106c418 + languageName: node + linkType: hard + "jest-regex-util@npm:^29.2.0": version: 29.2.0 resolution: "jest-regex-util@npm:29.2.0" @@ -20052,6 +20669,16 @@ __metadata: languageName: node linkType: hard +"jest-serializer@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-serializer@npm:27.5.1" + dependencies: + "@types/node": "*" + graceful-fs: ^4.2.9 + checksum: 803e03a552278610edc6753c0dd9fa5bb5cd3ca47414a7b2918106efb62b79fd5e9ae785d0a21f12a299fa599fea8acc1fa6dd41283328cee43962cf7df9bb44 + languageName: node + linkType: hard + "jest-snapshot@npm:^29.3.1": version: 29.3.1 resolution: "jest-snapshot@npm:29.3.1" @@ -20098,6 +20725,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-util@npm:27.5.1" + 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 + checksum: ac8d122f6daf7a035dcea156641fd3701aeba245417c40836a77e35b3341b9c02ddc5d904cfcd4ddbaa00ab854da76d3b911870cafdcdbaff90ea471de26c7d7 + languageName: node + linkType: hard + "jest-util@npm:^29.0.0, jest-util@npm:^29.3.1": version: 29.3.1 resolution: "jest-util@npm:29.3.1" @@ -20178,6 +20819,17 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:^27.5.1": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + languageName: node + linkType: hard + "jest-worker@npm:^29.3.1": version: 29.3.1 resolution: "jest-worker@npm:29.3.1" @@ -20425,6 +21077,37 @@ __metadata: languageName: node linkType: hard +"jscodeshift@npm:^0.13.1": + version: 0.13.1 + resolution: "jscodeshift@npm:0.13.1" + dependencies: + "@babel/core": ^7.13.16 + "@babel/parser": ^7.13.16 + "@babel/plugin-proposal-class-properties": ^7.13.0 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.13.8 + "@babel/plugin-proposal-optional-chaining": ^7.13.12 + "@babel/plugin-transform-modules-commonjs": ^7.13.8 + "@babel/preset-flow": ^7.13.13 + "@babel/preset-typescript": ^7.13.0 + "@babel/register": ^7.13.16 + babel-core: ^7.0.0-bridge.0 + chalk: ^4.1.2 + flow-parser: 0.* + graceful-fs: ^4.2.4 + micromatch: ^3.1.10 + neo-async: ^2.5.0 + node-dir: ^0.1.17 + recast: ^0.20.4 + temp: ^0.8.4 + write-file-atomic: ^2.3.0 + peerDependencies: + "@babel/preset-env": ^7.1.6 + bin: + jscodeshift: bin/jscodeshift.js + checksum: 1c35938de5fc29cafec80e2c37d5c3411f85cd5d40e0243b52f2da0c1ab4b659daddfd62de558eca5d562303616f7838097727b651f4ad8e32b1e96f169cdd76 + languageName: node + linkType: hard + "jsdom@npm:15.2.1": version: 15.2.1 resolution: "jsdom@npm:15.2.1" @@ -22275,6 +22958,18 @@ __metadata: languageName: node linkType: hard +"metro-babel-transformer@npm:0.67.0": + version: 0.67.0 + resolution: "metro-babel-transformer@npm:0.67.0" + dependencies: + "@babel/core": ^7.14.0 + hermes-parser: 0.5.0 + metro-source-map: 0.67.0 + nullthrows: ^1.1.1 + checksum: f2029702c8c5f901c72ee9db47a93e4bbe188bc019051756b7a1b5c8c754c575e8727801fc058218f329dbae6a2fab9498b6bc10972433b6fe68a1aafebe1504 + languageName: node + linkType: hard + "metro-cache-key@npm:0.66.2": version: 0.66.2 resolution: "metro-cache-key@npm:0.66.2" @@ -22282,6 +22977,13 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.67.0": + version: 0.67.0 + resolution: "metro-cache-key@npm:0.67.0" + checksum: 13b23f2e1a413b7a79d6f48fb739e92ba1b457c77eba14f65f6bcd1caf1832f314b319e4d690bd6bf9de94c896427b44d5da6e65ab1cde71d07306e00888e014 + languageName: node + linkType: hard + "metro-cache@npm:0.66.2": version: 0.66.2 resolution: "metro-cache@npm:0.66.2" @@ -22293,6 +22995,17 @@ __metadata: languageName: node linkType: hard +"metro-cache@npm:0.67.0": + version: 0.67.0 + resolution: "metro-cache@npm:0.67.0" + dependencies: + metro-core: 0.67.0 + mkdirp: ^0.5.1 + rimraf: ^2.5.4 + checksum: 4d9fba435d3adbe0c4c883ef0361d41acf427ba57e74daa52f55d66bbb564e907c9ceec40c98fac792217e9d1efbc91e1531ec8db907165274c524e30a0dfcde + languageName: node + linkType: hard + "metro-config@npm:0.66.2, metro-config@npm:^0.66.1": version: 0.66.2 resolution: "metro-config@npm:0.66.2" @@ -22307,6 +23020,20 @@ __metadata: languageName: node linkType: hard +"metro-config@npm:0.67.0, metro-config@npm:^0.67.0": + version: 0.67.0 + resolution: "metro-config@npm:0.67.0" + dependencies: + cosmiconfig: ^5.0.5 + jest-validate: ^26.5.2 + metro: 0.67.0 + metro-cache: 0.67.0 + metro-core: 0.67.0 + metro-runtime: 0.67.0 + checksum: 0e8685e52f22470251fd3d56f9f71dae4dab266bc7393feebd97fb9513311d2b18c04fd019c13ad30aafe472e5515b31b2373caddd51e2cc7109d1156345aa1a + languageName: node + linkType: hard + "metro-core@npm:0.66.2, metro-core@npm:^0.66.1": version: 0.66.2 resolution: "metro-core@npm:0.66.2" @@ -22318,6 +23045,17 @@ __metadata: languageName: node linkType: hard +"metro-core@npm:0.67.0, metro-core@npm:^0.67.0": + version: 0.67.0 + resolution: "metro-core@npm:0.67.0" + dependencies: + jest-haste-map: ^27.3.1 + lodash.throttle: ^4.1.1 + metro-resolver: 0.67.0 + checksum: c3183ad2950f6e796675cb52fe7d0228f6147da617f15d43baa9362a73c3cf33b108b0084d7956a6541129599cf16ea8e68b693742df21adae45a75fd0fd5f98 + languageName: node + linkType: hard + "metro-hermes-compiler@npm:0.66.2": version: 0.66.2 resolution: "metro-hermes-compiler@npm:0.66.2" @@ -22325,6 +23063,13 @@ __metadata: languageName: node linkType: hard +"metro-hermes-compiler@npm:0.67.0": + version: 0.67.0 + resolution: "metro-hermes-compiler@npm:0.67.0" + checksum: 02926d5ae44f08cfec7a80d8b23c7096a44e65e5d400e6123517efffff14b5e547a25394914b7478aedb22994b317d7a3091e659089fd182b92e5afec740bd4b + languageName: node + linkType: hard + "metro-inspector-proxy@npm:0.66.2": version: 0.66.2 resolution: "metro-inspector-proxy@npm:0.66.2" @@ -22339,6 +23084,20 @@ __metadata: languageName: node linkType: hard +"metro-inspector-proxy@npm:0.67.0": + version: 0.67.0 + resolution: "metro-inspector-proxy@npm:0.67.0" + dependencies: + connect: ^3.6.5 + debug: ^2.2.0 + ws: ^7.5.1 + yargs: ^15.3.1 + bin: + metro-inspector-proxy: src/cli.js + checksum: db75ae358bf061d7a19b84a8833b8f7d9fedfa559568c1010953d2c681ac549baa767a4665f11e0a1994e8c964197538ceafe19d0fc5e97f855a23c778edaaeb + languageName: node + linkType: hard + "metro-minify-uglify@npm:0.66.2": version: 0.66.2 resolution: "metro-minify-uglify@npm:0.66.2" @@ -22348,6 +23107,15 @@ __metadata: languageName: node linkType: hard +"metro-minify-uglify@npm:0.67.0": + version: 0.67.0 + resolution: "metro-minify-uglify@npm:0.67.0" + dependencies: + uglify-es: ^3.1.9 + checksum: e0d4c7bbcaedf210d4b7379cf158818a1311c65b2518599d34d374e6fd090f47e3c55bf31a018380685db8a4570e272fb57627dd0961915ab71fb08fd13dfd29 + languageName: node + linkType: hard + "metro-react-native-babel-preset@npm:0.66.2": version: 0.66.2 resolution: "metro-react-native-babel-preset@npm:0.66.2" @@ -22398,6 +23166,56 @@ __metadata: languageName: node linkType: hard +"metro-react-native-babel-preset@npm:0.67.0": + version: 0.67.0 + resolution: "metro-react-native-babel-preset@npm:0.67.0" + dependencies: + "@babel/core": ^7.14.0 + "@babel/plugin-proposal-class-properties": ^7.0.0 + "@babel/plugin-proposal-export-default-from": ^7.0.0 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.0.0 + "@babel/plugin-proposal-object-rest-spread": ^7.0.0 + "@babel/plugin-proposal-optional-catch-binding": ^7.0.0 + "@babel/plugin-proposal-optional-chaining": ^7.0.0 + "@babel/plugin-syntax-dynamic-import": ^7.0.0 + "@babel/plugin-syntax-export-default-from": ^7.0.0 + "@babel/plugin-syntax-flow": ^7.2.0 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.0.0 + "@babel/plugin-syntax-optional-chaining": ^7.0.0 + "@babel/plugin-transform-arrow-functions": ^7.0.0 + "@babel/plugin-transform-async-to-generator": ^7.0.0 + "@babel/plugin-transform-block-scoping": ^7.0.0 + "@babel/plugin-transform-classes": ^7.0.0 + "@babel/plugin-transform-computed-properties": ^7.0.0 + "@babel/plugin-transform-destructuring": ^7.0.0 + "@babel/plugin-transform-exponentiation-operator": ^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-modules-commonjs": ^7.0.0 + "@babel/plugin-transform-object-assign": ^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-regenerator": ^7.0.0 + "@babel/plugin-transform-runtime": ^7.0.0 + "@babel/plugin-transform-shorthand-properties": ^7.0.0 + "@babel/plugin-transform-spread": ^7.0.0 + "@babel/plugin-transform-sticky-regex": ^7.0.0 + "@babel/plugin-transform-template-literals": ^7.0.0 + "@babel/plugin-transform-typescript": ^7.5.0 + "@babel/plugin-transform-unicode-regex": ^7.0.0 + "@babel/template": ^7.0.0 + react-refresh: ^0.4.0 + peerDependencies: + "@babel/core": "*" + checksum: 931105e7c76e1e69663bcf75ed8979161c6d486767ccc48c9c6ca80276adbeae7c2aaec0b5c9829f0a44fbf456e97908f81486bdb04cfe68fde375413acc654f + languageName: node + linkType: hard + "metro-react-native-babel-transformer@npm:0.66.2, metro-react-native-babel-transformer@npm:^0.66.1": version: 0.66.2 resolution: "metro-react-native-babel-transformer@npm:0.66.2" @@ -22415,6 +23233,23 @@ __metadata: languageName: node linkType: hard +"metro-react-native-babel-transformer@npm:0.67.0, metro-react-native-babel-transformer@npm:^0.67.0": + version: 0.67.0 + resolution: "metro-react-native-babel-transformer@npm:0.67.0" + dependencies: + "@babel/core": ^7.14.0 + babel-preset-fbjs: ^3.4.0 + hermes-parser: 0.5.0 + metro-babel-transformer: 0.67.0 + metro-react-native-babel-preset: 0.67.0 + metro-source-map: 0.67.0 + nullthrows: ^1.1.1 + peerDependencies: + "@babel/core": "*" + checksum: ff08b2f187a17bfed46170909d106ec042db52ad75e5facfbec8a7d8068c95b8e53c9ec28b6704f0809f9a338550d017e3e3596ef3f1373e8e7fcf1b3cd5233f + languageName: node + linkType: hard + "metro-resolver@npm:0.66.2, metro-resolver@npm:^0.66.1": version: 0.66.2 resolution: "metro-resolver@npm:0.66.2" @@ -22424,6 +23259,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.67.0, metro-resolver@npm:^0.67.0": + version: 0.67.0 + resolution: "metro-resolver@npm:0.67.0" + dependencies: + absolute-path: ^0.0.0 + checksum: 967896f26c58071720effbf310352f8c89a3279c822c8303e2bdcc07ad7fb7e39e19afcb9ae8ec47f39573b47c4217fb9afbc14636d5345528b6d410b08c0f2f + languageName: node + linkType: hard + "metro-runtime@npm:0.66.2, metro-runtime@npm:^0.66.1": version: 0.66.2 resolution: "metro-runtime@npm:0.66.2" @@ -22431,6 +23275,13 @@ __metadata: languageName: node linkType: hard +"metro-runtime@npm:0.67.0, metro-runtime@npm:^0.67.0": + version: 0.67.0 + resolution: "metro-runtime@npm:0.67.0" + checksum: 06be8635277d594b17009d9b35bbd9cb65dd44980a0a87739e49801a6b6dae73109825ddd94e1a8195520b3fa41507d151b7b7f8a484cf61164e155bfdbb091b + languageName: node + linkType: hard + "metro-source-map@npm:0.66.2": version: 0.66.2 resolution: "metro-source-map@npm:0.66.2" @@ -22447,6 +23298,22 @@ __metadata: languageName: node linkType: hard +"metro-source-map@npm:0.67.0": + version: 0.67.0 + resolution: "metro-source-map@npm:0.67.0" + dependencies: + "@babel/traverse": ^7.14.0 + "@babel/types": ^7.0.0 + invariant: ^2.2.4 + metro-symbolicate: 0.67.0 + nullthrows: ^1.1.1 + ob1: 0.67.0 + source-map: ^0.5.6 + vlq: ^1.0.0 + checksum: 87ae604d292c1694966cb755579aa3a0185b9b657590a2996a4184fe3cd164eedf43491b3a3369a2bdf846124f821d96a87e4a8eab0a8d133d5f04d00ba354f6 + languageName: node + linkType: hard + "metro-symbolicate@npm:0.66.2": version: 0.66.2 resolution: "metro-symbolicate@npm:0.66.2" @@ -22463,6 +23330,22 @@ __metadata: languageName: node linkType: hard +"metro-symbolicate@npm:0.67.0": + version: 0.67.0 + resolution: "metro-symbolicate@npm:0.67.0" + dependencies: + invariant: ^2.2.4 + metro-source-map: 0.67.0 + nullthrows: ^1.1.1 + source-map: ^0.5.6 + through2: ^2.0.1 + vlq: ^1.0.0 + bin: + metro-symbolicate: src/index.js + checksum: 4a2bbbcf6a166473003151c2e62255a7a3e0ba0043134c303418b21fc9cf6cf362c2b5a249f533dceb94a88642805bd771c2062bc5ae8cb3a53cf11809041128 + languageName: node + linkType: hard + "metro-transform-plugins@npm:0.66.2": version: 0.66.2 resolution: "metro-transform-plugins@npm:0.66.2" @@ -22476,6 +23359,19 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.67.0": + version: 0.67.0 + resolution: "metro-transform-plugins@npm:0.67.0" + dependencies: + "@babel/core": ^7.14.0 + "@babel/generator": ^7.14.0 + "@babel/template": ^7.0.0 + "@babel/traverse": ^7.14.0 + nullthrows: ^1.1.1 + checksum: 79e468e5ba0965181f56777d998ebdfcc2792c33d8b25d5a180022e62fc3e3585050bfc82bb3b238bc778baef8ad37d1083da620b68f02240597ce73ec4efff5 + languageName: node + linkType: hard + "metro-transform-worker@npm:0.66.2": version: 0.66.2 resolution: "metro-transform-worker@npm:0.66.2" @@ -22497,6 +23393,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.67.0": + version: 0.67.0 + resolution: "metro-transform-worker@npm:0.67.0" + dependencies: + "@babel/core": ^7.14.0 + "@babel/generator": ^7.14.0 + "@babel/parser": ^7.14.0 + "@babel/types": ^7.0.0 + babel-preset-fbjs: ^3.4.0 + metro: 0.67.0 + metro-babel-transformer: 0.67.0 + metro-cache: 0.67.0 + metro-cache-key: 0.67.0 + metro-hermes-compiler: 0.67.0 + metro-source-map: 0.67.0 + metro-transform-plugins: 0.67.0 + nullthrows: ^1.1.1 + checksum: 114ecd11b9945c3bf0171c2dc725bc3676a14604740d15ee8e862cd903706743407b0592ffe1b3fd53946947bcf8d00f015f823343ee1eeb843ce63e514466c6 + languageName: node + linkType: hard + "metro@npm:0.66.2, metro@npm:^0.66.1": version: 0.66.2 resolution: "metro@npm:0.66.2" @@ -22559,6 +23476,67 @@ __metadata: languageName: node linkType: hard +"metro@npm:0.67.0, metro@npm:^0.67.0": + version: 0.67.0 + resolution: "metro@npm:0.67.0" + dependencies: + "@babel/code-frame": ^7.0.0 + "@babel/core": ^7.14.0 + "@babel/generator": ^7.14.0 + "@babel/parser": ^7.14.0 + "@babel/template": ^7.0.0 + "@babel/traverse": ^7.14.0 + "@babel/types": ^7.0.0 + absolute-path: ^0.0.0 + accepts: ^1.3.7 + async: ^2.4.0 + 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 + fs-extra: ^1.0.0 + graceful-fs: ^4.1.3 + hermes-parser: 0.5.0 + image-size: ^0.6.0 + invariant: ^2.2.4 + jest-haste-map: ^27.3.1 + jest-worker: ^26.0.0 + lodash.throttle: ^4.1.1 + metro-babel-transformer: 0.67.0 + metro-cache: 0.67.0 + metro-cache-key: 0.67.0 + metro-config: 0.67.0 + metro-core: 0.67.0 + metro-hermes-compiler: 0.67.0 + metro-inspector-proxy: 0.67.0 + metro-minify-uglify: 0.67.0 + metro-react-native-babel-preset: 0.67.0 + metro-resolver: 0.67.0 + metro-runtime: 0.67.0 + metro-source-map: 0.67.0 + metro-symbolicate: 0.67.0 + metro-transform-plugins: 0.67.0 + metro-transform-worker: 0.67.0 + mime-types: ^2.1.27 + mkdirp: ^0.5.1 + node-fetch: ^2.2.0 + nullthrows: ^1.1.1 + rimraf: ^2.5.4 + serialize-error: ^2.1.0 + source-map: ^0.5.6 + strip-ansi: ^6.0.0 + temp: 0.8.3 + throat: ^5.0.0 + ws: ^7.5.1 + yargs: ^15.3.1 + bin: + metro: src/cli.js + checksum: f106dd7f56380f734ae0d71afcee068b18774196889a6909963fd82b4c0db5508915735bc5be8027150ccea3b5bed5d286fdda41d0458ba3d156d8db29841fce + languageName: node + linkType: hard + "micromatch@npm:^2.1.5": version: 2.3.11 resolution: "micromatch@npm:2.3.11" @@ -24126,6 +25104,13 @@ __metadata: languageName: node linkType: hard +"ob1@npm:0.67.0": + version: 0.67.0 + resolution: "ob1@npm:0.67.0" + checksum: 02910732e1094dd164d6dfa674250bc404503c8a85fa60b15399f9059006329d7b1bad2cb0bca1841bcf4c2c1759d91297485361523d21066984a9130f3f3b65 + languageName: node + linkType: hard + "object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -25445,7 +26430,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4": +"pirates@npm:^4.0.4, pirates@npm:^4.0.5": version: 4.0.5 resolution: "pirates@npm:4.0.5" checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 @@ -25508,6 +26493,16 @@ __metadata: languageName: node linkType: hard +"plist@npm:^3.0.5": + version: 3.0.6 + resolution: "plist@npm:3.0.6" + dependencies: + base64-js: ^1.5.1 + xmlbuilder: ^15.1.1 + checksum: e21390fab8a3c388f8f51b76c0aa187242a40537119ce865d8637630e7d7df79b21f841ec6a4668e7c68d409a6f584d696619099a6125d28011561639c0823b8 + languageName: node + linkType: hard + "plur@npm:^4.0.0": version: 4.0.0 resolution: "plur@npm:4.0.0" @@ -25972,7 +26967,7 @@ __metadata: languageName: node linkType: hard -"promise@npm:8.3.0": +"promise@npm:8.3.0, promise@npm:^8.2.0": version: 8.3.0 resolution: "promise@npm:8.3.0" dependencies: @@ -26018,17 +27013,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.5.10": - version: 15.5.10 - resolution: "prop-types@npm:15.5.10" - dependencies: - fbjs: ^0.8.9 - loose-envify: ^1.3.1 - checksum: 3e928ad5afa5124d52a341a706170628e7b0caa9340515782be6a767261e6eb0e473116188bb8efbe9d9b62cb3c9501c71bf4ab7d34f2507294ee34c90de6964 - languageName: node - linkType: hard - -"prop-types@npm:15.8.1, prop-types@npm:^15.8.1": +"prop-types@npm:*, prop-types@npm:15.8.1, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -26039,6 +27024,16 @@ __metadata: languageName: node linkType: hard +"prop-types@npm:15.5.10": + version: 15.5.10 + resolution: "prop-types@npm:15.5.10" + dependencies: + fbjs: ^0.8.9 + loose-envify: ^1.3.1 + checksum: 3e928ad5afa5124d52a341a706170628e7b0caa9340515782be6a767261e6eb0e473116188bb8efbe9d9b62cb3c9501c71bf4ab7d34f2507294ee34c90de6964 + languageName: node + linkType: hard + "prop-types@npm:^15.5.10, prop-types@npm:^15.5.7, prop-types@npm:^15.5.8, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2": version: 15.7.2 resolution: "prop-types@npm:15.7.2" @@ -26413,16 +27408,6 @@ __metadata: languageName: node linkType: hard -"react-devtools-core@npm:4.19.1": - version: 4.19.1 - resolution: "react-devtools-core@npm:4.19.1" - dependencies: - shell-quote: ^1.6.1 - ws: ^7 - checksum: 20471dde740e25a6f51b7b2b719fb1e1a9213cfb2a14d6defb44eced93646f73c9c5e376fcfdc78827c4fb587bc030ca99a14a0154a94acf7a1e1496d2b59ef6 - languageName: node - linkType: hard - "react-devtools-core@npm:^4.13.0": version: 4.21.0 resolution: "react-devtools-core@npm:4.21.0" @@ -26443,6 +27428,16 @@ __metadata: languageName: node linkType: hard +"react-devtools-core@npm:^4.23.0": + version: 4.27.1 + resolution: "react-devtools-core@npm:4.27.1" + dependencies: + shell-quote: ^1.6.1 + ws: ^7 + checksum: 3c0b89942f5a8525fa16001470b4c9343974673643d2f642c93c631f823ee232418f9e3e6fe2cada4553c796cac909e77b0e51088daf6f7f9e0229046f829e51 + languageName: node + linkType: hard + "react-dom@npm:18.2.0": version: 18.2.0 resolution: "react-dom@npm:18.2.0" @@ -26473,6 +27468,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^16.12.0 || ^17.0.0, react-is@npm:^17.0.1, react-is@npm:^17.0.2": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 + languageName: node + linkType: hard + "react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.1": version: 16.13.1 resolution: "react-is@npm:16.13.1" @@ -26480,13 +27482,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^17.0.1, react-is@npm:^17.0.2": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 - languageName: node - linkType: hard - "react-motion@npm:^0.5.2": version: 0.5.2 resolution: "react-motion@npm:0.5.2" @@ -26520,6 +27515,18 @@ __metadata: languageName: node linkType: hard +"react-native-codegen@npm:^0.0.18": + version: 0.0.18 + resolution: "react-native-codegen@npm:0.0.18" + dependencies: + "@babel/parser": ^7.14.0 + flow-parser: ^0.121.0 + jscodeshift: ^0.13.1 + nullthrows: ^1.1.1 + checksum: 55af378d630cae2323e56da9d6840e21a78ff811b39353b7c0935e8ca77d39f46dd1ef797b013c6a9a1c5ca7ceeff6203dadba9fca9b920dec810cdba1ca863c + languageName: node + linkType: hard + "react-native-codegen@npm:^0.0.7": version: 0.0.7 resolution: "react-native-codegen@npm:0.0.7" @@ -26531,17 +27538,6 @@ __metadata: languageName: node linkType: hard -"react-native-codegen@npm:^0.0.8": - version: 0.0.8 - resolution: "react-native-codegen@npm:0.0.8" - dependencies: - flow-parser: ^0.121.0 - jscodeshift: ^0.11.0 - nullthrows: ^1.1.1 - checksum: c5ccdcb2a2f249756aca8e729cf96737368c8d33673b08d4c928a469bcb58ff37fbf3c7a070398f33b19846c4261948e2c5107c561934a41ac034620f7207bbd - languageName: node - linkType: hard - "react-native-dialogbox@npm:0.6.10": version: 0.6.10 resolution: "react-native-dialogbox@npm:0.6.10" @@ -26615,6 +27611,13 @@ __metadata: languageName: node linkType: hard +"react-native-gradle-plugin@npm:^0.0.6": + version: 0.0.6 + resolution: "react-native-gradle-plugin@npm:0.0.6" + checksum: 185ad348931ef4f58065b50bbf80558af668b1ef11c31067aab7f1cd85b18809a62fcf0b7a18444726dacd098042771a570c0ac76bb8976c3ccbe7c86cff0e11 + languageName: node + linkType: hard + "react-native-image-picker@npm:4.10.3": version: 4.10.3 resolution: "react-native-image-picker@npm:4.10.3" @@ -26792,45 +27795,47 @@ __metadata: languageName: node linkType: hard -"react-native@npm:0.67.5": - version: 0.67.5 - resolution: "react-native@npm:0.67.5" +"react-native@npm:0.68.5": + version: 0.68.5 + resolution: "react-native@npm:0.68.5" dependencies: "@jest/create-cache-key-function": ^27.0.1 - "@react-native-community/cli": ^6.0.0 - "@react-native-community/cli-platform-android": ^6.0.0 - "@react-native-community/cli-platform-ios": ^6.0.0 + "@react-native-community/cli": ^7.0.3 + "@react-native-community/cli-platform-android": ^7.0.1 + "@react-native-community/cli-platform-ios": ^7.0.1 "@react-native/assets": 1.0.0 "@react-native/normalize-color": 2.0.0 "@react-native/polyfills": 2.0.0 abort-controller: ^3.0.0 anser: ^1.4.9 base64-js: ^1.1.2 + deprecated-react-native-prop-types: ^2.3.0 event-target-shim: ^5.0.1 - hermes-engine: ~0.9.0 + hermes-engine: ~0.11.0 invariant: ^2.2.4 jsc-android: ^250230.2.1 - metro-react-native-babel-transformer: 0.66.2 - metro-runtime: 0.66.2 - metro-source-map: 0.66.2 + metro-react-native-babel-transformer: 0.67.0 + metro-runtime: 0.67.0 + metro-source-map: 0.67.0 nullthrows: ^1.1.1 pretty-format: ^26.5.2 - promise: ^8.0.3 - prop-types: ^15.7.2 - react-devtools-core: 4.19.1 - react-native-codegen: ^0.0.8 + promise: ^8.2.0 + react-devtools-core: ^4.23.0 + react-native-codegen: ^0.0.18 + react-native-gradle-plugin: ^0.0.6 react-refresh: ^0.4.0 + react-shallow-renderer: 16.14.1 regenerator-runtime: ^0.13.2 scheduler: ^0.20.2 stacktrace-parser: ^0.1.3 - use-subscription: ^1.0.0 + use-subscription: ">=1.0.0 <1.6.0" whatwg-fetch: ^3.0.0 ws: ^6.1.4 peerDependencies: react: 17.0.2 bin: react-native: cli.js - checksum: bba6afb9fd8c7b18ceabd843b3deb26ff719322a90e300908dd19e3351871f57ee5d7f9b2623866065eb188122a48905d0474bdbe65af1ced206fddb201cc67d + checksum: 487b520f5d8baa9094b4e36f4a44221bc48ec51ab8db10523f0b8baffd30a4fdca85381d1c2b8797590db204561f27ec2084fe0835c6084b3a0ef14e85d35fb0 languageName: node linkType: hard @@ -26927,6 +27932,18 @@ __metadata: languageName: node linkType: hard +"react-shallow-renderer@npm:16.14.1": + version: 16.14.1 + resolution: "react-shallow-renderer@npm:16.14.1" + dependencies: + object-assign: ^4.1.1 + react-is: ^16.12.0 || ^17.0.0 + peerDependencies: + react: ^16.0.0 || ^17.0.0 + checksum: f344c663c48720d19559b4198b1f63ad47a3f11bedc92ede053a6c0706b5209e6110086f3ccc6db04eda9f0d1a415845956ddfb6ce09a922167d4831fcba9314 + languageName: node + linkType: hard + "react-shallow-renderer@npm:^16.15.0": version: 16.15.0 resolution: "react-shallow-renderer@npm:16.15.0" @@ -27240,7 +28257,7 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.20.3": +"recast@npm:^0.20.3, recast@npm:^0.20.4": version: 0.20.5 resolution: "recast@npm:0.20.5" dependencies: @@ -28708,6 +29725,13 @@ __metadata: languageName: node linkType: hard +"shell-quote@npm:^1.7.3": + version: 1.7.4 + resolution: "shell-quote@npm:1.7.4" + checksum: 2874ea9c1a7c3ebfc9ec5734a897e16533d0d06f2e4cddc22ba3d1cab5cdc07d0f825364c1b1e39abe61236f44d8e60e933c7ad7349ce44de4f5dddc7b4354e9 + languageName: node + linkType: hard + "shelljs@npm:^0.8.4": version: 0.8.4 resolution: "shelljs@npm:0.8.4" @@ -28862,6 +29886,17 @@ __metadata: languageName: node linkType: hard +"simple-plist@npm:^1.1.0": + version: 1.4.0 + resolution: "simple-plist@npm:1.4.0" + dependencies: + bplist-creator: 0.1.1 + bplist-parser: 0.3.2 + plist: ^3.0.5 + checksum: fa8086f6b781c289f1abad21306481dda4af6373b32a5d998a70e53c2b7218a1d21ebb5ae3e736baae704c21d311d3d39d01d0e6a2387eda01b4020b9ebd909e + languageName: node + linkType: hard + "simple-swizzle@npm:^0.2.2": version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" @@ -30571,7 +31606,7 @@ __metadata: languageName: node linkType: hard -"temp@npm:^0.8.1": +"temp@npm:^0.8.1, temp@npm:^0.8.4": version: 0.8.4 resolution: "temp@npm:0.8.4" dependencies: @@ -32080,7 +33115,7 @@ __metadata: languageName: node linkType: hard -"use-subscription@npm:^1.0.0": +"use-subscription@npm:>=1.0.0 <1.6.0, use-subscription@npm:^1.0.0": version: 1.5.1 resolution: "use-subscription@npm:1.5.1" dependencies: @@ -33102,7 +34137,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^7.5.5": +"ws@npm:^7.5.1, ws@npm:^7.5.5": version: 7.5.9 resolution: "ws@npm:7.5.9" peerDependencies: @@ -33157,6 +34192,16 @@ __metadata: languageName: node linkType: hard +"xcode@npm:^3.0.0": + version: 3.0.1 + resolution: "xcode@npm:3.0.1" + dependencies: + simple-plist: ^1.1.0 + uuid: ^7.0.3 + checksum: 908ff85851f81aec6e36ca24427db092e1cc068f052716e14de5e762196858039efabbe053a1abe8920184622501049e74a93618e8692b982f7604a9847db108 + languageName: node + linkType: hard + "xdg-basedir@npm:^4.0.0": version: 4.0.0 resolution: "xdg-basedir@npm:4.0.0" @@ -33205,7 +34250,7 @@ __metadata: languageName: node linkType: hard -"xmlbuilder@npm:>=11.0.1": +"xmlbuilder@npm:>=11.0.1, xmlbuilder@npm:^15.1.1": version: 15.1.1 resolution: "xmlbuilder@npm:15.1.1" checksum: 14f7302402e28d1f32823583d121594a9dca36408d40320b33f598bd589ca5163a352d076489c9c64d2dc1da19a790926a07bf4191275330d4de2b0d85bb1843