diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a99cde0..4c0cda5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -11,19 +11,36 @@ This project is a monorepo managed using [Yarn workspaces](https://yarnpkg.com/f
- The library package in the root directory.
- An example app in the `example/` directory.
-To get started with the project, run `yarn` in the root directory to install the required dependencies for each package:
+To get started with the project, make sure you have the correct version of [Node.js](https://nodejs.org/) installed. See the [`.nvmrc`](./.nvmrc) file for the version used in this project.
+
+Run `yarn` in the root directory to install the required dependencies for each package:
```sh
yarn
```
-> Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development.
+> Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development without manually migrating.
+
+This project uses Nitro Modules. If you're not familiar with how Nitro works, make sure to check the [Nitro Modules Docs](https://nitro.margelo.com/).
+
+You need to run [Nitrogen](https://nitro.margelo.com/docs/nitrogen) to generate the boilerplate code required for this project. The example app will not build without this step.
+
+Run **Nitrogen** in following cases:
+
+- When you make changes to any `*.nitro.ts` files.
+- When running the project for the first time (since the generated files are not committed to the repository).
+
+To invoke **Nitrogen**, use the following command:
+
+```sh
+yarn nitrogen
+```
The [example app](/example/) demonstrates usage of the library. You need to run it to test any changes you make.
It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example app. Changes to the library's JavaScript code will be reflected in the example app without a rebuild, but native code changes will require a rebuild of the example app.
-If you want to use Android Studio or XCode to edit the native code, you can open the `example/android` or `example/ios` directories respectively in those editors. To edit the Objective-C or Swift files, open `example/ios/TurboEncryptionExample.xcworkspace` in XCode and find the source files at `Pods > Development Pods > react-native-turbo-encryption`.
+If you want to use Android Studio or Xcode to edit the native code, you can open the `example/android` or `example/ios` directories respectively in those editors. To edit the Objective-C or Swift files, open `example/ios/TurboEncryptionExample.xcworkspace` in Xcode and find the source files at `Pods > Development Pods > react-native-turbo-encryption`.
To edit the Java or Kotlin files, open `example/android` in Android studio and find the source files at `react-native-turbo-encryption` under `Android`.
@@ -81,7 +98,7 @@ We follow the [conventional commits specification](https://www.conventionalcommi
- `fix`: bug fixes, e.g. fix crash due to deprecated method.
- `feat`: new features, e.g. add new method to the module.
- `refactor`: code refactor, e.g. migrate from class components to hooks.
-- `docs`: changes into documentation, e.g. add usage example for the module..
+- `docs`: changes into documentation, e.g. add usage example for the module.
- `test`: adding or updating tests, e.g. add integration tests using detox.
- `chore`: tooling changes, e.g. change CI config.
diff --git a/LICENSE b/LICENSE
index eafb103..2dcee3f 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2024 Ritesh Shukla
+Copyright (c) 2025 riteshshukla04
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
diff --git a/README.md b/README.md
index da2417d..e546274 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
✨ **Written 100% in C++** with ⚡ blazing-fast performance and **direct bindings** to JavaScript! 🚀
-**Requires new arch to be set to true**
+**react-native-turbo-encryption is now a [Nitro Module](https://github.com/mrousavy/nitro) 🚀**
## 💻 Features
@@ -19,7 +19,7 @@
## Installation
```sh
-npm install react-native-turbo-encryption
+yarn add react-native-turbo-encryption react-native-nitro-modules
```
## Usage
@@ -94,80 +94,3 @@ const decryptedResultAsync = await decrypt256Async(encryptedResultAsync, key); /
| ----------------------------- | ------------------------ |
| react-native-turbo-encryption | _5 ms_ |
| react-native-aes-crypto | _30 ms_ |
-
-Note: react-native-aes-crypto has better security features than this. Prefer using that if security is your top priority.
-
-## 🔧 Technical Details
-
-This module uses the [tinyaes](https://github.com/kokke/tiny-AES-C) C library as a submodule for AES encryption. The library has been modified to support both AES-128 and AES-256 encryption modes.
-
-### Submodule Modifications
-
-The `tinyaes` submodule has been modified to enable AES-256 support:
-
-- Enabled `AES256` macro in `cpp/tinyaes/aes.h`
-- Configured key sizes to support both AES-128 and AES-256
-- Added proper key handling for both encryption modes
-
-**Note**: Since the submodule code has been modified, you may need to handle submodule updates carefully. Consider forking the tinyaes repository if you need to maintain these changes long-term.
-
-### Handling Submodule Changes
-
-Since we've modified the `tinyaes` submodule code, here are the recommended approaches:
-
-1. **Fork the tinyaes repository** and point the submodule to your fork
-2. **Document the changes** in this README (as done above)
-3. **Create a patch file** for the modifications ✅ (done)
-4. **Consider contributing** the AES-256 support back to the original tinyaes project
-
-**Recommended workflow for future updates:**
-
-1. **Fork the tinyaes repository** on GitHub
-2. **Apply the patch** to your fork
-3. **Update the submodule** to point to your fork
-4. **Test thoroughly** to ensure compatibility
-
-This way, you maintain control over the modifications while still being able to receive updates from the original repository.
-
-To track these changes, you can:
-
-```bash
-# Check the current submodule status
-git submodule status
-
-# See what changes have been made to the submodule
-cd cpp/tinyaes
-git status
-git diff
-
-# Commit the submodule changes
-git add .
-git commit -m "Enable AES-256 support"
-```
-
-### Patch File
-
-A patch file has been created (`aes256-support.patch`) that contains the exact changes made to the tinyaes submodule. This can be used to:
-
-- Apply the same changes to future versions of the submodule
-- Share the modifications with others
-- Document the exact changes made
-
-To apply this patch to a fresh submodule:
-
-```bash
-cd cpp/tinyaes
-git apply ../../aes256-support.patch
-```
-
-### Current Submodule Status
-
-The tinyaes submodule is currently at commit `3dec066` with the AES-256 support changes committed. The submodule is in a detached HEAD state, which is normal for submodules.
-
-**Current submodule commit**: `3dec066e9b9c21aa66d98563b6247d28971d2cc4`
-**Changes**: Enabled AES-256 support and configured key sizes for dual AES-128/AES-256 compatibility
-
-### Screenshot of Performance Results:
-
-
-
diff --git a/TurboEncryption.podspec b/TurboEncryption.podspec
new file mode 100644
index 0000000..aa1d4d4
--- /dev/null
+++ b/TurboEncryption.podspec
@@ -0,0 +1,37 @@
+require "json"
+
+package = JSON.parse(File.read(File.join(__dir__, "package.json")))
+
+Pod::Spec.new do |s|
+ s.name = "TurboEncryption"
+ s.version = package["version"]
+ s.summary = package["description"]
+ s.homepage = package["homepage"]
+ s.license = package["license"]
+ s.authors = package["author"]
+
+ s.platforms = { :ios => min_ios_version_supported }
+ s.source = { :git => "https://github.com/riteshshukla04/react-native-turbo-encryption.git", :tag => "#{s.version}" }
+
+
+ s.source_files = [
+ "ios/**/*.{swift}",
+ "ios/**/*.{m,mm}",
+ "cpp/**/*.{hpp,cpp,h,c}",
+ ]
+
+ s.dependency 'React-jsi'
+ s.dependency 'React-callinvoker'
+
+ s.pod_target_xcconfig = {
+ "HEADER_SEARCH_PATHS" => ["${PODS_ROOT}/RCT-Folly"],
+ "GCC_PREPROCESSOR_DEFINITIONS" => "$(inherited) FOLLY_NO_CONFIG FOLLY_CFG_NO_COROUTINES",
+ "OTHER_CPLUSPLUSFLAGS" => "$(inherited) -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1"
+ }
+
+
+ load 'nitrogen/generated/ios/TurboEncryption+autolinking.rb'
+ add_nitrogen_files(s)
+
+ install_modules_dependencies(s)
+end
diff --git a/aes256-support.patch b/aes256-support.patch
index eb14946..301e230 100644
--- a/aes256-support.patch
+++ b/aes256-support.patch
@@ -40,4 +40,3 @@ index b29b668..93565c1 100644
{
--
2.39.5 (Apple Git-154)
-
diff --git a/android/CMakeLists.txt b/android/CMakeLists.txt
index 359e5dc..c0e1c39 100644
--- a/android/CMakeLists.txt
+++ b/android/CMakeLists.txt
@@ -1,46 +1,49 @@
-cmake_minimum_required(VERSION 3.4.1)
-project(TurboEncryption)
+project(turboencryption)
+cmake_minimum_required(VERSION 3.9.0)
-
-
-set (CMAKE_VERBOSE_MAKEFILE ON)
+set(PACKAGE_NAME turboencryption)
+set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 20)
-
-add_library(react-native-turbo-encryption
- STATIC
- ../cpp/NativeTurboEncryptionTurboModule.cpp
- ../cpp/tinyaes/aes.c
- ../cpp/tinyaes/aes.h
- ../cpp/tinyaes/aes.hpp
- ../cpp/AESWrapper.cpp
- ../cpp/AESWrapper.hpp
+# Find all C++ files (shared and platform specifics)
+file(GLOB_RECURSE shared_files RELATIVE ${CMAKE_SOURCE_DIR}
+ "../cpp/**.cpp"
)
-
-target_include_directories(react-native-turbo-encryption
- PUBLIC
- ../cpp
+file(GLOB_RECURSE android_files RELATIVE ${CMAKE_SOURCE_DIR}
+ "src/main/cpp/**.cpp"
)
-
-target_include_directories(react-native-turbo-encryption
- PUBLIC
- ../cpp/tinyaes
+# Define C++ library and add all sources
+add_library(${PACKAGE_NAME} SHARED
+ src/main/cpp/cpp-adapter.cpp
+ ../cpp/TurboEncryption.cpp
+ ../cpp/tinyaes/aes.c
+ ../cpp/tinyaes/aes.h
+ ../cpp/tinyaes/aes.hpp
+ ../cpp/AESWrapper.cpp
+ ../cpp/AESWrapper.hpp
)
-find_library( # Sets the name of the path variable.
- log-lib
+include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/turboencryption+autolinking.cmake)
- # Specifies the name of the NDK library that
- # you want CMake to locate.
- log )
+target_include_directories(${PACKAGE_NAME}
+ PUBLIC
+ ../cpp/tinyaes
+)
+# Set up local includes
+include_directories(
+ "src/main/cpp"
+ "../cpp"
+)
+find_library(LOG_LIB log)
-target_link_libraries(react-native-turbo-encryption
- jsi
- ${log-lib}
- react_codegen_RNTurboEncryptionSpec
+# Link all libraries together
+target_link_libraries(
+ ${PACKAGE_NAME}
+ ${LOG_LIB}
+ android # <-- Android core
)
diff --git a/android/build.gradle b/android/build.gradle
index d0cfa94..8323e74 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,6 +1,7 @@
buildscript {
- // Buildscript is evaluated before everything else so we can't use getExtOrDefault
- def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["TurboEncryption_kotlinVersion"]
+ ext.getExtOrDefault = {name ->
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['TurboEncryption_' + name]
+ }
repositories {
google()
@@ -8,9 +9,9 @@ buildscript {
}
dependencies {
- classpath "com.android.tools.build:gradle:7.2.1"
+ classpath "com.android.tools.build:gradle:8.7.2"
// noinspection DifferentKotlinGradleVersion
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
}
}
@@ -19,57 +20,39 @@ def reactNativeArchitectures() {
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}
-def isNewArchitectureEnabled() {
- return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
-}
-
apply plugin: "com.android.library"
apply plugin: "kotlin-android"
+apply from: '../nitrogen/generated/android/turboencryption+autolinking.gradle'
-if (isNewArchitectureEnabled()) {
- apply plugin: "com.facebook.react"
-}
-
-def getExtOrDefault(name) {
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["TurboEncryption_" + name]
-}
+apply plugin: "com.facebook.react"
def getExtOrIntegerDefault(name) {
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["TurboEncryption_" + name]).toInteger()
}
-def supportsNamespace() {
- def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
- def major = parsed[0].toInteger()
- def minor = parsed[1].toInteger()
-
- // Namespace support was added in 7.3.0
- return (major == 7 && minor >= 3) || major >= 8
-}
-
android {
- if (supportsNamespace()) {
- namespace "com.turboencryption"
-
- sourceSets {
- main {
- manifest.srcFile "src/main/AndroidManifestNew.xml"
- }
- }
- }
+ namespace "com.margelo.nitro.turboencryption"
- ndkVersion getExtOrDefault("ndkVersion")
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
defaultConfig {
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
- buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
externalNativeBuild {
cmake {
- cppFlags "-O2 -frtti -fexceptions -Wall -fstack-protector-all -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
+ cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
+ arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
abiFilters (*reactNativeArchitectures())
+
+ buildTypes {
+ debug {
+ cppFlags "-O1 -g"
+ }
+ release {
+ cppFlags "-O2"
+ }
+ }
}
}
}
@@ -80,8 +63,30 @@ android {
}
}
+ packagingOptions {
+ excludes = [
+ "META-INF",
+ "META-INF/**",
+ "**/libc++_shared.so",
+ "**/libfbjni.so",
+ "**/libjsi.so",
+ "**/libfolly_json.so",
+ "**/libfolly_runtime.so",
+ "**/libglog.so",
+ "**/libhermes.so",
+ "**/libhermes-executor-debug.so",
+ "**/libhermes_executor.so",
+ "**/libreactnative.so",
+ "**/libreactnativejni.so",
+ "**/libturbomodulejsijni.so",
+ "**/libreact_nativemodule_core.so",
+ "**/libjscexecutor.so"
+ ]
+ }
+
buildFeatures {
buildConfig true
+ prefab true
}
buildTypes {
@@ -101,12 +106,10 @@ android {
sourceSets {
main {
- if (isNewArchitectureEnabled()) {
- java.srcDirs += [
- "generated/java",
- "generated/jni"
- ]
- }
+ java.srcDirs += [
+ "generated/java",
+ "generated/jni"
+ ]
}
}
}
@@ -119,17 +122,7 @@ repositories {
def kotlin_version = getExtOrDefault("kotlinVersion")
dependencies {
- // For < 0.71, this will be from the local maven repo
- // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
- //noinspection GradleDynamicVersion
- implementation "com.facebook.react:react-native:+"
+ implementation "com.facebook.react:react-android"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
-}
-
-if (isNewArchitectureEnabled()) {
- react {
- jsRootDir = file("../src/")
- libraryName = "TurboEncryption"
- codegenJavaPackageName = "com.turboencryption"
- }
+ implementation project(":react-native-nitro-modules")
}
diff --git a/android/gradle.properties b/android/gradle.properties
index 6c0396a..2d5b0be 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
-TurboEncryption_kotlinVersion=1.7.0
-TurboEncryption_minSdkVersion=21
-TurboEncryption_targetSdkVersion=31
-TurboEncryption_compileSdkVersion=31
-TurboEncryption_ndkversion=21.4.7075529
+TurboEncryption_kotlinVersion=2.0.21
+TurboEncryption_minSdkVersion=24
+TurboEncryption_targetSdkVersion=34
+TurboEncryption_compileSdkVersion=35
+TurboEncryption_ndkVersion=27.1.12297006
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a2f47b6
--- /dev/null
+++ b/android/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/android/src/main/cpp/cpp-adapter.cpp b/android/src/main/cpp/cpp-adapter.cpp
new file mode 100644
index 0000000..4b1b25a
--- /dev/null
+++ b/android/src/main/cpp/cpp-adapter.cpp
@@ -0,0 +1,6 @@
+#include
+#include "turboencryptionOnLoad.hpp"
+
+JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
+ return margelo::nitro::turboencryption::initialize(vm);
+}
diff --git a/android/src/main/java/com/margelo/nitro/turboencryption/TurboEncryptionPackage.kt b/android/src/main/java/com/margelo/nitro/turboencryption/TurboEncryptionPackage.kt
new file mode 100644
index 0000000..b4f0d60
--- /dev/null
+++ b/android/src/main/java/com/margelo/nitro/turboencryption/TurboEncryptionPackage.kt
@@ -0,0 +1,22 @@
+package com.margelo.nitro.turboencryption
+
+import com.facebook.react.TurboReactPackage
+import com.facebook.react.bridge.NativeModule
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.module.model.ReactModuleInfoProvider
+
+class TurboEncryptionPackage : TurboReactPackage() {
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
+ return null
+ }
+
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
+ return ReactModuleInfoProvider { HashMap() }
+ }
+
+ companion object {
+ init {
+ System.loadLibrary("turboencryption")
+ }
+ }
+}
diff --git a/android/src/main/java/com/turboencryption/TurboEncryptionPackage.kt b/android/src/main/java/com/turboencryption/TurboEncryptionPackage.kt
deleted file mode 100644
index 370601b..0000000
--- a/android/src/main/java/com/turboencryption/TurboEncryptionPackage.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.turboencryption
-
-
-
-import com.facebook.react.TurboReactPackage
-import com.facebook.react.bridge.NativeModule
-import com.facebook.react.bridge.ReactApplicationContext
-import com.facebook.react.module.model.ReactModuleInfo
-import com.facebook.react.module.model.ReactModuleInfoProvider
-import java.util.Collections
-import java.util.HashMap
-
-
-// Goldu Doggo is coder
-class GolduDoggoEncryptionCppPackage : TurboReactPackage() {
- override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
- return null;
- }
-
- override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
- return ReactModuleInfoProvider {
- val moduleInfos: MutableMap = HashMap()
- moduleInfos
- }
- }
-}
diff --git a/assets/aes.png b/assets/aes.png
deleted file mode 100644
index 685d28b..0000000
Binary files a/assets/aes.png and /dev/null differ
diff --git a/assets/turbo.png b/assets/turbo.png
deleted file mode 100644
index d018048..0000000
Binary files a/assets/turbo.png and /dev/null differ
diff --git a/babel.config.js b/babel.config.js
index 29f3a60..0c05fd6 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,5 +1,12 @@
module.exports = {
- presets: [
- ['module:react-native-builder-bob/babel-preset', { modules: 'commonjs' }],
+ overrides: [
+ {
+ exclude: /\/node_modules\//,
+ presets: ['module:react-native-builder-bob/babel-preset'],
+ },
+ {
+ include: /\/node_modules\//,
+ presets: ['module:@react-native/babel-preset'],
+ },
],
};
diff --git a/cpp/AESWrapper.cpp b/cpp/AESWrapper.cpp
index 33c7462..dc55965 100644
--- a/cpp/AESWrapper.cpp
+++ b/cpp/AESWrapper.cpp
@@ -1,3 +1,15 @@
+//
+// TurboEncryption.cpp
+// TurboEncryption
+//
+// Created by Ritesh Shukla on 11/10/25.
+//
+
+
+
+
+
+
#include "AESWrapper.hpp"
#include
#include
@@ -126,4 +138,4 @@ std::string decryptString(const std::string &encryptedHex, const std::string &ke
// Remove padding and return plaintext
return removePadding(decryptedData);
-}
+}
\ No newline at end of file
diff --git a/cpp/AESWrapper.hpp b/cpp/AESWrapper.hpp
index c580f34..fee9865 100644
--- a/cpp/AESWrapper.hpp
+++ b/cpp/AESWrapper.hpp
@@ -1,3 +1,13 @@
+//
+// TurboEncryption.cpp
+// TurboEncryption
+//
+// Created by Ritesh Shukla on 11/10/25.
+//
+
+
+
+
#ifndef AES_WRAPPER_HPP
#define AES_WRAPPER_HPP
@@ -22,4 +32,4 @@ std::string encryptString(const std::string &plainText, const std::string &key,
// Decrypt a hex string with a given key and return the result as plaintext
std::string decryptString(const std::string &encryptedHex, const std::string &key, AESType aesType = AESType::AES_128);
-#endif // AES_WRAPPER_HPP
+#endif // AES_WRAPPER_HPP
\ No newline at end of file
diff --git a/cpp/NativeTurboEncryptionTurboModule.cpp b/cpp/NativeTurboEncryptionTurboModule.cpp
deleted file mode 100644
index 49cc021..0000000
--- a/cpp/NativeTurboEncryptionTurboModule.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-#include "NativeTurboEncryptionTurboModule.h"
-#include "AESWrapper.hpp"
-#include
-
-namespace facebook::react
-{
-NativeTurboEncryptionTurboModule::NativeTurboEncryptionTurboModule(std::shared_ptr jsinvoker) : NativeTurboEncryptionCxxSpec(std::move(jsinvoker)) {}
-
- std::string NativeTurboEncryptionTurboModule::encrypt(jsi::Runtime &rt, std::string plainText, std::string key){
- std::string encryptedText = encryptString(plainText, key, AESType::AES_128);
- return encryptedText;
- }
-
- std::string NativeTurboEncryptionTurboModule::decrypt(jsi::Runtime &rt, std::string encryptedText, std::string key){
- std::string decryptedText = decryptString(encryptedText, key, AESType::AES_128);
- return decryptedText;
- }
-
- jsi::Value NativeTurboEncryptionTurboModule::encryptAsync(jsi::Runtime &rt, std::string plainText, std::string key)
- {
- jsi::Function promiseConstructor = rt.global().getPropertyAsFunction(rt, "Promise");
-
- return promiseConstructor.callAsConstructor(rt,
- jsi::Function::createFromHostFunction(
- rt,
- jsi::PropNameID::forAscii(rt, "promiseArg"),
- 2,
- [plainText, key, jsInvoker = jsInvoker_](
- jsi::Runtime &runtime,
- const jsi::Value &thisValue,
- const jsi::Value *arguments,
- std::size_t count) -> jsi::Value
- {
- auto resolverValue = std::make_shared((arguments[0].asObject(runtime)));
-
- std::thread([plainText, key, resolverValue = std::move(resolverValue), jsInvoker, &runtime]()
- {
- std::string encryptedString = encryptString(plainText, key, AESType::AES_128);
- // Post back to JS thread
- jsInvoker->invokeAsync([resolverValue, encryptedString, &runtime]() {
- resolverValue->asObject(runtime).asFunction(runtime).call(runtime, encryptedString);
- }); })
- .detach();
- return jsi::Value::undefined();
- })
-
- );
- }
-
-
- jsi::Value NativeTurboEncryptionTurboModule::decryptAsync(jsi::Runtime &rt, std::string encryptedText, std::string key)
- {
- jsi::Function promiseConstructor = rt.global().getPropertyAsFunction(rt, "Promise");
-
- return promiseConstructor.callAsConstructor(rt,
- jsi::Function::createFromHostFunction(
- rt,
- jsi::PropNameID::forAscii(rt, "promiseArg"),
- 2,
- [encryptedText, key, jsInvoker = jsInvoker_](
- jsi::Runtime &runtime,
- const jsi::Value &thisValue,
- const jsi::Value *arguments,
- std::size_t count) -> jsi::Value
- {
- auto resolverValue = std::make_shared((arguments[0].asObject(runtime)));
-
- std::thread([encryptedText, key, resolverValue = std::move(resolverValue), jsInvoker, &runtime]()
- {
- std::string decryptedString = decryptString(encryptedText, key, AESType::AES_128);
- // Post back to JS thread
- jsInvoker->invokeAsync([resolverValue, decryptedString, &runtime]() {
- resolverValue->asObject(runtime).asFunction(runtime).call(runtime, decryptedString);
- }); })
- .detach();
- return jsi::Value::undefined();
- })
-
- );
- }
-
- // AES-256 specific methods
- std::string NativeTurboEncryptionTurboModule::encrypt256(jsi::Runtime &rt, std::string plainText, std::string key){
- std::string encryptedText = encryptString(plainText, key, AESType::AES_256);
- return encryptedText;
- }
-
- std::string NativeTurboEncryptionTurboModule::decrypt256(jsi::Runtime &rt, std::string encryptedText, std::string key){
- std::string decryptedText = decryptString(encryptedText, key, AESType::AES_256);
- return decryptedText;
- }
-
- jsi::Value NativeTurboEncryptionTurboModule::encrypt256Async(jsi::Runtime &rt, std::string plainText, std::string key)
- {
- jsi::Function promiseConstructor = rt.global().getPropertyAsFunction(rt, "Promise");
-
- return promiseConstructor.callAsConstructor(rt,
- jsi::Function::createFromHostFunction(
- rt,
- jsi::PropNameID::forAscii(rt, "promiseArg"),
- 2,
- [plainText, key, jsInvoker = jsInvoker_](
- jsi::Runtime &runtime,
- const jsi::Value &thisValue,
- const jsi::Value *arguments,
- std::size_t count) -> jsi::Value
- {
- auto resolverValue = std::make_shared((arguments[0].asObject(runtime)));
-
- std::thread([plainText, key, resolverValue = std::move(resolverValue), jsInvoker, &runtime]()
- {
- std::string encryptedString = encryptString(plainText, key, AESType::AES_256);
- // Post back to JS thread
- jsInvoker->invokeAsync([resolverValue, encryptedString, &runtime]() {
- resolverValue->asObject(runtime).asFunction(runtime).call(runtime, encryptedString);
- }); })
- .detach();
- return jsi::Value::undefined();
- })
-
- );
- }
-
- jsi::Value NativeTurboEncryptionTurboModule::decrypt256Async(jsi::Runtime &rt, std::string encryptedText, std::string key)
- {
- jsi::Function promiseConstructor = rt.global().getPropertyAsFunction(rt, "Promise");
-
- return promiseConstructor.callAsConstructor(rt,
- jsi::Function::createFromHostFunction(
- rt,
- jsi::PropNameID::forAscii(rt, "promiseArg"),
- 2,
- [encryptedText, key, jsInvoker = jsInvoker_](
- jsi::Runtime &runtime,
- const jsi::Value &thisValue,
- const jsi::Value *arguments,
- std::size_t count) -> jsi::Value
- {
- auto resolverValue = std::make_shared((arguments[0].asObject(runtime)));
-
- std::thread([encryptedText, key, resolverValue = std::move(resolverValue), jsInvoker, &runtime]()
- {
- std::string decryptedString = decryptString(encryptedText, key, AESType::AES_256);
- // Post back to JS thread
- jsInvoker->invokeAsync([resolverValue, decryptedString, &runtime]() {
- resolverValue->asObject(runtime).asFunction(runtime).call(runtime, decryptedString);
- }); })
- .detach();
- return jsi::Value::undefined();
- })
-
- );
- }
-
-
-
-}
diff --git a/cpp/NativeTurboEncryptionTurboModule.h b/cpp/NativeTurboEncryptionTurboModule.h
deleted file mode 100644
index f0a9793..0000000
--- a/cpp/NativeTurboEncryptionTurboModule.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma once
-
-#if __has_include()
-#include
-#elif __has_include("RNTurboEncryptionSpecJSI.h")
-#include "RNTurboEncryptionSpecJSI.h"
-#endif
-
-
-
-
-#include
-#include
-
-
-
-
-
-
-
-
-namespace facebook::react {
-class NativeTurboEncryptionTurboModule: public NativeTurboEncryptionCxxSpec {
-public:
- NativeTurboEncryptionTurboModule(std::shared_ptr jsInvoker);
-
- std::string encrypt(jsi::Runtime &rt, std::string plainText, std::string key);
- std::string decrypt(jsi::Runtime &rt, std::string encryptedText, std::string key);
- jsi::Value encryptAsync(jsi::Runtime &rt, std::string plainText, std::string key);
- jsi::Value decryptAsync(jsi::Runtime &rt, std::string encryptedText, std::string key);
-
- // AES-256 specific methods
- std::string encrypt256(jsi::Runtime &rt, std::string plainText, std::string key);
- std::string decrypt256(jsi::Runtime &rt, std::string encryptedText, std::string key);
- jsi::Value encrypt256Async(jsi::Runtime &rt, std::string plainText, std::string key);
- jsi::Value decrypt256Async(jsi::Runtime &rt, std::string encryptedText, std::string key);
- };
-}
diff --git a/cpp/TurboEncryption.cpp b/cpp/TurboEncryption.cpp
new file mode 100644
index 0000000..ae8b951
--- /dev/null
+++ b/cpp/TurboEncryption.cpp
@@ -0,0 +1,57 @@
+//
+// TurboEncryption.cpp
+// TurboEncryption
+//
+// Created by Ritesh Shukla on 11/10/25.
+//
+
+#include "TurboEncryption.hpp"
+#include "AESWrapper.hpp"
+
+namespace margelo::nitro::turboencryption {
+
+ std::string TurboEncryption::encrypt(const std::string &plainText, const std::string &key){
+ return encryptString(plainText, key,AESType::AES_128);
+ }
+
+ std::string TurboEncryption::decrypt(const std::string &plainText, const std::string &key){
+ return decryptString(plainText, key,AESType::AES_128);
+ }
+
+
+
+ std::shared_ptr> TurboEncryption::encryptAsync(const std::string& plainText, const std::string& key){
+ return Promise::async([plainText,key](){
+ return encryptString(plainText, key,AESType::AES_128);
+ });
+ }
+
+ std::shared_ptr> TurboEncryption::decryptAsync(const std::string& plainText, const std::string& key){
+ return Promise::async([plainText,key](){
+ return decryptString(plainText, key,AESType::AES_128);
+ });
+ }
+
+
+ std::string TurboEncryption::encrypt256(const std::string &plainText, const std::string &key){
+ return encryptString(plainText, key,AESType::AES_256);
+ }
+
+ std::string TurboEncryption::decrypt256(const std::string &plainText, const std::string &key){
+ return decryptString(plainText, key,AESType::AES_256);
+ }
+
+ std::shared_ptr> TurboEncryption::decrypt256Async(const std::string& encryptedText, const std::string& key){
+ return Promise::async([encryptedText,key](){
+ return decryptString(encryptedText, key,AESType::AES_256);
+ });
+ }
+
+ std::shared_ptr> TurboEncryption::encrypt256Async(const std::string& plainText, const std::string& key){
+ return Promise::async([plainText,key](){
+ return encryptString(plainText, key,AESType::AES_256);
+ });
+ }
+
+
+}
diff --git a/cpp/TurboEncryption.hpp b/cpp/TurboEncryption.hpp
new file mode 100644
index 0000000..6e96a00
--- /dev/null
+++ b/cpp/TurboEncryption.hpp
@@ -0,0 +1,18 @@
+
+#include "HybridTurboEncryptionSpec.hpp"
+
+
+namespace margelo::nitro::turboencryption {
+ class TurboEncryption final: public HybridTurboEncryptionSpec {
+ public:
+ TurboEncryption():HybridObject(TAG){};
+ std::string encrypt(const std::string& plainText, const std::string& key) override;
+ std::string decrypt(const std::string& encryptedText, const std::string& key) override;
+ std::shared_ptr> decryptAsync(const std::string& encryptedText, const std::string& key) override;
+ std::shared_ptr> encryptAsync(const std::string& plainText, const std::string& key) override;
+ std::string encrypt256(const std::string& plainText, const std::string& key) override;
+ std::string decrypt256(const std::string& encryptedText, const std::string& key) override;
+ std::shared_ptr> decrypt256Async(const std::string& encryptedText, const std::string& key) override;
+ std::shared_ptr> encrypt256Async(const std::string& plainText, const std::string& key) override;
+ };
+}
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000..16b00bb
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,29 @@
+import { fixupConfigRules } from '@eslint/compat';
+import { FlatCompat } from '@eslint/eslintrc';
+import js from '@eslint/js';
+import prettier from 'eslint-plugin-prettier';
+import { defineConfig } from 'eslint/config';
+import path from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+const compat = new FlatCompat({
+ baseDirectory: __dirname,
+ recommendedConfig: js.configs.recommended,
+ allConfig: js.configs.all,
+});
+
+export default defineConfig([
+ {
+ extends: fixupConfigRules(compat.extends('@react-native', 'prettier')),
+ plugins: { prettier },
+ rules: {
+ 'react/react-in-jsx-scope': 'off',
+ 'prettier/prettier': 'error',
+ },
+ },
+ {
+ ignores: ['node_modules/', 'lib/'],
+ },
+]);
diff --git a/example/Gemfile.lock b/example/Gemfile.lock
index f949a5a..5701b6c 100644
--- a/example/Gemfile.lock
+++ b/example/Gemfile.lock
@@ -25,7 +25,7 @@ GEM
atomos (0.1.3)
base64 (0.3.0)
benchmark (0.4.1)
- bigdecimal (3.2.2)
+ bigdecimal (3.3.1)
claide (1.1.0)
cocoapods (1.15.2)
addressable (~> 2.8)
@@ -66,10 +66,10 @@ GEM
cocoapods-try (1.2.0)
colored2 (3.1.2)
concurrent-ruby (1.3.3)
- connection_pool (2.5.3)
+ connection_pool (2.5.4)
drb (2.2.3)
escape (0.0.4)
- ethon (0.16.0)
+ ethon (0.15.0)
ffi (>= 1.15.0)
ffi (1.17.2)
fourflusher (2.3.1)
@@ -79,9 +79,9 @@ GEM
mutex_m
i18n (1.14.7)
concurrent-ruby (~> 1.0)
- json (2.13.2)
+ json (2.15.1)
logger (1.7.0)
- minitest (5.25.5)
+ minitest (5.26.0)
molinillo (0.8.0)
mutex_m (0.3.0)
nanaimo (0.3.0)
@@ -89,11 +89,11 @@ GEM
netrc (0.11.0)
nkf (0.2.0)
public_suffix (4.0.7)
- rexml (3.4.1)
+ rexml (3.4.4)
ruby-macho (2.5.1)
securerandom (0.4.1)
- typhoeus (1.4.1)
- ethon (>= 0.9.0)
+ typhoeus (1.5.0)
+ ethon (>= 0.9.0, < 0.16.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
xcodeproj (1.25.1)
diff --git a/example/android/app/src/main/java/turboencryption/example/MainApplication.kt b/example/android/app/src/main/java/turboencryption/example/MainApplication.kt
index 2c96ffe..7977574 100644
--- a/example/android/app/src/main/java/turboencryption/example/MainApplication.kt
+++ b/example/android/app/src/main/java/turboencryption/example/MainApplication.kt
@@ -4,11 +4,11 @@ import android.app.Application
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
+import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
-import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative
class MainApplication : Application(), ReactApplication {
diff --git a/example/android/gradle.properties b/example/android/gradle.properties
index 7540bde..9afe615 100644
--- a/example/android/gradle.properties
+++ b/example/android/gradle.properties
@@ -38,8 +38,7 @@ newArchEnabled=true
# If set to false, you will be using JSC instead.
hermesEnabled=true
-
# Use this property to enable edge-to-edge display support.
# This allows your app to draw behind system bars for an immersive UI.
# Note: Only works with ReactActivity and should not be used with custom Activity.
-edgeToEdgeEnabled=false
\ No newline at end of file
+edgeToEdgeEnabled=false
diff --git a/example/android/gradlew b/example/android/gradlew
index 6aa41b6..23d15a9 100755
--- a/example/android/gradlew
+++ b/example/android/gradlew
@@ -248,4 +248,4 @@ eval "set -- $(
tr '\n' ' '
)" '"$@"'
-exec "$JAVACMD" "$@"
\ No newline at end of file
+exec "$JAVACMD" "$@"
diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat
index 9d21a21..dd2b8ee 100644
--- a/example/android/gradlew.bat
+++ b/example/android/gradlew.bat
@@ -1,3 +1,8 @@
+@REM Copyright (c) Meta Platforms, Inc. and affiliates.
+@REM
+@REM This source code is licensed under the MIT license found in the
+@REM LICENSE file in the root directory of this source tree.
+
@rem
@rem Copyright 2015 the original author or authors.
@rem
@@ -70,11 +75,11 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock
index b29c492..c67b441 100644
--- a/example/ios/Podfile.lock
+++ b/example/ios/Podfile.lock
@@ -2,12 +2,41 @@ PODS:
- boost (1.84.0)
- DoubleConversion (1.1.6)
- fast_float (8.0.0)
- - FBLazyVector (0.81.0)
+ - FBLazyVector (0.81.1)
- fmt (11.0.2)
- glog (0.3.5)
- - hermes-engine (0.81.0):
- - hermes-engine/Pre-built (= 0.81.0)
- - hermes-engine/Pre-built (0.81.0)
+ - hermes-engine (0.81.1):
+ - hermes-engine/Pre-built (= 0.81.1)
+ - hermes-engine/Pre-built (0.81.1)
+ - NitroModules (0.30.0):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-callinvoker
+ - 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
- RCT-Folly (2024.11.18.00):
- boost
- DoubleConversion
@@ -27,27 +56,27 @@ PODS:
- fast_float (= 8.0.0)
- fmt (= 11.0.2)
- glog
- - RCTDeprecation (0.81.0)
- - RCTRequired (0.81.0)
- - RCTTypeSafety (0.81.0):
- - FBLazyVector (= 0.81.0)
- - RCTRequired (= 0.81.0)
- - React-Core (= 0.81.0)
- - React (0.81.0):
- - React-Core (= 0.81.0)
- - React-Core/DevSupport (= 0.81.0)
- - React-Core/RCTWebSocket (= 0.81.0)
- - React-RCTActionSheet (= 0.81.0)
- - React-RCTAnimation (= 0.81.0)
- - React-RCTBlob (= 0.81.0)
- - React-RCTImage (= 0.81.0)
- - React-RCTLinking (= 0.81.0)
- - React-RCTNetwork (= 0.81.0)
- - React-RCTSettings (= 0.81.0)
- - React-RCTText (= 0.81.0)
- - React-RCTVibration (= 0.81.0)
- - React-callinvoker (0.81.0)
- - React-Core (0.81.0):
+ - RCTDeprecation (0.81.1)
+ - RCTRequired (0.81.1)
+ - RCTTypeSafety (0.81.1):
+ - FBLazyVector (= 0.81.1)
+ - RCTRequired (= 0.81.1)
+ - React-Core (= 0.81.1)
+ - React (0.81.1):
+ - React-Core (= 0.81.1)
+ - React-Core/DevSupport (= 0.81.1)
+ - React-Core/RCTWebSocket (= 0.81.1)
+ - React-RCTActionSheet (= 0.81.1)
+ - React-RCTAnimation (= 0.81.1)
+ - React-RCTBlob (= 0.81.1)
+ - React-RCTImage (= 0.81.1)
+ - React-RCTLinking (= 0.81.1)
+ - React-RCTNetwork (= 0.81.1)
+ - React-RCTSettings (= 0.81.1)
+ - React-RCTText (= 0.81.1)
+ - React-RCTVibration (= 0.81.1)
+ - React-callinvoker (0.81.1)
+ - React-Core (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -57,7 +86,7 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- RCTDeprecation
- - React-Core/Default (= 0.81.0)
+ - React-Core/Default (= 0.81.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -72,7 +101,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/CoreModulesHeaders (0.81.0):
+ - React-Core/CoreModulesHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -97,7 +126,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/Default (0.81.0):
+ - React-Core/Default (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -121,7 +150,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/DevSupport (0.81.0):
+ - React-Core/DevSupport (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -131,8 +160,8 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- RCTDeprecation
- - React-Core/Default (= 0.81.0)
- - React-Core/RCTWebSocket (= 0.81.0)
+ - React-Core/Default (= 0.81.1)
+ - React-Core/RCTWebSocket (= 0.81.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -147,7 +176,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTActionSheetHeaders (0.81.0):
+ - React-Core/RCTActionSheetHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -172,7 +201,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTAnimationHeaders (0.81.0):
+ - React-Core/RCTAnimationHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -197,7 +226,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTBlobHeaders (0.81.0):
+ - React-Core/RCTBlobHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -222,7 +251,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTImageHeaders (0.81.0):
+ - React-Core/RCTImageHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -247,7 +276,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTLinkingHeaders (0.81.0):
+ - React-Core/RCTLinkingHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -272,7 +301,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTNetworkHeaders (0.81.0):
+ - React-Core/RCTNetworkHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -297,7 +326,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTSettingsHeaders (0.81.0):
+ - React-Core/RCTSettingsHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -322,7 +351,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTTextHeaders (0.81.0):
+ - React-Core/RCTTextHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -347,7 +376,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTVibrationHeaders (0.81.0):
+ - React-Core/RCTVibrationHeaders (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -372,7 +401,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-Core/RCTWebSocket (0.81.0):
+ - React-Core/RCTWebSocket (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -382,7 +411,7 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- RCTDeprecation
- - React-Core/Default (= 0.81.0)
+ - React-Core/Default (= 0.81.1)
- React-cxxreact
- React-featureflags
- React-hermes
@@ -397,7 +426,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-CoreModules (0.81.0):
+ - React-CoreModules (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -405,20 +434,20 @@ PODS:
- glog
- RCT-Folly
- RCT-Folly/Fabric
- - RCTTypeSafety (= 0.81.0)
- - React-Core/CoreModulesHeaders (= 0.81.0)
- - React-jsi (= 0.81.0)
+ - RCTTypeSafety (= 0.81.1)
+ - React-Core/CoreModulesHeaders (= 0.81.1)
+ - React-jsi (= 0.81.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-NativeModulesApple
- React-RCTBlob
- React-RCTFBReactNativeSpec
- - React-RCTImage (= 0.81.0)
+ - React-RCTImage (= 0.81.1)
- React-runtimeexecutor
- ReactCommon
- SocketRocket
- - React-cxxreact (0.81.0):
+ - React-cxxreact (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -427,19 +456,19 @@ PODS:
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- - React-callinvoker (= 0.81.0)
- - React-debug (= 0.81.0)
- - React-jsi (= 0.81.0)
+ - React-callinvoker (= 0.81.1)
+ - React-debug (= 0.81.1)
+ - React-jsi (= 0.81.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-logger (= 0.81.0)
- - React-perflogger (= 0.81.0)
+ - React-logger (= 0.81.1)
+ - React-perflogger (= 0.81.1)
- React-runtimeexecutor
- - React-timing (= 0.81.0)
+ - React-timing (= 0.81.1)
- SocketRocket
- - React-debug (0.81.0)
- - React-defaultsnativemodule (0.81.0):
+ - React-debug (0.81.1)
+ - React-defaultsnativemodule (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -456,7 +485,7 @@ PODS:
- React-microtasksnativemodule
- React-RCTFBReactNativeSpec
- SocketRocket
- - React-domnativemodule (0.81.0):
+ - React-domnativemodule (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -476,7 +505,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-Fabric (0.81.0):
+ - React-Fabric (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -490,23 +519,23 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/animations (= 0.81.0)
- - React-Fabric/attributedstring (= 0.81.0)
- - React-Fabric/bridging (= 0.81.0)
- - React-Fabric/componentregistry (= 0.81.0)
- - React-Fabric/componentregistrynative (= 0.81.0)
- - React-Fabric/components (= 0.81.0)
- - React-Fabric/consistency (= 0.81.0)
- - React-Fabric/core (= 0.81.0)
- - React-Fabric/dom (= 0.81.0)
- - React-Fabric/imagemanager (= 0.81.0)
- - React-Fabric/leakchecker (= 0.81.0)
- - React-Fabric/mounting (= 0.81.0)
- - React-Fabric/observers (= 0.81.0)
- - React-Fabric/scheduler (= 0.81.0)
- - React-Fabric/telemetry (= 0.81.0)
- - React-Fabric/templateprocessor (= 0.81.0)
- - React-Fabric/uimanager (= 0.81.0)
+ - React-Fabric/animations (= 0.81.1)
+ - React-Fabric/attributedstring (= 0.81.1)
+ - React-Fabric/bridging (= 0.81.1)
+ - React-Fabric/componentregistry (= 0.81.1)
+ - React-Fabric/componentregistrynative (= 0.81.1)
+ - React-Fabric/components (= 0.81.1)
+ - React-Fabric/consistency (= 0.81.1)
+ - React-Fabric/core (= 0.81.1)
+ - React-Fabric/dom (= 0.81.1)
+ - React-Fabric/imagemanager (= 0.81.1)
+ - React-Fabric/leakchecker (= 0.81.1)
+ - React-Fabric/mounting (= 0.81.1)
+ - React-Fabric/observers (= 0.81.1)
+ - React-Fabric/scheduler (= 0.81.1)
+ - React-Fabric/telemetry (= 0.81.1)
+ - React-Fabric/templateprocessor (= 0.81.1)
+ - React-Fabric/uimanager (= 0.81.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -518,7 +547,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/animations (0.81.0):
+ - React-Fabric/animations (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -543,7 +572,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/attributedstring (0.81.0):
+ - React-Fabric/attributedstring (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -568,7 +597,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/bridging (0.81.0):
+ - React-Fabric/bridging (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -593,7 +622,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/componentregistry (0.81.0):
+ - React-Fabric/componentregistry (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -618,7 +647,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/componentregistrynative (0.81.0):
+ - React-Fabric/componentregistrynative (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -643,7 +672,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/components (0.81.0):
+ - React-Fabric/components (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -657,10 +686,10 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/components/legacyviewmanagerinterop (= 0.81.0)
- - React-Fabric/components/root (= 0.81.0)
- - React-Fabric/components/scrollview (= 0.81.0)
- - React-Fabric/components/view (= 0.81.0)
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.81.1)
+ - React-Fabric/components/root (= 0.81.1)
+ - React-Fabric/components/scrollview (= 0.81.1)
+ - React-Fabric/components/view (= 0.81.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -672,7 +701,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/components/legacyviewmanagerinterop (0.81.0):
+ - React-Fabric/components/legacyviewmanagerinterop (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -697,7 +726,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/components/root (0.81.0):
+ - React-Fabric/components/root (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -722,7 +751,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/components/scrollview (0.81.0):
+ - React-Fabric/components/scrollview (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -747,7 +776,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/components/view (0.81.0):
+ - React-Fabric/components/view (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -774,7 +803,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-Fabric/consistency (0.81.0):
+ - React-Fabric/consistency (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -799,7 +828,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/core (0.81.0):
+ - React-Fabric/core (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -824,7 +853,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/dom (0.81.0):
+ - React-Fabric/dom (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -849,7 +878,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/imagemanager (0.81.0):
+ - React-Fabric/imagemanager (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -874,7 +903,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/leakchecker (0.81.0):
+ - React-Fabric/leakchecker (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -899,7 +928,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/mounting (0.81.0):
+ - React-Fabric/mounting (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -924,7 +953,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/observers (0.81.0):
+ - React-Fabric/observers (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -938,7 +967,7 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/observers/events (= 0.81.0)
+ - React-Fabric/observers/events (= 0.81.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -950,7 +979,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/observers/events (0.81.0):
+ - React-Fabric/observers/events (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -975,7 +1004,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/scheduler (0.81.0):
+ - React-Fabric/scheduler (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1002,7 +1031,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/telemetry (0.81.0):
+ - React-Fabric/telemetry (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1027,7 +1056,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/templateprocessor (0.81.0):
+ - React-Fabric/templateprocessor (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1052,7 +1081,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/uimanager (0.81.0):
+ - React-Fabric/uimanager (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1066,7 +1095,7 @@ PODS:
- React-Core
- React-cxxreact
- React-debug
- - React-Fabric/uimanager/consistency (= 0.81.0)
+ - React-Fabric/uimanager/consistency (= 0.81.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1079,7 +1108,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-Fabric/uimanager/consistency (0.81.0):
+ - React-Fabric/uimanager/consistency (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1105,7 +1134,7 @@ PODS:
- React-utils
- ReactCommon/turbomodule/core
- SocketRocket
- - React-FabricComponents (0.81.0):
+ - React-FabricComponents (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1120,8 +1149,8 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components (= 0.81.0)
- - React-FabricComponents/textlayoutmanager (= 0.81.0)
+ - React-FabricComponents/components (= 0.81.1)
+ - React-FabricComponents/textlayoutmanager (= 0.81.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1134,7 +1163,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components (0.81.0):
+ - React-FabricComponents/components (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1149,16 +1178,17 @@ PODS:
- React-cxxreact
- React-debug
- React-Fabric
- - React-FabricComponents/components/inputaccessory (= 0.81.0)
- - React-FabricComponents/components/iostextinput (= 0.81.0)
- - React-FabricComponents/components/modal (= 0.81.0)
- - React-FabricComponents/components/rncore (= 0.81.0)
- - React-FabricComponents/components/safeareaview (= 0.81.0)
- - React-FabricComponents/components/scrollview (= 0.81.0)
- - React-FabricComponents/components/text (= 0.81.0)
- - React-FabricComponents/components/textinput (= 0.81.0)
- - React-FabricComponents/components/unimplementedview (= 0.81.0)
- - React-FabricComponents/components/virtualview (= 0.81.0)
+ - React-FabricComponents/components/inputaccessory (= 0.81.1)
+ - React-FabricComponents/components/iostextinput (= 0.81.1)
+ - React-FabricComponents/components/modal (= 0.81.1)
+ - React-FabricComponents/components/rncore (= 0.81.1)
+ - React-FabricComponents/components/safeareaview (= 0.81.1)
+ - React-FabricComponents/components/scrollview (= 0.81.1)
+ - React-FabricComponents/components/switch (= 0.81.1)
+ - React-FabricComponents/components/text (= 0.81.1)
+ - React-FabricComponents/components/textinput (= 0.81.1)
+ - React-FabricComponents/components/unimplementedview (= 0.81.1)
+ - React-FabricComponents/components/virtualview (= 0.81.1)
- React-featureflags
- React-graphics
- React-jsi
@@ -1171,7 +1201,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/inputaccessory (0.81.0):
+ - React-FabricComponents/components/inputaccessory (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1198,7 +1228,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/iostextinput (0.81.0):
+ - React-FabricComponents/components/iostextinput (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1225,7 +1255,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/modal (0.81.0):
+ - React-FabricComponents/components/modal (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1252,7 +1282,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/rncore (0.81.0):
+ - React-FabricComponents/components/rncore (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1279,7 +1309,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/safeareaview (0.81.0):
+ - React-FabricComponents/components/safeareaview (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1306,7 +1336,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/scrollview (0.81.0):
+ - React-FabricComponents/components/scrollview (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1333,7 +1363,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/text (0.81.0):
+ - React-FabricComponents/components/switch (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1360,7 +1390,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/textinput (0.81.0):
+ - React-FabricComponents/components/text (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1387,7 +1417,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/unimplementedview (0.81.0):
+ - React-FabricComponents/components/textinput (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1414,7 +1444,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/components/virtualview (0.81.0):
+ - React-FabricComponents/components/unimplementedview (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1441,7 +1471,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricComponents/textlayoutmanager (0.81.0):
+ - React-FabricComponents/components/virtualview (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1468,7 +1498,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - React-FabricImage (0.81.0):
+ - React-FabricComponents/textlayoutmanager (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1477,21 +1507,48 @@ PODS:
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- - RCTRequired (= 0.81.0)
- - RCTTypeSafety (= 0.81.0)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-RCTFBReactNativeSpec
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - SocketRocket
+ - Yoga
+ - React-FabricImage (0.81.1):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired (= 0.81.1)
+ - RCTTypeSafety (= 0.81.1)
- React-Fabric
- React-featureflags
- React-graphics
- React-ImageManager
- React-jsi
- - React-jsiexecutor (= 0.81.0)
+ - React-jsiexecutor (= 0.81.1)
- React-logger
- React-rendererdebug
- React-utils
- ReactCommon
- SocketRocket
- Yoga
- - React-featureflags (0.81.0):
+ - React-featureflags (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1500,7 +1557,7 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- SocketRocket
- - React-featureflagsnativemodule (0.81.0):
+ - React-featureflagsnativemodule (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1515,7 +1572,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- SocketRocket
- - React-graphics (0.81.0):
+ - React-graphics (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1528,7 +1585,7 @@ PODS:
- React-jsiexecutor
- React-utils
- SocketRocket
- - React-hermes (0.81.0):
+ - React-hermes (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1537,16 +1594,16 @@ PODS:
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- - React-cxxreact (= 0.81.0)
+ - React-cxxreact (= 0.81.1)
- React-jsi
- - React-jsiexecutor (= 0.81.0)
+ - React-jsiexecutor (= 0.81.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-perflogger (= 0.81.0)
+ - React-perflogger (= 0.81.1)
- React-runtimeexecutor
- SocketRocket
- - React-idlecallbacksnativemodule (0.81.0):
+ - React-idlecallbacksnativemodule (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1562,7 +1619,7 @@ PODS:
- React-runtimescheduler
- ReactCommon/turbomodule/core
- SocketRocket
- - React-ImageManager (0.81.0):
+ - React-ImageManager (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1577,7 +1634,7 @@ PODS:
- React-rendererdebug
- React-utils
- SocketRocket
- - React-jserrorhandler (0.81.0):
+ - React-jserrorhandler (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1592,7 +1649,7 @@ PODS:
- React-jsi
- ReactCommon/turbomodule/bridging
- SocketRocket
- - React-jsi (0.81.0):
+ - React-jsi (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1602,7 +1659,7 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- SocketRocket
- - React-jsiexecutor (0.81.0):
+ - React-jsiexecutor (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1611,15 +1668,15 @@ PODS:
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- - React-cxxreact (= 0.81.0)
- - React-jsi (= 0.81.0)
+ - React-cxxreact (= 0.81.1)
+ - React-jsi (= 0.81.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- - React-perflogger (= 0.81.0)
+ - React-perflogger (= 0.81.1)
- React-runtimeexecutor
- SocketRocket
- - React-jsinspector (0.81.0):
+ - React-jsinspector (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1633,10 +1690,11 @@ PODS:
- React-jsinspectorcdp
- React-jsinspectornetwork
- React-jsinspectortracing
- - React-perflogger (= 0.81.0)
+ - React-oscompat
+ - React-perflogger (= 0.81.1)
- React-runtimeexecutor
- SocketRocket
- - React-jsinspectorcdp (0.81.0):
+ - React-jsinspectorcdp (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1645,7 +1703,7 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- SocketRocket
- - React-jsinspectornetwork (0.81.0):
+ - React-jsinspectornetwork (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1658,7 +1716,7 @@ PODS:
- React-performancetimeline
- React-timing
- SocketRocket
- - React-jsinspectortracing (0.81.0):
+ - React-jsinspectortracing (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1669,7 +1727,7 @@ PODS:
- React-oscompat
- React-timing
- SocketRocket
- - React-jsitooling (0.81.0):
+ - React-jsitooling (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1677,16 +1735,16 @@ PODS:
- glog
- RCT-Folly
- RCT-Folly/Fabric
- - React-cxxreact (= 0.81.0)
- - React-jsi (= 0.81.0)
+ - React-cxxreact (= 0.81.1)
+ - React-jsi (= 0.81.1)
- React-jsinspector
- React-jsinspectorcdp
- React-jsinspectortracing
- React-runtimeexecutor
- SocketRocket
- - React-jsitracing (0.81.0):
+ - React-jsitracing (0.81.1):
- React-jsi
- - React-logger (0.81.0):
+ - React-logger (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1695,7 +1753,7 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- SocketRocket
- - React-Mapbuffer (0.81.0):
+ - React-Mapbuffer (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1705,7 +1763,7 @@ PODS:
- RCT-Folly/Fabric
- React-debug
- SocketRocket
- - React-microtasksnativemodule (0.81.0):
+ - React-microtasksnativemodule (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1719,35 +1777,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- SocketRocket
- - react-native-turbo-encryption (0.4.0):
- - 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
- - React-NativeModulesApple (0.81.0):
+ - React-NativeModulesApple (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1767,8 +1797,8 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- SocketRocket
- - React-oscompat (0.81.0)
- - React-perflogger (0.81.0):
+ - React-oscompat (0.81.1)
+ - React-perflogger (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1777,7 +1807,7 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- SocketRocket
- - React-performancetimeline (0.81.0):
+ - React-performancetimeline (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1790,9 +1820,9 @@ PODS:
- React-perflogger
- React-timing
- SocketRocket
- - React-RCTActionSheet (0.81.0):
- - React-Core/RCTActionSheetHeaders (= 0.81.0)
- - React-RCTAnimation (0.81.0):
+ - React-RCTActionSheet (0.81.1):
+ - React-Core/RCTActionSheetHeaders (= 0.81.1)
+ - React-RCTAnimation (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1808,7 +1838,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- SocketRocket
- - React-RCTAppDelegate (0.81.0):
+ - React-RCTAppDelegate (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1842,7 +1872,7 @@ PODS:
- React-utils
- ReactCommon
- SocketRocket
- - React-RCTBlob (0.81.0):
+ - React-RCTBlob (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1861,7 +1891,7 @@ PODS:
- React-RCTNetwork
- ReactCommon
- SocketRocket
- - React-RCTFabric (0.81.0):
+ - React-RCTFabric (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1896,7 +1926,7 @@ PODS:
- React-utils
- SocketRocket
- Yoga
- - React-RCTFBReactNativeSpec (0.81.0):
+ - React-RCTFBReactNativeSpec (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1910,10 +1940,10 @@ PODS:
- React-Core
- React-jsi
- React-NativeModulesApple
- - React-RCTFBReactNativeSpec/components (= 0.81.0)
+ - React-RCTFBReactNativeSpec/components (= 0.81.1)
- ReactCommon
- SocketRocket
- - React-RCTFBReactNativeSpec/components (0.81.0):
+ - React-RCTFBReactNativeSpec/components (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1936,7 +1966,7 @@ PODS:
- ReactCommon
- SocketRocket
- Yoga
- - React-RCTImage (0.81.0):
+ - React-RCTImage (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1952,14 +1982,14 @@ PODS:
- React-RCTNetwork
- ReactCommon
- SocketRocket
- - React-RCTLinking (0.81.0):
- - React-Core/RCTLinkingHeaders (= 0.81.0)
- - React-jsi (= 0.81.0)
+ - React-RCTLinking (0.81.1):
+ - React-Core/RCTLinkingHeaders (= 0.81.1)
+ - React-jsi (= 0.81.1)
- React-NativeModulesApple
- React-RCTFBReactNativeSpec
- ReactCommon
- - ReactCommon/turbomodule/core (= 0.81.0)
- - React-RCTNetwork (0.81.0):
+ - ReactCommon/turbomodule/core (= 0.81.1)
+ - React-RCTNetwork (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1977,7 +2007,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- SocketRocket
- - React-RCTRuntime (0.81.0):
+ - React-RCTRuntime (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -1997,7 +2027,7 @@ PODS:
- React-runtimeexecutor
- React-RuntimeHermes
- SocketRocket
- - React-RCTSettings (0.81.0):
+ - React-RCTSettings (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2012,10 +2042,10 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- SocketRocket
- - React-RCTText (0.81.0):
- - React-Core/RCTTextHeaders (= 0.81.0)
+ - React-RCTText (0.81.1):
+ - React-Core/RCTTextHeaders (= 0.81.1)
- Yoga
- - React-RCTVibration (0.81.0):
+ - React-RCTVibration (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2029,11 +2059,11 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon
- SocketRocket
- - React-rendererconsistency (0.81.0)
- - React-renderercss (0.81.0):
+ - React-rendererconsistency (0.81.1)
+ - React-renderercss (0.81.1):
- React-debug
- React-utils
- - React-rendererdebug (0.81.0):
+ - React-rendererdebug (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2043,7 +2073,7 @@ PODS:
- RCT-Folly/Fabric
- React-debug
- SocketRocket
- - React-RuntimeApple (0.81.0):
+ - React-RuntimeApple (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2072,7 +2102,7 @@ PODS:
- React-runtimescheduler
- React-utils
- SocketRocket
- - React-RuntimeCore (0.81.0):
+ - React-RuntimeCore (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2094,7 +2124,7 @@ PODS:
- React-runtimescheduler
- React-utils
- SocketRocket
- - React-runtimeexecutor (0.81.0):
+ - React-runtimeexecutor (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2104,10 +2134,10 @@ PODS:
- RCT-Folly/Fabric
- React-debug
- React-featureflags
- - React-jsi (= 0.81.0)
+ - React-jsi (= 0.81.1)
- React-utils
- SocketRocket
- - React-RuntimeHermes (0.81.0):
+ - React-RuntimeHermes (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2128,7 +2158,7 @@ PODS:
- React-runtimeexecutor
- React-utils
- SocketRocket
- - React-runtimescheduler (0.81.0):
+ - React-runtimescheduler (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2150,8 +2180,9 @@ PODS:
- React-timing
- React-utils
- SocketRocket
- - React-timing (0.81.0)
- - React-utils (0.81.0):
+ - React-timing (0.81.1):
+ - React-debug
+ - React-utils (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2161,11 +2192,11 @@ PODS:
- RCT-Folly
- RCT-Folly/Fabric
- React-debug
- - React-jsi (= 0.81.0)
+ - React-jsi (= 0.81.1)
- SocketRocket
- - ReactAppDependencyProvider (0.81.0):
+ - ReactAppDependencyProvider (0.81.1):
- ReactCodegen
- - ReactCodegen (0.81.0):
+ - ReactCodegen (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2191,7 +2222,7 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- SocketRocket
- - ReactCommon (0.81.0):
+ - ReactCommon (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2199,9 +2230,9 @@ PODS:
- glog
- RCT-Folly
- RCT-Folly/Fabric
- - ReactCommon/turbomodule (= 0.81.0)
+ - ReactCommon/turbomodule (= 0.81.1)
- SocketRocket
- - ReactCommon/turbomodule (0.81.0):
+ - ReactCommon/turbomodule (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2210,15 +2241,15 @@ PODS:
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- - React-callinvoker (= 0.81.0)
- - React-cxxreact (= 0.81.0)
- - React-jsi (= 0.81.0)
- - React-logger (= 0.81.0)
- - React-perflogger (= 0.81.0)
- - ReactCommon/turbomodule/bridging (= 0.81.0)
- - ReactCommon/turbomodule/core (= 0.81.0)
+ - React-callinvoker (= 0.81.1)
+ - React-cxxreact (= 0.81.1)
+ - React-jsi (= 0.81.1)
+ - React-logger (= 0.81.1)
+ - React-perflogger (= 0.81.1)
+ - ReactCommon/turbomodule/bridging (= 0.81.1)
+ - ReactCommon/turbomodule/core (= 0.81.1)
- SocketRocket
- - ReactCommon/turbomodule/bridging (0.81.0):
+ - ReactCommon/turbomodule/bridging (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2227,13 +2258,13 @@ PODS:
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- - React-callinvoker (= 0.81.0)
- - React-cxxreact (= 0.81.0)
- - React-jsi (= 0.81.0)
- - React-logger (= 0.81.0)
- - React-perflogger (= 0.81.0)
+ - React-callinvoker (= 0.81.1)
+ - React-cxxreact (= 0.81.1)
+ - React-jsi (= 0.81.1)
+ - React-logger (= 0.81.1)
+ - React-perflogger (= 0.81.1)
- SocketRocket
- - ReactCommon/turbomodule/core (0.81.0):
+ - ReactCommon/turbomodule/core (0.81.1):
- boost
- DoubleConversion
- fast_float
@@ -2242,16 +2273,46 @@ PODS:
- hermes-engine
- RCT-Folly
- RCT-Folly/Fabric
- - React-callinvoker (= 0.81.0)
- - React-cxxreact (= 0.81.0)
- - React-debug (= 0.81.0)
- - React-featureflags (= 0.81.0)
- - React-jsi (= 0.81.0)
- - React-logger (= 0.81.0)
- - React-perflogger (= 0.81.0)
- - React-utils (= 0.81.0)
+ - React-callinvoker (= 0.81.1)
+ - React-cxxreact (= 0.81.1)
+ - React-debug (= 0.81.1)
+ - React-featureflags (= 0.81.1)
+ - React-jsi (= 0.81.1)
+ - React-logger (= 0.81.1)
+ - React-perflogger (= 0.81.1)
+ - React-utils (= 0.81.1)
- SocketRocket
- SocketRocket (0.7.1)
+ - TurboEncryption (0.1.0):
+ - boost
+ - DoubleConversion
+ - fast_float
+ - fmt
+ - glog
+ - hermes-engine
+ - NitroModules
+ - RCT-Folly
+ - RCT-Folly/Fabric
+ - RCTRequired
+ - RCTTypeSafety
+ - React-callinvoker
+ - 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
- Yoga (0.0.0)
DEPENDENCIES:
@@ -2262,6 +2323,7 @@ DEPENDENCIES:
- fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
+ - NitroModules (from `../node_modules/react-native-nitro-modules`)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
- RCTRequired (from `../node_modules/react-native/Libraries/Required`)
@@ -2296,7 +2358,6 @@ DEPENDENCIES:
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
- React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
- React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
- - react-native-turbo-encryption (from `../..`)
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
- React-oscompat (from `../node_modules/react-native/ReactCommon/oscompat`)
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
@@ -2328,6 +2389,7 @@ DEPENDENCIES:
- ReactCodegen (from `build/generated/ios`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- SocketRocket (~> 0.7.1)
+ - TurboEncryption (from `../..`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
@@ -2350,6 +2412,8 @@ EXTERNAL SOURCES:
hermes-engine:
:podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
:tag: hermes-2025-07-07-RNv0.81.0-e0fc67142ec0763c6b6153ca2bf96df815539782
+ NitroModules:
+ :path: "../node_modules/react-native-nitro-modules"
RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTDeprecation:
@@ -2416,8 +2480,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon"
React-microtasksnativemodule:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
- react-native-turbo-encryption:
- :path: "../.."
React-NativeModulesApple:
:path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
React-oscompat:
@@ -2478,6 +2540,8 @@ EXTERNAL SOURCES:
:path: build/generated/ios
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
+ TurboEncryption:
+ :path: "../.."
Yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
@@ -2485,76 +2549,77 @@ SPEC CHECKSUMS:
boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6
- FBLazyVector: a867936a67af0d09c37935a1b900a1a3c795b6d1
+ FBLazyVector: b8f1312d48447cca7b4abc21ed155db14742bd03
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
- hermes-engine: e7491a2038f2618c8cd444ed411a6deb350a3742
+ hermes-engine: 4f8246b1f6d79f625e0d99472d1f3a71da4d28ca
+ NitroModules: dae5a0f5867aa19ca3222084519c30cb6ca0280a
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
- RCTDeprecation: 0735ab4f6b3ec93a7f98187b5da74d7916e2cf4c
- RCTRequired: 8fcc7801bfc433072287b0f24a662e2816e89d0c
- RCTTypeSafety: 2b2be515d6b968bcba7a68c4179d8199bd8c9b58
- React: 1000c0e96d8fb9fbdaf13f7d31d0b09db3cbb4ac
- React-callinvoker: 7e52661bfaf5d8881a9cee049792627a00001fbe
- React-Core: 949b436ddfe76cf47ac96375152de2f3506a8421
- React-CoreModules: 0f27580d0d82d430fa4f2cf4d970b6ad1120d63a
- React-cxxreact: 48754f11f47a29ea4800cbdd694c10f874a26b9b
- React-debug: 7a23d96f709f437c5e08973d6e06d0a54dd180a1
- React-defaultsnativemodule: 569d9222a701ed3dc60a60b2ce066b5bd88da059
- React-domnativemodule: 34474bda3973bfd0ca2ea9f1b3db20db5d504cc7
- React-Fabric: 45c3e9b112075451e592f0e008cabd4b82575355
- React-FabricComponents: a428f23938c27a073baacc069d484b3478df85f3
- React-FabricImage: 4375129ba8a26e8a7074af1c2468870fb8aab723
- React-featureflags: ed973a134993f3be204d0b2d385d386603c9a0af
- React-featureflagsnativemodule: aa3e1dc86bc185344d4875e7cb40cce0bd28de76
- React-graphics: b5b8709a8216075bb6a5f9e7bb68881212d924ee
- React-hermes: c543ffa2866304c582bdcb135c184e0f776f0d0b
- React-idlecallbacksnativemodule: f19c4060b12fffc3ad33ce5de190338751b462ef
- React-ImageManager: ecaf317aa5dff5eebba178b0813ef998c62547ea
- React-jserrorhandler: 92eea1ee4f8c56b466b34e0065def59805e5d3a9
- React-jsi: 7336786a4a14c473d104e6b37df935620d218fcd
- React-jsiexecutor: 7c750f5b63fbc071d0f0e56e86f1a1589914f7b1
- React-jsinspector: da5f336c1aa174a05885d061559a92e1d07b8a80
- React-jsinspectorcdp: 0e807e4c2dc8ae8a07f0a6bfe50377f442079ba3
- React-jsinspectornetwork: 3399384f2b6b70b287d8b9675452af4cec21dc65
- React-jsinspectortracing: 030af0e9dca9a4eaa1d0ba258c7bd859fb90f61d
- React-jsitooling: f8ed67814b17ebb124c48fccdf587ee1e02f16f4
- React-jsitracing: 5cf6b84d46a4653895e30956a0ce3a315244c10a
- React-logger: 04ce9229cb57db2c2a8164eaec1105f89da7fb22
- React-Mapbuffer: e402e7a0535b2213c50727553621480fe8cd8ade
- React-microtasksnativemodule: a63ce5595016996a9bac1f10c70a7a7fe6506649
- react-native-turbo-encryption: 382afb69aa9714b34990619af59d96ad4e961a1c
- React-NativeModulesApple: b3766e1f87b08064ebc459b9e1538da2447ca874
- React-oscompat: 34f3d3c06cadcbc470bc4509c717fb9b919eaa8b
- React-perflogger: a1edb025fd5d44f61bf09307e248f7608d7b2dcf
- React-performancetimeline: 1f86dc9782e3fe78727c5fbb3e2178b9fd1aa6fd
- React-RCTActionSheet: 550c9c6c2e7dcd85a51954dc08e2f3837a148e7c
- React-RCTAnimation: 19d4bb6d2190983d1354b096b7b65dbd591924da
- React-RCTAppDelegate: 6c71d16eef920831a312ff363355fc3b99c02a98
- React-RCTBlob: b81a0cffe1a083bcf9d8aa9f27f4d37864579e90
- React-RCTFabric: 01005d2fa799bba6e21aae18820498f56fe0be5f
- React-RCTFBReactNativeSpec: 5adb84a81c4ed7a1f2661835d166e4b2c4320cd4
- React-RCTImage: 607e5e373fb56d72417464bd82e8046af81ab502
- React-RCTLinking: 301434c7bf1100458be5a3866326ba33491e3687
- React-RCTNetwork: a118a47bd123ac96c9877e04f5731a1d6545aba5
- React-RCTRuntime: 85fdbf469fe8a12c4db6c836731b190efc33d11d
- React-RCTSettings: 5a5aa2cf9ac40f7a8897cc0f9d945ac803886604
- React-RCTText: e6e00bee9847a8af1218079b73c8bfed16c75b8d
- React-RCTVibration: 5a05fa0ef05ee73d074a3314e57586afc969f1ba
- React-rendererconsistency: c2cb23365f4a7b511893748fe8cad1830bbae637
- React-renderercss: 0c1472d6572c05e493aee476598c3ed6234b6c33
- React-rendererdebug: d6335da9730fa5a151537aa976a16d48de6135e2
- React-RuntimeApple: 5684c2a5d8768e5728a5817c21e5dba798d54c58
- React-RuntimeCore: 52428a1b48fb3c50ddf4dd5eee494486e4ecffc6
- React-runtimeexecutor: 1b4e99e5c27d2cb8bdeca9773ff5f1a8eac7709c
- React-RuntimeHermes: a688639233a3ea44b4f8e4d448f51943d7e00815
- React-runtimescheduler: b833f0fc8c788329a497e93f55ce30508f56307a
- React-timing: 25e8229ad1cf6874e9f0711515213cb2bc322215
- React-utils: 068cec677032ba78ca0700f2dcbe6d08a0939647
- ReactAppDependencyProvider: c91900fa724baee992f01c05eeb4c9e01a807f78
- ReactCodegen: a55799cae416c387aeaae3aabc1bc0289ac19cee
- ReactCommon: 116d6ee71679243698620d8cd9a9042541e44aa6
+ RCTDeprecation: c4b9e2fd0ab200e3af72b013ed6113187c607077
+ RCTRequired: e97dd5dafc1db8094e63bc5031e0371f092ae92a
+ RCTTypeSafety: 720403058b7c1380c6a3ae5706981d6362962c89
+ React: f1486d005993b0af01943af1850d3d4f3b597545
+ React-callinvoker: 133f69368c8559e744efa345223625d412f5dfbe
+ React-Core: 559823921b4f294c2840fa8238ca958a29ddc211
+ React-CoreModules: c41e7bbfabbc420783bb926f45837a0d5e53341e
+ React-cxxreact: 9cb9fa738274a1b36b97ede09c8a6717dec1a20b
+ React-debug: e01581e1589f329e61c95b332bf7f4969b10564b
+ React-defaultsnativemodule: bbb39447caa6b6cf9405fa0099f828c083640faa
+ React-domnativemodule: 03744d12b6d56d098531a933730bf1d4cb79bdfb
+ React-Fabric: 530b3993a12a96e8a7cdb9f0ef48e605277b572e
+ React-FabricComponents: 271ec2a9b2c00ac66fd6d1fd24e9e964d907751d
+ React-FabricImage: d0af66e976dbab7f8b81e36dd369fc70727d2695
+ React-featureflags: 269704c8eff86e0485c9d384e286350fcda6eb70
+ React-featureflagsnativemodule: db1e5d88a912fb08a5ece33fcf64e1b732da8467
+ React-graphics: b19d03a01b0722b4dc82f47acb56dc3ed41937e7
+ React-hermes: 811606c0aca5a3f9c6fa8e4994e02ca8f677e68e
+ React-idlecallbacksnativemodule: 3a3df629cd50046c7e4354f9025aefe8f2c84601
+ React-ImageManager: 0d53866c63132791e37bb2373f93044fdef14aa3
+ React-jserrorhandler: d5700d6ab7162fd575287502a3c5d601d98e7f09
+ React-jsi: ece95417fedbed0e7153a855cb8342b7c72ab75e
+ React-jsiexecutor: 2b0bb644b533df2f5c0cd6ade9a4560d0bf1dd84
+ React-jsinspector: 0c160f8510a8852bdf2dac12f0b1949efc18200b
+ React-jsinspectorcdp: f4b84409f453f61ddd8614ad45139bc594ec6bb5
+ React-jsinspectornetwork: 8f2f0ca8c871ca19b571f426002c0012e7fb2aee
+ React-jsinspectortracing: 33f6b977eb8a4bc1e3d1a4b948809aca083143f9
+ React-jsitooling: 2c61529b589e17229a9f0a4a4fc35aa7ad495850
+ React-jsitracing: 838a7b0c013c4aff7d382d7fdc78cf442013ba1d
+ React-logger: 7aef4d74123e5e3d267e5af1fbf5135b5a0d8381
+ React-Mapbuffer: 91e0eab42a6ae7f3e34091a126d70fc53bd3823e
+ React-microtasksnativemodule: 1ead4fe154df3b1ba34b5a9e35ef3c4bdfa72ccb
+ React-NativeModulesApple: eff2eba56030eb0d107b1642b8f853bc36a833ac
+ React-oscompat: b12c633e9c00f1f99467b1e0e0b8038895dae436
+ React-perflogger: 58d12c4e5df1403030c97b9c621375c312cca454
+ React-performancetimeline: 0ee0a3236c77a4ee6d8a6189089e41e4003d292e
+ React-RCTActionSheet: 3f741a3712653611a6bfc5abceb8260af9d0b218
+ React-RCTAnimation: 408ad69ea136e99a463dd33eadecc29e586b3d72
+ React-RCTAppDelegate: f03b46e80b8a3dbfa84b35abfe123e02f3ceef83
+ React-RCTBlob: bd42e92a00ad22eaab92ffe5c137e7a2f725887a
+ React-RCTFabric: b99ab638c73cf2d57b886eafdbfb2e4909b0eb9a
+ React-RCTFBReactNativeSpec: 7ad9aba0e0655e3f29be0a1c3fd4a888fab04dcf
+ React-RCTImage: 0f1c74f7cd20027f8c34976a211b35d4263a0add
+ React-RCTLinking: 6d7dfc3a74110df56c3a73cc7626bf4415656542
+ React-RCTNetwork: 6a25d8645a80d5b86098675ca39bf8fcf1afa08b
+ React-RCTRuntime: 38bfe9766565ae3293ca230bc51c9c020a8bc98a
+ React-RCTSettings: 651d9ae2cdd32f547ad0d225a2c13886d6ad2358
+ React-RCTText: 9bc66cd288478e23195e01f5cb45eba79986b2b4
+ React-RCTVibration: 371226f5667a00c76d792dcdb5c2e0fcbcde0c3b
+ React-rendererconsistency: a05f6c37f9389c53213d1e28798e441fa6fbdbcd
+ React-renderercss: 6e4febfa014b0f53bc171a62b0f713ddbdbb9860
+ React-rendererdebug: e94bf27b9d55ef2795caa8e43aa92abc4a373b8b
+ React-RuntimeApple: 723be5159519eba1cd92449acb29436d21571b82
+ React-RuntimeCore: f58eb0f01065c9d27d91de10b2e4ab4c76d83b0e
+ React-runtimeexecutor: f615ec8742d0b5820170f7c8b4d2c7cb75d93ac9
+ React-RuntimeHermes: fddb258e03d330d1132bb19e78fe51ac2f3f41ac
+ React-runtimescheduler: e92a31460e654ced8587debeec37553315e1b6a5
+ React-timing: 97ada2c47b4c5932e7f773c7d239c52b90d6ca68
+ React-utils: f0949d247a46b4c09f03e5a3cb1167602d0b729a
+ ReactAppDependencyProvider: 3eb9096cb139eb433965693bbe541d96eb3d3ec9
+ ReactCodegen: 4d203eddf6f977caa324640a20f92e70408d648b
+ ReactCommon: ce5d4226dfaf9d5dacbef57b4528819e39d3a120
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
- Yoga: 00013dd9cde63a2d98e8002fcc4f5ddb66c10782
+ TurboEncryption: 8937dc1950242d0fcf6144fed333dff00400ca86
+ Yoga: 11c9686a21e2cd82a094a723649d9f4507200fb0
PODFILE CHECKSUM: 0bdf37f7d967f8672e0e3c164d21d91fa03a1ccb
diff --git a/example/ios/TurboEncryptionExample.xcodeproj/project.pbxproj b/example/ios/TurboEncryptionExample.xcodeproj/project.pbxproj
index 906c25c..d5162e7 100644
--- a/example/ios/TurboEncryptionExample.xcodeproj/project.pbxproj
+++ b/example/ios/TurboEncryptionExample.xcodeproj/project.pbxproj
@@ -9,9 +9,9 @@
/* Begin PBXBuildFile section */
0C80B921A6F3F58F76C31292 /* libPods-TurboEncryptionExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-TurboEncryptionExample.a */; };
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 26A59C3A24E804DB6300D6CE /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
- 9EBEA52838123BF669E8714E /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -160,7 +160,7 @@
files = (
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
- 9EBEA52838123BF669E8714E /* PrivacyInfo.xcprivacy in Resources */,
+ 26A59C3A24E804DB6300D6CE /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -191,10 +191,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-TurboEncryptionExample/Pods-TurboEncryptionExample-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
+ inputPaths = (
+ );
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-TurboEncryptionExample/Pods-TurboEncryptionExample-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
+ outputPaths = (
+ );
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TurboEncryptionExample/Pods-TurboEncryptionExample-frameworks.sh\"\n";
@@ -230,10 +234,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-TurboEncryptionExample/Pods-TurboEncryptionExample-resources-${CONFIGURATION}-input-files.xcfilelist",
);
+ inputPaths = (
+ );
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-TurboEncryptionExample/Pods-TurboEncryptionExample-resources-${CONFIGURATION}-output-files.xcfilelist",
);
+ outputPaths = (
+ );
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TurboEncryptionExample/Pods-TurboEncryptionExample-resources.sh\"\n";
@@ -260,6 +268,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = HP7K75GMVH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = TurboEncryptionExample/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
@@ -288,6 +297,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_TEAM = HP7K75GMVH;
INFOPLIST_FILE = TurboEncryptionExample/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = (
diff --git a/example/package.json b/example/package.json
index 6da0f97..cd24161 100644
--- a/example/package.json
+++ b/example/package.json
@@ -10,8 +10,10 @@
"build:ios": "react-native build-ios --mode Debug"
},
"dependencies": {
+ "@react-native/new-app-screen": "0.81.1",
"react": "19.1.0",
- "react-native": "0.81.0"
+ "react-native": "0.81.1",
+ "react-native-nitro-modules": "^0.30.0"
},
"devDependencies": {
"@babel/core": "^7.25.2",
@@ -20,14 +22,14 @@
"@react-native-community/cli": "20.0.0",
"@react-native-community/cli-platform-android": "20.0.0",
"@react-native-community/cli-platform-ios": "20.0.0",
- "@react-native/babel-preset": "0.81.0",
- "@react-native/metro-config": "0.81.0",
- "@react-native/typescript-config": "0.81.0",
+ "@react-native/babel-preset": "0.81.1",
+ "@react-native/metro-config": "0.81.1",
+ "@react-native/typescript-config": "0.81.1",
"@types/react": "^19.1.0",
- "react-native-builder-bob": "^0.40.8",
+ "react-native-builder-bob": "^0.40.13",
"react-native-monorepo-config": "^0.1.9"
},
"engines": {
- "node": ">=18"
+ "node": ">=20"
}
}
diff --git a/ios/onLoad.mm b/ios/onLoad.mm
deleted file mode 100644
index 8b7e6d6..0000000
--- a/ios/onLoad.mm
+++ /dev/null
@@ -1,29 +0,0 @@
-
-//
-// TurboEncryption.mm
-// react-native-turbo-encryption
-//
-// Created by Ritesh Shukla on 5.12.24.
-//
-
-
-#import "NativeTurboEncryptionTurboModule.h"
-#import
-#import
-
-@interface OnLoad : NSObject
-@end
-
-@implementation OnLoad
-
-+ (void)load
-{
- facebook::react::registerCxxModuleToGlobalModuleMap(
- std::string(facebook::react::NativeTurboEncryptionTurboModule::kModuleName),
- [](std::shared_ptr jsInvoker)
- {
- return std::make_shared(jsInvoker);
- });
-}
-
-@end
\ No newline at end of file
diff --git a/lefthook.yml b/lefthook.yml
index 3353486..eb71c86 100644
--- a/lefthook.yml
+++ b/lefthook.yml
@@ -7,3 +7,8 @@ pre-commit:
types:
glob: '*.{js,ts, jsx, tsx}'
run: npx tsc
+commit-msg:
+ parallel: true
+ commands:
+ commitlint:
+ run: npx commitlint --edit
diff --git a/nitro.json b/nitro.json
new file mode 100644
index 0000000..327e88a
--- /dev/null
+++ b/nitro.json
@@ -0,0 +1,16 @@
+{
+ "cxxNamespace": ["turboencryption"],
+ "ios": {
+ "iosModuleName": "TurboEncryption"
+ },
+ "android": {
+ "androidNamespace": ["turboencryption"],
+ "androidCxxLibName": "turboencryption"
+ },
+ "autolinking": {
+ "TurboEncryption": {
+ "cpp": "TurboEncryption"
+ }
+ },
+ "ignorePaths": ["node_modules"]
+}
diff --git a/nitrogen/generated/.gitattributes b/nitrogen/generated/.gitattributes
new file mode 100644
index 0000000..fb7a0d5
--- /dev/null
+++ b/nitrogen/generated/.gitattributes
@@ -0,0 +1 @@
+** linguist-generated=true
diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/turboencryption/turboencryptionOnLoad.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/turboencryption/turboencryptionOnLoad.kt
new file mode 100644
index 0000000..287b3ec
--- /dev/null
+++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/turboencryption/turboencryptionOnLoad.kt
@@ -0,0 +1,35 @@
+///
+/// turboencryptionOnLoad.kt
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+package com.margelo.nitro.turboencryption
+
+import android.util.Log
+
+internal class turboencryptionOnLoad {
+ companion object {
+ private const val TAG = "turboencryptionOnLoad"
+ private var didLoad = false
+ /**
+ * Initializes the native part of "turboencryption".
+ * This method is idempotent and can be called more than once.
+ */
+ @JvmStatic
+ fun initializeNative() {
+ if (didLoad) return
+ try {
+ Log.i(TAG, "Loading turboencryption C++ library...")
+ System.loadLibrary("turboencryption")
+ Log.i(TAG, "Successfully loaded turboencryption C++ library!")
+ didLoad = true
+ } catch (e: Error) {
+ Log.e(TAG, "Failed to load turboencryption C++ library! Is it properly installed and linked? " +
+ "Is the name correct? (see `CMakeLists.txt`, at `add_library(...)`)", e)
+ throw e
+ }
+ }
+ }
+}
diff --git a/nitrogen/generated/android/turboencryption+autolinking.cmake b/nitrogen/generated/android/turboencryption+autolinking.cmake
new file mode 100644
index 0000000..34d3d57
--- /dev/null
+++ b/nitrogen/generated/android/turboencryption+autolinking.cmake
@@ -0,0 +1,81 @@
+#
+# turboencryption+autolinking.cmake
+# This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+# https://github.com/mrousavy/nitro
+# Copyright © 2025 Marc Rousavy @ Margelo
+#
+
+# This is a CMake file that adds all files generated by Nitrogen
+# to the current CMake project.
+#
+# To use it, add this to your CMakeLists.txt:
+# ```cmake
+# include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/turboencryption+autolinking.cmake)
+# ```
+
+# Define a flag to check if we are building properly
+add_definitions(-DBUILDING_TURBOENCRYPTION_WITH_GENERATED_CMAKE_PROJECT)
+
+# Enable Raw Props parsing in react-native (for Nitro Views)
+add_definitions(-DRN_SERIALIZABLE_STATE)
+
+# Add all headers that were generated by Nitrogen
+include_directories(
+ "../nitrogen/generated/shared/c++"
+ "../nitrogen/generated/android/c++"
+ "../nitrogen/generated/android/"
+)
+
+# Add all .cpp sources that were generated by Nitrogen
+target_sources(
+ # CMake project name (Android C++ library name)
+ turboencryption PRIVATE
+ # Autolinking Setup
+ ../nitrogen/generated/android/turboencryptionOnLoad.cpp
+ # Shared Nitrogen C++ sources
+ ../nitrogen/generated/shared/c++/HybridTurboEncryptionSpec.cpp
+ # Android-specific Nitrogen C++ sources
+
+)
+
+# From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
+# Used in node_modules/react-native/ReactAndroid/cmake-utils/ReactNative-application.cmake
+target_compile_definitions(
+ turboencryption PRIVATE
+ -DFOLLY_NO_CONFIG=1
+ -DFOLLY_HAVE_CLOCK_GETTIME=1
+ -DFOLLY_USE_LIBCPP=1
+ -DFOLLY_CFG_NO_COROUTINES=1
+ -DFOLLY_MOBILE=1
+ -DFOLLY_HAVE_RECVMMSG=1
+ -DFOLLY_HAVE_PTHREAD=1
+ # Once we target android-23 above, we can comment
+ # the following line. NDK uses GNU style stderror_r() after API 23.
+ -DFOLLY_HAVE_XSI_STRERROR_R=1
+)
+
+# Add all libraries required by the generated specs
+find_package(fbjni REQUIRED) # <-- Used for communication between Java <-> C++
+find_package(ReactAndroid REQUIRED) # <-- Used to set up React Native bindings (e.g. CallInvoker/TurboModule)
+find_package(react-native-nitro-modules REQUIRED) # <-- Used to create all HybridObjects and use the Nitro core library
+
+# Link all libraries together
+target_link_libraries(
+ turboencryption
+ fbjni::fbjni # <-- Facebook C++ JNI helpers
+ ReactAndroid::jsi # <-- RN: JSI
+ react-native-nitro-modules::NitroModules # <-- NitroModules Core :)
+)
+
+# Link react-native (different prefab between RN 0.75 and RN 0.76)
+if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
+ target_link_libraries(
+ turboencryption
+ ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
+ )
+else()
+ target_link_libraries(
+ turboencryption
+ ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
+ )
+endif()
diff --git a/nitrogen/generated/android/turboencryption+autolinking.gradle b/nitrogen/generated/android/turboencryption+autolinking.gradle
new file mode 100644
index 0000000..b2da5fd
--- /dev/null
+++ b/nitrogen/generated/android/turboencryption+autolinking.gradle
@@ -0,0 +1,27 @@
+///
+/// turboencryption+autolinking.gradle
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+/// This is a Gradle file that adds all files generated by Nitrogen
+/// to the current Gradle project.
+///
+/// To use it, add this to your build.gradle:
+/// ```gradle
+/// apply from: '../nitrogen/generated/android/turboencryption+autolinking.gradle'
+/// ```
+
+logger.warn("[NitroModules] 🔥 turboencryption is boosted by nitro!")
+
+android {
+ sourceSets {
+ main {
+ java.srcDirs += [
+ // Nitrogen files
+ "${project.projectDir}/../nitrogen/generated/android/kotlin"
+ ]
+ }
+ }
+}
diff --git a/nitrogen/generated/android/turboencryptionOnLoad.cpp b/nitrogen/generated/android/turboencryptionOnLoad.cpp
new file mode 100644
index 0000000..395a9e4
--- /dev/null
+++ b/nitrogen/generated/android/turboencryptionOnLoad.cpp
@@ -0,0 +1,44 @@
+///
+/// turboencryptionOnLoad.cpp
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#ifndef BUILDING_TURBOENCRYPTION_WITH_GENERATED_CMAKE_PROJECT
+#error turboencryptionOnLoad.cpp is not being built with the autogenerated CMakeLists.txt project. Is a different CMakeLists.txt building this?
+#endif
+
+#include "turboencryptionOnLoad.hpp"
+
+#include
+#include
+#include
+
+#include "TurboEncryption.hpp"
+
+namespace margelo::nitro::turboencryption {
+
+int initialize(JavaVM* vm) {
+ using namespace margelo::nitro;
+ using namespace margelo::nitro::turboencryption;
+ using namespace facebook;
+
+ return facebook::jni::initialize(vm, [] {
+ // Register native JNI methods
+
+
+ // Register Nitro Hybrid Objects
+ HybridObjectRegistry::registerHybridObjectConstructor(
+ "TurboEncryption",
+ []() -> std::shared_ptr {
+ static_assert(std::is_default_constructible_v,
+ "The HybridObject \"TurboEncryption\" is not default-constructible! "
+ "Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
+ return std::make_shared();
+ }
+ );
+ });
+}
+
+} // namespace margelo::nitro::turboencryption
diff --git a/nitrogen/generated/android/turboencryptionOnLoad.hpp b/nitrogen/generated/android/turboencryptionOnLoad.hpp
new file mode 100644
index 0000000..a5d90b9
--- /dev/null
+++ b/nitrogen/generated/android/turboencryptionOnLoad.hpp
@@ -0,0 +1,25 @@
+///
+/// turboencryptionOnLoad.hpp
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#include
+#include
+
+namespace margelo::nitro::turboencryption {
+
+ /**
+ * Initializes the native (C++) part of turboencryption, and autolinks all Hybrid Objects.
+ * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`).
+ * Example:
+ * ```cpp (cpp-adapter.cpp)
+ * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
+ * return margelo::nitro::turboencryption::initialize(vm);
+ * }
+ * ```
+ */
+ int initialize(JavaVM* vm);
+
+} // namespace margelo::nitro::turboencryption
diff --git a/nitrogen/generated/ios/TurboEncryption+autolinking.rb b/nitrogen/generated/ios/TurboEncryption+autolinking.rb
new file mode 100644
index 0000000..da4b328
--- /dev/null
+++ b/nitrogen/generated/ios/TurboEncryption+autolinking.rb
@@ -0,0 +1,60 @@
+#
+# TurboEncryption+autolinking.rb
+# This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+# https://github.com/mrousavy/nitro
+# Copyright © 2025 Marc Rousavy @ Margelo
+#
+
+# This is a Ruby script that adds all files generated by Nitrogen
+# to the given podspec.
+#
+# To use it, add this to your .podspec:
+# ```ruby
+# Pod::Spec.new do |spec|
+# # ...
+#
+# # Add all files generated by Nitrogen
+# load 'nitrogen/generated/ios/TurboEncryption+autolinking.rb'
+# add_nitrogen_files(spec)
+# end
+# ```
+
+def add_nitrogen_files(spec)
+ Pod::UI.puts "[NitroModules] 🔥 TurboEncryption is boosted by nitro!"
+
+ spec.dependency "NitroModules"
+
+ current_source_files = Array(spec.attributes_hash['source_files'])
+ spec.source_files = current_source_files + [
+ # Generated cross-platform specs
+ "nitrogen/generated/shared/**/*.{h,hpp,c,cpp,swift}",
+ # Generated bridges for the cross-platform specs
+ "nitrogen/generated/ios/**/*.{h,hpp,c,cpp,mm,swift}",
+ ]
+
+ current_public_header_files = Array(spec.attributes_hash['public_header_files'])
+ spec.public_header_files = current_public_header_files + [
+ # Generated specs
+ "nitrogen/generated/shared/**/*.{h,hpp}",
+ # Swift to C++ bridging helpers
+ "nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Bridge.hpp"
+ ]
+
+ current_private_header_files = Array(spec.attributes_hash['private_header_files'])
+ spec.private_header_files = current_private_header_files + [
+ # iOS specific specs
+ "nitrogen/generated/ios/c++/**/*.{h,hpp}",
+ # Views are framework-specific and should be private
+ "nitrogen/generated/shared/**/views/**/*"
+ ]
+
+ current_pod_target_xcconfig = spec.attributes_hash['pod_target_xcconfig'] || {}
+ spec.pod_target_xcconfig = current_pod_target_xcconfig.merge({
+ # Use C++ 20
+ "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
+ # Enables C++ <-> Swift interop (by default it's only C)
+ "SWIFT_OBJC_INTEROP_MODE" => "objcxx",
+ # Enables stricter modular headers
+ "DEFINES_MODULE" => "YES",
+ })
+end
diff --git a/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Bridge.cpp b/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Bridge.cpp
new file mode 100644
index 0000000..9cfa685
--- /dev/null
+++ b/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Bridge.cpp
@@ -0,0 +1,17 @@
+///
+/// TurboEncryption-Swift-Cxx-Bridge.cpp
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#include "TurboEncryption-Swift-Cxx-Bridge.hpp"
+
+// Include C++ implementation defined types
+
+
+namespace margelo::nitro::turboencryption::bridge::swift {
+
+
+
+} // namespace margelo::nitro::turboencryption::bridge::swift
diff --git a/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Bridge.hpp b/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Bridge.hpp
new file mode 100644
index 0000000..0ec57b7
--- /dev/null
+++ b/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Bridge.hpp
@@ -0,0 +1,27 @@
+///
+/// TurboEncryption-Swift-Cxx-Bridge.hpp
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#pragma once
+
+// Forward declarations of C++ defined types
+
+
+// Forward declarations of Swift defined types
+
+
+// Include C++ defined types
+
+
+/**
+ * Contains specialized versions of C++ templated types so they can be accessed from Swift,
+ * as well as helper functions to interact with those C++ types from Swift.
+ */
+namespace margelo::nitro::turboencryption::bridge::swift {
+
+
+
+} // namespace margelo::nitro::turboencryption::bridge::swift
diff --git a/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Umbrella.hpp b/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Umbrella.hpp
new file mode 100644
index 0000000..da4200b
--- /dev/null
+++ b/nitrogen/generated/ios/TurboEncryption-Swift-Cxx-Umbrella.hpp
@@ -0,0 +1,38 @@
+///
+/// TurboEncryption-Swift-Cxx-Umbrella.hpp
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#pragma once
+
+// Forward declarations of C++ defined types
+
+
+// Include C++ defined types
+
+
+// C++ helpers for Swift
+#include "TurboEncryption-Swift-Cxx-Bridge.hpp"
+
+// Common C++ types used in Swift
+#include
+#include
+#include
+#include
+
+// Forward declarations of Swift defined types
+
+
+// Include Swift defined types
+#if __has_include("TurboEncryption-Swift.h")
+// This header is generated by Xcode/Swift on every app build.
+// If it cannot be found, make sure the Swift module's name (= podspec name) is actually "TurboEncryption".
+#include "TurboEncryption-Swift.h"
+// Same as above, but used when building with frameworks (`use_frameworks`)
+#elif __has_include()
+#include
+#else
+#error TurboEncryption's autogenerated Swift header cannot be found! Make sure the Swift module's name (= podspec name) is actually "TurboEncryption", and try building the app first.
+#endif
diff --git a/nitrogen/generated/ios/TurboEncryptionAutolinking.mm b/nitrogen/generated/ios/TurboEncryptionAutolinking.mm
new file mode 100644
index 0000000..5209a49
--- /dev/null
+++ b/nitrogen/generated/ios/TurboEncryptionAutolinking.mm
@@ -0,0 +1,35 @@
+///
+/// TurboEncryptionAutolinking.mm
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#import
+#import
+
+#import
+
+#include "TurboEncryption.hpp"
+
+@interface TurboEncryptionAutolinking : NSObject
+@end
+
+@implementation TurboEncryptionAutolinking
+
++ (void) load {
+ using namespace margelo::nitro;
+ using namespace margelo::nitro::turboencryption;
+
+ HybridObjectRegistry::registerHybridObjectConstructor(
+ "TurboEncryption",
+ []() -> std::shared_ptr {
+ static_assert(std::is_default_constructible_v,
+ "The HybridObject \"TurboEncryption\" is not default-constructible! "
+ "Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
+ return std::make_shared();
+ }
+ );
+}
+
+@end
diff --git a/nitrogen/generated/ios/TurboEncryptionAutolinking.swift b/nitrogen/generated/ios/TurboEncryptionAutolinking.swift
new file mode 100644
index 0000000..8e64035
--- /dev/null
+++ b/nitrogen/generated/ios/TurboEncryptionAutolinking.swift
@@ -0,0 +1,12 @@
+///
+/// TurboEncryptionAutolinking.swift
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+public final class TurboEncryptionAutolinking {
+ public typealias bridge = margelo.nitro.turboencryption.bridge.swift
+
+
+}
diff --git a/nitrogen/generated/shared/c++/HybridTurboEncryptionSpec.cpp b/nitrogen/generated/shared/c++/HybridTurboEncryptionSpec.cpp
new file mode 100644
index 0000000..4639290
--- /dev/null
+++ b/nitrogen/generated/shared/c++/HybridTurboEncryptionSpec.cpp
@@ -0,0 +1,28 @@
+///
+/// HybridTurboEncryptionSpec.cpp
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#include "HybridTurboEncryptionSpec.hpp"
+
+namespace margelo::nitro::turboencryption {
+
+ void HybridTurboEncryptionSpec::loadHybridMethods() {
+ // load base methods/properties
+ HybridObject::loadHybridMethods();
+ // load custom methods/properties
+ registerHybrids(this, [](Prototype& prototype) {
+ prototype.registerHybridMethod("encrypt", &HybridTurboEncryptionSpec::encrypt);
+ prototype.registerHybridMethod("decrypt", &HybridTurboEncryptionSpec::decrypt);
+ prototype.registerHybridMethod("decryptAsync", &HybridTurboEncryptionSpec::decryptAsync);
+ prototype.registerHybridMethod("encryptAsync", &HybridTurboEncryptionSpec::encryptAsync);
+ prototype.registerHybridMethod("encrypt256", &HybridTurboEncryptionSpec::encrypt256);
+ prototype.registerHybridMethod("decrypt256", &HybridTurboEncryptionSpec::decrypt256);
+ prototype.registerHybridMethod("decrypt256Async", &HybridTurboEncryptionSpec::decrypt256Async);
+ prototype.registerHybridMethod("encrypt256Async", &HybridTurboEncryptionSpec::encrypt256Async);
+ });
+ }
+
+} // namespace margelo::nitro::turboencryption
diff --git a/nitrogen/generated/shared/c++/HybridTurboEncryptionSpec.hpp b/nitrogen/generated/shared/c++/HybridTurboEncryptionSpec.hpp
new file mode 100644
index 0000000..47c1d2e
--- /dev/null
+++ b/nitrogen/generated/shared/c++/HybridTurboEncryptionSpec.hpp
@@ -0,0 +1,70 @@
+///
+/// HybridTurboEncryptionSpec.hpp
+/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
+/// https://github.com/mrousavy/nitro
+/// Copyright © 2025 Marc Rousavy @ Margelo
+///
+
+#pragma once
+
+#if __has_include()
+#include
+#else
+#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
+#endif
+
+
+
+#include
+#include
+
+namespace margelo::nitro::turboencryption {
+
+ using namespace margelo::nitro;
+
+ /**
+ * An abstract base class for `TurboEncryption`
+ * Inherit this class to create instances of `HybridTurboEncryptionSpec` in C++.
+ * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual.
+ * @example
+ * ```cpp
+ * class HybridTurboEncryption: public HybridTurboEncryptionSpec {
+ * public:
+ * HybridTurboEncryption(...): HybridObject(TAG) { ... }
+ * // ...
+ * };
+ * ```
+ */
+ class HybridTurboEncryptionSpec: public virtual HybridObject {
+ public:
+ // Constructor
+ explicit HybridTurboEncryptionSpec(): HybridObject(TAG) { }
+
+ // Destructor
+ ~HybridTurboEncryptionSpec() override = default;
+
+ public:
+ // Properties
+
+
+ public:
+ // Methods
+ virtual std::string encrypt(const std::string& plainText, const std::string& key) = 0;
+ virtual std::string decrypt(const std::string& encryptedText, const std::string& key) = 0;
+ virtual std::shared_ptr> decryptAsync(const std::string& encryptedText, const std::string& key) = 0;
+ virtual std::shared_ptr> encryptAsync(const std::string& plainText, const std::string& key) = 0;
+ virtual std::string encrypt256(const std::string& plainText, const std::string& key) = 0;
+ virtual std::string decrypt256(const std::string& encryptedText, const std::string& key) = 0;
+ virtual std::shared_ptr> decrypt256Async(const std::string& encryptedText, const std::string& key) = 0;
+ virtual std::shared_ptr> encrypt256Async(const std::string& plainText, const std::string& key) = 0;
+
+ protected:
+ // Hybrid Setup
+ void loadHybridMethods() override;
+
+ protected:
+ // Tag for logging
+ static constexpr auto TAG = "TurboEncryption";
+ };
+
+} // namespace margelo::nitro::turboencryption
diff --git a/package.json b/package.json
index 100ef98..fc8115c 100644
--- a/package.json
+++ b/package.json
@@ -1,19 +1,25 @@
{
"name": "react-native-turbo-encryption",
"version": "0.5.0",
- "description": "A superfast encryption module for React native",
- "source": "./src/index.tsx",
- "main": "./lib/commonjs/index.js",
- "module": "./lib/module/index.js",
- "types": "./lib/typescript/module/src/index.d.ts",
+ "description": "A superfast Encryption package for React Native",
+ "main": "./lib/module/index.js",
+ "types": "./lib/typescript/src/index.d.ts",
+ "exports": {
+ ".": {
+ "source": "./src/index.tsx",
+ "types": "./lib/typescript/src/index.d.ts",
+ "default": "./lib/module/index.js"
+ },
+ "./package.json": "./package.json"
+ },
"files": [
"src",
"lib",
"android",
"ios",
- "build",
"cpp",
- "scripts",
+ "nitrogen",
+ "nitro.json",
"*.podspec",
"react-native.config.js",
"!ios/build",
@@ -34,7 +40,7 @@
"lint": "eslint \"**/*.{js,ts,tsx}\"",
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
"prepare": "bob build",
- "release": "release-it"
+ "release": "release-it --only-version"
},
"keywords": [
"react-native",
@@ -72,33 +78,36 @@
"registry": "https://registry.npmjs.org/"
},
"devDependencies": {
- "@commitlint/config-conventional": "^17.0.2",
- "@evilmartians/lefthook": "^1.5.0",
- "@react-native-community/cli": "15.0.1",
- "@react-native/eslint-config": "^0.73.1",
- "@release-it/conventional-changelog": "^9.0.2",
- "@types/jest": "^29.5.5",
- "@types/react": "^18.2.44",
- "commitlint": "^17.0.2",
- "del-cli": "^5.1.0",
- "eslint": "^8.51.0",
- "eslint-config-prettier": "^9.0.0",
- "eslint-plugin-prettier": "^5.0.1",
+ "@commitlint/config-conventional": "^19.8.1",
+ "@eslint/compat": "^1.3.2",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "^9.35.0",
+ "@evilmartians/lefthook": "^1.12.3",
+ "@react-native/babel-preset": "0.81.1",
+ "@react-native/eslint-config": "^0.81.1",
+ "@release-it/conventional-changelog": "^10.0.1",
+ "@types/jest": "^29.5.14",
+ "@types/react": "^19.1.0",
+ "commitlint": "^19.8.1",
+ "del-cli": "^6.0.0",
+ "eslint": "^9.35.0",
+ "eslint-config-prettier": "^10.1.8",
+ "eslint-plugin-prettier": "^5.5.4",
"jest": "^29.7.0",
- "prettier": "^3.0.3",
- "react": "18.3.1",
- "react-native": "0.76.3",
- "react-native-builder-bob": "^0.33.1",
- "release-it": "^17.10.0",
- "turbo": "^1.10.7",
- "typescript": "^5.2.2"
- },
- "resolutions": {
- "@types/react": "^18.2.44"
+ "nitrogen": "^0.30.0",
+ "prettier": "^3.6.2",
+ "react": "19.1.0",
+ "react-native": "0.81.1",
+ "react-native-builder-bob": "^0.40.13",
+ "react-native-nitro-modules": "^0.30.0",
+ "release-it": "^19.0.4",
+ "turbo": "^2.5.6",
+ "typescript": "^5.9.2"
},
"peerDependencies": {
"react": "*",
- "react-native": "*"
+ "react-native": "*",
+ "react-native-nitro-modules": "^0.30.0"
},
"workspaces": [
"example"
@@ -126,32 +135,15 @@
},
"github": {
"release": true
- }
- },
- "eslintConfig": {
- "root": true,
- "extends": [
- "@react-native",
- "prettier"
- ],
- "rules": {
- "react/react-in-jsx-scope": "off",
- "prettier/prettier": [
- "error",
- {
- "quoteProps": "consistent",
- "singleQuote": true,
- "tabWidth": 2,
- "trailingComma": "es5",
- "useTabs": false
+ },
+ "plugins": {
+ "@release-it/conventional-changelog": {
+ "preset": {
+ "name": "angular"
}
- ]
+ }
}
},
- "eslintIgnore": [
- "node_modules/",
- "lib/"
- ],
"prettier": {
"quoteProps": "consistent",
"singleQuote": true,
@@ -163,11 +155,11 @@
"source": "src",
"output": "lib",
"targets": [
- "codegen",
[
- "commonjs",
+ "custom",
{
- "esm": true
+ "script": "nitrogen",
+ "clean": "nitrogen/"
}
],
[
@@ -179,28 +171,14 @@
[
"typescript",
{
- "project": "tsconfig.build.json",
- "esm": true
+ "project": "tsconfig.build.json"
}
]
]
},
- "codegenConfig": {
- "name": "RNTurboEncryptionSpec",
- "type": "all",
- "jsSrcsDir": "src",
- "outputDir": {
- "ios": "build/generated/ios",
- "android": "android/generated"
- },
- "android": {
- "javaPackageName": "com.turboencryption"
- },
- "includesGeneratedCode": true
- },
"create-react-native-library": {
- "type": "module-new",
- "languages": "cpp",
- "version": "0.44.2"
+ "languages": "kotlin-swift",
+ "type": "nitro-module",
+ "version": "0.54.5"
}
}
diff --git a/react-native-turbo-encryption.podspec b/react-native-turbo-encryption.podspec
deleted file mode 100644
index c874eba..0000000
--- a/react-native-turbo-encryption.podspec
+++ /dev/null
@@ -1,41 +0,0 @@
-require "json"
-
-package = JSON.parse(File.read(File.join(__dir__, "package.json")))
-folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
-
-Pod::Spec.new do |s|
- s.name = "react-native-turbo-encryption"
- s.version = package["version"]
- s.summary = package["description"]
- s.homepage = package["homepage"]
- s.license = package["license"]
- s.authors = package["author"]
-
- s.platforms = { :ios => min_ios_version_supported }
- s.source = { :git => "https://github.com/riteshshukla04/react-native-turbo-encryption.git", :tag => "#{s.version}" }
-
- s.source_files = "ios/**/*.{h,m,mm}", "cpp/**/*.{hpp,cpp,c,h}", "build/**/*.{hpp,cpp,c,h}"
-
- # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
- # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
- if respond_to?(:install_modules_dependencies, true)
- install_modules_dependencies(s)
- else
- s.dependency "React-Core"
-
- # Don't install the dependencies when we run `pod install` in the old architecture.
- if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
- s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
- s.pod_target_xcconfig = {
- "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
- "OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
- }
- s.dependency "React-Codegen"
- s.dependency "RCT-Folly"
- s.dependency "RCTRequired"
- s.dependency "RCTTypeSafety"
- s.dependency "ReactCommon/turbomodule/core"
- end
- end
-end
diff --git a/react-native.config.js b/react-native.config.js
deleted file mode 100644
index 6fa6d28..0000000
--- a/react-native.config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @type {import('@react-native-community/cli-types').UserDependencyConfig}
- */
-module.exports = {
- dependency: {
- platforms: {
- android: {
- cmakeListsPath: 'generated/jni/CMakeLists.txt',
- cxxModuleCMakeListsModuleName: 'react-native-turbo-encryption',
- cxxModuleCMakeListsPath: 'CMakeLists.txt',
- cxxModuleHeaderName: 'NativeTurboEncryptionTurboModule',
- },
- },
- },
-};
diff --git a/scripts/copyGeneratedFiles.js b/scripts/copyGeneratedFiles.js
deleted file mode 100644
index 5fc2619..0000000
--- a/scripts/copyGeneratedFiles.js
+++ /dev/null
@@ -1,45 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-
-/**
- * Recursively copies files from the source directory to the destination directory.
- * @param {string} src - The source directory.
- * @param {string} dest - The destination directory.
- */
-function copyDirectory(src, dest) {
- if (!fs.existsSync(src)) {
- console.error(`Source directory "${src}" does not exist.`);
- return;
- }
-
- if (!fs.existsSync(dest)) {
- fs.mkdirSync(dest, { recursive: true });
- }
-
- const entries = fs.readdirSync(src, { withFileTypes: true });
-
- entries.forEach((entry) => {
- const srcPath = path.join(src, entry.name);
- const destPath = path.join(dest, entry.name);
-
- if (entry.isDirectory()) {
- copyDirectory(srcPath, destPath);
- } else {
- fs.copyFileSync(srcPath, destPath);
- }
- });
-
- console.log(`Successfully copied files from "${src}" to "${dest}".`);
-}
-
-// Define source and destination directories relative to the package's directory in node_modules
-const packageDir = __dirname; // Directory where this script is located
-const srcDir = path.resolve(packageDir, 'ios/generated');
-const destDir = path.resolve(packageDir, 'build/generated/ios');
-
-// Trigger the file copy
-try {
- copyDirectory(srcDir, destDir);
-} catch (error) {
- console.error('Error during file copying:', error);
-}
diff --git a/src/NativeTurboEncryption.ts b/src/TurboEncryption.nitro.ts
similarity index 70%
rename from src/NativeTurboEncryption.ts
rename to src/TurboEncryption.nitro.ts
index 18edab7..001ecad 100644
--- a/src/NativeTurboEncryption.ts
+++ b/src/TurboEncryption.nitro.ts
@@ -1,7 +1,7 @@
-import type { TurboModule } from 'react-native';
-import { TurboModuleRegistry } from 'react-native';
+import type { HybridObject } from 'react-native-nitro-modules';
-export interface Spec extends TurboModule {
+export interface TurboEncryption
+ extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
encrypt(plainText: string, key: string): string;
decrypt(encryptedText: string, key: string): string;
decryptAsync(encryptedText: string, key: string): Promise;
@@ -13,5 +13,3 @@ export interface Spec extends TurboModule {
decrypt256Async(encryptedText: string, key: string): Promise;
encrypt256Async(plainText: string, key: string): Promise;
}
-
-export default TurboModuleRegistry.getEnforcing('TurboEncryption');
diff --git a/src/index.tsx b/src/index.tsx
index 1ed273d..0976476 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,6 +1,9 @@
-const TurboEncryption = require('./NativeTurboEncryption').default;
+import { NitroModules } from 'react-native-nitro-modules';
+import type { TurboEncryption } from './TurboEncryption.nitro';
+
+const TurboEncryption =
+ NitroModules.createHybridObject('TurboEncryption');
-// AES Type constants
export const AESType = {
AES128: 0,
AES256: 1,
diff --git a/tsconfig.json b/tsconfig.json
index 748a488..6396b83 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -6,12 +6,13 @@
},
"allowUnreachableCode": false,
"allowUnusedLabels": false,
+ "customConditions": ["react-native-strict-api"],
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"jsx": "react-jsx",
"lib": ["ESNext"],
"module": "ESNext",
- "moduleResolution": "Bundler",
+ "moduleResolution": "bundler",
"noEmit": true,
"noFallthroughCasesInSwitch": true,
"noImplicitReturns": true,
diff --git a/turbo.json b/turbo.json
index 405897e..c4d78c4 100644
--- a/turbo.json
+++ b/turbo.json
@@ -1,8 +1,10 @@
{
"$schema": "https://turbo.build/schema.json",
- "pipeline": {
+ "globalDependencies": [".nvmrc", ".yarnrc.yml"],
+ "globalEnv": ["NODE_ENV"],
+ "tasks": {
"build:android": {
- "env": ["ORG_GRADLE_PROJECT_newArchEnabled"],
+ "env": ["ANDROID_HOME", "ORG_GRADLE_PROJECT_newArchEnabled"],
"inputs": [
"package.json",
"android",
@@ -18,7 +20,11 @@
"outputs": []
},
"build:ios": {
- "env": ["RCT_NEW_ARCH_ENABLED"],
+ "env": [
+ "RCT_NEW_ARCH_ENABLED",
+ "RCT_USE_RN_DEP",
+ "RCT_USE_PREBUILT_RNCORE"
+ ],
"inputs": [
"package.json",
"*.podspec",