diff --git a/bun.lockb b/bun.lockb index 4d38f585..f237bc82 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 8a58415f..f56ca26f 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -1,4 +1,4 @@ rootProject.name = 'QuickCryptoExample' -apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' -includeBuild('../node_modules/@react-native/gradle-plugin') +includeBuild('../../node_modules/@react-native/gradle-plugin') diff --git a/example/eslint.config.js b/example/eslint.config.js deleted file mode 100644 index 7351d974..00000000 --- a/example/eslint.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: '@react-native', -}; diff --git a/example/eslint.config.mjs b/example/eslint.config.mjs new file mode 100644 index 00000000..ddccc37c --- /dev/null +++ b/example/eslint.config.mjs @@ -0,0 +1,23 @@ +import { fixupPluginRules } from '@eslint/compat'; +import js from '@eslint/js'; +import eslintReactNative from 'eslint-plugin-react-native'; +import typescriptEslint from 'typescript-eslint'; + +export default typescriptEslint.config( + js.configs.recommended, + ...typescriptEslint.configs.recommendedTypeChecked, + // react-native + { + name: 'eslint-plugin-react-native', + plugins: { + 'react-native': fixupPluginRules({ + rules: eslintReactNative.rules, + }), + }, + rules: { + ...eslintReactNative.configs.all.rules, + 'react-native/sort-styles': 'off', + 'react-native/no-inline-styles': 'warn', + }, + }, +); \ No newline at end of file diff --git a/example/package.json b/example/package.json index 526e8ced..0fc3acf9 100644 --- a/example/package.json +++ b/example/package.json @@ -39,6 +39,7 @@ "@babel/plugin-transform-class-static-block": "7.24.7", "@babel/preset-env": "7.25.3", "@babel/runtime": "7.25.0", + "@eslint/compat": "^1.1.1", "@react-native/babel-preset": "0.74.86", "@react-native/eslint-config": "0.74.86", "@react-native/eslint-plugin": "0.74.86", diff --git a/packages/react-native-quick-crypto/android/CMakeLists.txt b/packages/react-native-quick-crypto/android/CMakeLists.txt index 0b842c6d..4370ced4 100644 --- a/packages/react-native-quick-crypto/android/CMakeLists.txt +++ b/packages/react-native-quick-crypto/android/CMakeLists.txt @@ -1,17 +1,14 @@ project(QuickCrypto) -cmake_minimum_required(VERSION 3.10.2) +cmake_minimum_required(VERSION 3.9.0) set(PACKAGE_NAME "QuickCrypto") -set(BUILD_DIR ${CMAKE_SOURCE_DIR}/build) set(CMAKE_VERBOSE_MAKEFILE ON) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) -# set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g") -# set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g") +# Add Nitrogen specs :) +include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/NitroImage+autolinking.cmake) # Third party libraries (Prefabs) -find_package(fbjni REQUIRED CONFIG) -find_package(ReactAndroid REQUIRED CONFIG) find_package(openssl REQUIRED CONFIG) find_library(LOG_LIB log) @@ -19,31 +16,13 @@ add_library( ${PACKAGE_NAME} SHARED "src/main/cpp/cpp-adapter.cpp" + "../cpp/HybridRandom.cpp" ) -target_include_directories( - ${PACKAGE_NAME} - PRIVATE - "../cpp" - "src/main/cpp" - "${NODE_MODULES_DIR}/react-native/ReactCommon" - "${NODE_MODULES_DIR}/react-native/ReactCommon/callinvoker" - "${NODE_MODULES_DIR}/react-native/ReactAndroid/src/main/jni/react/turbomodule" - "${NODE_MODULES_DIR}/react-native/ReactCommon/jsi" - "${NODE_MODULES_DIR}/react-native/ReactCommon/turbomodule/core" - "${NODE_MODULES_DIR}/react-native/ReactCommon/react/nativemodule/core" -) - -#file(GLOB LIBRN_DIR "${BUILD_DIR}/react-native-0*/jni/${ANDROID_ABI}") - +# Link all libraries together target_link_libraries( ${PACKAGE_NAME} - ReactAndroid::turbomodulejsijni - fbjni::fbjni # <-- fbjni ${LOG_LIB} # <-- Logcat logger - ReactAndroid::jsi # <-- RN: JSI - ReactAndroid::reactnativejni # <-- RN: React Native JNI bindings - ReactAndroid::react_nativemodule_core # <-- RN: React Native native module core - android # <-- Android JNI core + android # <-- Android core openssl::crypto # <-- OpenSSL (Crypto) ) diff --git a/packages/react-native-quick-crypto/android/src/main/cpp/cpp-adapter.cpp b/packages/react-native-quick-crypto/android/src/main/cpp/cpp-adapter.cpp index ac2fa435..d1f9124c 100644 --- a/packages/react-native-quick-crypto/android/src/main/cpp/cpp-adapter.cpp +++ b/packages/react-native-quick-crypto/android/src/main/cpp/cpp-adapter.cpp @@ -1,27 +1,13 @@ -#include #include -using namespace facebook; +#include "HybridRandom.hpp" +#include -class CryptoCppAdapter : public jni::HybridClass { -public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/quickcrypto/QuickCryptoModule;"; - - static jni::local_ref::jhybriddata> initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(); - } - - CryptoCppAdapter() {} - - static void registerNatives() { - registerHybrid( - {makeNativeMethod("initHybrid", CryptoCppAdapter::initHybrid), makeNativeMethod("nativeInstall", CryptoCppAdapter::nativeInstall)}); - } - -private: - friend HybridBase; -}; +using namespace margelo::nitro::crypto; JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { - return facebook::jni::initialize(vm, [] { CryptoCppAdapter::registerNatives(); }); + HybridObjectRegistry::registerHybridObjectConstructor( + "Random", []() -> std::shared_ptr { return std::make_shared(); }); + + return JNI_VERSION_1_2; }