From 13e005413ce9d5d0b4a524fee90480df411bd360 Mon Sep 17 00:00:00 2001 From: Renan Mav Date: Sun, 26 Jan 2025 18:32:56 -0300 Subject: [PATCH] feat: run nitrogen --- .../cpp/hash/HybridHash.cpp | 0 .../cpp/hash/HybridHash.hpp | 0 packages/react-native-quick-crypto/nitro.json | 1 + .../android/QuickCrypto+autolinking.cmake | 1 + .../generated/android/QuickCryptoOnLoad.cpp | 10 +++ .../generated/ios/QuickCryptoAutolinking.mm | 10 +++ .../generated/shared/c++/HybridHashSpec.cpp | 21 +++++++ .../generated/shared/c++/HybridHashSpec.hpp | 63 +++++++++++++++++++ .../src/specs/hash.nitro.ts | 3 +- 9 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 packages/react-native-quick-crypto/cpp/hash/HybridHash.cpp create mode 100644 packages/react-native-quick-crypto/cpp/hash/HybridHash.hpp create mode 100644 packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.cpp create mode 100644 packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.hpp diff --git a/packages/react-native-quick-crypto/cpp/hash/HybridHash.cpp b/packages/react-native-quick-crypto/cpp/hash/HybridHash.cpp new file mode 100644 index 00000000..e69de29b diff --git a/packages/react-native-quick-crypto/cpp/hash/HybridHash.hpp b/packages/react-native-quick-crypto/cpp/hash/HybridHash.hpp new file mode 100644 index 00000000..e69de29b diff --git a/packages/react-native-quick-crypto/nitro.json b/packages/react-native-quick-crypto/nitro.json index 0e6f0dde..a486cd55 100644 --- a/packages/react-native-quick-crypto/nitro.json +++ b/packages/react-native-quick-crypto/nitro.json @@ -8,6 +8,7 @@ "androidCxxLibName": "QuickCrypto" }, "autolinking": { + "Hash": { "cpp": "HybridHash" }, "Cipher": { "cpp": "HybridCipher" }, "EdKeyPair": { "cpp": "HybridEdKeyPair" }, "Pbkdf2": { "cpp": "HybridPbkdf2" }, diff --git a/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCrypto+autolinking.cmake b/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCrypto+autolinking.cmake index e5e35f99..38c2634e 100644 --- a/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCrypto+autolinking.cmake +++ b/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCrypto+autolinking.cmake @@ -29,6 +29,7 @@ target_sources( # Shared Nitrogen C++ sources ../nitrogen/generated/shared/c++/HybridCipherSpec.cpp ../nitrogen/generated/shared/c++/HybridEdKeyPairSpec.cpp + ../nitrogen/generated/shared/c++/HybridHashSpec.cpp ../nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp ../nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp ../nitrogen/generated/shared/c++/HybridRandomSpec.cpp diff --git a/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCryptoOnLoad.cpp b/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCryptoOnLoad.cpp index 0d909b7c..e0f15dd5 100644 --- a/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCryptoOnLoad.cpp +++ b/packages/react-native-quick-crypto/nitrogen/generated/android/QuickCryptoOnLoad.cpp @@ -15,6 +15,7 @@ #include #include +#include "HybridHash.hpp" #include "HybridCipher.hpp" #include "HybridEdKeyPair.hpp" #include "HybridPbkdf2.hpp" @@ -32,6 +33,15 @@ int initialize(JavaVM* vm) { // Register Nitro Hybrid Objects + HybridObjectRegistry::registerHybridObjectConstructor( + "Hash", + []() -> std::shared_ptr { + static_assert(std::is_default_constructible_v, + "The HybridObject \"HybridHash\" is not default-constructible! " + "Create a public constructor that takes zero arguments to be able to autolink this HybridObject."); + return std::make_shared(); + } + ); HybridObjectRegistry::registerHybridObjectConstructor( "Cipher", []() -> std::shared_ptr { diff --git a/packages/react-native-quick-crypto/nitrogen/generated/ios/QuickCryptoAutolinking.mm b/packages/react-native-quick-crypto/nitrogen/generated/ios/QuickCryptoAutolinking.mm index 34eb69da..146e9fdc 100644 --- a/packages/react-native-quick-crypto/nitrogen/generated/ios/QuickCryptoAutolinking.mm +++ b/packages/react-native-quick-crypto/nitrogen/generated/ios/QuickCryptoAutolinking.mm @@ -10,6 +10,7 @@ #import +#include "HybridHash.hpp" #include "HybridCipher.hpp" #include "HybridEdKeyPair.hpp" #include "HybridPbkdf2.hpp" @@ -24,6 +25,15 @@ + (void) load { using namespace margelo::nitro; using namespace margelo::nitro::crypto; + HybridObjectRegistry::registerHybridObjectConstructor( + "Hash", + []() -> std::shared_ptr { + static_assert(std::is_default_constructible_v, + "The HybridObject \"HybridHash\" is not default-constructible! " + "Create a public constructor that takes zero arguments to be able to autolink this HybridObject."); + return std::make_shared(); + } + ); HybridObjectRegistry::registerHybridObjectConstructor( "Cipher", []() -> std::shared_ptr { diff --git a/packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.cpp b/packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.cpp new file mode 100644 index 00000000..3df8cbe9 --- /dev/null +++ b/packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.cpp @@ -0,0 +1,21 @@ +/// +/// HybridHashSpec.cpp +/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. +/// https://github.com/mrousavy/nitro +/// Copyright © 2025 Marc Rousavy @ Margelo +/// + +#include "HybridHashSpec.hpp" + +namespace margelo::nitro::crypto { + + void HybridHashSpec::loadHybridMethods() { + // load base methods/properties + HybridObject::loadHybridMethods(); + // load custom methods/properties + registerHybrids(this, [](Prototype& prototype) { + prototype.registerHybridMethod("copy", &HybridHashSpec::copy); + }); + } + +} // namespace margelo::nitro::crypto diff --git a/packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.hpp b/packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.hpp new file mode 100644 index 00000000..07bec86d --- /dev/null +++ b/packages/react-native-quick-crypto/nitrogen/generated/shared/c++/HybridHashSpec.hpp @@ -0,0 +1,63 @@ +/// +/// HybridHashSpec.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 + +// Forward declaration of `ArrayBuffer` to properly resolve imports. +namespace NitroModules { class ArrayBuffer; } + +#include + +namespace margelo::nitro::crypto { + + using namespace margelo::nitro; + + /** + * An abstract base class for `Hash` + * Inherit this class to create instances of `HybridHashSpec` in C++. + * You must explicitly call `HybridObject`'s constructor yourself, because it is virtual. + * @example + * ```cpp + * class HybridHash: public HybridHashSpec { + * public: + * HybridHash(...): HybridObject(TAG) { ... } + * // ... + * }; + * ``` + */ + class HybridHashSpec: public virtual HybridObject { + public: + // Constructor + explicit HybridHashSpec(): HybridObject(TAG) { } + + // Destructor + virtual ~HybridHashSpec() { } + + public: + // Properties + + + public: + // Methods + virtual std::shared_ptr copy() = 0; + + protected: + // Hybrid Setup + void loadHybridMethods() override; + + protected: + // Tag for logging + static constexpr auto TAG = "Hash"; + }; + +} // namespace margelo::nitro::crypto diff --git a/packages/react-native-quick-crypto/src/specs/hash.nitro.ts b/packages/react-native-quick-crypto/src/specs/hash.nitro.ts index ca6e2197..a6d642bf 100644 --- a/packages/react-native-quick-crypto/src/specs/hash.nitro.ts +++ b/packages/react-native-quick-crypto/src/specs/hash.nitro.ts @@ -1,6 +1,5 @@ import type { HybridObject } from 'react-native-nitro-modules'; -import type { TransformOptions } from 'readable-stream'; export interface Hash extends HybridObject<{ ios: 'c++'; android: 'c++' }> { - copy(options: TransformOptions[]): ArrayBuffer; + copy(): ArrayBuffer; }