diff --git a/packages/app-mobile/.buckconfig b/packages/app-mobile/.buckconfig deleted file mode 100644 index 934256cb2..000000000 --- a/packages/app-mobile/.buckconfig +++ /dev/null @@ -1,6 +0,0 @@ - -[android] - target = Google Inc.:Google APIs:23 - -[maven_repositories] - central = https://repo1.maven.org/maven2 diff --git a/packages/app-mobile/.flowconfig b/packages/app-mobile/.flowconfig deleted file mode 100644 index b274ad1d6..000000000 --- a/packages/app-mobile/.flowconfig +++ /dev/null @@ -1,73 +0,0 @@ -[ignore] -; We fork some components by platform -.*/*[.]android.js - -; Ignore "BUCK" generated dirs -/\.buckd/ - -; Ignore polyfills -node_modules/react-native/Libraries/polyfills/.* - -; These should not be required directly -; require from fbjs/lib instead: require('fbjs/lib/warning') -node_modules/warning/.* - -; Flow doesn't support platforms -.*/Libraries/Utilities/LoadingView.js - -[untyped] -.*/node_modules/@react-native-community/cli/.*/.* - -[include] - -[libs] -node_modules/react-native/interface.js -node_modules/react-native/flow/ - -[options] -emoji=true - -esproposal.optional_chaining=enable -esproposal.nullish_coalescing=enable - -module.file_ext=.js -module.file_ext=.json -module.file_ext=.ios.js - -munge_underscores=true - -module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' -module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState - -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ -suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError - -[lints] -sketchy-null-number=warn -sketchy-null-mixed=warn -sketchy-number=warn -untyped-type-import=warn -nonstrict-import=warn -deprecated-type=warn -unsafe-getters-setters=warn -unnecessary-invariant=warn -signature-verification-failure=warn -deprecated-utility=error - -[strict] -deprecated-type -nonstrict-import -sketchy-null -unclear-type -unsafe-getters-setters -untyped-import -untyped-type-import - -[version] -^0.122.0 diff --git a/packages/app-mobile/.gitignore b/packages/app-mobile/.gitignore index 610cedbbb..725e577b2 100644 --- a/packages/app-mobile/.gitignore +++ b/packages/app-mobile/.gitignore @@ -31,6 +31,8 @@ local.properties *.iml *.hprof .cxx/ +*.keystore +!debug.keystore # node.js # @@ -38,12 +40,6 @@ node_modules/ npm-debug.log yarn-error.log -# BUCK -buck-out/ -\.buckd/ -*.keystore -!debug.keystore - # fastlane # # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the @@ -63,6 +59,9 @@ buck-out/ /ios/Pods/ /vendor/bundle/ +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* + # Custom lib/csstojs/ lib/rnInjectedJs/ diff --git a/packages/app-mobile/.node-version b/packages/app-mobile/.node-version new file mode 100644 index 000000000..25bf17fc5 --- /dev/null +++ b/packages/app-mobile/.node-version @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/packages/app-mobile/.ruby-version b/packages/app-mobile/.ruby-version deleted file mode 100644 index 460b6fd40..000000000 --- a/packages/app-mobile/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.7.5 \ No newline at end of file diff --git a/packages/app-mobile/Gemfile b/packages/app-mobile/Gemfile index 7e69ee5c3..2ef8d07a0 100644 --- a/packages/app-mobile/Gemfile +++ b/packages/app-mobile/Gemfile @@ -1,4 +1,4 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby '2.7.5' -gem 'cocoapods', '~> 1.11', '>= 1.11.2' +ruby '>= 2.6.10' +gem 'cocoapods', '>= 1.11.3' diff --git a/packages/app-mobile/android/app/build.gradle b/packages/app-mobile/android/app/build.gradle index 8a0d6ae11..44f2cefa8 100644 --- a/packages/app-mobile/android/app/build.gradle +++ b/packages/app-mobile/android/app/build.gradle @@ -1,119 +1,77 @@ apply plugin: "com.android.application" +apply plugin: "com.facebook.react" 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 - * and bundleReleaseJsAndAssets). - * These basically call `react-native bundle` with the correct arguments during the Android build - * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the - * bundle directly from the development server. Below you can see all the possible configurations - * and their defaults. If you decide to add a configuration block, make sure to add it before the - * `apply from: "../../node_modules/react-native/react.gradle"` line. - * - * project.ext.react = [ - * // the name of the generated asset file containing your JS bundle - * bundleAssetName: "index.android.bundle", - * - * // the entry file for bundle generation. If none specified and - * // "index.android.js" exists, it will be used. Otherwise "index.js" is - * // default. Can be overridden with ENTRY_FILE environment variable. - * entryFile: "index.android.js", - * - * // https://reactnative.dev/docs/performance#enable-the-ram-format - * bundleCommand: "ram-bundle", - * - * // whether to bundle JS and assets in debug mode - * bundleInDebug: false, - * - * // whether to bundle JS and assets in release mode - * bundleInRelease: true, - * - * // whether to bundle JS and assets in another build variant (if configured). - * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants - * // The configuration property can be in the following formats - * // 'bundleIn${productFlavor}${buildType}' - * // 'bundleIn${buildType}' - * // bundleInFreeDebug: true, - * // bundleInPaidRelease: true, - * // bundleInBeta: true, - * - * // whether to disable dev mode in custom build variants (by default only disabled in release) - * // for example: to disable dev mode in the staging build type (if configured) - * devDisabledInStaging: true, - * // The configuration property can be in the following formats - * // 'devDisabledIn${productFlavor}${buildType}' - * // 'devDisabledIn${buildType}' - * - * // the root of your project, i.e. where "package.json" lives - * root: "../../", - * - * // where to put the JS bundle asset in debug mode - * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", - * - * // where to put the JS bundle asset in release mode - * jsBundleDirRelease: "$buildDir/intermediates/assets/release", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in debug mode - * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in release mode - * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", - * - * // by default the gradle tasks are skipped if none of the JS files or assets change; this means - * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to - * // date; if you have any other folders that you want to ignore for performance reasons (gradle - * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ - * // for example, you might want to remove it from here. - * inputExcludes: ["android/**", "ios/**"], - * - * // override which node gets called and with what additional arguments - * nodeExecutableAndArgs: ["node"], - * - * // supply additional arguments to the packager - * extraPackagerArgs: [] - * ] +/* This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. */ -project.ext.react = [ - // 2023-05-09: This seems to be optional, but it's not. Without it, the app - // will crash on certain devices with this error: +react { + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '..' + // root = file("../") + // The folder where the react-native NPM package is. Default is ../node_modules/react-native + // reactNativeDir = file("../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen + // codegenDir = file("../node_modules/react-native-codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js + // cliFile = file("../node_modules/react-native/cli.js") + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] // - // > java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so" + // The command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" // - // https://github.com/laurent22/joplin/issues/8144#issuecomment-1539629812 - enableHermes: true, // clean and rebuild if changing -] - -apply from: "../../node_modules/react-native/react.gradle" + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] +} /** - * Set this to true to create two separate APKs instead of one: - * - An APK that only works on ARM devices - * - An APK that only works on x86 devices - * The advantage is the size of the APK is reduced by about 4MB. - * Upload all the APKs to the Play Store and people will download - * the correct one based on the CPU architecture of their device. + * Set this to true to create four separate APKs instead of one, + * one for each native architecture. This is useful if you don't + * use App Bundles (https://developer.android.com/guide/app-bundle/) + * and want to have separate APKs to upload to the Play Store. */ def enableSeparateBuildPerCPUArchitecture = false /** - * Run Proguard to shrink the Java bytecode in release builds. + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. */ def enableProguardInReleaseBuilds = false /** - * The preferred build flavor of JavaScriptCore. + * The preferred build flavor of JavaScriptCore (JSC) * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that - * give correct results when using with locales other than en-US. Note that + * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ @@ -122,16 +80,9 @@ def enableProguardInReleaseBuilds = false def jscFlavor = 'org.webkit:android-jsc-intl:+' /** - * Whether to enable the Hermes VM. - * - * This should be set on project.ext.react and that value will be read here. If it is not set - * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode - * and the benefits of using Hermes will therefore be sharply reduced. - */ -def enableHermes = project.ext.react.get("enableHermes", false); - -/** - * Architectures to build native code for. + * Private function to get the list of Native Architectures you want to build. + * This reads the value from reactNativeArchitectures in your gradle.properties + * file and works together with the --active-arch-only flag of react-native run-android. */ def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") @@ -139,6 +90,8 @@ def reactNativeArchitectures() { } android { + ndkVersion rootProject.ext.ndkVersion + compileSdkVersion rootProject.ext.compileSdkVersion compileOptions { @@ -146,18 +99,19 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } - dexOptions { - // To fix "GC overhead limit exceeded" - // https://stackoverflow.com/q/32133013/561309 - javaMaxHeapSize "4g" - } + // dexOptions { + // // To fix "GC overhead limit exceeded" + // // https://stackoverflow.com/q/32133013/561309 + // javaMaxHeapSize "4g" + // } + namespace "net.cozic.joplin" defaultConfig { applicationId "net.cozic.joplin" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 2097711 - versionName "2.11.26" + versionCode 2097712 + versionName "2.11.27" // ndk { // abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" // } @@ -166,67 +120,7 @@ android { 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 CMake build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - cmake { - arguments "-DPROJECT_BUILD_DIR=$buildDir", - "-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", - "-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build", - "-DNODE_MODULES_DIR=$rootDir/../node_modules", - "-DANDROID_STL=c++_shared" - } - } - if (!enableSeparateBuildPerCPUArchitecture) { - ndk { - abiFilters (*reactNativeArchitectures()) - } - } - } - } - - if (isNewArchitectureEnabled()) { - // We configure the NDK build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - cmake { - path "$projectDir/src/main/jni/CMakeLists.txt" - } - } - 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 configureCMakeDebug* tasks and the preBuild tasks. - // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 - configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild) - configureCMakeDebug.dependsOn(preDebugBuild) - reactNativeArchitectures().each { architecture -> - tasks.findByName("configureCMakeDebug[${architecture}]")?.configure { - dependsOn("preDebugBuild") - } - tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure { - dependsOn("preReleaseBuild") - } - } - } + multiDexEnabled true } splits { @@ -288,10 +182,10 @@ android { // > Execution failed for task ':app:lintVitalRelease' // // https://stackoverflow.com/a/62603296/561309 - lintOptions { - disable 'InvalidPackage' - checkReleaseBuilds false - } + // lintOptions { + // disable 'InvalidPackage' + // checkReleaseBuilds false + // } } dependencies { @@ -301,72 +195,28 @@ dependencies { exclude group: 'com.google.android.gms', module: 'play-services-vision' } - implementation fileTree(dir: "libs", include: ["*.jar"]) + // implementation fileTree(dir: "libs", include: ["*.jar"]) - //noinspection GradleDynamicVersion - // implementation "com.facebook.react:react-native:+" // From node_modules - implementation ("com.facebook.react:react-native") version { - strictly "0.70.6" // pass in your react-native version - } - - implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" - - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { - exclude group:'com.facebook.fbjni' - } + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0") + + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' exclude group:'com.squareup.okhttp3', module:'okhttp' } - debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' - } - - if (enableHermes) { - //noinspection GradleDynamicVersion - implementation("com.facebook.react:hermes-engine:+") { // From node_modules - exclude group:'com.facebook.fbjni' - } + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } // Needed to fix: The number of method references in a .dex file cannot exceed 64K - 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") - substitute(module("com.facebook.react:hermes-engine")) - .using(project(":ReactAndroid:hermes-engine")) - .because("On New Architecture we're building Hermes 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) { - from configurations.implementation - into 'libs' + // implementation 'com.android.support:multidex:2.0.1' } 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/build_defs.bzl b/packages/app-mobile/android/app/build_defs.bzl deleted file mode 100644 index fff270f8d..000000000 --- a/packages/app-mobile/android/app/build_defs.bzl +++ /dev/null @@ -1,19 +0,0 @@ -"""Helper definitions to glob .aar and .jar targets""" - -def create_aar_targets(aarfiles): - for aarfile in aarfiles: - name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] - lib_deps.append(":" + name) - android_prebuilt_aar( - name = name, - aar = aarfile, - ) - -def create_jar_targets(jarfiles): - for jarfile in jarfiles: - name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] - lib_deps.append(":" + name) - prebuilt_jar( - name = name, - binary_jar = jarfile, - ) 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 02546faa0..8ac06e2c6 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 @@ -17,7 +17,6 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping; import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; -import com.facebook.flipper.plugins.react.ReactFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; import com.facebook.react.ReactInstanceEventListener; import com.facebook.react.ReactInstanceManager; @@ -25,13 +24,16 @@ import com.facebook.react.bridge.ReactContext; import com.facebook.react.modules.network.NetworkingModule; import okhttp3.OkHttpClient; +/** + * Class responsible of loading Flipper inside your React Native application. This is the debug + * flavor of it. Here you can add your own plugins and customize the Flipper setup. + */ public class ReactNativeFlipper { public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { if (FlipperUtils.shouldEnableFlipper(context)) { final FlipperClient client = AndroidFlipperClient.getInstance(context); client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); - client.addPlugin(new ReactFlipperPlugin()); client.addPlugin(new DatabasesFlipperPlugin(context)); client.addPlugin(new SharedPreferencesFlipperPlugin(context)); client.addPlugin(CrashReporterPlugin.getInstance()); diff --git a/packages/app-mobile/android/app/src/main/AndroidManifest.xml b/packages/app-mobile/android/app/src/main/AndroidManifest.xml index 27e2d9506..e829713f7 100644 --- a/packages/app-mobile/android/app/src/main/AndroidManifest.xml +++ b/packages/app-mobile/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ @@ -8,6 +7,7 @@ + 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 fc277bc8d..8c5245b02 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 @@ -2,7 +2,8 @@ package net.cozic.joplin; import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; -import com.facebook.react.ReactRootView; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactActivityDelegate; public class MainActivity extends ReactActivity { @@ -16,31 +17,19 @@ public class MainActivity extends ReactActivity { } /** - * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and - * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer - * (Paper). + * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link + * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React + * (aka React 18) with two boolean flags. */ @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()); + return new DefaultReactActivityDelegate( + this, + getMainComponentName(), // If you opted-in for the New Architecture, we enable the Fabric Renderer. - reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); - return reactRootView; - } - - @Override - protected boolean isConcurrentRootEnabled() { - // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18). - // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html - return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - } + DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled + // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18). + DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled + ); } } 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 b421afe7e..cb207c2ae 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 @@ -1,41 +1,38 @@ package net.cozic.joplin; import android.app.Application; -import android.content.Context; import android.database.CursorWindow; import android.webkit.WebView; -import androidx.multidex.MultiDex; +// import androidx.multidex.MultiDex; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; import com.oblador.vectoricons.VectorIconsPackage; -import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; -import com.facebook.react.config.ReactFeatureFlags; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactNativeHost; import com.facebook.soloader.SoLoader; -import net.cozic.joplin.newarchitecture.MainApplicationReactNativeHost; import net.cozic.joplin.share.SharePackage; import net.cozic.joplin.ssl.SslPackage; import net.cozic.joplin.textinput.TextInputPackage; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.util.List; public class MainApplication extends Application implements ReactApplication { // Needed to fix: The number of method references in a .dex file cannot exceed 64K - @Override - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - MultiDex.install(this); - } + // @Override + // protected void attachBaseContext(Context base) { + // super.attachBaseContext(base); + // MultiDex.install(this); + // } private final ReactNativeHost mReactNativeHost = - new ReactNativeHost(this) { + new DefaultReactNativeHost(this) { @Override public boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; @@ -56,27 +53,26 @@ public class MainApplication extends Application implements ReactApplication { protected String getJSMainModuleName() { return "index"; } - }; - private final ReactNativeHost mNewArchitectureNativeHost = - new MainApplicationReactNativeHost(this); + @Override + protected boolean isNewArchEnabled() { + return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + } + @Override + protected Boolean isHermesEnabled() { + return BuildConfig.IS_HERMES_ENABLED; + } + }; @Override public ReactNativeHost getReactNativeHost() { - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - return mNewArchitectureNativeHost; - } else { - return mReactNativeHost; - } + 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 @@ -89,46 +85,10 @@ public class MainApplication extends Application implements ReactApplication { } SoLoader.init(this, /* native exopackage */ false); - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - - // To allow debugging the webview using the Chrome developer tools. - // Open chrome://inspect/#devices to view the device and connect to it - // IMPORTANT: USB debugging must be enabled on the device for it to work. - // https://github.com/react-native-webview/react-native-webview/blob/master/docs/Debugging.md - - if (BuildConfig.DEBUG) { - WebView.setWebContentsDebuggingEnabled(true); - } - } - - /** - * Loads Flipper in React Native templates. Call this in the onCreate method with something like - * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - * - * @param context - * @param reactInstanceManager - */ - private static void initializeFlipper( - Context context, ReactInstanceManager reactInstanceManager) { - if (BuildConfig.DEBUG) { - try { - /* - We use reflection here to pick up the class that initializes Flipper, - since Flipper library is not available in release mode - */ - Class aClass = Class.forName("net.cozic.joplin.ReactNativeFlipper"); - aClass - .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) - .invoke(null, context, reactInstanceManager); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + DefaultNewArchitectureEntryPoint.load(); } + ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); } } 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 deleted file mode 100644 index 5f2ea383d..000000000 --- a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/MainApplicationReactNativeHost.java +++ /dev/null @@ -1,117 +0,0 @@ -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.fabric.ReactNativeConfig; -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, - ReactNativeConfig.DEFAULT_CONFIG, - 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 deleted file mode 100644 index 9eef078a5..000000000 --- a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/components/MainComponentsRegistry.java +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index c9deb6376..000000000 --- a/packages/app-mobile/android/app/src/main/java/net/cozic/joplin/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java +++ /dev/null @@ -1,48 +0,0 @@ -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/CMakeLists.txt b/packages/app-mobile/android/app/src/main/jni/CMakeLists.txt deleted file mode 100644 index 70bf4fb77..000000000 --- a/packages/app-mobile/android/app/src/main/jni/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -cmake_minimum_required(VERSION 3.13) -# Define the library name here. -project(joplin_appmodules) -# This file includes all the necessary to let you build your application with the New Architecture. -include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake) diff --git a/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp deleted file mode 100644 index 84cb2cb4a..000000000 --- a/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#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); - - // Module providers autolinked by RN CLI - auto rncli_module = rncli_ModuleProvider(moduleName, params); - if (rncli_module != nullptr) { - return rncli_module; - } - - 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 deleted file mode 100644 index 48f1d107a..000000000 --- a/packages/app-mobile/android/app/src/main/jni/MainApplicationModuleProvider.h +++ /dev/null @@ -1,16 +0,0 @@ -#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 deleted file mode 100644 index ae730d132..000000000 --- a/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#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( - const 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 deleted file mode 100644 index 2fe48374d..000000000 --- a/packages/app-mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +++ /dev/null @@ -1,38 +0,0 @@ -#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(const 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 deleted file mode 100644 index 1f42510bc..000000000 --- a/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "MainComponentsRegistry.h" - -#include -#include -#include -#include -#include - -namespace facebook { -namespace react { - -MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} - -std::shared_ptr -MainComponentsRegistry::sharedProviderRegistry() { - auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); - - // Autolinked providers registered by RN CLI - rncli_registerProviders(providerRegistry); - - // 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 deleted file mode 100644 index 1f734ab19..000000000 --- a/packages/app-mobile/android/app/src/main/jni/MainComponentsRegistry.h +++ /dev/null @@ -1,32 +0,0 @@ -#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 deleted file mode 100644 index ae1ef007d..000000000 --- a/packages/app-mobile/android/app/src/main/jni/OnLoad.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#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/app/src/release/java/net/cozic/joplin/ReactNativeFlipper.java b/packages/app-mobile/android/app/src/release/java/net/cozic/joplin/ReactNativeFlipper.java new file mode 100644 index 000000000..bc93a5840 --- /dev/null +++ b/packages/app-mobile/android/app/src/release/java/net/cozic/joplin/ReactNativeFlipper.java @@ -0,0 +1,18 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ +package net.cozic.joplin; +import android.content.Context; +import com.facebook.react.ReactInstanceManager; +/** + * Class responsible of loading Flipper inside your React Native application. This is the release + * flavor of it so it's empty as we don't want to load Flipper. + */ +public class ReactNativeFlipper { + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + // Do nothing as we don't want to initialize Flipper on Release. + } +} diff --git a/packages/app-mobile/android/build.gradle b/packages/app-mobile/android/build.gradle index 4c70c36b2..bd9726f5f 100644 --- a/packages/app-mobile/android/build.gradle +++ b/packages/app-mobile/android/build.gradle @@ -2,55 +2,55 @@ buildscript { ext { - buildToolsVersion = "31.0.0" + buildToolsVersion = "33.0.0" minSdkVersion = 21 - compileSdkVersion = 31 - targetSdkVersion = 31 + compileSdkVersion = 33 + targetSdkVersion = 33 - 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" - } + // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. + ndkVersion = "23.1.7779620" } repositories { google() mavenCentral() } dependencies { - classpath("com.android.tools.build:gradle:7.2.1") + classpath("com.android.tools.build:gradle:7.3.1") classpath("com.facebook.react:react-native-gradle-plugin") classpath("de.undercouch:gradle-download-task:5.0.1") - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files } } allprojects { repositories { - maven { - // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm - url("$rootDir/../node_modules/react-native/android") - } - maven { - // Android JSC is installed from npm - url("$rootDir/../node_modules/jsc-android/dist") - } - mavenCentral { - // We don't want to fetch react-native from Maven Central as there are - // older versions over there. - content { - excludeGroup "com.facebook.react" - } - } + jcenter() + + // Seems to be required for react-native-vosk, otherwise the lib looks for it at "https://maven.aliyun.com/repository/jcenter/com/alphacephei/vosk-android/0.3.46/vosk-android-0.3.46.aar" but it's not there. And we get this error: + // + // Execution failed for task ':app:checkDebugAarMetadata'. + // > Could not resolve all files for configuration ':app:debugRuntimeClasspath'. + // > Failed to transform vosk-android-0.3.46.aar (com.alphacephei:vosk-android:0.3.46) to match attributes {artifactType=android-aar-metadata, org.gradle.status=release}. + // > Could not find vosk-android-0.3.46.aar (com.alphacephei:vosk-android:0.3.46). + // Searched in the following locations: + // https://maven.aliyun.com/repository/jcenter/com/alphacephei/vosk-android/0.3.46/vosk-android-0.3.46.aar + // + // But according to this page, the lib is on the Apache repository: + // + // https://search.maven.org/artifact/com.alphacephei/vosk-android/0.3.46/aar + maven { url "https://maven.apache.org" } + maven { // Required by react-native-fingerprint-scanner // https://github.com/hieuvp/react-native-fingerprint-scanner/issues/192 url "https://maven.aliyun.com/repository/jcenter" } + + // Also required for react-native-vosk? + maven { url "https://maven.google.com" } + + // Maybe still needed to fetch above package? + google() maven { url 'https://www.jitpack.io' } } diff --git a/packages/app-mobile/android/gradle.properties b/packages/app-mobile/android/gradle.properties index e32d75634..ab9986a84 100644 --- a/packages/app-mobile/android/gradle.properties +++ b/packages/app-mobile/android/gradle.properties @@ -39,6 +39,10 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # are providing them. newArchEnabled=false +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true + # To fix this error: # # > Failed to transform bcprov-jdk15on-1.68.jar diff --git a/packages/app-mobile/android/settings.gradle b/packages/app-mobile/android/settings.gradle index 5c0be6b85..2acd37ab1 100644 --- a/packages/app-mobile/android/settings.gradle +++ b/packages/app-mobile/android/settings.gradle @@ -3,10 +3,4 @@ include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') 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') - include(":ReactAndroid:hermes-engine") - project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine') -} +includeBuild('../node_modules/react-native-gradle-plugin') \ No newline at end of file diff --git a/packages/app-mobile/components/screens/Note.tsx b/packages/app-mobile/components/screens/Note.tsx index c3e566a35..bc5167c73 100644 --- a/packages/app-mobile/components/screens/Note.tsx +++ b/packages/app-mobile/components/screens/Note.tsx @@ -787,6 +787,12 @@ class NoteScreenComponent extends BaseScreenComponent { } public async onAlarmDialogAccept(date: Date) { + const response = await checkPermissions(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS); + if (response !== PermissionsAndroid.RESULTS.GRANTED) { + logger.warn('POST_NOTIFICATION permission was not granted'); + return; + } + const newNote = { ...this.state.note }; newNote.todo_due = date ? date.getTime() : 0; diff --git a/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj b/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj index 5c211d0f8..8faf2a934 100644 --- a/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj +++ b/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj @@ -384,12 +384,14 @@ "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -596,7 +598,7 @@ COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -659,7 +661,7 @@ COPY_PHASE_STRIP = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; diff --git a/packages/app-mobile/ios/Joplin/AppDelegate.h b/packages/app-mobile/ios/Joplin/AppDelegate.h index ad5007b5a..fa96831eb 100644 --- a/packages/app-mobile/ios/Joplin/AppDelegate.h +++ b/packages/app-mobile/ios/Joplin/AppDelegate.h @@ -1,9 +1,7 @@ -#import +#import #import #import -@interface AppDelegate : UIResponder - -@property (nonatomic, strong) UIWindow *window; +@interface AppDelegate : RCTAppDelegate @end diff --git a/packages/app-mobile/ios/Joplin/AppDelegate.mm b/packages/app-mobile/ios/Joplin/AppDelegate.mm index a7d28bd28..f143a414c 100644 --- a/packages/app-mobile/ios/Joplin/AppDelegate.mm +++ b/packages/app-mobile/ios/Joplin/AppDelegate.mm @@ -1,36 +1,12 @@ #import "AppDelegate.h" -#import #import -#import -#import #import #import #import "RNQuickActionManager.h" -#if RCT_NEW_ARCH_ENABLED -#import -#import -#import -#import -#import -#import - -#import - -static NSString *const kRNConcurrentRoot = @"concurrentRoot"; - -@interface AppDelegate () { - RCTTurboModuleManager *_turboModuleManager; - RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; - std::shared_ptr _reactNativeConfig; - facebook::react::ContextContainer::Shared _contextContainer; -} -@end -#endif - @implementation AppDelegate // =================================================== @@ -91,58 +67,17 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response - (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 - - NSDictionary *initProps = [self prepareInitialProps]; - UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Joplin", initProps); - - 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]; + self.moduleName = @"Joplin"; + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; // BEGIN react-native-push-notification-ios UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; // END react-native-push-notification-ios - return YES; -} - -/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. -/// -/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html -/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). -/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`. -- (BOOL)concurrentRootEnabled -{ - // Switch this bool to turn on and off the concurrent root - return true; -} -- (NSDictionary *)prepareInitialProps -{ - NSMutableDictionary *initProps = [NSMutableDictionary new]; -#ifdef RCT_NEW_ARCH_ENABLED - initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]); -#endif - return initProps; + return [super application:application didFinishLaunchingWithOptions:launchOptions]; } - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge @@ -154,43 +89,14 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response #endif } -#if RCT_NEW_ARCH_ENABLED - -#pragma mark - RCTCxxBridgeDelegate - -- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge +/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. +/// +/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html +/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). +/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`. +- (BOOL)concurrentRootEnabled { - _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge - delegate:self - jsInvoker:bridge.jsCallInvoker]; - return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); + return true; } -#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 diff --git a/packages/app-mobile/ios/Podfile b/packages/app-mobile/ios/Podfile index b34f6d575..7faef5639 100644 --- a/packages/app-mobile/ios/Podfile +++ b/packages/app-mobile/ios/Podfile @@ -9,8 +9,23 @@ 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, '12.4' -install! 'cocoapods', :deterministic_uuids => false +platform :ios, min_ios_version_supported +prepare_react_native_project! +# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. +# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded +# +# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` +# ```js +# module.exports = { +# dependencies: { +# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), +# ``` +flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled +linkage = ENV['USE_FRAMEWORKS'] +if linkage != nil + Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green + use_frameworks! :linkage => linkage.to_sym +end target 'Joplin' do config = use_native_modules! @@ -26,13 +41,13 @@ target 'Joplin' do # 2023/05/07: Leave that to `false` for now because Hermes is rubbish at # reporting errors, which it makes it impossible to investigate crashes. - :hermes_enabled => false, + :hermes_enabled => flags[:hermes_enabled], :fabric_enabled => flags[:fabric_enabled], # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. - :flipper_configuration => FlipperConfiguration.enabled, + :flipper_configuration => flipper_config, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) diff --git a/packages/app-mobile/ios/Podfile.lock b/packages/app-mobile/ios/Podfile.lock index 371241ce7..b5a8958d7 100644 --- a/packages/app-mobile/ios/Podfile.lock +++ b/packages/app-mobile/ios/Podfile.lock @@ -2,14 +2,14 @@ PODS: - boost (1.76.0) - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) - - FBLazyVector (0.70.6) - - FBReactNativeSpec (0.70.6): + - FBLazyVector (0.71.10) + - FBReactNativeSpec (0.71.10): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.6) - - RCTTypeSafety (= 0.70.6) - - React-Core (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) + - RCTRequired (= 0.71.10) + - RCTTypeSafety (= 0.71.10) + - React-Core (= 0.71.10) + - React-jsi (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) - Flipper (0.125.0): - Flipper-Folly (~> 2.6) - Flipper-RSocket (~> 1.4) @@ -73,6 +73,9 @@ PODS: - FlipperKit/FlipperKitNetworkPlugin - fmt (6.2.1) - glog (0.3.5) + - hermes-engine (0.71.10): + - hermes-engine/Pre-built (= 0.71.10) + - hermes-engine/Pre-built (0.71.10) - JoplinCommonShareExtension (1.0.0) - JoplinRNShareExtension (1.0.0): - JoplinCommonShareExtension @@ -90,203 +93,245 @@ PODS: - DoubleConversion - fmt (~> 6.2.1) - glog - - RCTRequired (0.70.6) - - RCTTypeSafety (0.70.6): - - FBLazyVector (= 0.70.6) - - RCTRequired (= 0.70.6) - - React-Core (= 0.70.6) - - React (0.70.6): - - React-Core (= 0.70.6) - - React-Core/DevSupport (= 0.70.6) - - React-Core/RCTWebSocket (= 0.70.6) - - React-RCTActionSheet (= 0.70.6) - - React-RCTAnimation (= 0.70.6) - - React-RCTBlob (= 0.70.6) - - React-RCTImage (= 0.70.6) - - React-RCTLinking (= 0.70.6) - - React-RCTNetwork (= 0.70.6) - - React-RCTSettings (= 0.70.6) - - React-RCTText (= 0.70.6) - - React-RCTVibration (= 0.70.6) - - React-bridging (0.70.6): - - RCT-Folly (= 2021.07.22.00) - - React-jsi (= 0.70.6) - - React-callinvoker (0.70.6) - - React-Codegen (0.70.6): - - FBReactNativeSpec (= 0.70.6) - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.6) - - RCTTypeSafety (= 0.70.6) - - React-Core (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-Core (0.70.6): + - RCT-Folly/Futures (2021.07.22.00): + - boost + - DoubleConversion + - fmt (~> 6.2.1) - glog + - libevent + - RCTRequired (0.71.10) + - RCTTypeSafety (0.71.10): + - FBLazyVector (= 0.71.10) + - RCTRequired (= 0.71.10) + - React-Core (= 0.71.10) + - React (0.71.10): + - React-Core (= 0.71.10) + - React-Core/DevSupport (= 0.71.10) + - React-Core/RCTWebSocket (= 0.71.10) + - React-RCTActionSheet (= 0.71.10) + - React-RCTAnimation (= 0.71.10) + - React-RCTBlob (= 0.71.10) + - React-RCTImage (= 0.71.10) + - React-RCTLinking (= 0.71.10) + - React-RCTNetwork (= 0.71.10) + - React-RCTSettings (= 0.71.10) + - React-RCTText (= 0.71.10) + - React-RCTVibration (= 0.71.10) + - React-callinvoker (0.71.10) + - React-Codegen (0.71.10): + - FBReactNativeSpec + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-jsi + - React-jsiexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.71.10): + - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-Core/Default (= 0.71.10) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/CoreModulesHeaders (0.70.6): + - React-Core/CoreModulesHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/Default (0.70.6): + - React-Core/Default (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/DevSupport (0.70.6): + - React-Core/DevSupport (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.6) - - React-Core/RCTWebSocket (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-jsinspector (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-Core/Default (= 0.71.10) + - React-Core/RCTWebSocket (= 0.71.10) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-jsinspector (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTActionSheetHeaders (0.70.6): + - React-Core/RCTActionSheetHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTAnimationHeaders (0.70.6): + - React-Core/RCTAnimationHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTBlobHeaders (0.70.6): + - React-Core/RCTBlobHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTImageHeaders (0.70.6): + - React-Core/RCTImageHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTLinkingHeaders (0.70.6): + - React-Core/RCTLinkingHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTNetworkHeaders (0.70.6): + - React-Core/RCTNetworkHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTSettingsHeaders (0.70.6): + - React-Core/RCTSettingsHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTTextHeaders (0.70.6): + - React-Core/RCTTextHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTVibrationHeaders (0.70.6): + - React-Core/RCTVibrationHeaders (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-Core/RCTWebSocket (0.70.6): + - React-Core/RCTWebSocket (0.71.10): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsiexecutor (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-Core/Default (= 0.71.10) + - React-cxxreact (= 0.71.10) + - React-hermes + - React-jsi (= 0.71.10) + - React-jsiexecutor (= 0.71.10) + - React-perflogger (= 0.71.10) - Yoga - - React-CoreModules (0.70.6): + - React-CoreModules (0.71.10): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/CoreModulesHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - React-RCTImage (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-cxxreact (0.70.6): + - RCTTypeSafety (= 0.71.10) + - React-Codegen (= 0.71.10) + - React-Core/CoreModulesHeaders (= 0.71.10) + - React-jsi (= 0.71.10) + - React-RCTBlob + - React-RCTImage (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-cxxreact (0.71.10): - boost (= 1.76.0) - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.70.6) - - React-jsi (= 0.70.6) - - React-jsinspector (= 0.70.6) - - React-logger (= 0.70.6) - - React-perflogger (= 0.70.6) - - React-runtimeexecutor (= 0.70.6) - - React-jsi (0.70.6): + - React-callinvoker (= 0.71.10) + - React-jsi (= 0.71.10) + - React-jsinspector (= 0.71.10) + - React-logger (= 0.71.10) + - React-perflogger (= 0.71.10) + - React-runtimeexecutor (= 0.71.10) + - React-hermes (0.71.10): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - RCT-Folly/Futures (= 2021.07.22.00) + - React-cxxreact (= 0.71.10) + - React-jsi + - React-jsiexecutor (= 0.71.10) + - React-jsinspector (= 0.71.10) + - React-perflogger (= 0.71.10) + - React-jsi (0.71.10): - boost (= 1.76.0) - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-jsi/Default (= 0.70.6) - - React-jsi/Default (0.70.6): - - boost (= 1.76.0) + - React-jsiexecutor (0.71.10): - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.70.6): - - DoubleConversion - - glog - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-perflogger (= 0.70.6) - - React-jsinspector (0.70.6) - - React-logger (0.70.6): + - React-cxxreact (= 0.71.10) + - React-jsi (= 0.71.10) + - React-perflogger (= 0.71.10) + - React-jsinspector (0.71.10) + - React-logger (0.71.10): - glog - react-native-alarm-notification (2.11.0): - React @@ -330,72 +375,90 @@ PODS: - React-Core - react-native-webview (11.26.1): - React-Core - - React-perflogger (0.70.6) - - React-RCTActionSheet (0.70.6): - - React-Core/RCTActionSheetHeaders (= 0.70.6) - - React-RCTAnimation (0.70.6): + - React-perflogger (0.71.10) + - React-RCTActionSheet (0.71.10): + - React-Core/RCTActionSheetHeaders (= 0.71.10) + - React-RCTAnimation (0.71.10): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTAnimationHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTBlob (0.70.6): + - RCTTypeSafety (= 0.71.10) + - React-Codegen (= 0.71.10) + - React-Core/RCTAnimationHeaders (= 0.71.10) + - React-jsi (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-RCTAppDelegate (0.71.10): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - ReactCommon/turbomodule/core + - React-RCTBlob (0.71.10): + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.6) - - React-Core/RCTBlobHeaders (= 0.70.6) - - React-Core/RCTWebSocket (= 0.70.6) - - React-jsi (= 0.70.6) - - React-RCTNetwork (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTImage (0.70.6): + - React-Codegen (= 0.71.10) + - React-Core/RCTBlobHeaders (= 0.71.10) + - React-Core/RCTWebSocket (= 0.71.10) + - React-jsi (= 0.71.10) + - React-RCTNetwork (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-RCTImage (0.71.10): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTImageHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - React-RCTNetwork (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTLinking (0.70.6): - - React-Codegen (= 0.70.6) - - React-Core/RCTLinkingHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTNetwork (0.70.6): + - RCTTypeSafety (= 0.71.10) + - React-Codegen (= 0.71.10) + - React-Core/RCTImageHeaders (= 0.71.10) + - React-jsi (= 0.71.10) + - React-RCTNetwork (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-RCTLinking (0.71.10): + - React-Codegen (= 0.71.10) + - React-Core/RCTLinkingHeaders (= 0.71.10) + - React-jsi (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-RCTNetwork (0.71.10): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTNetworkHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTSettings (0.70.6): + - RCTTypeSafety (= 0.71.10) + - React-Codegen (= 0.71.10) + - React-Core/RCTNetworkHeaders (= 0.71.10) + - React-jsi (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-RCTSettings (0.71.10): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.6) - - React-Codegen (= 0.70.6) - - React-Core/RCTSettingsHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-RCTText (0.70.6): - - React-Core/RCTTextHeaders (= 0.70.6) - - React-RCTVibration (0.70.6): + - RCTTypeSafety (= 0.71.10) + - React-Codegen (= 0.71.10) + - React-Core/RCTSettingsHeaders (= 0.71.10) + - React-jsi (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-RCTText (0.71.10): + - React-Core/RCTTextHeaders (= 0.71.10) + - React-RCTVibration (0.71.10): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.6) - - React-Core/RCTVibrationHeaders (= 0.70.6) - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (= 0.70.6) - - React-runtimeexecutor (0.70.6): - - React-jsi (= 0.70.6) - - ReactCommon/turbomodule/core (0.70.6): + - React-Codegen (= 0.71.10) + - React-Core/RCTVibrationHeaders (= 0.71.10) + - React-jsi (= 0.71.10) + - ReactCommon/turbomodule/core (= 0.71.10) + - React-runtimeexecutor (0.71.10): + - React-jsi (= 0.71.10) + - ReactCommon/turbomodule/bridging (0.71.10): - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-bridging (= 0.70.6) - - React-callinvoker (= 0.70.6) - - React-Core (= 0.70.6) - - React-cxxreact (= 0.70.6) - - React-jsi (= 0.70.6) - - React-logger (= 0.70.6) - - React-perflogger (= 0.70.6) + - React-callinvoker (= 0.71.10) + - React-Core (= 0.71.10) + - React-cxxreact (= 0.71.10) + - React-jsi (= 0.71.10) + - React-logger (= 0.71.10) + - React-perflogger (= 0.71.10) + - ReactCommon/turbomodule/core (0.71.10): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.10) + - React-Core (= 0.71.10) + - React-cxxreact (= 0.71.10) + - React-jsi (= 0.71.10) + - React-logger (= 0.71.10) + - React-perflogger (= 0.71.10) - rn-fetch-blob (0.12.0): - React-Core - RNCClipboard (1.5.1): @@ -452,14 +515,15 @@ DEPENDENCIES: - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - JoplinCommonShareExtension (from `ShareExtension`) - JoplinRNShareExtension (from `ShareExtension`) + - libevent (~> 2.1.12) - OpenSSL-Universal (= 1.1.1100) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - - React-bridging (from `../node_modules/react-native/ReactCommon`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) @@ -467,6 +531,7 @@ DEPENDENCIES: - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) + - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) @@ -490,6 +555,7 @@ DEPENDENCIES: - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) @@ -542,6 +608,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + hermes-engine: + :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" JoplinCommonShareExtension: :path: ShareExtension JoplinRNShareExtension: @@ -554,8 +622,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/TypeSafety" React: :path: "../node_modules/react-native/" - React-bridging: - :path: "../node_modules/react-native/ReactCommon" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" React-Codegen: @@ -566,6 +632,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/CoreModules" React-cxxreact: :path: "../node_modules/react-native/ReactCommon/cxxreact" + React-hermes: + :path: "../node_modules/react-native/ReactCommon/hermes" React-jsi: :path: "../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: @@ -612,6 +680,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: :path: "../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: :path: "../node_modules/react-native/Libraries/Blob" React-RCTImage: @@ -658,11 +728,11 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: a7c83b31436843459a1961bfd74b96033dc77234 + boost: 57d2868c099736d80fcd648bf211b4431e51a558 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - FBLazyVector: 48289402952f4f7a4e235de70a9a590aa0b79ef4 - FBReactNativeSpec: dd1186fd05255e3457baa2f4ca65e94c2cd1e3ac + FBLazyVector: ddb55c55295ea51ed98aa7e2e08add2f826309d5 + FBReactNativeSpec: 90fc1a90b4b7a171e0a7c20ea426c1bf6ce4399c Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 @@ -674,24 +744,25 @@ SPEC CHECKSUMS: FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b + hermes-engine: d27603b55a48402501ad1928c05411dae9cd6b85 JoplinCommonShareExtension: a8b60b02704d85a7305627912c0240e94af78db7 JoplinRNShareExtension: 485f3e6dad83b7b77f1572eabc249f869ee55c02 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c - RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda - RCTRequired: e1866f61af7049eb3d8e08e8b133abd38bc1ca7a - RCTTypeSafety: 27c2ac1b00609a432ced1ae701247593f07f901e - React: bb3e06418d2cc48a84f9666a576c7b38e89cd7db - React-bridging: 572502ec59c9de30309afdc4932e278214288913 - React-callinvoker: 6b708b79c69f3359d42f1abb4663f620dbd4dadf - React-Codegen: 74e1cd7cee692a8b983c18df3274b5e749de07c8 - React-Core: b587d0a624f9611b0e032505f3d6f25e8daa2bee - React-CoreModules: c6ff48b985e7aa622e82ca51c2c353c7803eb04e - React-cxxreact: ade3d9e63c599afdead3c35f8a8bd12b3da6730b - React-jsi: 5a3952e0c6d57460ad9ee2c905025b4c28f71087 - React-jsiexecutor: b4a65947391c658450151275aa406f2b8263178f - React-jsinspector: 60769e5a0a6d4b32294a2456077f59d0266f9a8b - React-logger: 1623c216abaa88974afce404dc8f479406bbc3a0 + RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 + RCTRequired: 8ef706f91e2b643cd32c26a57700b5f24fab0585 + RCTTypeSafety: 5fbddd8eb9242b91ac0d901c01da3673f358b1b7 + React: e5d2d559e89d256a1d6da64d51adaecda9c8ddae + React-callinvoker: 352ecbafbdccca5fdf4aed99c98ae5b7fc28e39b + React-Codegen: fa660a71e24078b2e52a62ecc2f3048c2f8ae6d7 + React-Core: 4ec45c2d537fe58e6d878bec6a13e3e2bed9c182 + React-CoreModules: 63f7f9fda3d4b214040a80e3f47ab4fb9a3e88e6 + React-cxxreact: 1a729807190ebf98ce5fb0c3d2ed211e8b5f2f87 + React-hermes: eb93eb6e7921ecd4abcc6e741b327f40763e850f + React-jsi: 1995961abdff0c9af9aae8a6b24468f21811000e + React-jsiexecutor: 4bb480a183a354e4dbfb1012936b1a2bb9357de7 + React-jsinspector: cdc854f8b13abd202afa54bc12578e5afb9cfae1 + React-logger: ef2269b3afa6ba868da90496c3e17a4ec4f4cee0 react-native-alarm-notification: 26527410a6162d07a9dc57f4bbc62e94ff48e65d react-native-camera: 3eae183c1d111103963f3dd913b65d01aef8110f react-native-document-picker: 69ca2094d8780cfc1e7e613894d15290fdc54bba @@ -708,18 +779,19 @@ SPEC CHECKSUMS: react-native-sqlite-storage: f6d515e1c446d1e6d026aa5352908a25d4de3261 react-native-version-info: a106f23009ac0db4ee00de39574eb546682579b9 react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1 - React-perflogger: 8c79399b0500a30ee8152d0f9f11beae7fc36595 - React-RCTActionSheet: 7316773acabb374642b926c19aef1c115df5c466 - React-RCTAnimation: 5341e288375451297057391227f691d9b2326c3d - React-RCTBlob: b0615fc2daf2b5684ade8fadcab659f16f6f0efa - React-RCTImage: 6487b9600f268ecedcaa86114d97954d31ad4750 - React-RCTLinking: c8018ae9ebfefcec3839d690d4725f8d15e4e4b3 - React-RCTNetwork: 8aa63578741e0fe1205c28d7d4b40dbfdabce8a8 - React-RCTSettings: d00c15ad369cd62242a4dfcc6f277912b4a84ed3 - React-RCTText: f532e5ca52681ecaecea452b3ad7a5b630f50d75 - React-RCTVibration: c75ceef7aa60a33b2d5731ebe5800ddde40cefc4 - React-runtimeexecutor: 15437b576139df27635400de0599d9844f1ab817 - ReactCommon: 349be31adeecffc7986a0de875d7fb0dcf4e251c + React-perflogger: 217095464d5c4bb70df0742fa86bf2a363693468 + React-RCTActionSheet: 8deae9b85a4cbc6a2243618ea62a374880a2c614 + React-RCTAnimation: 59c62353a8b59ce206044786c5d30e4754bffa64 + React-RCTAppDelegate: ef66a6904141fca96bffb00fac327a482b575f19 + React-RCTBlob: 8e518bae3d6ca97ffb7088da673fbbc53042d94d + React-RCTImage: 36c0324ff499802b9874d6803ca72026e90434f6 + React-RCTLinking: 401aec3a01b18c2c8ed93bf3a6758b87e617c58d + React-RCTNetwork: cb25b9f2737c3aa2cde0fe0bd7ff7fabf7bf9ad0 + React-RCTSettings: cb6ae9f656e1c880500c2ecbe8e72861c2262afa + React-RCTText: 7404fd01809244d79d456f92cfe6f9fbadf69209 + React-RCTVibration: d13cc2d63286c633393d3a7f6f607cc2a09ec011 + React-runtimeexecutor: a9a1cd79996c9a0846e3232ecb25c64e1cc0172e + ReactCommon: 65718685d4095d06b4b1af8042e12f1df2925c31 rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 RNCPushNotificationIOS: 64218f3c776c03d7408284a819b2abfda1834bc8 @@ -733,9 +805,9 @@ SPEC CHECKSUMS: RNShare: d82e10f6b7677f4b0048c23709bd04098d5aee6c RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8 SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 - Yoga: 99caf8d5ab45e9d637ee6e0174ec16fbbb01bcfc + Yoga: e7ea9e590e27460d28911403b894722354d73479 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 0235ffbfa2e655de806a80d996148182dd493d8d +PODFILE CHECKSUM: 3b2cace838120977b5b54871752c9dddf5a11cea COCOAPODS: 1.11.3 diff --git a/packages/app-mobile/package.json b/packages/app-mobile/package.json index eed9e7ffc..f146c345c 100644 --- a/packages/app-mobile/package.json +++ b/packages/app-mobile/package.json @@ -40,7 +40,7 @@ "prop-types": "15.8.1", "punycode": "2.3.0", "react": "18.2.0", - "react-native": "0.70.6", + "react-native": "0.71.10", "react-native-action-button": "2.8.5", "react-native-camera": "4.2.1", "react-native-dialogbox": "0.6.10", @@ -79,8 +79,9 @@ "url": "0.11.0" }, "devDependencies": { - "@babel/core": "7.16.0", - "@babel/runtime": "7.16.3", + "@babel/core": "7.20.2", + "@babel/preset-env": "7.20.2", + "@babel/runtime": "7.20.0", "@codemirror/commands": "6.2.2", "@codemirror/lang-cpp": "6.0.2", "@codemirror/lang-html": "6.4.3", @@ -96,10 +97,13 @@ "@codemirror/view": "6.9.3", "@joplin/tools": "~2.11", "@lezer/highlight": "1.1.4", + "@tsconfig/react-native": "2.0.2", "@types/fs-extra": "11.0.1", "@types/jest": "29.5.1", + "@types/react": "18.0.24", "@types/react-native": "0.70.6", "@types/react-redux": "7.1.25", + "babel-jest": "29.2.1", "babel-plugin-module-resolver": "4.1.0", "execa": "4.1.0", "fs-extra": "11.1.1", @@ -109,7 +113,7 @@ "jetifier": "2.0.0", "jsdom": "21.1.2", "md5-file": "5.0.0", - "metro-react-native-babel-preset": "0.72.3", + "metro-react-native-babel-preset": "0.73.9", "nodemon": "2.0.22", "ts-jest": "29.1.0", "ts-loader": "9.4.2", diff --git a/packages/app-mobile/services/voiceTyping/vosk.android.ts b/packages/app-mobile/services/voiceTyping/vosk.android.ts index d04eccbf3..9b30a0594 100644 --- a/packages/app-mobile/services/voiceTyping/vosk.android.ts +++ b/packages/app-mobile/services/voiceTyping/vosk.android.ts @@ -26,7 +26,8 @@ export interface Recorder { export const getVosk = async () => { if (vosk_) return vosk_; vosk_ = new Vosk(); - await vosk_.loadModel('model-fr-fr'); + const result = await vosk_.loadModel('model-fr-fr'); + logger.info('getVosk:', result); return vosk_; }; diff --git a/packages/app-mobile/utils/checkPermissions.ts b/packages/app-mobile/utils/checkPermissions.ts index cca584870..13157f01d 100644 --- a/packages/app-mobile/utils/checkPermissions.ts +++ b/packages/app-mobile/utils/checkPermissions.ts @@ -1,4 +1,7 @@ +import Logger from '@joplin/lib/Logger'; + const { Platform, PermissionsAndroid } = require('react-native'); +const logger = Logger.create('checkPermissions'); type rationale = { title: string; @@ -9,11 +12,14 @@ type rationale = { }; export default async (permissions: string, rationale?: rationale) => { - if (Platform.OS !== 'android') return true; + // On iOS, permissions are prompted for by the system, so here we assume it's granted. + if (Platform.OS !== 'android') return PermissionsAndroid.RESULTS.GRANTED; let result = await PermissionsAndroid.check(permissions); + logger.info('Checked permission:', result); if (result !== PermissionsAndroid.RESULTS.GRANTED) { result = await PermissionsAndroid.request(permissions, rationale); + logger.info('Requested permission:', result); } return result; }; diff --git a/packages/react-native-alarm-notification/android/src/main/AndroidManifest.xml b/packages/react-native-alarm-notification/android/src/main/AndroidManifest.xml index 52c118708..fa71790da 100644 --- a/packages/react-native-alarm-notification/android/src/main/AndroidManifest.xml +++ b/packages/react-native-alarm-notification/android/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + = 1.12.0": version: 2.0.7 resolution: "babel-plugin-styled-components@npm:2.0.7" @@ -9905,7 +9819,7 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.5.0": +"babel-preset-jest@npm:^29.2.0, babel-preset-jest@npm:^29.5.0": version: 29.5.0 resolution: "babel-preset-jest@npm:29.5.0" dependencies: @@ -10388,7 +10302,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.17.5, browserslist@npm:^4.18.1": +"browserslist@npm:^4.18.1": version: 4.18.1 resolution: "browserslist@npm:4.18.1" dependencies: @@ -10403,20 +10317,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.2": - version: 4.21.1 - resolution: "browserslist@npm:4.21.1" - dependencies: - caniuse-lite: ^1.0.30001359 - electron-to-chromium: ^1.4.172 - node-releases: ^2.0.5 - update-browserslist-db: ^1.0.4 - bin: - browserslist: cli.js - checksum: 4904a9ded0702381adc495e003e7f77970abb7f8c8b8edd9e54f026354b5a96b1bddc26e6d9a7df9f043e468ecd2fcff2c8f40fc489909a042880117c2aca8ff - languageName: node - linkType: hard - "browserslist@npm:^4.21.3": version: 4.21.4 resolution: "browserslist@npm:4.21.4" @@ -10431,6 +10331,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.21.5": + version: 4.21.7 + resolution: "browserslist@npm:4.21.7" + dependencies: + caniuse-lite: ^1.0.30001489 + electron-to-chromium: ^1.4.411 + node-releases: ^2.0.12 + update-browserslist-db: ^1.0.11 + bin: + browserslist: cli.js + checksum: 3d0d025e6d381c4db5e71b538258952660ba574c060832095f182a9877ca798836fa550736269e669a2080e486f0cfdf5d3bcf2769b9f7cf123f6c6b8c005f8f + languageName: node + linkType: hard + "bs-logger@npm:0.x": version: 0.2.6 resolution: "bs-logger@npm:0.2.6" @@ -10976,13 +10890,6 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001359": - version: 1.0.30001365 - resolution: "caniuse-lite@npm:1.0.30001365" - checksum: 5d043006e9bd9de1ae06c0e12c31997f0ed26f889f47ea6403dc2d08f46a5bd4bf0fe1a5b1099561fc447201ddf13083f277de68829e77fd238ff2af8c05e0a6 - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001400": version: 1.0.30001431 resolution: "caniuse-lite@npm:1.0.30001431" @@ -10990,6 +10897,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001489": + version: 1.0.30001497 + resolution: "caniuse-lite@npm:1.0.30001497" + checksum: 6721120f9a588c442a81cf32f911b4e97a88cb129c27bd2cb0fce6447ad058baa12affa1ee09c517f9e088c7ce74964154d032b6631f66d75dd37c6bc59a67f6 + languageName: node + linkType: hard + "capital-case@npm:^1.0.4": version: 1.0.4 resolution: "capital-case@npm:1.0.4" @@ -11806,7 +11720,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^9.4.0": +"commander@npm:^9.4.0, commander@npm:^9.4.1": version: 9.5.0 resolution: "commander@npm:9.5.0" checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade @@ -12211,6 +12125,15 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.25.1": + version: 3.30.2 + resolution: "core-js-compat@npm:3.30.2" + dependencies: + browserslist: ^4.21.5 + checksum: 4c81d635559eebc2f81db60f5095a235f580a2f90698113c4124c72761393592b139e30974cce6095a9a6aad6bb3cd467b24b20c32e77ed24ca74eb5944d0638 + languageName: node + linkType: hard + "core-js@npm:^1.0.0": version: 1.2.7 resolution: "core-js@npm:1.2.7" @@ -13838,6 +13761,17 @@ __metadata: languageName: node linkType: hard +"deprecated-react-native-prop-types@npm:^3.0.1": + version: 3.0.1 + resolution: "deprecated-react-native-prop-types@npm:3.0.1" + dependencies: + "@react-native/normalize-color": "*" + invariant: "*" + prop-types: "*" + checksum: 6b02d6f29387cb39f3250f85675bfd8f0b7a312612bc2a637fdd96033eadc0391447d558262854db0b4c7280ee304f201ecd4b1126af123335c7cbddf5194151 + languageName: node + linkType: hard + "deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": version: 2.3.1 resolution: "deprecation@npm:2.3.1" @@ -14641,13 +14575,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.172": - version: 1.4.186 - resolution: "electron-to-chromium@npm:1.4.186" - checksum: 9f87db963070473702c0a999dc4066fdd12abff0b2b98dfae1c7492b62fe3feb42bae64ff7fd837e4e347dab043a411e82cab64ada902726b782c60bf9fc40de - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.4.251": version: 1.4.284 resolution: "electron-to-chromium@npm:1.4.284" @@ -14655,6 +14582,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.4.411": + version: 1.4.425 + resolution: "electron-to-chromium@npm:1.4.425" + checksum: 1ec2e80601eb49982c51f562f74dc9fa1a80f3006c7d508f3bc37d2d12c726df99ff60d7f013e38c374ae81414e0b76d5e7a97f406cdea8b5e8e3dfb51c23f72 + languageName: node + linkType: hard + "electron-window-state@npm:5.0.3": version: 5.0.3 resolution: "electron-window-state@npm:5.0.3" @@ -16088,6 +16022,17 @@ __metadata: languageName: node linkType: hard +"fast-xml-parser@npm:^4.0.12": + version: 4.2.4 + resolution: "fast-xml-parser@npm:4.2.4" + dependencies: + strnum: ^1.0.5 + bin: + fxparser: src/cli/cli.js + checksum: d3b4d0c0152c09f98def792769fca6bb3fa1d597f9745d9564451c239089bd86bdf573c9263b4944860028cb7edb81752d64399c1aff8b87c9225ecef96905f7 + languageName: node + linkType: hard + "fastest-levenshtein@npm:^1.0.12": version: 1.0.12 resolution: "fastest-levenshtein@npm:1.0.12" @@ -16456,6 +16401,13 @@ __metadata: languageName: node linkType: hard +"flow-parser@npm:^0.185.0": + version: 0.185.2 + resolution: "flow-parser@npm:0.185.2" + checksum: 6c8cee6ef2a2f0e5a5dd29698dfc493c8148263ce52b061804c812877ef68b1d0747d8f17256f2ed36e105550eab27a37377be32f1fed4b72c434dda6e0c053c + languageName: node + linkType: hard + "flush-write-stream@npm:^1.0.0, flush-write-stream@npm:^1.0.2": version: 1.1.1 resolution: "flush-write-stream@npm:1.1.1" @@ -20076,7 +20028,7 @@ __metadata: languageName: node linkType: hard -"jest-environment-node@npm:^29.5.0": +"jest-environment-node@npm:^29.2.1, jest-environment-node@npm:^29.5.0": version: 29.5.0 resolution: "jest-environment-node@npm:29.5.0" dependencies: @@ -20681,6 +20633,13 @@ __metadata: languageName: node linkType: hard +"jsc-android@npm:^250231.0.0": + version: 250231.0.0 + resolution: "jsc-android@npm:250231.0.0" + checksum: 6c3f0f6f02fa37a19935b2fbe651e9d6ecc370eb30f2ecee76379337bbf084abb568a1ef1133fe622c5b76f43cf54bb7716f92a94dca010985da38edc48841e2 + languageName: node + linkType: hard + "jscodeshift@npm:^0.13.1": version: 0.13.1 resolution: "jscodeshift@npm:0.13.1" @@ -20960,7 +20919,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.2.3": +"json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -22500,6 +22459,18 @@ __metadata: languageName: node linkType: hard +"metro-babel-transformer@npm:0.73.9": + version: 0.73.9 + resolution: "metro-babel-transformer@npm:0.73.9" + dependencies: + "@babel/core": ^7.20.0 + hermes-parser: 0.8.0 + metro-source-map: 0.73.9 + nullthrows: ^1.1.1 + checksum: a136f110bdd5661d3e0cc9ff5399a480151205e91f7ce735820c4df0eb47e0d002496ceeed497799045b4c9695a63ce9d0b8235ad6844dd3854d9e5337f74627 + languageName: node + linkType: hard + "metro-cache-key@npm:0.72.3": version: 0.72.3 resolution: "metro-cache-key@npm:0.72.3" @@ -22507,6 +22478,13 @@ __metadata: languageName: node linkType: hard +"metro-cache-key@npm:0.73.9": + version: 0.73.9 + resolution: "metro-cache-key@npm:0.73.9" + checksum: 96265f4a65bf7b7d1268150b0167143e517c3a5f6dddc593d025dd33d514b27bdc8b756a1d7dbcde2f0b092ec6defa564ec81066a7da158cef250de47b39ac7e + languageName: node + linkType: hard + "metro-cache@npm:0.72.3": version: 0.72.3 resolution: "metro-cache@npm:0.72.3" @@ -22517,6 +22495,16 @@ __metadata: languageName: node linkType: hard +"metro-cache@npm:0.73.9": + version: 0.73.9 + resolution: "metro-cache@npm:0.73.9" + dependencies: + metro-core: 0.73.9 + rimraf: ^3.0.2 + checksum: a573419ca7e2a44c4e5a93cbd7c8609856fd0574fea0576252ddf8705334fda74297686b507cbecdf6f8c97de2c6a9982beea60607bd6d90db36c2958808b83c + languageName: node + linkType: hard + "metro-config@npm:0.72.3": version: 0.72.3 resolution: "metro-config@npm:0.72.3" @@ -22531,6 +22519,20 @@ __metadata: languageName: node linkType: hard +"metro-config@npm:0.73.9": + version: 0.73.9 + resolution: "metro-config@npm:0.73.9" + dependencies: + cosmiconfig: ^5.0.5 + jest-validate: ^26.5.2 + metro: 0.73.9 + metro-cache: 0.73.9 + metro-core: 0.73.9 + metro-runtime: 0.73.9 + checksum: e40dde49a6c1e302f001c727e39fcf7d79433e872b0f74c4ecbfa90de0b6a51b2b0647a19c6905548a002258c552d0e2d4b110daa6f4f100aa5fc642ae6bbc88 + languageName: node + linkType: hard + "metro-core@npm:0.72.3": version: 0.72.3 resolution: "metro-core@npm:0.72.3" @@ -22541,6 +22543,16 @@ __metadata: languageName: node linkType: hard +"metro-core@npm:0.73.9": + version: 0.73.9 + resolution: "metro-core@npm:0.73.9" + dependencies: + lodash.throttle: ^4.1.1 + metro-resolver: 0.73.9 + checksum: d41cd99bc2c671a5d675023ec27cef6dc74ef05330476851d5a0a45b452e61f05fae5a93cb1fcee24f26aa272a06051d9277097fadc838c0669929a5ce4cfa1b + languageName: node + linkType: hard + "metro-file-map@npm:0.72.3": version: 0.72.3 resolution: "metro-file-map@npm:0.72.3" @@ -22565,6 +22577,31 @@ __metadata: languageName: node linkType: hard +"metro-file-map@npm:0.73.9": + version: 0.73.9 + resolution: "metro-file-map@npm:0.73.9" + dependencies: + abort-controller: ^3.0.0 + anymatch: ^3.0.3 + debug: ^2.2.0 + fb-watchman: ^2.0.0 + fsevents: ^2.3.2 + graceful-fs: ^4.2.4 + invariant: ^2.2.4 + jest-regex-util: ^27.0.6 + jest-serializer: ^27.0.6 + jest-util: ^27.2.0 + jest-worker: ^27.2.0 + micromatch: ^4.0.4 + nullthrows: ^1.1.1 + walker: ^1.0.7 + dependenciesMeta: + fsevents: + optional: true + checksum: f8e462e11e0235afdf46ccc0c7f113fe7d50ba174ba90d988c06472d144f187cefde9de2bd60a3990afa54b11cc0688b5ffc93a763609998a6646765fed08f20 + languageName: node + linkType: hard + "metro-hermes-compiler@npm:0.72.3": version: 0.72.3 resolution: "metro-hermes-compiler@npm:0.72.3" @@ -22572,6 +22609,13 @@ __metadata: languageName: node linkType: hard +"metro-hermes-compiler@npm:0.73.9": + version: 0.73.9 + resolution: "metro-hermes-compiler@npm:0.73.9" + checksum: 40c300b81fff2d420836973dad41588d8a3f7606da69b48b77efb23f05000d8ce1defe5a7558d9894b56c1b2396b4e84e899133fa458acb2c2e044e588ba7873 + languageName: node + linkType: hard + "metro-inspector-proxy@npm:0.72.3": version: 0.72.3 resolution: "metro-inspector-proxy@npm:0.72.3" @@ -22586,6 +22630,29 @@ __metadata: languageName: node linkType: hard +"metro-inspector-proxy@npm:0.73.9": + version: 0.73.9 + resolution: "metro-inspector-proxy@npm:0.73.9" + dependencies: + connect: ^3.6.5 + debug: ^2.2.0 + ws: ^7.5.1 + yargs: ^17.5.1 + bin: + metro-inspector-proxy: src/cli.js + checksum: 339a8930dafd83479db3289da9db1b80ca2cae57d50b05ed707ffb8dff5da36a2f901f0c8db746d1336736a459dc6546ae6a9acad8a2c3c1fce5a9fbb6bd0603 + languageName: node + linkType: hard + +"metro-minify-terser@npm:0.73.9": + version: 0.73.9 + resolution: "metro-minify-terser@npm:0.73.9" + dependencies: + terser: ^5.15.0 + checksum: afa386384bc87c9bbf65766e585058434da275573f21604d7747e6937b8001f94d5ae6f14436a267041bc3fd0ebb256fd0ccad0164aa34811627d0389df741e0 + languageName: node + linkType: hard + "metro-minify-uglify@npm:0.72.3": version: 0.72.3 resolution: "metro-minify-uglify@npm:0.72.3" @@ -22595,6 +22662,15 @@ __metadata: languageName: node linkType: hard +"metro-minify-uglify@npm:0.73.9": + version: 0.73.9 + resolution: "metro-minify-uglify@npm:0.73.9" + dependencies: + uglify-es: ^3.1.9 + checksum: d579e03d2bd45b156acb79469d31827a480b7905a50390010f6f95b588fe7f0a65ae518c5a70fee10b4230a4c15fe5ad70a9bce27985b60b8a0ba3e00ae1d3aa + languageName: node + linkType: hard + "metro-react-native-babel-preset@npm:0.72.3": version: 0.72.3 resolution: "metro-react-native-babel-preset@npm:0.72.3" @@ -22644,6 +22720,54 @@ __metadata: languageName: node linkType: hard +"metro-react-native-babel-preset@npm:0.73.9": + version: 0.73.9 + resolution: "metro-react-native-babel-preset@npm:0.73.9" + dependencies: + "@babel/core": ^7.20.0 + "@babel/plugin-proposal-async-generator-functions": ^7.0.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.18.0 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.0.0 + "@babel/plugin-syntax-optional-chaining": ^7.0.0 + "@babel/plugin-transform-arrow-functions": ^7.0.0 + "@babel/plugin-transform-async-to-generator": ^7.0.0 + "@babel/plugin-transform-block-scoping": ^7.0.0 + "@babel/plugin-transform-classes": ^7.0.0 + "@babel/plugin-transform-computed-properties": ^7.0.0 + "@babel/plugin-transform-destructuring": ^7.0.0 + "@babel/plugin-transform-flow-strip-types": ^7.0.0 + "@babel/plugin-transform-function-name": ^7.0.0 + "@babel/plugin-transform-literals": ^7.0.0 + "@babel/plugin-transform-modules-commonjs": ^7.0.0 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.0.0 + "@babel/plugin-transform-parameters": ^7.0.0 + "@babel/plugin-transform-react-display-name": ^7.0.0 + "@babel/plugin-transform-react-jsx": ^7.0.0 + "@babel/plugin-transform-react-jsx-self": ^7.0.0 + "@babel/plugin-transform-react-jsx-source": ^7.0.0 + "@babel/plugin-transform-runtime": ^7.0.0 + "@babel/plugin-transform-shorthand-properties": ^7.0.0 + "@babel/plugin-transform-spread": ^7.0.0 + "@babel/plugin-transform-sticky-regex": ^7.0.0 + "@babel/plugin-transform-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: ab5f099fbf2077cdf9cdcb906157a9d6571f90e461ca03434090fd0f4a671a95320c3a8a1379845aa5bfa3bdb3e8a47eda779f35dc41de70464d4ece3c1b33bc + languageName: node + linkType: hard + "metro-react-native-babel-transformer@npm:0.72.3": version: 0.72.3 resolution: "metro-react-native-babel-transformer@npm:0.72.3" @@ -22661,6 +22785,23 @@ __metadata: languageName: node linkType: hard +"metro-react-native-babel-transformer@npm:0.73.9": + version: 0.73.9 + resolution: "metro-react-native-babel-transformer@npm:0.73.9" + dependencies: + "@babel/core": ^7.20.0 + babel-preset-fbjs: ^3.4.0 + hermes-parser: 0.8.0 + metro-babel-transformer: 0.73.9 + metro-react-native-babel-preset: 0.73.9 + metro-source-map: 0.73.9 + nullthrows: ^1.1.1 + peerDependencies: + "@babel/core": "*" + checksum: f54224a1b851ccb939ef71763b802ef35d5af70fb571cf4b61477a75a357000a07bd7ea5b900402eb718586af4dfd1aaa2b433757167882642bf3beb66e980e0 + languageName: node + linkType: hard + "metro-resolver@npm:0.72.3": version: 0.72.3 resolution: "metro-resolver@npm:0.72.3" @@ -22670,6 +22811,15 @@ __metadata: languageName: node linkType: hard +"metro-resolver@npm:0.73.9": + version: 0.73.9 + resolution: "metro-resolver@npm:0.73.9" + dependencies: + absolute-path: ^0.0.0 + checksum: 32ba18d823f73142ab768bec29668337983a2f155aff633a59b872ec99fe043808249628a48afded0b72005a2d6283dc7618e8450deb8997e4567c2db1ca9ee3 + languageName: node + linkType: hard + "metro-runtime@npm:0.72.3": version: 0.72.3 resolution: "metro-runtime@npm:0.72.3" @@ -22680,6 +22830,16 @@ __metadata: languageName: node linkType: hard +"metro-runtime@npm:0.73.9": + version: 0.73.9 + resolution: "metro-runtime@npm:0.73.9" + dependencies: + "@babel/runtime": ^7.0.0 + react-refresh: ^0.4.0 + checksum: b6afd195fe0f99281d6a71e4b742545de62b8f54b0731bb79da55b98b30561a807f90f46e96469aa96dec720bac3153e51741c038d0d9171e4c395aeda62ae4a + languageName: node + linkType: hard + "metro-source-map@npm:0.72.3": version: 0.72.3 resolution: "metro-source-map@npm:0.72.3" @@ -22696,6 +22856,22 @@ __metadata: languageName: node linkType: hard +"metro-source-map@npm:0.73.9": + version: 0.73.9 + resolution: "metro-source-map@npm:0.73.9" + dependencies: + "@babel/traverse": ^7.20.0 + "@babel/types": ^7.20.0 + invariant: ^2.2.4 + metro-symbolicate: 0.73.9 + nullthrows: ^1.1.1 + ob1: 0.73.9 + source-map: ^0.5.6 + vlq: ^1.0.0 + checksum: 289db0ddacebbeeea0d126018978476f8da3ec4646e196b873d4e35ff8c3f1d3e409110b008637d52d7aee4dda0d7ca0b2e1bf8f1944e0a015ef6f1189d1f7d0 + languageName: node + linkType: hard + "metro-symbolicate@npm:0.72.3": version: 0.72.3 resolution: "metro-symbolicate@npm:0.72.3" @@ -22712,6 +22888,22 @@ __metadata: languageName: node linkType: hard +"metro-symbolicate@npm:0.73.9": + version: 0.73.9 + resolution: "metro-symbolicate@npm:0.73.9" + dependencies: + invariant: ^2.2.4 + metro-source-map: 0.73.9 + nullthrows: ^1.1.1 + source-map: ^0.5.6 + through2: ^2.0.1 + vlq: ^1.0.0 + bin: + metro-symbolicate: src/index.js + checksum: 056ea58297a63fb613df3580cba0a338b9dfc3c7e5f1c3e1cd4997c69d3d8476d53ca5127baa557de61bffa0feee9b383f18a7bc776e5677df729382ee874a31 + languageName: node + linkType: hard + "metro-transform-plugins@npm:0.72.3": version: 0.72.3 resolution: "metro-transform-plugins@npm:0.72.3" @@ -22725,6 +22917,19 @@ __metadata: languageName: node linkType: hard +"metro-transform-plugins@npm:0.73.9": + version: 0.73.9 + resolution: "metro-transform-plugins@npm:0.73.9" + dependencies: + "@babel/core": ^7.20.0 + "@babel/generator": ^7.20.0 + "@babel/template": ^7.0.0 + "@babel/traverse": ^7.20.0 + nullthrows: ^1.1.1 + checksum: 47fdf0709e0235aa8cf5e6bb00cbeaab475760058189d558eb3644debb9e2bab7473294899ffb8f99135392b7fb48671eca5c6fc14640d2996a1302cb6fce19c + languageName: node + linkType: hard + "metro-transform-worker@npm:0.72.3": version: 0.72.3 resolution: "metro-transform-worker@npm:0.72.3" @@ -22746,6 +22951,27 @@ __metadata: languageName: node linkType: hard +"metro-transform-worker@npm:0.73.9": + version: 0.73.9 + resolution: "metro-transform-worker@npm:0.73.9" + dependencies: + "@babel/core": ^7.20.0 + "@babel/generator": ^7.20.0 + "@babel/parser": ^7.20.0 + "@babel/types": ^7.20.0 + babel-preset-fbjs: ^3.4.0 + metro: 0.73.9 + metro-babel-transformer: 0.73.9 + metro-cache: 0.73.9 + metro-cache-key: 0.73.9 + metro-hermes-compiler: 0.73.9 + metro-source-map: 0.73.9 + metro-transform-plugins: 0.73.9 + nullthrows: ^1.1.1 + checksum: 7cbdac0b6c87c718214378c0d87bb1a95505601bd607c3247b425b2ec46af4606606baac3ba6a397a9ab3726186047c80149138ab00aa7e4502f35541948e211 + languageName: node + linkType: hard + "metro@npm:0.72.3": version: 0.72.3 resolution: "metro@npm:0.72.3" @@ -22806,6 +23032,66 @@ __metadata: languageName: node linkType: hard +"metro@npm:0.73.9": + version: 0.73.9 + resolution: "metro@npm:0.73.9" + dependencies: + "@babel/code-frame": ^7.0.0 + "@babel/core": ^7.20.0 + "@babel/generator": ^7.20.0 + "@babel/parser": ^7.20.0 + "@babel/template": ^7.0.0 + "@babel/traverse": ^7.20.0 + "@babel/types": ^7.20.0 + absolute-path: ^0.0.0 + accepts: ^1.3.7 + async: ^3.2.2 + chalk: ^4.0.0 + ci-info: ^2.0.0 + connect: ^3.6.5 + debug: ^2.2.0 + denodeify: ^1.2.1 + error-stack-parser: ^2.0.6 + graceful-fs: ^4.2.4 + hermes-parser: 0.8.0 + image-size: ^0.6.0 + invariant: ^2.2.4 + jest-worker: ^27.2.0 + lodash.throttle: ^4.1.1 + metro-babel-transformer: 0.73.9 + metro-cache: 0.73.9 + metro-cache-key: 0.73.9 + metro-config: 0.73.9 + metro-core: 0.73.9 + metro-file-map: 0.73.9 + metro-hermes-compiler: 0.73.9 + metro-inspector-proxy: 0.73.9 + metro-minify-terser: 0.73.9 + metro-minify-uglify: 0.73.9 + metro-react-native-babel-preset: 0.73.9 + metro-resolver: 0.73.9 + metro-runtime: 0.73.9 + metro-source-map: 0.73.9 + metro-symbolicate: 0.73.9 + metro-transform-plugins: 0.73.9 + metro-transform-worker: 0.73.9 + mime-types: ^2.1.27 + node-fetch: ^2.2.0 + nullthrows: ^1.1.1 + rimraf: ^3.0.2 + serialize-error: ^2.1.0 + source-map: ^0.5.6 + strip-ansi: ^6.0.0 + temp: 0.8.3 + throat: ^5.0.0 + ws: ^7.5.1 + yargs: ^17.5.1 + bin: + metro: src/cli.js + checksum: 2ca5d6e02e1b28170e82c6fabe77156b99ae282a1ea67a2ba2d22a0406f9838fb30c031ea0c342cd3219a8f03e252d8d6a30e867d08eb2a5ecb10ad12e7d0184 + languageName: node + linkType: hard + "micromatch@npm:^3.0.4, micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": version: 3.1.10 resolution: "micromatch@npm:3.1.10" @@ -23958,7 +24244,14 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.5, node-releases@npm:^2.0.6": +"node-releases@npm:^2.0.12": + version: 2.0.12 + resolution: "node-releases@npm:2.0.12" + checksum: b8c56db82c4642a0f443332b331a4396dae452a2ac5a65c8dbd93ef89ecb2fbb0da9d42ac5366d4764973febadca816cf7587dad492dce18d2a6b2af59cda260 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.6": version: 2.0.6 resolution: "node-releases@npm:2.0.6" checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf @@ -24393,6 +24686,13 @@ __metadata: languageName: node linkType: hard +"ob1@npm:0.73.9": + version: 0.73.9 + resolution: "ob1@npm:0.73.9" + checksum: 6f45eeb21ca426259f8edb21a68127b3ec85bd1b01c00f3637c077f20fca32a428d19038aa09f1cfbe1f4eb0df5fdcfb9de90523b00bc9b99f129853584e20c1 + 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" @@ -26684,6 +26984,16 @@ __metadata: languageName: node linkType: hard +"react-devtools-core@npm:^4.26.1": + version: 4.27.8 + resolution: "react-devtools-core@npm:4.27.8" + dependencies: + shell-quote: ^1.6.1 + ws: ^7 + checksum: 83213d5f620e95cf9e60d21a186949f1a523253ea5cca3371d61cf74102efd5074e2e9431cebe4cd9be45a77db647af9c2cdb44c69907ed07441a3334ca19c8b + languageName: node + linkType: hard + "react-dom@npm:18.2.0": version: 18.2.0 resolution: "react-dom@npm:18.2.0" @@ -26782,6 +27092,18 @@ __metadata: languageName: node linkType: hard +"react-native-codegen@npm:^0.71.5": + version: 0.71.5 + resolution: "react-native-codegen@npm:0.71.5" + dependencies: + "@babel/parser": ^7.14.0 + flow-parser: ^0.185.0 + jscodeshift: ^0.13.1 + nullthrows: ^1.1.1 + checksum: d3a40b557d4b3a0d51664070eb8388b0dde247a0518025ff5a815d3573c98ff16f616df8236e827ee16625f685169931db5c966dd144d860ad5aed437b65b28c + languageName: node + linkType: hard + "react-native-dialogbox@npm:0.6.10": version: 0.6.10 resolution: "react-native-dialogbox@npm:0.6.10" @@ -26878,6 +27200,13 @@ __metadata: languageName: node linkType: hard +"react-native-gradle-plugin@npm:^0.71.19": + version: 0.71.19 + resolution: "react-native-gradle-plugin@npm:0.71.19" + checksum: 2e3ab679f0b81edd81b9fb88a73a16c8b9b6dbef4e7158fd894c42e6dff04ba8d11f1b9663ffa2c30d0d9deee3cd44b033cd280322c010be3c290e4422088a7a + languageName: node + linkType: hard + "react-native-image-picker@npm:5.3.1": version: 5.3.1 resolution: "react-native-image-picker@npm:5.3.1" @@ -27116,6 +27445,52 @@ __metadata: languageName: node linkType: hard +"react-native@npm:0.71.10": + version: 0.71.10 + resolution: "react-native@npm:0.71.10" + dependencies: + "@jest/create-cache-key-function": ^29.2.1 + "@react-native-community/cli": 10.2.2 + "@react-native-community/cli-platform-android": 10.2.0 + "@react-native-community/cli-platform-ios": 10.2.1 + "@react-native/assets": 1.0.0 + "@react-native/normalize-color": 2.1.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: ^3.0.1 + event-target-shim: ^5.0.1 + invariant: ^2.2.4 + jest-environment-node: ^29.2.1 + jsc-android: ^250231.0.0 + memoize-one: ^5.0.0 + metro-react-native-babel-transformer: 0.73.9 + metro-runtime: 0.73.9 + metro-source-map: 0.73.9 + mkdirp: ^0.5.1 + nullthrows: ^1.1.1 + pretty-format: ^26.5.2 + promise: ^8.3.0 + react-devtools-core: ^4.26.1 + react-native-codegen: ^0.71.5 + react-native-gradle-plugin: ^0.71.19 + react-refresh: ^0.4.0 + react-shallow-renderer: ^16.15.0 + regenerator-runtime: ^0.13.2 + scheduler: ^0.23.0 + stacktrace-parser: ^0.1.3 + use-sync-external-store: ^1.0.0 + whatwg-fetch: ^3.0.0 + ws: ^6.2.2 + peerDependencies: + react: 18.2.0 + bin: + react-native: cli.js + checksum: 08780690cdbdb15798bb59666ab7deabb4555904e78bcade60be42a35ea75365a668c2b5da1f3b431a66d0f1614e143344024ed8be49c219cd034a17fabb1ae9 + languageName: node + linkType: hard + "react-reconciler@npm:^0.26.2": version: 0.26.2 resolution: "react-reconciler@npm:0.26.2" @@ -27655,13 +28030,22 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.2, regenerator-runtime@npm:^0.13.4": +"regenerator-runtime@npm:^0.13.2": version: 0.13.9 resolution: "regenerator-runtime@npm:0.13.9" checksum: 65ed455fe5afd799e2897baf691ca21c2772e1a969d19bb0c4695757c2d96249eb74ee3553ea34a91062b2a676beedf630b4c1551cc6299afb937be1426ec55e languageName: node linkType: hard +"regenerator-transform@npm:^0.15.1": + version: 0.15.1 + resolution: "regenerator-transform@npm:0.15.1" + dependencies: + "@babel/runtime": ^7.8.4 + checksum: 2d15bdeadbbfb1d12c93f5775493d85874dbe1d405bec323da5c61ec6e701bc9eea36167483e1a5e752de9b2df59ab9a2dfff6bf3784f2b28af2279a673d29a4 + languageName: node + linkType: hard + "regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": version: 1.0.2 resolution: "regex-not@npm:1.0.2" @@ -27700,31 +28084,17 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^5.1.0": - version: 5.2.1 - resolution: "regexpu-core@npm:5.2.1" +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" dependencies: + "@babel/regjsgen": ^0.8.0 regenerate: ^1.4.2 regenerate-unicode-properties: ^10.1.0 - regjsgen: ^0.7.1 - regjsparser: ^0.9.1 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.0.0 - checksum: c1244db79f7a4597414cd7fdf5171fa73905f0cbc684385c78127fc6198f9cade8fe829a1c4036c8ec57ac75b1ffb8c196451abdd2e153f26a4d8043fa10bbb3 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.2.1": - version: 5.2.2 - resolution: "regexpu-core@npm:5.2.2" - dependencies: - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.1.0 - regjsgen: ^0.7.1 regjsparser: ^0.9.1 unicode-match-property-ecmascript: ^2.0.0 unicode-match-property-value-ecmascript: ^2.1.0 - checksum: 87c56815e20d213848d38f6b047ba52f0d632f36e791b777f59327e8d350c0743b27cc25feab64c0eadc9fe9959dde6b1261af71108a9371b72c8c26beda05ef + checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 languageName: node linkType: hard @@ -27746,13 +28116,6 @@ __metadata: languageName: node linkType: hard -"regjsgen@npm:^0.7.1": - version: 0.7.1 - resolution: "regjsgen@npm:0.7.1" - checksum: 7cac399921c58db8e16454869283ff66871531180218064fa938ac05c11c2976792a00706c3c78bbc625e1d793ca373065ea90564e06189a751a7b4ae33acadc - languageName: node - linkType: hard - "regjsparser@npm:^0.9.1": version: 0.9.1 resolution: "regjsparser@npm:0.9.1" @@ -30873,6 +31236,20 @@ __metadata: languageName: node linkType: hard +"terser@npm:^5.15.0": + version: 5.17.7 + resolution: "terser@npm:5.17.7" + dependencies: + "@jridgewell/source-map": ^0.3.3 + acorn: ^8.8.2 + commander: ^2.20.0 + source-map-support: ~0.5.20 + bin: + terser: bin/terser + checksum: b7b17b281febadf3bea9b9412d699fa24edf9b3e20fc7ad4e1a9cec276bdb65ddaa291c9663d5ab66b58834e433377477f73328574ccab2da1637a15b095811d + languageName: node + linkType: hard + "terser@npm:^5.7.2": version: 5.10.0 resolution: "terser@npm:5.10.0" @@ -32012,13 +32389,6 @@ __metadata: languageName: node linkType: hard -"unicode-match-property-value-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" - checksum: 8fe6a09d9085a625cabcead5d95bdbc1a2d5d481712856092ce0347231e81a60b93a68f1b69e82b3076a07e415a72c708044efa2aa40ae23e2e7b5c99ed4a9ea - languageName: node - linkType: hard - "unicode-match-property-value-ecmascript@npm:^2.1.0": version: 2.1.0 resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" @@ -32191,17 +32561,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.4": - version: 1.0.4 - resolution: "update-browserslist-db@npm:1.0.4" +"update-browserslist-db@npm:^1.0.11": + version: 1.0.11 + resolution: "update-browserslist-db@npm:1.0.11" dependencies: escalade: ^3.1.1 picocolors: ^1.0.0 peerDependencies: browserslist: ">= 4.21.0" bin: - browserslist-lint: cli.js - checksum: 7c7da28d0fc733b17e01c8fa9385ab909eadce64b8ea644e9603867dc368c2e2a6611af8247e72612b23f9e7cb87ac7c7585a05ff94e1759e9d646cbe9bf49a7 + update-browserslist-db: cli.js + checksum: b98327518f9a345c7cad5437afae4d2ae7d865f9779554baf2a200fdf4bac4969076b679b1115434bd6557376bdd37ca7583d0f9b8f8e302d7d4cc1e91b5f231 languageName: node linkType: hard @@ -33323,7 +33693,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^6.1.4": +"ws@npm:^6.1.4, ws@npm:^6.2.2": version: 6.2.2 resolution: "ws@npm:6.2.2" dependencies: