diff --git a/.yarn/patches/@react-native-gradle-plugin-npm-0.82.0-10aedc0588.patch b/.yarn/patches/@react-native-gradle-plugin-npm-0.82.0-10aedc0588.patch new file mode 100644 index 000000000000..4a729e21a42f --- /dev/null +++ b/.yarn/patches/@react-native-gradle-plugin-npm-0.82.0-10aedc0588.patch @@ -0,0 +1,15 @@ +diff --git a/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt b/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt +index 890e61c007d5b3e0a9a69d37ef10e8aa3ce5c6b6..91acd7b2930fedb4eca2461ba99287721ca1f38f 100644 +--- a/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt ++++ b/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/ReactPlugin.kt +@@ -80,7 +80,9 @@ class ReactPlugin : Plugin { + configureRepositories(project) + } + +- configureReactNativeNdk(project, extension) ++ if(!project.gradle.startParameter.taskNames.any { it.contains("clean") }) { ++ configureReactNativeNdk(project, extension) ++ } + configureBuildConfigFieldsForApp(project, extension) + configureDevServerLocation(project) + configureBackwardCompatibilityReactMap(project) diff --git a/apps/common-app/package.json b/apps/common-app/package.json index f98375494a2a..bfecef606703 100644 --- a/apps/common-app/package.json +++ b/apps/common-app/package.json @@ -16,32 +16,11 @@ "react-native": "*" }, "dependencies": { - "@fortawesome/fontawesome-svg-core": "6.5.2", - "@fortawesome/free-solid-svg-icons": "6.5.2", - "@fortawesome/react-native-fontawesome": "0.3.2", - "@gorhom/bottom-sheet": "patch:@gorhom/bottom-sheet@npm%3A5.2.6#~/.yarn/patches/@gorhom-bottom-sheet-npm-5.2.6-c24dba2629.patch", - "@gorhom/portal": "1.0.14", - "@react-native-async-storage/async-storage": "2.2.0", - "@react-native-clipboard/clipboard": "1.16.3", - "@react-native-masked-view/masked-view": "0.3.2", - "@react-navigation/bottom-tabs": "7.4.8", - "@react-navigation/drawer": "7.5.9", - "@react-navigation/native": "7.1.18", - "@react-navigation/native-stack": "7.3.27", - "@react-navigation/stack": "7.4.9", - "@shopify/flash-list": "2.1.0", "d3-shape": "3.2.0", "fuse.js": "patch:fuse.js@npm%3A7.1.0#~/.yarn/patches/fuse.js-npm-7.1.0-5dcae892a6.patch", "react": "19.1.1", "react-dom": "19.1.1", - "react-native-gesture-handler": "2.28.0", - "react-native-mmkv": "4.0.0", - "react-native-nitro-modules": "0.31.9", - "react-native-pager-view": "7.0.0", "react-native-reanimated": "workspace:*", - "react-native-safe-area-context": "5.6.1", - "react-native-screens": "4.16.0", - "react-native-svg": "15.14.0", "react-native-worklets": "workspace:*", "react-strict-dom": "0.0.54" }, diff --git a/apps/fabric-example/android/app/build.gradle b/apps/fabric-example/android/app/build.gradle index 88d44c98e12c..67b009b43d78 100644 --- a/apps/fabric-example/android/app/build.gradle +++ b/apps/fabric-example/android/app/build.gradle @@ -107,6 +107,28 @@ android { } } +// interface FSService { +// @Inject FileSystemOperations getFs() +// } + +// tasks.register('cleanCmakeCache', Delete) { +// def fsService = project.objects.newInstance(FSService) +// def projectDir = project.projectDir + +// def buildDir = project.buildDir +// def cxxDir = new File(projectDir, ".cxx") +// doFirst { +// delete "$buildDir" +// delete "${projectDir}/.cxx" +// delete "${projectDir}/../build" +// } +// } + +// tasks.named('clean') { +// dependsOn cleanCmakeCache +// } + + dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") diff --git a/apps/fabric-example/android/gradle.properties b/apps/fabric-example/android/gradle.properties index d183897bec8e..abe56413b77b 100644 --- a/apps/fabric-example/android/gradle.properties +++ b/apps/fabric-example/android/gradle.properties @@ -25,7 +25,8 @@ android.useAndroidX=true # Use this property to specify which architecture you want to build. # You can also override it from the CLI using # ./gradlew -PreactNativeArchitectures=x86_64 -reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 +# reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 +reactNativeArchitectures=arm64-v8a # Use this property to enable support to the new architecture. # This will allow you to use TurboModules and the Fabric render in diff --git a/apps/fabric-example/ios/Podfile.lock b/apps/fabric-example/ios/Podfile.lock index 6d0908d25d58..6ca0fdbc1e95 100644 --- a/apps/fabric-example/ios/Podfile.lock +++ b/apps/fabric-example/ios/Podfile.lock @@ -2875,6 +2875,8 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - RNWorklets/worklets/apple (= 0.7.0-main) + - RNWorklets/worklets/common (= 0.7.0-main) + - RNWorklets/worklets/public (= 0.7.0-main) - SocketRocket - Yoga - RNWorklets/worklets/apple (0.7.0-main): @@ -2906,6 +2908,64 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga + - RNWorklets/worklets/common (0.7.0-main): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - RNWorklets/worklets/public (0.7.0-main): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga - SocketRocket (0.7.1) - Yoga (0.0.0) @@ -3261,7 +3321,7 @@ SPEC CHECKSUMS: RNReanimated: 97ebf4d3c76929b6b0f866cfbd41c49b3a0d2dbf RNScreens: 0bbf16c074ae6bb1058a7bf2d1ae017f4306797c RNSVG: 8c0bbfa480a24b24468f1c76bd852a4aac3178e6 - RNWorklets: f54a415f73a3fc653bfe65e599872fdc6bca0477 + RNWorklets: 7a90fa0d1722af806025402c038355faa20a41c3 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: edeb9900b9e5bb5b27b9a6a2d5914e4fe4033c1b diff --git a/apps/macos-example/macos/Podfile.lock b/apps/macos-example/macos/Podfile.lock index fe67bd1fef42..85a8ecc6bde4 100644 --- a/apps/macos-example/macos/Podfile.lock +++ b/apps/macos-example/macos/Podfile.lock @@ -1977,6 +1977,8 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - RNWorklets/worklets/apple (= 0.7.0-main) + - RNWorklets/worklets/common (= 0.7.0-main) + - RNWorklets/worklets/public (= 0.7.0-main) - Yoga - RNWorklets/worklets/apple (0.7.0-main): - DoubleConversion @@ -2002,6 +2004,54 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga + - RNWorklets/worklets/common (0.7.0-main): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNWorklets/worklets/public (0.7.0-main): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.11.18.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - SocketRocket (0.7.1) - Yoga (0.0.0) @@ -2322,7 +2372,7 @@ SPEC CHECKSUMS: RNGestureHandler: 0397fea67f39d5a2d17fcf4a028e206f7ba098ba RNReanimated: 152207cf096f2badeef2c552a8f2886accd187e6 RNSVG: 681f8ef5ca50e13cb3c6c88a907ea89b68fee74f - RNWorklets: ee84c4d458ce35f4ed94462a2add070ff4e69edb + RNWorklets: 7cdcdb8dd199bc5d1cd99e42940c47e4442a2670 SocketRocket: 03f7111df1a343b162bf5b06ead333be808e1e0a Yoga: 45ce05cb11db042ba2e5e51a2dfaf0ff63d269f9 diff --git a/apps/tvos-example/ios/Podfile.lock b/apps/tvos-example/ios/Podfile.lock index 4bf4190b204b..7594d92ede21 100644 --- a/apps/tvos-example/ios/Podfile.lock +++ b/apps/tvos-example/ios/Podfile.lock @@ -2397,6 +2397,8 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - RNWorklets/worklets/apple (= 0.7.0-main) + - RNWorklets/worklets/common (= 0.7.0-main) + - RNWorklets/worklets/public (= 0.7.0-main) - SocketRocket - Yoga - RNWorklets/worklets/apple (0.7.0-main): @@ -2427,6 +2429,62 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga + - RNWorklets/worklets/common (0.7.0-main): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga + - RNWorklets/worklets/public (0.7.0-main): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-renderercss + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga - SocketRocket (0.7.1) - Yoga (0.0.0) @@ -2732,7 +2790,7 @@ SPEC CHECKSUMS: ReactCodegen: f4d6e6fd5140eade461ffb5579795197956868c8 ReactCommon: c178596d3ef05508bb6c0f88bfbbc281b5c4222b RNReanimated: cccf8b45cb675080e7c5f3a4f5d0498eff6c62a0 - RNWorklets: 339aa12272b2ff6490d91526e8ced6599f7ef6a3 + RNWorklets: 6aa271764dc8121f468b10c866239ca4c644208b SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 0e792f39294e864568930600eeb71135364f777d diff --git a/package.json b/package.json index 141335c03687..81b7447f4021 100644 --- a/package.json +++ b/package.json @@ -70,5 +70,8 @@ "react-native-builder-bob": "0.40.13", "shelljs": "0.10.0", "typescript": "5.8.3" + }, + "resolutions": { + "@react-native/gradle-plugin@npm:0.82.0": "patch:@react-native/gradle-plugin@npm%3A0.82.0#~/.yarn/patches/@react-native-gradle-plugin-npm-0.82.0-10aedc0588.patch" } } diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h b/packages/react-native-reanimated/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h index 2964ac3a16f9..649f3b819a35 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +++ b/packages/react-native-reanimated/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h @@ -2,8 +2,10 @@ #include -#include -#include +// #include +// #include +#include +#include #include diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h b/packages/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h index 16de0b56a16b..646b4d5bc378 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +++ b/packages/react-native-reanimated/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h @@ -2,7 +2,8 @@ #include -#include +#include +// #include #include #include diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp index 454eeb1a4cc0..d34027834db8 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +++ b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp @@ -5,8 +5,9 @@ #include #include +#include #include -#include +// #include #include #ifdef __ANDROID__ diff --git a/packages/react-native-reanimated/android/CMakeLists.txt b/packages/react-native-reanimated/android/CMakeLists.txt index d4731e6c9e5b..3f87cab8570b 100644 --- a/packages/react-native-reanimated/android/CMakeLists.txt +++ b/packages/react-native-reanimated/android/CMakeLists.txt @@ -45,6 +45,7 @@ file(GLOB_RECURSE REANIMATED_ANDROID_CPP_SOURCES CONFIGURE_DEPENDS find_package(fbjni REQUIRED CONFIG) find_package(ReactAndroid REQUIRED CONFIG) +find_package(react-native-worklets REQUIRED CONFIG) add_library(reanimated SHARED ${REANIMATED_COMMON_CPP_SOURCES} ${REANIMATED_ANDROID_CPP_SOURCES}) @@ -69,8 +70,7 @@ target_include_directories( "${REACT_NATIVE_DIR}/ReactCommon/runtimeexecutor" "${REACT_NATIVE_DIR}/ReactCommon/jsiexecutor" "${REACT_NATIVE_DIR}/ReactCommon/react/renderer/graphics/platform/cxx" - "${REACT_NATIVE_WORKLETS_DIR}/Common/cpp" - "${REACT_NATIVE_WORKLETS_DIR}/android/src/main/cpp") +) set_target_properties(reanimated PROPERTIES LINKER_LANGUAGE CXX) @@ -80,15 +80,6 @@ else() set(BUILD_TYPE "release") endif() -add_library(worklets SHARED IMPORTED) - -set_target_properties( - worklets - PROPERTIES - IMPORTED_LOCATION - "${REACT_NATIVE_WORKLETS_DIR}/android/build/intermediates/cmake/${BUILD_TYPE}/obj/${ANDROID_ABI}/libworklets.so" -) - set_target_properties(reanimated PROPERTIES LINKER_LANGUAGE CXX) # remove dead code sections set_target_properties(reanimated PROPERTIES LINK_FLAGS "-Wl,--gc-sections") @@ -108,4 +99,4 @@ target_link_libraries( ReactAndroid::jsi fbjni::fbjni android - worklets) + react-native-worklets::worklets) diff --git a/packages/react-native-reanimated/android/build.gradle b/packages/react-native-reanimated/android/build.gradle index 86bace765ea9..0303c29f1f35 100644 --- a/packages/react-native-reanimated/android/build.gradle +++ b/packages/react-native-reanimated/android/build.gradle @@ -198,7 +198,6 @@ android { "-DREACT_NATIVE_MINOR_VERSION=${REACT_NATIVE_MINOR_VERSION}", "-DANDROID_TOOLCHAIN=clang", "-DREACT_NATIVE_DIR=${toPlatformFileString(reactNativeRootDir.path)}", - "-DREACT_NATIVE_WORKLETS_DIR=${toPlatformFileString(reactNativeWorkletsRootDir.path)}", "-DIS_REANIMATED_EXAMPLE_APP=${IS_REANIMATED_EXAMPLE_APP}", "-DREANIMATED_PROFILING=${REANIMATED_PROFILING}", "-DREANIMATED_VERSION=${REANIMATED_VERSION}", @@ -314,13 +313,27 @@ task prepareReanimatedHeadersForPrefabs(type: Copy) { into(reanimatedPrefabHeadersDir) } -task cleanCmakeCache() { - tasks.getByName("clean").dependsOn(cleanCmakeCache) - doFirst { - delete "${projectDir}/.cxx" - } +interface FSService { + @Inject FileSystemOperations getFs() } +// def cleanCmakeCacheTask = tasks.register('cleanCmakeCache', Delete) { +// def fsService = project.objects.newInstance(FSService) +// def projectDir = project.projectDir +// doLast { +// println "Cleaning CMake build cache in ${projectDir}" +// fsService.fs.delete { +// delete "${projectDir}/build" +// delete "${projectDir}/.cxx" +// } +// } +// } + +// // Ensure this runs after any externalNativeBuildClean* task +// tasks.matching { it.name.startsWith('externalNativeBuildClean') }.configureEach { +// finalizedBy(cleanCmakeCacheTask) +// } + repositories { mavenCentral() google() @@ -344,13 +357,46 @@ dependencies { } } +// println "Tasks in the project:" +// tasks.each { task -> +// println task.name +// } + preBuild.dependsOn(prepareReanimatedHeadersForPrefabs) if (project != rootProject) { evaluationDependsOn(":react-native-worklets") afterEvaluate { +// def workletsTaskPath = ":react-native-worklets:prepareWorkletsHeadersForPrefabs_v2" + + // 2. Find all tasks that trigger the C++ build (ExternalNativeBuildTask) + // This covers both Debug and Release variants automatically. +// tasks.withType(com.android.build.gradle.tasks.ExternalNativeBuildTask).configureEach { cxxTask -> +// +// // 3. Add the dependency +// // We use the String path to avoid errors if the worklets project hasn't fully configured yet. +// cxxTask.dependsOn(workletsTaskPath) +// } + // 1. Find the target project + // def workletsProject = findProject(":react-native-worklets") + + // if (workletsProject != null) { + // // 2. Find the preBuild task in the target project + // def workletsPreBuildTask = workletsProject.tasks.findByName("preBuild") + + // if (workletsPreBuildTask != null) { + // // 3. Make the current project's preBuild task depend on the target's preBuild + // tasks.getByName("preBuild").dependsOn(workletsPreBuildTask) + // println("[Reanimated] Configured preBuild to depend on :react-native-worklets:preBuild.") + // } else { + // logger.warn("[Reanimated] Could not find 'preBuild' task in ':react-native-worklets'. Dependency not set.") + // } + // } else { + // logger.warn("[Reanimated] Could not find project ':react-native-worklets'. Dependency not set.") + // } tasks.getByName("externalNativeBuildDebug").dependsOn(findProject(":react-native-worklets").tasks.getByName("externalNativeBuildDebug")) tasks.getByName("externalNativeBuildRelease").dependsOn(findProject(":react-native-worklets").tasks.getByName("externalNativeBuildRelease")) + // tasks.getByName("configureCMakeDebug").dependsOn(findProject(":react-native-worklets").tasks.getByName("configureCMakeDebug")) } } diff --git a/packages/react-native-worklets/RNWorklets.podspec b/packages/react-native-worklets/RNWorklets.podspec index fa66aa9ef6f6..5c871a6ee57c 100644 --- a/packages/react-native-worklets/RNWorklets.podspec +++ b/packages/react-native-worklets/RNWorklets.podspec @@ -24,9 +24,12 @@ Pod::Spec.new do |s| s.source = { :git => "https://github.com/software-mansion/react-native-reanimated.git", :tag => "#{s.version}" } s.subspec "worklets" do |ss| - ss.source_files = "Common/cpp/worklets/**/*.{cpp,h}" - ss.header_dir = "worklets" - ss.header_mappings_dir = "Common/cpp/worklets" + ss.subspec "common" do |sss| + sss.source_files = "Common/cpp/worklets/**/*.{h,cpp}" + sss.header_dir = "worklets" + sss.header_mappings_dir = "Common/cpp/worklets" + sss.public_header_files = "**/*.h" + end ss.subspec "apple" do |sss| # Please be careful with the snakes. @@ -35,6 +38,16 @@ Pod::Spec.new do |s| sss.source_files = "apple/worklets/**/*.{mm,h,m}" sss.header_dir = "worklets" sss.header_mappings_dir = "apple/worklets" + sss.public_header_files = "**/*.h" + end + + ss.subspec "public" do |sss| + sss.source_files = + "Common/cpp/worklets/RunLoop/AsyncQueue.h", + "Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h", + "Common/cpp/worklets/SharedItems/Serializable.h", + "Common/cpp/worklets/SharedItems/Synchronizable.h" + sss.public_header_files = "**/*.h" end end diff --git a/packages/react-native-worklets/android/build.gradle b/packages/react-native-worklets/android/build.gradle index 2e5ad454afb1..6002ece5c8f4 100644 --- a/packages/react-native-worklets/android/build.gradle +++ b/packages/react-native-worklets/android/build.gradle @@ -1,5 +1,8 @@ import com.android.build.gradle.tasks.ExternalNativeBuildJsonTask import groovy.json.JsonSlurper + +import javax.inject.Inject +import java.nio.file.Files import java.nio.file.Paths import org.apache.tools.ant.taskdefs.condition.Os @@ -150,6 +153,8 @@ apply plugin: "com.android.library" apply plugin: "maven-publish" apply plugin: "de.undercouch.download" +apply from: "./fix-prefab.gradle" + android { compileSdkVersion safeExtGet("compileSdkVersion", 34) @@ -317,18 +322,109 @@ task prepareWorkletsHeadersForPrefabs(type: Copy) { into(workletsPrefabHeadersDir) } -task cleanCmakeCache() { - tasks.getByName("clean").dependsOn(cleanCmakeCache) - doFirst { - delete "${projectDir}/.cxx" +def workletsPublicTargetDir = file("${workletsPrefabHeadersDir}/RNWorklets") + +tasks.register('cleanWorkletsHeaders', Delete) { + delete workletsPublicTargetDir +} + + +task preparePublicHeadersForPrefabs_experimental { + dependsOn prepareWorkletsHeadersForPrefabs + dependsOn cleanWorkletsHeaders + + def links = [ + [file("${workletsPrefabHeadersDir}/worklets/WorkletRuntime/WorkletRuntime.h"), file("${workletsPublicTargetDir}/WorkletRuntime.h")], + [file("${workletsPrefabHeadersDir}/worklets/RunLoop/AsyncQueue.h"), file("${workletsPublicTargetDir}/AsyncQueue.h")], + [file("${workletsPrefabHeadersDir}/worklets/SharedItems/Serializable.h"), file("${workletsPublicTargetDir}/Serializable.h")], + [file("${workletsPrefabHeadersDir}/worklets/SharedItems/Synchronizable.h"), file("${workletsPublicTargetDir}/Synchronizable.h")] + ] + + doLast { + workletsPublicTargetDir.mkdirs() + + links.each { link -> + Files.createSymbolicLink(link[1].toPath(), link[0].toPath()) + } + } +} + +interface FSService { + @Inject FileSystemOperations getFs() +} + +afterEvaluate { + // Make sure that Gradle Sync in Android Studio doesn't complain about + // missing prefab-headers directory for header inclusions + workletsPrefabHeadersDir.mkdirs() +} + +def cleanCmakeCacheTask = tasks.register('cleanCmakeCache', Delete) { + def fsService = project.objects.newInstance(FSService) + def projectDir = project.projectDir + doLast { + println "Cleaning CMake build cache in ${projectDir}" + fsService.fs.delete { + delete "${projectDir}/build" + delete "${projectDir}/.cxx" + } } } +// Ensure this runs after any externalNativeBuildClean* task +tasks.matching { it.name.startsWith('externalNativeBuildClean') }.configureEach { + finalizedBy(cleanCmakeCacheTask) +} + repositories { mavenCentral() google() } +tasks.named('preBuild') { + def projectDir = project.projectDir + def fsService = project.objects.newInstance(FSService) + + // 1. Define the actual copy action inside doFirst + doFirst { + // println("📝 [Worklets] Copying headers for Prefabs...") + + // Ensure the destination exists + // workletsPrefabHeadersDir.mkdirs() + // fsService.fs.delete { + // delete workletsPrefabHeadersDir + // } + + workletsPrefabHeadersDir.mkdirs() + + // Use the project.copy closure to perform file operations + fsService.fs.copy { + from("$projectDir/src/main/cpp") + from("$projectDir/../Common/cpp") + include("worklets/**/*.h") + into(workletsPrefabHeadersDir) + } + } + + // 2. Define the output for incremental builds + // This tells Gradle that if workletsPrefabHeadersDir is unchanged, it can skip running this task. +// outputs.dir(workletsPrefabHeadersDir) + + // 3. Define inputs (optional but recommended for correctness) + // This tells Gradle which files this task uses, so if they change, the task runs again. + inputs.files( + fileTree("$projectDir/src/main/cpp") { + include("worklets/**/*.h") + }, + fileTree("$projectDir/../Common/cpp") { + include("worklets/**/*.h") + } + ).withPropertyName('workletHeaders') +} + +preBuild.dependsOn(prepareWorkletsHeadersForPrefabs) +preBuild.dependsOn(preparePublicHeadersForPrefabs_experimental) + dependencies { implementation "com.facebook.yoga:proguard-annotations:1.19.0" implementation "androidx.transition:transition:1.1.0" @@ -339,5 +435,3 @@ dependencies { implementation "com.facebook.react:hermes-android" // version substituted by RNGP } } - -preBuild.dependsOn(prepareWorkletsHeadersForPrefabs) diff --git a/packages/react-native-worklets/android/fix-prefab.gradle b/packages/react-native-worklets/android/fix-prefab.gradle new file mode 100644 index 000000000000..fcf502a0ca48 --- /dev/null +++ b/packages/react-native-worklets/android/fix-prefab.gradle @@ -0,0 +1,53 @@ +tasks.configureEach { task -> + // Make sure that we generate our prefab publication file only after having built the native library + // so that not a header publication file, but a full configuration publication will be generated, which + // will include the .so file + + def prefabConfigurePattern = ~/^prefab(.+)ConfigurePackage$/ + def matcher = task.name =~ prefabConfigurePattern + if (matcher.matches()) { + def variantName = matcher[0][1] + task.outputs.upToDateWhen { false } + task.dependsOn("externalNativeBuild${variantName}") + } +} + +afterEvaluate { + def abis = reactNativeArchitectures() + rootProject.allprojects.each { proj -> + + if (proj === rootProject) return + + def dependsOnThisLib = proj.configurations.any { config -> + config.dependencies.any { dep -> + dep.group == project.group && dep.name == project.name + } + } + + if (!dependsOnThisLib && proj != project) return + + if (!proj.plugins.hasPlugin('com.android.application') && !proj.plugins.hasPlugin('com.android.library')) { + return + } + + def variants = proj.android.hasProperty('applicationVariants') ? proj.android.applicationVariants : proj.android.libraryVariants + // Touch the prefab_config.json files to ensure that in ExternalNativeJsonGenerator.kt we will re-trigger the prefab CLI to + // generate a libnameConfig.cmake file that will contain our native library (.so). + // See this condition: https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/ExternalNativeJsonGenerator.kt;l=207-219?q=createPrefabBuildSystemGlue + variants.all { variant -> + def variantName = variant.name + abis.each { abi -> + def searchDir = new File(proj.projectDir, ".cxx/${variantName}") + if (!searchDir.exists()) return + def matches = [] + searchDir.eachDir { randomDir -> + def prefabFile = new File(randomDir, "${abi}/prefab_config.json") + if (prefabFile.exists()) matches << prefabFile + } + matches.each { prefabConfig -> + prefabConfig.setLastModified(System.currentTimeMillis()) + } + } + } + } +} diff --git a/yarn.lock b/yarn.lock index f725c7271b7f..627090cbb2e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4327,101 +4327,6 @@ __metadata: languageName: node linkType: hard -"@fortawesome/fontawesome-common-types@npm:6.5.2": - version: 6.5.2 - resolution: "@fortawesome/fontawesome-common-types@npm:6.5.2" - checksum: 10/a918b2dd6566db6878999e1c4523fa8d0fcc3c79f00086b48a36c365e543ac16a2950618f47893a8369d4ee13e454baf1f5108f7238bdf6ec2bea459b6c517ca - languageName: node - linkType: hard - -"@fortawesome/fontawesome-svg-core@npm:6.5.2": - version: 6.5.2 - resolution: "@fortawesome/fontawesome-svg-core@npm:6.5.2" - dependencies: - "@fortawesome/fontawesome-common-types": "npm:6.5.2" - checksum: 10/03cc6d9662f2014e2fbbf47e9678a6a21108edeb78ff551207eeb12404daa8bfa5c6dd30a474d3fca897e856ff4b45d35261bb445fc30994c46d91783722684d - languageName: node - linkType: hard - -"@fortawesome/free-solid-svg-icons@npm:6.5.2": - version: 6.5.2 - resolution: "@fortawesome/free-solid-svg-icons@npm:6.5.2" - dependencies: - "@fortawesome/fontawesome-common-types": "npm:6.5.2" - checksum: 10/2f6dde7eddc8ab9ed09d220c2dad6cb53922842d3f764ea9d393162ba50971b5be8f16e0c9a225ec808d6a2e92769a0d194e7e1ae8f98ccdd53f7a59aee2e31b - languageName: node - linkType: hard - -"@fortawesome/react-native-fontawesome@npm:0.3.2": - version: 0.3.2 - resolution: "@fortawesome/react-native-fontawesome@npm:0.3.2" - dependencies: - humps: "npm:^2.0.1" - prop-types: "npm:^15.7.2" - peerDependencies: - "@fortawesome/fontawesome-svg-core": ~1 || ~6 - react-native: ">= 0.67" - react-native-svg: ">= 11.x" - checksum: 10/2faf60eb38ad234403484d41dc910b634f9e4650c203b303f93c745c4679f53f6cbd45833c93c7a5359f53947335257454992ad9acde8cd47b0acf6b8d9f0e44 - languageName: node - linkType: hard - -"@gorhom/bottom-sheet@npm:5.2.6": - version: 5.2.6 - resolution: "@gorhom/bottom-sheet@npm:5.2.6" - dependencies: - "@gorhom/portal": "npm:1.0.14" - invariant: "npm:^2.2.4" - peerDependencies: - "@types/react": "*" - "@types/react-native": "*" - react: "*" - react-native: "*" - react-native-gesture-handler: ">=2.16.1" - react-native-reanimated: "*" - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-native": - optional: true - checksum: 10/bca8cf14a7627d2fb2b5e6ed75e5fa79be373ee1d227941e0a3c1b33b3385b04a24353b0c48c00b8aeea72a17a4612eefd31ac1b38ab66f5b3103d3d4eb9fef2 - languageName: node - linkType: hard - -"@gorhom/bottom-sheet@patch:@gorhom/bottom-sheet@npm%3A5.2.6#~/.yarn/patches/@gorhom-bottom-sheet-npm-5.2.6-c24dba2629.patch": - version: 5.2.6 - resolution: "@gorhom/bottom-sheet@patch:@gorhom/bottom-sheet@npm%3A5.2.6#~/.yarn/patches/@gorhom-bottom-sheet-npm-5.2.6-c24dba2629.patch::version=5.2.6&hash=5dd64e" - dependencies: - "@gorhom/portal": "npm:1.0.14" - invariant: "npm:^2.2.4" - peerDependencies: - "@types/react": "*" - "@types/react-native": "*" - react: "*" - react-native: "*" - react-native-gesture-handler: ">=2.16.1" - react-native-reanimated: "*" - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-native": - optional: true - checksum: 10/6b08b8c621a629759316198a73eb48cb0cb0bcb9a36f12adb0afe204f8bec9d414a5a7ba9daf1cfaaf06c3027bb391c630bc1444d8a5597d4356ded668e1642f - languageName: node - linkType: hard - -"@gorhom/portal@npm:1.0.14": - version: 1.0.14 - resolution: "@gorhom/portal@npm:1.0.14" - dependencies: - nanoid: "npm:^3.3.1" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/e0fa06be88b850cccdc6a1417a86e5ac21d82e3bfd1cec7eb05eccf7f3b595babe305541f278fdcbde34f3a9db465097dca2c785445c28bafb83b744e235da0c - languageName: node - linkType: hard - "@hapi/address@npm:^5.1.1": version: 5.1.1 resolution: "@hapi/address@npm:5.1.1" @@ -5884,34 +5789,6 @@ __metadata: languageName: node linkType: hard -"@react-native-async-storage/async-storage@npm:2.2.0": - version: 2.2.0 - resolution: "@react-native-async-storage/async-storage@npm:2.2.0" - dependencies: - merge-options: "npm:^3.0.4" - peerDependencies: - react-native: ^0.0.0-0 || >=0.65 <1.0 - checksum: 10/625e42134f0c487acfd4ba9b3ba182e6f6f29581485004cc658850ef024372cdb7381b7399393f4416fda39df2d822e3008427d7671d635a7363f9a65430a2dd - languageName: node - linkType: hard - -"@react-native-clipboard/clipboard@npm:1.16.3": - version: 1.16.3 - resolution: "@react-native-clipboard/clipboard@npm:1.16.3" - peerDependencies: - react: ">= 16.9.0" - react-native: ">= 0.61.5" - react-native-macos: ">= 0.61.0" - react-native-windows: ">= 0.61.0" - peerDependenciesMeta: - react-native-macos: - optional: true - react-native-windows: - optional: true - checksum: 10/87608bee52757af514b4717c42cde330dd61f46d1348dd59b4f478a27d351060c8b433375166d486d3e80d3db41dfcd17be401679cced3951c69857727ecbc96 - languageName: node - linkType: hard - "@react-native-community/cli-clean@npm:20.0.0": version: 20.0.0 resolution: "@react-native-community/cli-clean@npm:20.0.0" @@ -6359,16 +6236,6 @@ __metadata: languageName: node linkType: hard -"@react-native-masked-view/masked-view@npm:0.3.2": - version: 0.3.2 - resolution: "@react-native-masked-view/masked-view@npm:0.3.2" - peerDependencies: - react: ">=16" - react-native: ">=0.57" - checksum: 10/04ffbc01083aa563ca1e2d7ef6759e7b326b8129f5bb1aa5f3142348adab06d5e321a400cf70a5434324dfa906add383f8214640697c48c9e5311b30bfea03d9 - languageName: node - linkType: hard - "@react-native-tvos/virtualized-lists@npm:0.81.1-1": version: 0.81.1-1 resolution: "@react-native-tvos/virtualized-lists@npm:0.81.1-1" @@ -7072,6 +6939,13 @@ __metadata: languageName: node linkType: hard +"@react-native/gradle-plugin@patch:@react-native/gradle-plugin@npm%3A0.82.0#~/.yarn/patches/@react-native-gradle-plugin-npm-0.82.0-10aedc0588.patch": + version: 0.82.0 + resolution: "@react-native/gradle-plugin@patch:@react-native/gradle-plugin@npm%3A0.82.0#~/.yarn/patches/@react-native-gradle-plugin-npm-0.82.0-10aedc0588.patch::version=0.82.0&hash=60e1b9" + checksum: 10/493d986f2b23678dacd32a5e20a1c4b94e981b5d1abdf6fd35a9fb195b61900250dabb05d54e64af7e779c5b2e55cb96f431c16db0ba326ae8c0d43c5956616d + languageName: node + linkType: hard + "@react-native/js-polyfills@npm:0.79.6": version: 0.79.6 resolution: "@react-native/js-polyfills@npm:0.79.6" @@ -7275,137 +7149,6 @@ __metadata: languageName: node linkType: hard -"@react-navigation/bottom-tabs@npm:7.4.8": - version: 7.4.8 - resolution: "@react-navigation/bottom-tabs@npm:7.4.8" - dependencies: - "@react-navigation/elements": "npm:^2.6.5" - color: "npm:^4.2.3" - peerDependencies: - "@react-navigation/native": ^7.1.18 - react: ">= 18.2.0" - react-native: "*" - react-native-safe-area-context: ">= 4.0.0" - react-native-screens: ">= 4.0.0" - checksum: 10/6b1943cc6a7cd2be35c9e40aee60cfb04e0af50ed93c5d48be6e0c0ad723c486b2c3bf382d8038c4b7d2bfefe6d32037db903e29bdd4fcd5748458f8c8ca5dc2 - languageName: node - linkType: hard - -"@react-navigation/core@npm:^7.12.4": - version: 7.12.4 - resolution: "@react-navigation/core@npm:7.12.4" - dependencies: - "@react-navigation/routers": "npm:^7.5.1" - escape-string-regexp: "npm:^4.0.0" - nanoid: "npm:^3.3.11" - query-string: "npm:^7.1.3" - react-is: "npm:^19.1.0" - use-latest-callback: "npm:^0.2.4" - use-sync-external-store: "npm:^1.5.0" - peerDependencies: - react: ">= 18.2.0" - checksum: 10/6258d645be5d3b29293a7f82a7fbcfbefec93f974b332e7b1c510b4557f772955f227be50d020679d5ea3ba764a34ad3ff3ada531a4b85d9b4395ee02cdc3777 - languageName: node - linkType: hard - -"@react-navigation/drawer@npm:7.5.9": - version: 7.5.9 - resolution: "@react-navigation/drawer@npm:7.5.9" - dependencies: - "@react-navigation/elements": "npm:^2.6.5" - color: "npm:^4.2.3" - react-native-drawer-layout: "npm:^4.1.13" - use-latest-callback: "npm:^0.2.4" - peerDependencies: - "@react-navigation/native": ^7.1.18 - react: ">= 18.2.0" - react-native: "*" - react-native-gesture-handler: ">= 2.0.0" - react-native-reanimated: ">= 2.0.0" - react-native-safe-area-context: ">= 4.0.0" - react-native-screens: ">= 4.0.0" - checksum: 10/2c2a56b67baa762d3824578daf2cb8f0b811a109b493a1a480f85a85c9dd461f51dec9fbeed3649464f160075505a39a63f4ceb2c3358690788e1157b3fc6338 - languageName: node - linkType: hard - -"@react-navigation/elements@npm:^2.6.5": - version: 2.6.5 - resolution: "@react-navigation/elements@npm:2.6.5" - dependencies: - color: "npm:^4.2.3" - use-latest-callback: "npm:^0.2.4" - use-sync-external-store: "npm:^1.5.0" - peerDependencies: - "@react-native-masked-view/masked-view": ">= 0.2.0" - "@react-navigation/native": ^7.1.18 - react: ">= 18.2.0" - react-native: "*" - react-native-safe-area-context: ">= 4.0.0" - peerDependenciesMeta: - "@react-native-masked-view/masked-view": - optional: true - checksum: 10/b939f1dc1981c12379cea7ee26348e29bff94de6f29fefe74e8f1d311662d2235e6d87322c5e27e10a59648b88fa5648cb64c646daf65e94dd2664f060408ed2 - languageName: node - linkType: hard - -"@react-navigation/native-stack@npm:7.3.27": - version: 7.3.27 - resolution: "@react-navigation/native-stack@npm:7.3.27" - dependencies: - "@react-navigation/elements": "npm:^2.6.5" - warn-once: "npm:^0.1.1" - peerDependencies: - "@react-navigation/native": ^7.1.18 - react: ">= 18.2.0" - react-native: "*" - react-native-safe-area-context: ">= 4.0.0" - react-native-screens: ">= 4.0.0" - checksum: 10/89f13700464d8938210471f4c9c4599e0070e7159b0659aef2f78f328684f73f00021e3bccc3b86f6bd83a26f7e91512292dab1e433409b0143bbc80f2f58689 - languageName: node - linkType: hard - -"@react-navigation/native@npm:7.1.18": - version: 7.1.18 - resolution: "@react-navigation/native@npm:7.1.18" - dependencies: - "@react-navigation/core": "npm:^7.12.4" - escape-string-regexp: "npm:^4.0.0" - fast-deep-equal: "npm:^3.1.3" - nanoid: "npm:^3.3.11" - use-latest-callback: "npm:^0.2.4" - peerDependencies: - react: ">= 18.2.0" - react-native: "*" - checksum: 10/b867e9c5164943cd22a3d39d563dd8986b7f012ea9dac6b2df0b0321c42b2c00a1ab3692a372fa31c77a5335f3a78cf6967ee7186fe5322237f8f95035f1f0c5 - languageName: node - linkType: hard - -"@react-navigation/routers@npm:^7.5.1": - version: 7.5.1 - resolution: "@react-navigation/routers@npm:7.5.1" - dependencies: - nanoid: "npm:^3.3.11" - checksum: 10/b2f41b084d9ff69ac934e798fabca149a7d2cfc6ca1899d9ffbb68f8378c02277752e68783c264ea5068be9c8738d0d5112abb177c00c0365cfd2a133d560a8c - languageName: node - linkType: hard - -"@react-navigation/stack@npm:7.4.9": - version: 7.4.9 - resolution: "@react-navigation/stack@npm:7.4.9" - dependencies: - "@react-navigation/elements": "npm:^2.6.5" - color: "npm:^4.2.3" - peerDependencies: - "@react-navigation/native": ^7.1.18 - react: ">= 18.2.0" - react-native: "*" - react-native-gesture-handler: ">= 2.0.0" - react-native-safe-area-context: ">= 4.0.0" - react-native-screens: ">= 4.0.0" - checksum: 10/425441769318cd2d1b5354b24aed5c557d97b52e7305e6c3a55186cc7b3958a85cddeee925b9766026a7a66fc02b1d650fa26619b0edf6d63feef94a923b2be2 - languageName: node - linkType: hard - "@resvg/resvg-wasm@npm:2.4.0": version: 2.4.0 resolution: "@resvg/resvg-wasm@npm:2.4.0" @@ -12700,27 +12443,13 @@ __metadata: "@babel/core": "npm:7.28.4" "@babel/preset-env": "npm:7.28.3" "@babel/runtime": "npm:7.28.4" - "@fortawesome/fontawesome-svg-core": "npm:6.5.2" - "@fortawesome/free-solid-svg-icons": "npm:6.5.2" - "@fortawesome/react-native-fontawesome": "npm:0.3.2" - "@gorhom/bottom-sheet": "patch:@gorhom/bottom-sheet@npm%3A5.2.6#~/.yarn/patches/@gorhom-bottom-sheet-npm-5.2.6-c24dba2629.patch" - "@gorhom/portal": "npm:1.0.14" - "@react-native-async-storage/async-storage": "npm:2.2.0" - "@react-native-clipboard/clipboard": "npm:1.16.3" "@react-native-community/cli": "npm:20.0.0" "@react-native-community/cli-platform-android": "npm:20.0.0" "@react-native-community/cli-platform-ios": "npm:20.0.0" - "@react-native-masked-view/masked-view": "npm:0.3.2" "@react-native/babel-preset": "npm:0.82.0" "@react-native/eslint-config": "npm:0.82.0" "@react-native/metro-config": "npm:0.82.0" "@react-native/typescript-config": "npm:0.82.0" - "@react-navigation/bottom-tabs": "npm:7.4.8" - "@react-navigation/drawer": "npm:7.5.9" - "@react-navigation/native": "npm:7.1.18" - "@react-navigation/native-stack": "npm:7.3.27" - "@react-navigation/stack": "npm:7.4.9" - "@shopify/flash-list": "npm:2.1.0" "@tsconfig/react-native": "npm:3.0.0" "@types/d3-shape": "npm:3.1.7" "@types/jest": "npm:30.0.0" @@ -12735,14 +12464,7 @@ __metadata: react: "npm:19.1.1" react-dom: "npm:19.1.1" react-native: "npm:0.82.0" - react-native-gesture-handler: "npm:2.28.0" - react-native-mmkv: "npm:4.0.0" - react-native-nitro-modules: "npm:0.31.9" - react-native-pager-view: "npm:7.0.0" react-native-reanimated: "workspace:*" - react-native-safe-area-context: "npm:5.6.1" - react-native-screens: "npm:4.16.0" - react-native-svg: "npm:15.14.0" react-native-worklets: "workspace:*" react-strict-dom: "npm:0.0.54" react-test-renderer: "npm:19.1.1" @@ -13980,13 +13702,6 @@ __metadata: languageName: node linkType: hard -"decode-uri-component@npm:^0.2.2": - version: 0.2.2 - resolution: "decode-uri-component@npm:0.2.2" - checksum: 10/17a0e5fa400bf9ea84432226e252aa7b5e72793e16bf80b907c99b46a799aeacc139ec20ea57121e50c7bd875a1a4365928f884e92abf02e21a5a13790a0f33e - languageName: node - linkType: hard - "decompress-response@npm:^6.0.0": version: 6.0.0 resolution: "decompress-response@npm:6.0.0" @@ -16651,13 +16366,6 @@ __metadata: languageName: node linkType: hard -"filter-obj@npm:^1.1.0": - version: 1.1.0 - resolution: "filter-obj@npm:1.1.0" - checksum: 10/9d681939eec2b4b129cb4f307b7e93d954a0657421d4e5357d86093b26d3f4f570909ed43717dcfd62428b3cf8cddd9841b35f9d40d12ac62cfabaa677942593 - languageName: node - linkType: hard - "finalhandler@npm:1.1.2": version: 1.1.2 resolution: "finalhandler@npm:1.1.2" @@ -18156,13 +17864,6 @@ __metadata: languageName: node linkType: hard -"humps@npm:^2.0.1": - version: 2.0.1 - resolution: "humps@npm:2.0.1" - checksum: 10/16e63cba9659c54cdc5d55bc5f50033939e959cfb6a65d2e9aa36a7ac882e70c66fdb5b0cb28fb81a204681a28cc1051eecbed7b70d4ede2435ab13ebaa8ac2d - languageName: node - linkType: hard - "husky@npm:9.1.7": version: 9.1.7 resolution: "husky@npm:9.1.7" @@ -18892,13 +18593,6 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: 10/cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - "is-plain-obj@npm:^3.0.0": version: 3.0.0 resolution: "is-plain-obj@npm:3.0.0" @@ -21456,15 +21150,6 @@ __metadata: languageName: node linkType: hard -"merge-options@npm:^3.0.4": - version: 3.0.4 - resolution: "merge-options@npm:3.0.4" - dependencies: - is-plain-obj: "npm:^2.1.0" - checksum: 10/d86ddb3dd6e85d558dbf25dc944f3527b6bacb944db3fdda6e84a3f59c4e4b85231095f58b835758b9a57708342dee0f8de0dffa352974a48221487fe9f4584f - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -23926,7 +23611,7 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.1, nanoid@npm:^3.3.11, nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": +"nanoid@npm:^3.3.11, nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": version: 3.3.11 resolution: "nanoid@npm:3.3.11" bin: @@ -26541,18 +26226,6 @@ __metadata: languageName: node linkType: hard -"query-string@npm:^7.1.3": - version: 7.1.3 - resolution: "query-string@npm:7.1.3" - dependencies: - decode-uri-component: "npm:^0.2.2" - filter-obj: "npm:^1.1.0" - split-on-first: "npm:^1.0.0" - strict-uri-encode: "npm:^2.0.0" - checksum: 10/3b6f2c167e76ca4094c5f1a9eb276efcbb9ebfd8b1a28c413f3c4e4e7d6428c8187bf46c8cbc9f92a229369dd0015de10a7fd712c8cee98d5d84c2ac6140357e - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -26719,15 +26392,6 @@ __metadata: languageName: node linkType: hard -"react-freeze@npm:^1.0.0": - version: 1.0.4 - resolution: "react-freeze@npm:1.0.4" - peerDependencies: - react: ">=17.0.0" - checksum: 10/1dc433319341ec3dca84513c4197ef4f4c8232604d35f83546a8abfb41d9591f934b66aaaa4dc3dc8b1b65f488705a2a48ae6c1d9792660119a9cdedeab4ca8f - languageName: node - linkType: hard - "react-helmet-async@npm:@slorber/react-helmet-async@1.3.0": version: 1.3.0 resolution: "@slorber/react-helmet-async@npm:1.3.0" @@ -26848,20 +26512,6 @@ __metadata: languageName: node linkType: hard -"react-native-drawer-layout@npm:^4.1.13": - version: 4.1.13 - resolution: "react-native-drawer-layout@npm:4.1.13" - dependencies: - use-latest-callback: "npm:^0.2.4" - peerDependencies: - react: ">= 18.2.0" - react-native: "*" - react-native-gesture-handler: ">= 2.0.0" - react-native-reanimated: ">= 2.0.0" - checksum: 10/c008acd68deee5599e5b8795c8995bfd5fcc3631604cd195003fb770b68e9b4f676fb718a51a31e29036e8e6e7a5bcb989df0a2360a4adb83956fdbb7ad8a01c - languageName: node - linkType: hard - "react-native-gesture-handler@npm:2.28.0": version: 2.28.0 resolution: "react-native-gesture-handler@npm:2.28.0" @@ -26883,7 +26533,7 @@ __metadata: languageName: node linkType: hard -"react-native-is-edge-to-edge@npm:1.2.1, react-native-is-edge-to-edge@npm:^1.2.1": +"react-native-is-edge-to-edge@npm:1.2.1": version: 1.2.1 resolution: "react-native-is-edge-to-edge@npm:1.2.1" peerDependencies: @@ -27003,17 +26653,6 @@ __metadata: languageName: node linkType: hard -"react-native-mmkv@npm:4.0.0": - version: 4.0.0 - resolution: "react-native-mmkv@npm:4.0.0" - peerDependencies: - react: "*" - react-native: "*" - react-native-nitro-modules: "*" - checksum: 10/5247b3e19017c4059c997ac79c7e89d33a49c00e2255fb4c5ef8e993fea0ee3aed0b48be9576d154bd098c22099bfd93a70fb071a6c9d865955c97f0aa1a8759 - languageName: node - linkType: hard - "react-native-monorepo-config@npm:^0.1.8": version: 0.1.10 resolution: "react-native-monorepo-config@npm:0.1.10" @@ -27024,26 +26663,6 @@ __metadata: languageName: node linkType: hard -"react-native-nitro-modules@npm:0.31.9": - version: 0.31.9 - resolution: "react-native-nitro-modules@npm:0.31.9" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/c102391695bae908c9c9eff7475b3fe7204de9595745ded9b7ccff887feba4f752cba54ca87056d1e09397a7d2b10c0a8ac11f0b212680e47af8175b4817fb96 - languageName: node - linkType: hard - -"react-native-pager-view@npm:7.0.0": - version: 7.0.0 - resolution: "react-native-pager-view@npm:7.0.0" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/652c12ebc9b473d81df99111d2dec0139585742b903dff916a6726156295af27d4bf464b9dcc22c133375dfc253a0653dba9c3cb705c892ba0beb7de8479792e - languageName: node - linkType: hard - "react-native-reanimated-monorepo@workspace:.": version: 0.0.0-use.local resolution: "react-native-reanimated-monorepo@workspace:." @@ -27146,30 +26765,6 @@ __metadata: languageName: unknown linkType: soft -"react-native-safe-area-context@npm:5.6.1": - version: 5.6.1 - resolution: "react-native-safe-area-context@npm:5.6.1" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/2fc93cf46a6cbad28e5850bef009905c6db44066fb7e6f7bbce52c2ae4b0467c6718e4f572a42f8387c6b37f6d61ebe79980d0c2b5899e23dc19482a7db8417b - languageName: node - linkType: hard - -"react-native-screens@npm:4.16.0": - version: 4.16.0 - resolution: "react-native-screens@npm:4.16.0" - dependencies: - react-freeze: "npm:^1.0.0" - react-native-is-edge-to-edge: "npm:^1.2.1" - warn-once: "npm:^0.1.0" - peerDependencies: - react: "*" - react-native: "*" - checksum: 10/f055d37b3abf96f42c15d61645441995884ed69b2a6b35f63a21abeb147b9df7e084447d2a329a424ee3686d703c25817ea588d3be9e6ebc38e5c653ebe5e05b - languageName: node - linkType: hard - "react-native-svg@npm:15.14.0": version: 15.14.0 resolution: "react-native-svg@npm:15.14.0" @@ -29427,13 +29022,6 @@ __metadata: languageName: node linkType: hard -"split-on-first@npm:^1.0.0": - version: 1.1.0 - resolution: "split-on-first@npm:1.1.0" - checksum: 10/16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30 - languageName: node - linkType: hard - "split@npm:0.3": version: 0.3.3 resolution: "split@npm:0.3.3" @@ -29609,13 +29197,6 @@ __metadata: languageName: node linkType: hard -"strict-uri-encode@npm:^2.0.0": - version: 2.0.0 - resolution: "strict-uri-encode@npm:2.0.0" - checksum: 10/eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581 - languageName: node - linkType: hard - "string-argv@npm:^0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" @@ -31412,16 +30993,7 @@ __metadata: languageName: node linkType: hard -"use-latest-callback@npm:^0.2.4": - version: 0.2.6 - resolution: "use-latest-callback@npm:0.2.6" - peerDependencies: - react: ">=16.8" - checksum: 10/67a245bf91b23ef0d2d2c8a52845da62e006867bd9d93a99ca4d2f859101fcd54c7afd4f5a3b8bb5d24283f516e7e41bd8226250ee39affc33bd1cfd622a5cfb - languageName: node - linkType: hard - -"use-sync-external-store@npm:^1.0.0, use-sync-external-store@npm:^1.4.0, use-sync-external-store@npm:^1.5.0": +"use-sync-external-store@npm:^1.0.0, use-sync-external-store@npm:^1.4.0": version: 1.6.0 resolution: "use-sync-external-store@npm:1.6.0" peerDependencies: @@ -31741,7 +31313,7 @@ __metadata: languageName: node linkType: hard -"warn-once@npm:0.1.1, warn-once@npm:^0.1.0, warn-once@npm:^0.1.1": +"warn-once@npm:0.1.1": version: 0.1.1 resolution: "warn-once@npm:0.1.1" checksum: 10/e6a5a1f5a8dba7744399743d3cfb571db4c3947897875d4962a7c5b1bf2195ab4518c838cb4cea652e71729f21bba2e98dc75686f5fccde0fabbd894e2ed0c0d